diff --git a/.github/workflows/compile_changelogs.yml b/.github/workflows/compile_changelogs.yml index fb917cdb86a..c74f9be5828 100644 --- a/.github/workflows/compile_changelogs.yml +++ b/.github/workflows/compile_changelogs.yml @@ -17,7 +17,7 @@ jobs: - name: Python setup uses: actions/setup-python@v1 with: - python-version: "3.9" + python-version: "3.11" - name: Install depends run: | python -m pip install --upgrade pip diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index ff7bf8a3a59..37bee951f6c 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -21,7 +21,7 @@ jobs: - name: Python setup uses: actions/setup-python@v1 with: - python-version: "3.9" + python-version: "3.11" - name: Setup cache id: cache-spacemandmm uses: actions/cache@v2 diff --git a/.github/workflows/extra_pr_labels.yml b/.github/workflows/extra_pr_labels.yml index f42a69933e3..08c629edce5 100644 --- a/.github/workflows/extra_pr_labels.yml +++ b/.github/workflows/extra_pr_labels.yml @@ -19,7 +19,7 @@ jobs: commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request." - name: Apply labels based on changed files if: github.event_name != 'push' - uses: actions/labeler@main + uses: actions/labeler@v4.3.0 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" sync-labels: true diff --git a/.github/workflows/make_changelogs.yml b/.github/workflows/make_changelogs.yml index 5e416cc6120..011ff092fb8 100644 --- a/.github/workflows/make_changelogs.yml +++ b/.github/workflows/make_changelogs.yml @@ -17,7 +17,7 @@ jobs: - name: Python setup uses: actions/setup-python@v1 with: - python-version: "3.9" + python-version: "3.11" - name: Install depends run: | python -m pip install --upgrade pip diff --git a/.vscode/settings.json b/.vscode/settings.json index ca4eceb4b0b..96648e8317d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,7 +10,7 @@ "**/.pnp.*": true }, "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" }, "files.eol": "\n", "files.insertFinalNewline": true, diff --git a/SQL/beestation_schema.sql b/SQL/beestation_schema.sql index 88d4a691982..a0626b61340 100644 --- a/SQL/beestation_schema.sql +++ b/SQL/beestation_schema.sql @@ -117,6 +117,12 @@ CREATE TABLE IF NOT EXISTS `SS13_characters` ( `preferred_squad` VARCHAR(32) NOT NULL COLLATE 'utf8mb4_general_ci', `preferred_pilot_role` VARCHAR(32) NOT NULL COLLATE 'utf8mb4_general_ci', `flavor_text` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + `lizard_hiss_style` VARCHAR(32) NOT NULL COLLATE 'utf8mb4_general_ci', + `silicon_flavor_text` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + `general_record` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + `security_record` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + `medical_record` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + `role_preferences` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', PRIMARY KEY (`slot`, `ckey`) USING BTREE ) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB; @@ -457,7 +463,7 @@ CREATE TABLE IF NOT EXISTS `SS13_schema_revision` ( `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`major`,`minor`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (6, 1); +INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (6, 4); diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt index c13ad62cc3a..223de1fa64f 100644 --- a/SQL/database_changelog.txt +++ b/SQL/database_changelog.txt @@ -8,6 +8,37 @@ INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (6, 0); In any query remember to add a prefix to the table names if you use one. +----------------------------------------------------- +Version 6.4, 26 July 2023 by Bobbanz1 +Updated antag prefs to be per character + +ALTER TABLE `SS13_characters` + ADD COLUMN IF NOT EXISTS `role_preferences` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + +----------------------------------------------------- +Version 6.3, 13 January 2023 by Bobbanz1 +Ported flavor texts of different kinds to NSV + +ALTER TABLE `SS13_characters` + ADD COLUMN IF NOT EXISTS `silicon_flavor_text` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + ADD COLUMN IF NOT EXISTS `general_record` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + ADD COLUMN IF NOT EXISTS `security_record` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + ADD COLUMN IF NOT EXISTS `medical_record` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + +----------------------------------------------------- +Version 6.2, 1 April 2023 by DeltaFire15 +Added lizard hissing styles as a character preference + +ALTER TABLE `SS13_characters` + ADD COLUMN IF NOT EXISTS `lizard_hiss_style` VARCHAR(32) NOT NULL COLLATE 'utf8mb4_general_ci', + +----------------------------------------------------- +Version 6.1, 10 December 2022 by Bobbanz1 +Ported flavor text to NSV + +ALTER TABLE `SS13_characters` + ADD COLUMN IF NOT EXISTS `flavor_text` MEDIUMTEXT NOT NULL COLLATE 'utf8mb4_general_ci', + ----------------------------------------------------- Version 6.0, 23 August 2022 by AffectedArc07 diff --git a/_maps/RandomRooms/10x5/sk_rdm161_kilovault.dmm b/_maps/RandomRooms/10x5/sk_rdm161_kilovault.dmm index 63c6524b12f..27f20c30932 100644 --- a/_maps/RandomRooms/10x5/sk_rdm161_kilovault.dmm +++ b/_maps/RandomRooms/10x5/sk_rdm161_kilovault.dmm @@ -56,7 +56,7 @@ }, /obj/item/clipboard, /obj/item/paper/crumpled{ - info = "The safes have been locked and scrambled. Three thousand space dollars, a bandolier, a custom shotgun, and a lazarus injector have been safely deposited."; + default_raw_text = "The safes have been locked and scrambled. Three thousand space dollars, a bandolier, a custom shotgun, and a lazarus injector have been safely deposited."; name = "bank statement" }, /obj/effect/decal/cleanable/dirt, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index 1778ba24c67..9fee4bab7b8 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -188,7 +188,7 @@ "aC" = ( /obj/structure/table/optable, /obj/item/paper{ - info = "Doc - As a heads up, that matter bin we ordered forever ago for saving.. less alive pets' finally come in. Sad thing is I can't figure out how to work the smartfridge board back into organ storage, can you do it for me? The matter bin'll let it repair organs, we'll be way better going! -Ted"; + default_raw_text = "Doc - As a heads up, that matter bin we ordered forever ago for saving.. less alive pets' finally come in. Sad thing is I can't figure out how to work the smartfridge board back into organ storage, can you do it for me? The matter bin'll let it repair organs, we'll be way better going! -Ted"; pixel_y = -3 }, /turf/open/floor/plasteel/white, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 031bcf551a7..737c5b4372e 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -750,7 +750,7 @@ dir = 8 }, /obj/item/paper/crumpled{ - info = "Explosive testing on site is STRICTLY forbidden, as this outpost's walls are lined with explosives intended for intentional self-destruct purposes that may be set off prematurely through careless experiments."; + default_raw_text = "Explosive testing on site is STRICTLY forbidden, as this outpost's walls are lined with explosives intended for intentional self-destruct purposes that may be set off prematurely through careless experiments."; name = "Explosives Testing Warning"; pixel_x = -6; pixel_y = -3 diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index 920252a99cb..c649b0fa1ca 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -2146,7 +2146,7 @@ /area/ruin/space/has_grav/derelictoutpost/cargostorage) "eC" = ( /obj/structure/closet/crate, -/obj/item/pda/clear, +/obj/item/modular_computer/tablet/pda/clear, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargostorage) diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index 2e828062320..98137990ce4 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -1128,12 +1128,11 @@ /area/awaymission/cabin/snowforest/sovietsurface) "dm" = ( /obj/structure/table/reinforced, -/obj/item/pda/syndicate{ - background_color = "#0039A6"; - default_cartridge = /obj/item/cartridge/virus/mime; +/obj/item/modular_computer/tablet/pda/syndicate{ + default_disk = /obj/item/computer_hardware/hard_drive/role/virus/mime; desc = "A portable microcomputer by Thinktronic Systems, LTD. Seems like it may have useful information on it."; - name = "soviet PDA"; - note = "TRANSLATED TO GALACTIC COMMON:
My partner has left to help those Nanotrasen fucks three days ago. They said that a distress signal came from down south and they had to check it out. How fucking long does it take to investigate a mining outpost? Either those Nanotrasen fuckers betrayed us or something really did go wrong. Either way, I'm leaving before this becomes an issue for me and anyone else here. That dumb idiot." + name = "soviet tablet"; + note = "TRANSLATED TO GALACTIC COMMON: My partner has left to help those Nanotrasen fucks three days ago. They said that a distress signal came from down south and they had to check it out. How fucking long does it take to investigate a mining outpost? Either those Nanotrasen fuckers betrayed us or something really did go wrong. Either way, I'm leaving before this becomes an issue for me and anyone else here. That dumb idiot." }, /turf/open/floor/plating/snowed/temperatre, /area/awaymission/cabin/snowforest/sovietsurface) @@ -4720,7 +4719,7 @@ name = "wooden box" }, /obj/item/paper{ - info = "Moving these crates through a tunnel that isn't even finished yet is really annoying. It's such a pain in the ass to haul even a single crate to the cabin. It made sense to haul food and other goods however these are fake fucking trophies. Why do they even need these fake artifacts for some asshole's trophy case? We'll just leave the crates in the cave that has all those bones inside. Fuck it."; + default_raw_text = "Moving these crates through a tunnel that isn't even finished yet is really annoying. It's such a pain in the ass to haul even a single crate to the cabin. It made sense to haul food and other goods however these are fake fucking trophies. Why do they even need these fake artifacts for some asshole's trophy case? We'll just leave the crates in the cave that has all those bones inside. Fuck it."; name = "Shipment Delivery Note" }, /turf/open/floor/plating/asteroid/snow, @@ -5220,12 +5219,11 @@ /area/awaymission/cabin/caves) "nb" = ( /obj/effect/turf_decal/weather/snow, -/obj/item/pda/syndicate{ - background_color = "#0039A6"; - default_cartridge = /obj/item/cartridge/virus/clown; +/obj/item/modular_computer/tablet/pda/syndicate{ + default_disk = /obj/item/computer_hardware/hard_drive/role/virus/clown; desc = "A portable microcomputer by Thinktronic Systems, LTD. Seems like it may have useful information on it."; - name = "soviet PDA"; - note = "TRANSLATED TO GALACTIC COMMON:
DO NOT GO SOUTH." + name = "soviet tablet"; + note = "TRANSLATED TO GALACTIC COMMON: DO NOT GO SOUTH." }, /obj/effect/decal/remains/human{ color = "#72e4fa" diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index b0ad0d9c033..5eb28e2c9cd 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -3760,8 +3760,8 @@ /area/awaymission/moonoutpost19/research) "hr" = ( /obj/structure/table, -/obj/item/cartridge/signal/toxins, -/obj/item/cartridge/signal/toxins{ +/obj/item/computer_hardware/hard_drive/role/signal/toxins, +/obj/item/computer_hardware/hard_drive/role/signal/toxins{ pixel_x = -4; pixel_y = 2 }, diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index 51bab895858..b4223ed4ead 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -2458,7 +2458,7 @@ /area/awaymission/spacebattle/cruiser) "jt" = ( /obj/structure/rack, -/obj/item/gun/energy/disabler, +/obj/item/gun/energy/e_gun/advtaser, /turf/open/floor/engine, /area/awaymission/spacebattle/cruiser) "ju" = ( @@ -2529,7 +2529,7 @@ "jB" = ( /obj/structure/rack, /obj/structure/window/reinforced, -/obj/item/gun/energy/disabler, +/obj/item/gun/energy/e_gun/advtaser, /turf/open/floor/engine, /area/awaymission/spacebattle/cruiser) "jC" = ( diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index 5946555c8a7..cbd71caaad7 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -7002,8 +7002,8 @@ /area/awaymission/undergroundoutpost45/research) "nk" = ( /obj/structure/table, -/obj/item/cartridge/signal/toxins, -/obj/item/cartridge/signal/toxins{ +/obj/item/computer_hardware/hard_drive/role/signal/toxins, +/obj/item/computer_hardware/hard_drive/role/signal/toxins{ pixel_x = -4; pixel_y = 2 }, diff --git a/_maps/RuinGeneration/13x13_shotelroom.dmm b/_maps/RuinGeneration/13x13_shotelroom.dmm index 263443559de..2f5a138b64a 100644 --- a/_maps/RuinGeneration/13x13_shotelroom.dmm +++ b/_maps/RuinGeneration/13x13_shotelroom.dmm @@ -187,7 +187,7 @@ /area/ruin/unpowered) "O" = ( /obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/escape{ - info = "lol"; + default_raw_text = "lol"; pixel_x = 3; pixel_y = 3 }, diff --git a/_maps/RuinGeneration/13x9_cratestorage.dmm b/_maps/RuinGeneration/13x9_cratestorage.dmm index 4ed21920631..2ad4746e664 100644 --- a/_maps/RuinGeneration/13x9_cratestorage.dmm +++ b/_maps/RuinGeneration/13x9_cratestorage.dmm @@ -35,7 +35,7 @@ "o" = ( /obj/effect/turf_decal/delivery, /obj/structure/closet/crate, -/obj/item/pda/clear, +/obj/item/modular_computer/tablet/pda/clear, /obj/effect/spawner/lootdrop/ruinloot/important, /turf/open/floor/plasteel, /area/ruin/unpowered) diff --git a/_maps/RuinGeneration/9x13_vault.dmm b/_maps/RuinGeneration/9x13_vault.dmm index f51fcc270fc..07093ab2334 100644 --- a/_maps/RuinGeneration/9x13_vault.dmm +++ b/_maps/RuinGeneration/9x13_vault.dmm @@ -97,7 +97,7 @@ /obj/effect/turf_decal/bot_white/left, /obj/item/ammo_box/a357, /obj/item/paper{ - info = "IOU - One Very Cool Revolver (Thanks HOP)" + default_raw_text = "IOU - One Very Cool Revolver (Thanks HOP)" }, /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, /turf/open/floor/plasteel/dark/airless, diff --git a/_maps/aetherwhisp.json b/_maps/aetherwhisp.json index 113ef6ba8b1..90a7382e5fd 100644 --- a/_maps/aetherwhisp.json +++ b/_maps/aetherwhisp.json @@ -1,6 +1,6 @@ { "map_name": "SGV Aetherwhisp", - "map_link": "Aetherwhisp", + "map_link": "aetherwhisp", "map_path": "map_files/Aetherwhisp", "map_file": ["Aetherwhisp1.dmm", "Aetherwhisp2.dmm"], "traits": [{"Up": 1, "Linkage": "Self"}, {"Down": -1, "Linkage": "Self"}], @@ -11,7 +11,7 @@ "ferry": "ferry_kilo", "emergency": "emergency_donut"}, "mine_disable": 1, - "ship_type": "/obj/structure/overmap/nanotrasen/solgov/aetherwhisp/starter", + "ship_type": "/datum/overmap/ship/player", "faction": "solgov", "starmap_path": "config/starmap/starmap.json", diff --git a/_maps/atlas.json b/_maps/atlas.json index 6c0f7655b40..f313081db45 100644 --- a/_maps/atlas.json +++ b/_maps/atlas.json @@ -1,6 +1,6 @@ { "map_name": "NSV Atlas", - "map_link": "Atlas", + "map_link": "atlas", "map_path": "map_files/Atlas", "map_file": [ "atlas.dmm", @@ -21,7 +21,6 @@ "shuttles": { "cargo": "cargo_atlas", "ferry": "ferry_fancy", - "arrival": "arrival_atlas", "emergency": "emergency_atlas" }, "mine_disable": 1, diff --git a/_maps/eclipse.json b/_maps/eclipse.json index 1a700ca751e..534f03629fe 100644 --- a/_maps/eclipse.json +++ b/_maps/eclipse.json @@ -1,6 +1,6 @@ { "map_name": "NSV Eclipse", - "map_link": "Eclipse", + "map_link": "eclipse", "map_path": "map_files/Eclipse", "map_file": ["Eclipse1.dmm", "Eclipse2.dmm"], "traits": [{"Up": 1, "Linkage": "Self"}, {"Down": -1, "Linkage": "Self"}], @@ -11,7 +11,7 @@ "ferry": "ferry_fancy", "emergency": "emergency_donut"}, "mine_disable": 1, - "ship_type": "/obj/structure/overmap/nanotrasen/light_cruiser/starter", + "ship_type": "/datum/overmap/ship/player", "starmap_path": "config/starmap/starmap.json", "map_description": "The standard issue Eclipse ship was once sold to the civilian population equipped with amenities befitting the standard consumer. It was later decommissioned for safety concerns regarding small atmos tanks and inadequate hull plating. The vessels are now bought by WhiteRapids, outfitted with appropriate weaponry, robust plating, and other installations to meet minimum shipbuilding standards.", diff --git a/_maps/galactica.json b/_maps/galactica.json index 99d773b028f..fef923d8afc 100644 --- a/_maps/galactica.json +++ b/_maps/galactica.json @@ -1,6 +1,6 @@ { "map_name": "NSV Galactica", - "map_link": "Galactica", + "map_link": "galactica", "map_path": "map_files/Galactica", "map_file": [ "Galactica2.dmm", @@ -26,7 +26,7 @@ "mine_disable": 0, "mine_file": "Rocinante.dmm", "mine_path": "map_files/Mining/nsv13", - "ship_type": "/obj/structure/overmap/nanotrasen/battleship/starter", + "ship_type": "/datum/overmap/ship/player", "mining_ship_type": "/obj/structure/overmap/nanotrasen/mining_cruiser/rocinante", "starmap_path": "config/starmap/starmap.json", diff --git a/_maps/gladius.json b/_maps/gladius.json index 583ec2b66ae..30404f3d7e9 100644 --- a/_maps/gladius.json +++ b/_maps/gladius.json @@ -1,6 +1,6 @@ { "map_name": "NSV Gladius", - "map_link": "Gladius", + "map_link": "gladius", "map_path": "map_files/Gladius", "map_file": ["Gladius2.dmm", "Gladius1.dmm"], "traits": [ @@ -21,7 +21,7 @@ "emergency": "emergency_donut"}, "mine_file": "Rocinante.dmm", "mine_path": "map_files/Mining/nsv13", - "ship_type": "/obj/structure/overmap/nanotrasen/battlecruiser/starter", + "ship_type": "/datum/overmap/ship/player", "mining_ship_type": "/obj/structure/overmap/nanotrasen/mining_cruiser/rocinante", "starmap_path": "config/starmap/starmap.json", diff --git a/_maps/hammerhead.json b/_maps/hammerhead.json index 312890dd6d1..534b3c7b7f3 100644 --- a/_maps/hammerhead.json +++ b/_maps/hammerhead.json @@ -1,6 +1,6 @@ { "map_name": "NSV Hammerhead", - "map_link": "Hammerhead", + "map_link": "hammerhead", "map_path": "map_files/Hammerhead", "map_file": ["Hammerhead.dmm"], "traits": [{"Linkage": "Self"}], diff --git a/_maps/map_files/Aetherwhisp/Aetherwhisp1.dmm b/_maps/map_files/Aetherwhisp/Aetherwhisp1.dmm index b10d61a86dd..37630b2560d 100644 --- a/_maps/map_files/Aetherwhisp/Aetherwhisp1.dmm +++ b/_maps/map_files/Aetherwhisp/Aetherwhisp1.dmm @@ -12,10 +12,6 @@ }, /turf/open/floor/carpet/ship/blue, /area/medical/medbay/lobby) -"aaK" = ( -/obj/effect/landmark/carpspawn, -/turf/open/space/basic, -/area/space/nearstation) "aaL" = ( /obj/machinery/light{ dir = 8 @@ -184,6 +180,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "aek" = ( @@ -443,6 +440,7 @@ req_one_access_txt = "38" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/lawoffice) "akT" = ( @@ -463,9 +461,6 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "alj" = ( -/obj/machinery/light{ - dir = 4 - }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, @@ -559,6 +554,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "ank" = ( @@ -1210,6 +1206,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "aCw" = ( @@ -1341,6 +1338,7 @@ dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "aHw" = ( @@ -1468,6 +1466,7 @@ dir = 1 }, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "aMO" = ( @@ -1627,18 +1626,6 @@ }, /turf/open/floor/engine, /area/engine/engineering/reactor_core) -"aTc" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 15; - id = "arrivals_stationary"; - name = "Deck 2 Arrivals Port"; - roundstart_template = /datum/map_template/shuttle/arrival/aetherwhisp; - width = 7 - }, -/turf/open/space/basic, -/area/space/nearstation) "aTh" = ( /obj/machinery/status_display/evac, /turf/closed/wall/ship, @@ -1692,6 +1679,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12;24;46" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "aTB" = ( @@ -1714,6 +1702,7 @@ name = "Operating Room"; req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/surgery) "aTT" = ( @@ -1863,6 +1852,7 @@ pixel_x = -24; req_access_txt = "39" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/beige_carpet{ color = "#99FF99" }, @@ -2446,9 +2436,8 @@ /obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Kitchen" + location = "Kitchen"; + name = "navigation beacon (Kitchen Delivery)" }, /obj/machinery/door/window/northleft{ dir = 8; @@ -2475,6 +2464,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/ai_monitored/security/armory/security) "bpD" = ( @@ -2553,6 +2543,7 @@ name = "Maintenance Access Chapel Backroom"; req_one_access_txt = "22" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/department/engine/atmos) "bsC" = ( @@ -2859,6 +2850,7 @@ /obj/structure/cable/green{ icon_state = "6-10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engineering/reactor_control) "bDK" = ( @@ -2905,7 +2897,7 @@ dir = 4 }, /turf/open/space/basic, -/area/space/nearstation) +/area/security/processing) "bGX" = ( /obj/machinery/vending/wallmed{ pixel_x = -32 @@ -3028,6 +3020,7 @@ name = "Maintenance Access Bar"; req_one_access_txt = "12;25;28;35" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "bJZ" = ( @@ -3239,6 +3232,7 @@ /obj/structure/cable/yellow{ icon_state = "5-9" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "bOM" = ( @@ -3552,6 +3546,7 @@ name = "Interrogation Room"; req_one_access_txt = "4" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/detectives_office) "bZQ" = ( @@ -3571,6 +3566,7 @@ name = "Detective Office"; req_one_access_txt = "4" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/detectives_office) "cas" = ( @@ -3831,6 +3827,11 @@ }, /turf/open/floor/carpet/ship, /area/crew_quarters/kitchen) +"cjc" = ( +/obj/structure/closet/crate, +/obj/item/xenoartifact/maint, +/turf/open/floor/plating, +/area/maintenance/department/engine/atmos) "cjm" = ( /obj/machinery/power/terminal, /obj/structure/cable/green{ @@ -3916,6 +3917,7 @@ /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/airlock/ship/maintenance, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/department/engine/atmos) "cnN" = ( @@ -3974,6 +3976,7 @@ /area/crew_quarters/cafeteria) "cqD" = ( /obj/structure/closet/firecloset/full, +/obj/item/xenoartifact/maint, /turf/open/floor/plating, /area/maintenance/department/engine) "cqE" = ( @@ -4033,9 +4036,8 @@ }, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Bar" + location = "Bar"; + name = "navigation beacon (Bar Delivery)" }, /turf/open/floor/wood, /area/crew_quarters/bar) @@ -4215,6 +4217,7 @@ /obj/machinery/door/poddoor/ship/preopen{ id = "aether_atmos_lockdown" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engine_room) "cCa" = ( @@ -4276,6 +4279,14 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden, /turf/open/floor/carpet/red, /area/security/processing) +"cFz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/components/unary/portables_connector/layer2, +/turf/open/floor/carpet/ship/orange_carpet, +/area/engine/engine_smes) "cGN" = ( /obj/structure/table/wood, /obj/machinery/computer/secure_data/laptop, @@ -4399,6 +4410,7 @@ name = "Chief Medical Officer Office"; req_one_access_txt = "40" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/crew_quarters/heads/cmo) "cJk" = ( @@ -4560,6 +4572,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/tcommsat/server) "cRx" = ( @@ -4754,6 +4767,7 @@ name = "Judicial Office"; req_one_access_txt = "38" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/execution/education) "cWy" = ( @@ -4763,6 +4777,7 @@ /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /obj/structure/extinguisher_cabinet/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "cXI" = ( @@ -4773,9 +4788,8 @@ }, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Security" + location = "Security"; + name = "navigation beacon (Security Delivery)" }, /turf/open/floor/plating, /area/maintenance/department/medical) @@ -5013,6 +5027,9 @@ /area/security/brig) "dfh" = ( /obj/effect/landmark/nuclear_waste_spawner, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engine_smes) "dfP" = ( @@ -5278,6 +5295,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "dpD" = ( @@ -5359,6 +5377,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "dra" = ( @@ -5386,6 +5405,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/storage) "drl" = ( @@ -5701,6 +5721,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "dCq" = ( @@ -5868,6 +5889,7 @@ name = "Maintenance Access Engineering Lounge"; req_one_access_txt = "10;24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/break_room) "dFz" = ( @@ -5931,12 +5953,16 @@ /turf/open/floor/carpet/ship/orange_carpet, /area/engine/storage) "dHo" = ( -/obj/machinery/light{ - dir = 8 +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/poddoor/ship/preopen{ + id = "aether_atmos_lockdown" }, -/obj/structure/cable/white{ - icon_state = "1-2" +/obj/machinery/door/airlock/ship/engineering{ + name = "Shield Generator"; + req_one_access_txt = "10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/shield_generator) "dHs" = ( @@ -5985,6 +6011,7 @@ /obj/machinery/door/airlock/ship/public{ name = "Bathroom Cell" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plasteel/freezer, /area/security/prison) "dJw" = ( @@ -6085,6 +6112,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/storage) "dOS" = ( @@ -6148,6 +6176,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/stormdrive/monitor) "dQZ" = ( @@ -6196,6 +6225,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12;24;46" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "dSB" = ( @@ -6258,6 +6288,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "dVF" = ( @@ -6334,6 +6365,7 @@ name = "Maintenance Access Morgue"; req_one_access_txt = "6;39;68" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "dWT" = ( @@ -6392,6 +6424,7 @@ /obj/structure/sign/departments/minsky/medical/chemistry/chemical2{ pixel_x = -32 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/maintenance/department/medical/central) "dZx" = ( @@ -6553,6 +6586,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/armour_pump) "ech" = ( @@ -6620,6 +6654,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/wood, /area/crew_quarters/bar) "egj" = ( @@ -6647,10 +6682,10 @@ /area/nsv/weapons/starboard) "ehh" = ( /obj/structure/rack, -/obj/item/gun/energy/disabler, -/obj/item/gun/energy/disabler, -/obj/item/gun/energy/disabler, -/obj/item/gun/energy/disabler, +/obj/item/gun/energy/e_gun/advtaser, +/obj/item/gun/energy/e_gun/advtaser, +/obj/item/gun/energy/e_gun/advtaser, +/obj/item/gun/energy/e_gun/advtaser, /obj/machinery/computer/ship/viewscreen, /turf/open/floor/carpet/ship/red_carpet, /area/ai_monitored/security/armory/security) @@ -6744,7 +6779,7 @@ dir = 8 }, /obj/item/clothing/head/beret/black, -/obj/item/cartridge/security, +/obj/item/computer_hardware/hard_drive/role/security, /obj/effect/spawner/lootdrop/gloves, /turf/open/floor/carpet/ship/red_carpet, /area/security/main/warroom) @@ -6824,6 +6859,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "7" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "enb" = ( @@ -7001,6 +7037,7 @@ req_one_access_txt = "3;38" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/department/security) "err" = ( @@ -7375,6 +7412,7 @@ req_one_access_txt = "3;4;63" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/main/warroom) "eFQ" = ( @@ -7427,6 +7465,7 @@ /obj/structure/cable/yellow{ icon_state = "6-9" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "eHr" = ( @@ -8050,6 +8089,7 @@ req_one_access_txt = "4" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/detectives_office) "fdI" = ( @@ -8074,6 +8114,7 @@ "fdV" = ( /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/engineering/reactor_core) "feG" = ( @@ -8333,6 +8374,7 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/storage) "fko" = ( @@ -8614,7 +8656,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/south, /obj/item/paper{ - info = "

Reminder that squad equipment vendors are located in the council chamber, tool storage, and that 4-way junction at the primary hallway, Deck 1

" + default_raw_text = "

Reminder that squad equipment vendors are located in the council chamber, tool storage, and that 4-way junction at the primary hallway, Deck 1

" }, /obj/item/reagent_containers/spray/cleaner, /obj/effect/landmark/zebra_interlock_point, @@ -8751,6 +8793,7 @@ req_one_access_txt = "28" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "fBz" = ( @@ -8819,6 +8862,7 @@ name = "Maintenance Access Infirmary Lobby"; req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "fCT" = ( @@ -8902,6 +8946,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/maintenance/department/medical/central) "fGD" = ( @@ -9326,6 +9371,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/central/secondary) "fWo" = ( @@ -9367,6 +9413,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/storage) "fXN" = ( @@ -9448,6 +9495,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/main/warroom) "fZj" = ( @@ -9494,15 +9542,13 @@ /area/security/main/warroom) "gay" = ( /obj/structure/table, -/obj/item/storage/box/prisoner{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/storage/box/exileimp, -/obj/item/binoculars, /obj/structure/sign/poster/official/random{ pixel_x = 32 }, +/obj/machinery/fax{ + fax_name = "Wardens Office"; + name = "Wardens Office Fax Machine" + }, /turf/open/floor/carpet/ship/red_carpet, /area/security/warden) "gaE" = ( @@ -9626,6 +9672,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/stormdrive/monitor) "geP" = ( @@ -9677,6 +9724,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/shield_generator) "giK" = ( @@ -9691,6 +9739,7 @@ name = "Operating Room"; req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/surgery/aux) "giM" = ( @@ -9771,6 +9820,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "glB" = ( @@ -10037,6 +10087,7 @@ req_one_access_txt = "63" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/checkpoint/medical) "gud" = ( @@ -10217,6 +10268,7 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 1 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/genetics/cloning) "gDe" = ( @@ -10470,6 +10522,7 @@ /obj/machinery/door/poddoor/ship{ id = "permacell1" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/prison) "gOx" = ( @@ -10494,6 +10547,7 @@ /obj/structure/cable/orange{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engine_room) "gOQ" = ( @@ -10603,6 +10657,13 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden, /turf/open/floor/wood, /area/maintenance/department/medical) +"gTF" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/carpet/ship/orange_carpet, +/area/engine/atmos) "gTJ" = ( /obj/structure/reagent_dispensers/watertank/high, /obj/machinery/light, @@ -10761,6 +10822,7 @@ name = "Maintenance Access Bar"; req_one_access_txt = "12;24;25;28;35" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "gZv" = ( @@ -10809,6 +10871,7 @@ /turf/open/floor/carpet/blue, /area/medical/medbay/lobby) "hba" = ( +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/ship, /area/crew_quarters/cryopods) "hbl" = ( @@ -10834,6 +10897,7 @@ req_one_access_txt = "6;39;68" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/medical/morgue) "hbw" = ( @@ -11078,9 +11142,8 @@ "hll" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Medbay" + location = "Medbay"; + name = "navigation beacon (Medbay Delivery)" }, /turf/open/floor/carpet/ship/blue, /area/medical/medbay/lobby) @@ -11280,7 +11343,7 @@ pixel_y = -1 }, /obj/item/stamp/law, -/obj/item/cartridge/lawyer{ +/obj/item/computer_hardware/hard_drive/role/lawyer{ pixel_x = 8; pixel_y = 1 }, @@ -11611,6 +11674,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/checkpoint/engineering) "hHd" = ( @@ -11759,6 +11823,7 @@ name = "Judicial Office"; req_one_access_txt = "38" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/execution/education) "hLl" = ( @@ -12184,6 +12249,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "5;12;33" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical/central) "ibM" = ( @@ -12209,6 +12275,7 @@ icon_state = "2-5" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/chapel/office) "ick" = ( @@ -12301,6 +12368,7 @@ name = "Telecommunications"; req_one_access_txt = "61" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/tcommsat/server) "ifB" = ( @@ -12365,6 +12433,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/maintenance/department/medical) "igu" = ( @@ -12427,7 +12496,7 @@ pixel_x = -4 }, /obj/item/stack/package_wrap, -/obj/item/cartridge/security, +/obj/item/computer_hardware/hard_drive/role/security, /obj/item/dest_tagger{ pixel_x = 4; pixel_y = 3 @@ -12668,6 +12737,7 @@ /obj/structure/sign/departments/minsky/medical/chemistry/chemical2{ pixel_x = -32 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/chemistry) "ion" = ( @@ -12972,6 +13042,7 @@ name = "Patient Treatment Room"; req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/patients_rooms/room_c) "iwi" = ( @@ -12990,6 +13061,16 @@ /obj/item/reagent_containers/food/drinks/bottle/synthflesh, /turf/open/floor/carpet/ship/blue, /area/medical/genetics/cloning) +"iwC" = ( +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/airlock/ship/engineering{ + name = "Shield Generator"; + req_one_access_txt = "10" + }, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/carpet/ship/orange_carpet, +/area/engine/atmos) "ixl" = ( /obj/structure/sign/poster/random{ pixel_y = 32 @@ -13090,6 +13171,7 @@ /obj/effect/landmark/event_spawn, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/engineering/reactor_core) "izJ" = ( @@ -13226,6 +13308,7 @@ /obj/machinery/door/airlock/ship/maintenance{ name = "Maintenance Access Cafeteria" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/department/engine/atmos) "iFb" = ( @@ -13271,6 +13354,7 @@ name = "Kitchen"; req_one_access_txt = "28" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/crew_quarters/kitchen) "iFU" = ( @@ -13411,6 +13495,7 @@ icon_state = "9-10" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engine_smes) "iKj" = ( @@ -13448,6 +13533,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "iMq" = ( @@ -13513,6 +13599,7 @@ name = "Maintenance Access Medbay Storage"; req_one_access_txt = "5;6;39;68" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/maintenance/department/medical) "iNt" = ( @@ -13522,8 +13609,15 @@ /obj/structure/closet/crate{ opened = 1 }, +/obj/item/xenoartifact/maint, /turf/open/floor/plating, /area/maintenance/department/medical) +"iOe" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/science/storage) "iOO" = ( /obj/structure/cable/white{ icon_state = "8-16" @@ -13591,6 +13685,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "iTi" = ( @@ -13658,10 +13753,15 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "iUH" = ( -/obj/item/kirbyplants/random, +/obj/machinery/fax{ + fax_name = "Law Office"; + name = "Law Office Fax Machine" + }, +/obj/structure/table/wood, /turf/open/floor/wood, /area/lawoffice) "iUM" = ( @@ -13774,6 +13874,7 @@ name = "Cloning Bay"; req_one_access_txt = "6;39;68" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/genetics/cloning) "iYk" = ( @@ -13920,7 +14021,7 @@ }, /obj/item/reagent_containers/glass/beaker, /obj/machinery/airalarm/directional/north, -/obj/item/cartridge/chemistry, +/obj/item/computer_hardware/hard_drive/role/chemistry, /turf/open/floor/carpet/ship/blue, /area/medical/chemistry) "jcC" = ( @@ -14008,6 +14109,7 @@ name = "Kitchen Cold Room"; req_one_access_txt = "28" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/crew_quarters/kitchen/coldroom) "jfr" = ( @@ -14163,7 +14265,7 @@ dir = 8 }, /obj/item/clothing/head/beret/black, -/obj/item/cartridge/security, +/obj/item/computer_hardware/hard_drive/role/security, /obj/effect/spawner/lootdrop/gloves, /obj/structure/disposalpipe/segment{ dir = 4 @@ -14441,7 +14543,7 @@ dir = 8 }, /turf/open/space/basic, -/area/space/nearstation) +/area/hallway/secondary/entry/arrivals) "jsJ" = ( /obj/structure/cable{ icon_state = "1-8" @@ -14725,6 +14827,7 @@ /obj/structure/cable/yellow{ icon_state = "6-9" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/grass, /area/hydroponics) "jFF" = ( @@ -14846,6 +14949,7 @@ name = "Hydroponics"; req_one_access_txt = "35" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/hydroponics) "jJd" = ( @@ -15040,6 +15144,7 @@ req_one_access_txt = "3;12" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "jQH" = ( @@ -15071,6 +15176,7 @@ }, /obj/effect/mapping_helpers/airlock/locked, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "jQT" = ( @@ -15114,6 +15220,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/break_room) "jSp" = ( @@ -15163,6 +15270,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/prison) "jTY" = ( @@ -15216,6 +15324,7 @@ name = "Chemistry Manufacturing"; req_access_txt = "6;33" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/medical/apothecary) "jVQ" = ( @@ -15365,6 +15474,7 @@ name = "Interrogation Room"; req_one_access_txt = "4;38" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/detectives_office) "kau" = ( @@ -15848,6 +15958,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/maintenance/department/medical) "kvL" = ( @@ -15895,6 +16006,7 @@ /obj/machinery/light, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/engine_room) "kxw" = ( @@ -15928,6 +16040,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "kys" = ( @@ -16116,6 +16229,7 @@ /obj/machinery/door/airlock/ship/maintenance{ name = "Maintenance Access Cryostasis Storage" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "kEp" = ( @@ -16514,6 +16628,7 @@ /obj/structure/cable/yellow{ icon_state = "6-9" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/medbay/lobby) "kUo" = ( @@ -16635,6 +16750,7 @@ name = "Patient Treatment Room"; req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/patients_rooms/room_a) "laf" = ( @@ -16782,7 +16898,7 @@ dir = 4 }, /obj/item/paper{ - info = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; + default_raw_text = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; pixel_x = 4; pixel_y = 4 }, @@ -16879,6 +16995,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "lhb" = ( @@ -17196,6 +17313,7 @@ "luB" = ( /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "luW" = ( @@ -17293,6 +17411,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "2;5;12" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "lxp" = ( @@ -17629,7 +17748,8 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ dir = 4; id = "stormdrive_in"; - piping_layer = 2 + piping_layer = 2; + pixel_y = -5 }, /turf/open/floor/engine/vacuum, /area/engine/stormdrive) @@ -17869,6 +17989,18 @@ }, /turf/closed/wall/ship, /area/hydroponics) +"lQG" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/carpet/ship/orange_carpet, +/area/engine/atmos) "lQL" = ( /obj/structure/table, /obj/item/clothing/suit/apron/surgical, @@ -17983,6 +18115,7 @@ /obj/structure/cable{ icon_state = "5-10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/engine/break_room) "lVn" = ( @@ -18241,6 +18374,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/storage/tech) "meh" = ( @@ -18272,6 +18406,7 @@ name = "Maintenance Access Plumbing"; req_one_access_txt = "5;33" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/maintenance/department/medical/central) "mfx" = ( @@ -18390,6 +18525,7 @@ /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/airalarm/directional/north, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/engine_room) "miQ" = ( @@ -18579,6 +18715,7 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/ship, /area/crew_quarters/cryopods) "mnZ" = ( @@ -18629,6 +18766,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12;24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "mpq" = ( @@ -19002,6 +19140,7 @@ name = "Maintenance Access Plumbing"; req_one_access_txt = "5;33" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/maintenance/department/medical/central) "mBv" = ( @@ -19054,6 +19193,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "mDr" = ( @@ -19072,6 +19212,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/central/secondary) "mDK" = ( @@ -19315,6 +19456,7 @@ name = "Patient Treatment Room"; req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/patients_rooms/room_c) "mLK" = ( @@ -19594,6 +19736,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "mUs" = ( @@ -19614,6 +19757,9 @@ /obj/structure/cable/white{ icon_state = "1-4" }, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plating, /area/engine/shield_generator) "mUK" = ( @@ -19680,6 +19826,7 @@ name = "Permabrig Cell 3"; req_one_access_txt = "2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/processing) "mXf" = ( @@ -19834,14 +19981,14 @@ pixel_x = -5; pixel_y = 4 }, -/obj/item/cartridge/medical, +/obj/item/computer_hardware/hard_drive/role/medical, /turf/open/floor/carpet/ship/blue, /area/medical/storage) "mZO" = ( /obj/structure/table, -/obj/item/cartridge/engineering, +/obj/item/computer_hardware/hard_drive/role/engineering, /obj/item/airlock_painter, -/obj/item/cartridge/atmos, +/obj/item/computer_hardware/hard_drive/role/atmos, /obj/item/holosign_creator/engineering, /obj/structure/cable/white{ icon_state = "1-2" @@ -19919,6 +20066,7 @@ /obj/machinery/door/airlock/ship/engineering{ req_one_access_txt = "10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/engine/armour_pump) "ncp" = ( @@ -20102,6 +20250,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/purple/hidden, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "niT" = ( @@ -20878,6 +21027,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/engineering/reactor_core) "nHC" = ( @@ -20905,6 +21055,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/processing) "nHU" = ( @@ -21082,6 +21233,7 @@ /obj/machinery/door/airlock/ship/public{ name = "Permabrig Bathroom" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/prison) "nRc" = ( @@ -21663,6 +21815,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "omQ" = ( @@ -21706,6 +21859,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/ship, /area/crew_quarters/cryopods) "ond" = ( @@ -21740,6 +21894,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/break_room) "onM" = ( @@ -21799,6 +21954,7 @@ dir = 8 }, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "oqm" = ( @@ -21807,6 +21963,7 @@ /obj/machinery/door/airlock/ship/external/glass{ name = "External Access Deck 1 Security" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "oqz" = ( @@ -21983,6 +22140,7 @@ /obj/machinery/door/airlock/ship/maintenance{ name = "Maintenance Access Cafeteria" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/department/engine/atmos) "owK" = ( @@ -22086,6 +22244,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/department/engine/atmos) "ozH" = ( @@ -22123,6 +22282,7 @@ /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/airalarm/directional/north, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/engine_room) "oAG" = ( @@ -22164,6 +22324,7 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/engineering/reactor_core) "oBw" = ( @@ -22268,9 +22429,8 @@ /turf/open/floor/plating, /area/maintenance/department/medical) "oFt" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 9 }, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) @@ -22308,6 +22468,7 @@ name = "Permabrig Cell 1"; req_one_access_txt = "2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/prison) "oGt" = ( @@ -22358,6 +22519,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "oIn" = ( @@ -22449,6 +22611,7 @@ name = "Permabrig Cell 2"; req_one_access_txt = "2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/prison) "oKG" = ( @@ -22620,6 +22783,7 @@ name = "Maintenance Access Security War Room"; req_one_access_txt = "2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/security) "oPt" = ( @@ -22694,6 +22858,7 @@ req_one_access_txt = "2;5;12" }, /obj/structure/barricade/wooden/crude, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "oRJ" = ( @@ -22759,6 +22924,7 @@ /obj/machinery/door/poddoor/ship{ id = "permacell3" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/prison) "oST" = ( @@ -22794,6 +22960,7 @@ /obj/structure/cable/yellow{ icon_state = "5-10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "oTE" = ( @@ -22808,7 +22975,7 @@ icon_state = "4-8" }, /obj/item/paper{ - info = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; + default_raw_text = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; pixel_x = 4; pixel_y = 4 }, @@ -23101,6 +23268,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "pcI" = ( @@ -23223,6 +23391,7 @@ name = "Interrogation Room"; req_one_access_txt = "38" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/lawoffice) "pim" = ( @@ -23327,6 +23496,16 @@ }, /turf/open/floor/carpet/ship/red_carpet, /area/security/processing) +"pjM" = ( +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/airlock/ship/engineering/glass{ + name = "Supermatter Engine"; + req_one_access_txt = "24" + }, +/turf/open/floor/carpet/ship/orange_carpet, +/area/engine/engine_room) "pkb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 @@ -23344,6 +23523,7 @@ dir = 8 }, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "pkZ" = ( @@ -23585,6 +23765,7 @@ /obj/machinery/door/airlock/ship/public{ name = "Bathroom Cell" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plasteel/freezer, /area/engine/storage) "ptV" = ( @@ -23629,6 +23810,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "puW" = ( @@ -23682,6 +23864,7 @@ name = "Maintenance Access Plumbing"; req_one_access_txt = "5;12;33" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/central/secondary) "pwz" = ( @@ -23769,6 +23952,7 @@ name = "Medbay Storage"; req_one_access_txt = "5;6;39;68" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/storage) "pzp" = ( @@ -23861,6 +24045,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12;24;46" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "pEk" = ( @@ -23894,6 +24079,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12;24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "pEK" = ( @@ -24090,6 +24276,14 @@ initial_gas_mix = "n2=300000;TEMP=293.15" }, /area/engine/atmos) +"pKi" = ( +/obj/machinery/fax{ + fax_name = "Medical Lobby"; + name = "Medical Lobby Fax Machine" + }, +/obj/structure/table/reinforced, +/turf/open/floor/carpet/blue, +/area/medical/medbay/lobby) "pKs" = ( /obj/machinery/computer/warrant{ dir = 1 @@ -24262,7 +24456,7 @@ dir = 8 }, /turf/open/space/basic, -/area/space/nearstation) +/area/chapel/main) "pQv" = ( /turf/closed/wall/ship, /area/maintenance/department/medical) @@ -24349,6 +24543,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/warden) "pTe" = ( @@ -24686,6 +24881,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "qeG" = ( @@ -24776,7 +24972,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden, /obj/machinery/suit_storage_unit/standard_unit, /obj/item/paper{ - info = "

Reminder to deactivate ID requirements for airlocks in the secondary EVA storage located on Deck 1 Chapel maintenance.

" + default_raw_text = "

Reminder to deactivate ID requirements for airlocks in the secondary EVA storage located on Deck 1 Chapel maintenance.

" }, /obj/structure/window/reinforced{ dir = 8 @@ -24824,6 +25020,7 @@ name = "Armory High Security"; req_one_access_txt = "3" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/ai_monitored/security/armory/lockup) "qhd" = ( @@ -24832,6 +25029,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "qhC" = ( @@ -24930,6 +25128,7 @@ /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "qjY" = ( @@ -25158,6 +25357,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "qqz" = ( @@ -25372,6 +25572,7 @@ name = "Maintenance Access Supermatter Engine"; req_one_access_txt = "24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "qxO" = ( @@ -25742,7 +25943,6 @@ /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "qMu" = ( -/obj/machinery/atmospherics/pipe/multiz/layer1, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, @@ -25753,6 +25953,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/multiz{ + dir = 1 + }, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engine_smes) "qMz" = ( @@ -25783,6 +25986,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engineering/reactor_control) "qMX" = ( @@ -25999,10 +26203,11 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12;24;46" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "qUs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/layer_manifold/visible, /obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall/ship, /area/engine/stormdrive) @@ -26048,7 +26253,7 @@ pixel_y = 5 }, /obj/item/clothing/glasses/sunglasses/advanced, -/obj/item/cartridge/detective, +/obj/item/computer_hardware/hard_drive/role/detective, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -26412,6 +26617,7 @@ /obj/machinery/door/airlock/ship/engineering/glass{ name = "Engineering Lobby" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/crew_quarters/cafeteria) "rlZ" = ( @@ -26651,6 +26857,10 @@ }, /turf/open/floor/plating, /area/engine/engineering/reactor_control) +"rvQ" = ( +/obj/effect/landmark/zebra_interlock_point, +/turf/closed/wall/r_wall/ship, +/area/maintenance/department/medical/central) "rwr" = ( /obj/structure/closet/crate/engineering, /obj/item/stack/sheet/mineral/titanium{ @@ -26684,6 +26894,7 @@ /obj/structure/cable/yellow{ icon_state = "6-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/medbay/lobby) "rwI" = ( @@ -26713,6 +26924,7 @@ name = "Patient Treatment Room"; req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/patients_rooms/room_d) "rxN" = ( @@ -26725,6 +26937,7 @@ name = "Maintenance Access Chemistry and Plumbing"; req_one_access_txt = "33" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical/central) "rxP" = ( @@ -26945,6 +27158,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/medical) "rHn" = ( @@ -27245,6 +27459,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/engineering/reactor_core) "rQq" = ( @@ -27322,6 +27537,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/central/secondary) "rTN" = ( @@ -27721,6 +27937,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/storage) "seW" = ( @@ -27773,6 +27990,7 @@ id_tag = "MedbayFoyer"; req_one_access_txt = "5;6;33;39;68" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/medbay/lobby) "sgZ" = ( @@ -28439,19 +28657,12 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden, /turf/open/floor/carpet/ship, /area/crew_quarters/bar) -"sHB" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/maintenance/department/engine) "sHH" = ( /obj/structure/reagent_dispensers/foamtank/hull_repair_juice, /obj/item/extinguisher/advanced/hull_repair_juice, /turf/open/floor/plating, /area/maintenance/department/medical) "sIe" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Stormdrive Nucleium to FTL" - }, /obj/machinery/atmospherics/components/binary/pump/layer2{ name = "Stormdrive Chamber to Scrubbers"; on = 1; @@ -28460,6 +28671,9 @@ /obj/machinery/atmospherics/components/binary/pump/layer4{ name = "Stormdrive Nucleium to Scrubbers" }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Stormdrive Nucleium to FTL" + }, /turf/closed/wall/r_wall/ship, /area/engine/stormdrive) "sIg" = ( @@ -28470,6 +28684,7 @@ "sIz" = ( /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "sIC" = ( @@ -28826,6 +29041,7 @@ name = "Patient Treatment Room"; req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/patients_rooms/room_b) "sUi" = ( @@ -29119,6 +29335,7 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/engineering/reactor_core) "teN" = ( @@ -29172,6 +29389,7 @@ /obj/machinery/door/poddoor/ship/preopen{ id = "aether_atmos_lockdown" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "tgQ" = ( @@ -29320,6 +29538,7 @@ name = "Maintenance Access Judicial Office"; req_one_access_txt = "38" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/central/secondary) "tkR" = ( @@ -29437,6 +29656,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "tpU" = ( @@ -29857,6 +30077,7 @@ name = "Maintenance Access Morgue"; req_one_access_txt = "6;39;68" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/department/medical) "tzF" = ( @@ -29975,6 +30196,7 @@ /area/medical/medbay/lobby) "tDB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/ship, /area/crew_quarters/cryopods) "tEQ" = ( @@ -30008,6 +30230,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/brig) "tGL" = ( @@ -30052,6 +30275,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "tHQ" = ( @@ -30384,6 +30608,7 @@ name = "Head of Security Office"; req_one_access_txt = "58" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/crew_quarters/heads/hos) "tTs" = ( @@ -30393,9 +30618,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 1 - }, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engine_smes) "tTY" = ( @@ -30479,9 +30701,8 @@ "tYz" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Engineering" + location = "Engineering"; + name = "navigation beacon (Engineering Delivery)" }, /obj/structure/plasticflaps/opaque, /obj/machinery/door/window/eastleft{ @@ -30514,6 +30735,7 @@ name = "Gravity Generator Room"; req_one_access_txt = "10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/engine/gravity_generator) "tZw" = ( @@ -30530,6 +30752,7 @@ name = "Maintenance Access Infirmary"; req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/maintenance/department/medical) "tZP" = ( @@ -30733,6 +30956,7 @@ name = "Atmospherics"; req_one_access_txt = "24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "ugA" = ( @@ -30887,7 +31111,11 @@ /turf/open/floor/carpet/ship, /area/security/prison) "unH" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/green/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 9 + }, /obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall/ship, /area/engine/stormdrive) @@ -31612,6 +31840,7 @@ name = "Patient Treatment Room"; req_one_access_txt = "5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue, /area/medical/patients_rooms/room_a) "uOM" = ( @@ -31635,17 +31864,17 @@ /area/maintenance/department/engine) "uPC" = ( /obj/structure/table/glass, -/obj/item/cartridge/chemistry{ +/obj/item/computer_hardware/hard_drive/role/chemistry{ pixel_x = -4; pixel_y = 4 }, /obj/item/storage/firstaid/regular, -/obj/item/cartridge/chemistry{ +/obj/item/computer_hardware/hard_drive/role/chemistry{ pixel_x = -4; pixel_y = 4 }, -/obj/item/cartridge/medical, -/obj/item/cartridge/medical, +/obj/item/computer_hardware/hard_drive/role/medical, +/obj/item/computer_hardware/hard_drive/role/medical, /obj/item/screwdriver, /obj/machinery/airalarm/directional/west, /obj/item/computer_hardware/card_slot, @@ -31721,7 +31950,7 @@ /obj/structure/lattice/catwalk, /obj/machinery/field/generator, /turf/open/space/basic, -/area/maintenance/department/engine) +/area/space/nearstation) "uRu" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ dir = 1; @@ -32172,6 +32401,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/brig) "vlc" = ( @@ -32234,6 +32464,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "vnm" = ( @@ -32329,6 +32560,10 @@ /area/medical/morgue) "vrB" = ( /obj/structure/table, +/obj/machinery/fax{ + fax_name = "Engineering"; + name = "Engineerings Fax Machine" + }, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engine_smes) "vrH" = ( @@ -32421,6 +32656,7 @@ /obj/structure/cable/yellow{ icon_state = "5-9" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/checkpoint/escape) "vso" = ( @@ -32492,6 +32728,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/crew_quarters/cryopods) "vva" = ( @@ -32558,6 +32795,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "vym" = ( @@ -32593,11 +32831,18 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/ship, /area/crew_quarters/cryopods) "vzU" = ( /obj/structure/table, /obj/machinery/airalarm/directional/north, +/obj/item/storage/box/prisoner{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/exileimp, +/obj/item/binoculars, /turf/open/floor/carpet/ship/red_carpet, /area/security/warden) "vAl" = ( @@ -32637,7 +32882,7 @@ icon_state = "0-4" }, /turf/open/space/basic, -/area/maintenance/department/engine) +/area/space/nearstation) "vBx" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/structure/table/wood, @@ -32661,6 +32906,7 @@ /obj/machinery/atmospherics/pipe/multiz{ dir = 1 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "vCC" = ( @@ -32826,6 +33072,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engine_smes) "vHO" = ( @@ -32959,6 +33206,7 @@ /obj/machinery/door/poddoor/ship/preopen{ id = "aether_atmos_lockdown" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engine_room) "vNP" = ( @@ -33219,6 +33467,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12;24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "waz" = ( @@ -33409,6 +33658,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/brig) "wjH" = ( @@ -33488,6 +33738,7 @@ /obj/machinery/door/poddoor/ship{ id = "permacell2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/security/prison) "wlQ" = ( @@ -34034,9 +34285,6 @@ }, /turf/open/floor/carpet/ship/blue, /area/medical/chemistry) -"wGk" = ( -/turf/closed/wall/r_wall/ship, -/area/space/nearstation) "wGn" = ( /obj/machinery/newscaster/directional/north, /obj/item/kirbyplants/random, @@ -34285,6 +34533,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/engine) "wOb" = ( @@ -34335,7 +34584,7 @@ req_one_access_txt = "3" }, /obj/item/paper{ - info = "

Reminder that squad equipment vendors are located in the council chamber, tool storage, and that 4-way junction at the primary hallway, Deck 1

" + default_raw_text = "

Reminder that squad equipment vendors are located in the council chamber, tool storage, and that 4-way junction at the primary hallway, Deck 1

" }, /obj/machinery/door/poddoor/ship/preopen{ dir = 4; @@ -34347,6 +34596,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/ship, /area/crew_quarters/cryopods) "wQb" = ( @@ -34657,7 +34907,7 @@ dir = 4 }, /obj/item/clothing/head/beret/black, -/obj/item/cartridge/security, +/obj/item/computer_hardware/hard_drive/role/security, /obj/effect/spawner/lootdrop/gloves, /turf/open/floor/carpet/ship/red_carpet, /area/security/main/warroom) @@ -34725,6 +34975,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/ship, /area/crew_quarters/cryopods) "xeT" = ( @@ -34910,6 +35161,7 @@ /obj/structure/cable/yellow{ icon_state = "6-10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/chapel/office) "xoV" = ( @@ -34939,7 +35191,7 @@ }, /obj/structure/table, /obj/item/stack/sheet/mineral/copper, -/obj/item/cartridge/medical, +/obj/item/computer_hardware/hard_drive/role/medical, /turf/open/floor/carpet/ship/blue, /area/medical/storage) "xpy" = ( @@ -34969,6 +35221,7 @@ name = "Engine Observation Room"; req_one_access_txt = "10;24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/engine_smes) "xrv" = ( @@ -35381,22 +35634,22 @@ }, /obj/effect/spawner/lootdrop/maintenance/three, /obj/item/paper{ - info = "


X
Sasha Mendell (Research Director) Bethany Joyce (Scientist) Nice!

X
Bethany Joyce (Scientist) Sasha Mendell (Research Director) Want me to do anything wihth them?

X
Julissa Carr (Ship Engineer) Alexis Catherina (Ship Engineer) Im back, did I miss anything

X
Ascalapha Modesta (Head of Security) Sasha Mendell (Research Director) Can you send us the PDA logs for this shift? We're trying to solve a few crimes and we think that might help

X
Sasha Mendell (Research Director) Ascalapha Modesta (Head of Security) Sure, I'll send that right over

X
Ascalapha Modesta (Head of Security) Sasha Mendell (Research Director) Thanks

"; + default_raw_text = "


X
Sasha Mendell (Research Director) Bethany Joyce (Scientist) Nice!

X
Bethany Joyce (Scientist) Sasha Mendell (Research Director) Want me to do anything wihth them?

X
Julissa Carr (Ship Engineer) Alexis Catherina (Ship Engineer) Im back, did I miss anything

X
Ascalapha Modesta (Head of Security) Sasha Mendell (Research Director) Can you send us the PDA logs for this shift? We're trying to solve a few crimes and we think that might help

X
Sasha Mendell (Research Director) Ascalapha Modesta (Head of Security) Sure, I'll send that right over

X
Ascalapha Modesta (Head of Security) Sasha Mendell (Research Director) Thanks

"; pixel_x = 2; pixel_y = 2 }, /obj/item/paper{ - info = "


X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) I'll see what I can do

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) Hey I got your key back, you won't believe how lucky I was with the rad storm! Sent from my PDA

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) How do you want me to get it to you?

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) Stephen? Hello?

X
Julissa Carr (Ship Engineer) Alexis Catherina (Ship Engineer) brb

X
Violet Koster (Scientist) Ascalapha Modesta (Head of Security) Hey I think a cargo tech has gone missing, Stephen Greenawalt. I just messaged him a few times and he's not responding

X
Ascalapha Modesta (Head of Security) Violet Koster (Scientist) Ok we'll look into it

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) I'm stowing this contraband stuff in maintenance for now. Do let me know when you get back

X
Bethany Joyce (Scientist) Sasha Mendell (Research Director) Got rainbow in xeno

"; + default_raw_text = "


X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) I'll see what I can do

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) Hey I got your key back, you won't believe how lucky I was with the rad storm! Sent from my PDA

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) How do you want me to get it to you?

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) Stephen? Hello?

X
Julissa Carr (Ship Engineer) Alexis Catherina (Ship Engineer) brb

X
Violet Koster (Scientist) Ascalapha Modesta (Head of Security) Hey I think a cargo tech has gone missing, Stephen Greenawalt. I just messaged him a few times and he's not responding

X
Ascalapha Modesta (Head of Security) Violet Koster (Scientist) Ok we'll look into it

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) I'm stowing this contraband stuff in maintenance for now. Do let me know when you get back

X
Bethany Joyce (Scientist) Sasha Mendell (Research Director) Got rainbow in xeno

"; pixel_x = 2; pixel_y = 2 }, /obj/item/paper{ - info = "


X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) ATV? Cool

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) Why did they take it in the first place?

X
Stephen Greenawalt (Cargo Technician) Violet Koster (Scientist) i dont know

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) You'll have to be more specific than that

X
Dustin Stroh (Assistant) In A Nutshell (AI) Law 2 open

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) Were you joyriding it across the hallways?

X
Stephen Greenawalt (Cargo Technician) Violet Koster (Scientist) yes

X
Stephen Greenawalt (Cargo Technician) Violet Koster (Scientist) will you get it back for me?

"; + default_raw_text = "


X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) ATV? Cool

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) Why did they take it in the first place?

X
Stephen Greenawalt (Cargo Technician) Violet Koster (Scientist) i dont know

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) You'll have to be more specific than that

X
Dustin Stroh (Assistant) In A Nutshell (AI) Law 2 open

X
Violet Koster (Scientist) Stephen Greenawalt (Cargo Technician) Were you joyriding it across the hallways?

X
Stephen Greenawalt (Cargo Technician) Violet Koster (Scientist) yes

X
Stephen Greenawalt (Cargo Technician) Violet Koster (Scientist) will you get it back for me?

"; pixel_x = 2; pixel_y = 2 }, /obj/item/paper{ - info = "


X

Sender

Recipient

Message


X
system System Administrator This is an automated message. The messaging system is functioning correctly.

X
Jalen Khan (Cook) SYS-32EXE (Botanist) wheat carrots sugarcane lemons limes oranges chilis corn

X
Jalen Khan (Cook) SYS-32EXE (Botanist) vwheat carrots sugarcane lemons limes oranges chilis corn

X
SYS-32EXE (Botanist) Jalen Khan (Cook) anything else?

X
Bethany Joyce (Scientist) Violet Koster (Scientist) I'll go to xeno then

X
Stephen Greenawalt (Cargo Technician) Violet Koster (Scientist) hey can you help me with something? security took away my atv key and i want it back

"; + default_raw_text = "


X

Sender

Recipient

Message


X
system System Administrator This is an automated message. The messaging system is functioning correctly.

X
Jalen Khan (Cook) SYS-32EXE (Botanist) wheat carrots sugarcane lemons limes oranges chilis corn

X
Jalen Khan (Cook) SYS-32EXE (Botanist) vwheat carrots sugarcane lemons limes oranges chilis corn

X
SYS-32EXE (Botanist) Jalen Khan (Cook) anything else?

X
Bethany Joyce (Scientist) Violet Koster (Scientist) I'll go to xeno then

X
Stephen Greenawalt (Cargo Technician) Violet Koster (Scientist) hey can you help me with something? security took away my atv key and i want it back

"; pixel_x = 2; pixel_y = 2 }, @@ -35604,6 +35857,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/brig) "xIy" = ( @@ -35692,7 +35946,7 @@ /obj/structure/table, /obj/item/storage/toolbox/mechanical, /obj/item/paper{ - info = "

Engineering notice: There are three wire colors used on the Aetherwhisp 6 ship model. White cable is wired to the Stormdrive MK-4 and the supermatter crystal near atmospherics. These lead to their own SMES located nearby. Yellow wires are department distribution wires, which deliver power from the engines SMES to deparment SMES. Red wires deliver power from department SMES to department APCs.

" + default_raw_text = "

Engineering notice: There are three wire colors used on the Aetherwhisp 6 ship model. White cable is wired to the Stormdrive MK-4 and the supermatter crystal near atmospherics. These lead to their own SMES located nearby. Yellow wires are department distribution wires, which deliver power from the engines SMES to deparment SMES. Red wires deliver power from department SMES to department APCs.

" }, /obj/effect/spawner/lootdrop/maintenance, /obj/item/dest_tagger{ @@ -35938,6 +36192,7 @@ "xVt" = ( /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/engine/engine_room) "xVu" = ( @@ -36001,6 +36256,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/ship, /area/crew_quarters/cryopods) "xWT" = ( @@ -36015,6 +36271,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/ai_monitored/security/armory/security) "xWX" = ( @@ -36203,6 +36460,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/engine/atmos) "ydc" = ( @@ -36274,6 +36532,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/checkpoint/escape) "yge" = ( @@ -36391,11 +36650,6 @@ }, /turf/open/space/basic, /area/engine/engineering/reactor_core) -"yiC" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/maintenance/department/engine) "yiE" = ( /obj/machinery/vending/wardrobe/law_wardrobe, /turf/open/floor/wood, @@ -42728,109 +42982,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -42908,8 +43059,6 @@ drp drp drp drp -"} -(26,1,1) = {" drp drp drp @@ -42985,109 +43134,79 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(26,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -43165,8 +43284,6 @@ drp drp drp drp -"} -(27,1,1) = {" drp drp drp @@ -43242,109 +43359,94 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(27,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -43422,8 +43524,6 @@ drp drp drp drp -"} -(28,1,1) = {" drp drp drp @@ -43499,109 +43599,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -43680,7 +43677,7 @@ drp drp drp "} -(29,1,1) = {" +(28,1,1) = {" drp drp drp @@ -43756,109 +43753,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -43936,8 +43830,6 @@ drp drp drp drp -"} -(30,1,1) = {" drp drp drp @@ -44013,109 +43905,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -44144,6 +43933,8 @@ drp drp drp drp +"} +(29,1,1) = {" drp drp drp @@ -44193,8 +43984,6 @@ drp drp drp drp -"} -(31,1,1) = {" drp drp drp @@ -44270,109 +44059,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -44450,8 +44136,6 @@ drp drp drp drp -"} -(32,1,1) = {" drp drp drp @@ -44506,6 +44190,13 @@ drp drp drp drp +"} +(30,1,1) = {" +drp +drp +drp +drp +drp drp drp drp @@ -44527,109 +44218,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -44707,8 +44295,6 @@ drp drp drp drp -"} -(33,1,1) = {" drp drp drp @@ -44784,109 +44370,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -44965,7 +44448,7 @@ drp drp drp "} -(34,1,1) = {" +(31,1,1) = {" drp drp drp @@ -45041,109 +44524,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -45221,8 +44601,6 @@ drp drp drp drp -"} -(35,1,1) = {" drp drp drp @@ -45298,109 +44676,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -baX -aIO -baX -baX -baX -baX -baX -fIP -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -fIP -baX -baX -baX -aIO -baX -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -45429,6 +44704,8 @@ drp drp drp drp +"} +(32,1,1) = {" drp drp drp @@ -45478,8 +44755,6 @@ drp drp drp drp -"} -(36,1,1) = {" drp drp drp @@ -45555,109 +44830,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -ddw -nDX -nDX -baX -baX -baX -baX -baX -baX -baX -baX -fIP -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -fIP -baX -baX -baX -baX -baX -baX -nDX -nDX -ogT -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -45735,8 +44907,6 @@ drp drp drp drp -"} -(37,1,1) = {" drp drp drp @@ -45791,6 +44961,13 @@ drp drp drp drp +"} +(33,1,1) = {" +drp +drp +drp +drp +drp drp drp drp @@ -45812,109 +44989,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -nDX -nDX -nDX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -nDX -nDX -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -45992,8 +45066,6 @@ drp drp drp drp -"} -(38,1,1) = {" drp drp drp @@ -46069,109 +45141,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -fZX -fZX -oRc -fZX -baX -baX -baX -baX -xIZ -baX -xIZ -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -baX -baX -baX -sHB -sHB -vBw -sHB -uQO -baX -baX -baX -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -xIZ -baX -xIZ -baX -baX -baX -fcp -kni -fcp -fcp -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -46250,7 +45219,7 @@ drp drp drp "} -(39,1,1) = {" +(34,1,1) = {" drp drp drp @@ -46326,109 +45295,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -fZX -doX -pjp -fZX -fZX -oRc -fZX -baX -baX -baX -baX -baX -xIZ -baX -xIZ -baX -baX -baX -baX -baX -fIP -baX -baX -fIP -baX -baX -fIP -baX -baX -fIP -baX -aIO -yiC -yiC -yiC -sHB -yiC -wgR -yiC -sHB -yiC -yiC -yiC -aIO -baX -baX -baX -fIP -baX -baX -fIP -baX -baX -fIP -baX -baX -fIP -baX -baX -baX -baX -xIZ -baX -xIZ -baX -baX -baX -baX -fcp -kni -fcp -fcp -sJd -oTE -fcp -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -46506,8 +45372,6 @@ drp drp drp drp -"} -(40,1,1) = {" drp drp drp @@ -46583,109 +45447,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -awf -ale -cVy -abT -eQb -vYM -fZX -fZX -oRc -oRc -fZX -baX -baX -baX -baX -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -fZX -fZX -nPK -nPK -nPK -fZX -nPK -wkI -nPK -fZX -nPK -nPK -nPK -fZX -fZX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -baX -baX -baX -baX -fcp -kni -kni -fcp -fcp -wZo -gZv -oNn -isX -iAM -jjP -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -46714,6 +45475,8 @@ drp drp drp drp +"} +(35,1,1) = {" drp drp drp @@ -46763,8 +45526,6 @@ drp drp drp drp -"} -(41,1,1) = {" drp drp drp @@ -46800,10 +45561,15 @@ drp drp drp drp +aIO drp +aIO drp drp drp +baX +baX +fIP drp drp drp @@ -46840,109 +45606,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -fZX -yca -sRz -dIV -fkp -srh -fZX -yca -khk -kzp -fZX -fZX -oRc -oRc -fZX -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -fZX -yca -nQy -nQy -nQy -boE -aaY -xvv -aaY -jQH -hYk -kTW -yca -suG -fZX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -fcp -kni -kni -fcp -fcp -txa -yiO -xWq -fcp -jHS -rPL -mPG -lom -xWq -fcp -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -46974,10 +45637,15 @@ drp drp drp drp +baX +baX +fIP drp drp drp +aIO drp +aIO drp drp drp @@ -47020,8 +45688,6 @@ drp drp drp drp -"} -(42,1,1) = {" drp drp drp @@ -47066,6 +45732,8 @@ drp drp drp drp +"} +(36,1,1) = {" drp drp drp @@ -47097,109 +45765,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -fZX -fZX -fZX -fZX -yca -gKm -fZX -glw -pqx -sKj -tNy -tNy -khk -twZ -fZX -fZX -nPK -fZX -fZX -oRc -fZX -fZX -oRc -fZX -fZX -oRc -fZX -fZX -oRc -fZX -fZX -yca -oLG -fLG -rHZ -tmg -uPa -xGu -uPa -uPa -nkb -oRl -poY -suG -fZX -fZX -oRc -fZX -fZX -oRc -fZX -fZX -oRc -fZX -fZX -oRc -fZX -fZX -nPK -fZX -fcp -xHf -hCh -qNs -qNs -xWq -kkh -xWq -fcp -peh -xWq -fcp -fcp -fcp -fcp -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -47253,9 +45818,18 @@ drp drp drp drp +ddw +nDX +nDX drp drp drp +baX +baX +baX +baX +baX +fIP drp drp drp @@ -47277,8 +45851,6 @@ drp drp drp drp -"} -(43,1,1) = {" drp drp drp @@ -47319,9 +45891,18 @@ drp drp drp drp +baX +baX +fIP +baX +baX +baX drp drp drp +nDX +nDX +ogT drp drp drp @@ -47354,109 +45935,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -baX -jEV -fZX -cqD -tQl -yca -yca -gKm -fZX -yca -nGc -qOt -gaE -yca -pqx -yca -fZX -yca -yca -yca -yca -pdi -yca -yca -hgc -tBM -tjr -xYR -tjr -tjr -xYR -tjr -oHZ -tjr -tjr -wni -guv -uuR -yca -xHH -yca -yca -yca -yca -yca -yca -fZX -yca -pqx -yca -yca -pqx -yca -qib -pqx -yca -yca -pdi -yca -yca -yca -yca -fcp -xWq -jnh -moB -xWq -xWq -nYE -xWq -fcp -peh -xWq -xWq -nfe -nTe -fcp -baX -kKb -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -47511,6 +45989,8 @@ drp drp drp drp +"} +(37,1,1) = {" drp drp drp @@ -47534,8 +46014,6 @@ drp drp drp drp -"} -(44,1,1) = {" drp drp drp @@ -47597,129 +46075,18 @@ drp drp drp drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aIO -aIO -azC -fkp -fkp -vaJ -cIu -hLZ -mUl -cIu -muX -bYl -cIu -tjr -uon -lDP -aea -cIu -cIu -cIu -cIu -nOF -cIu -cIu -aRH -azi -yca -yca -fZX -fZX -fZX -fZX -fZX -yca -yca -wpp -tjr -uFp -tjr -mGo -tjr -tjr -tjr -tjr -tjr -tjr -oHZ -tjr -xYR -tjr -tjr -xYR -tjr -tjr -xYR -tjr -tjr -evC -tjr -tjr -tjr -tjr -qen -mBB -qOg -skz -ozc -eFC -mqX -qVi -niM -gup -qVi -knr -rPL -rPL -nwa -aIO -aIO -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -drp -drp -drp -drp -drp -drp +aek +aUx +aUx +nDX +nDX +nDX +baX +baX +baX +baX +baX +baX drp drp drp @@ -47781,6 +46148,18 @@ drp drp drp drp +baX +baX +baX +baX +baX +baX +aIO +nDX +nDX +aUx +aUx +hBy drp drp drp @@ -47791,8 +46170,6 @@ drp drp drp drp -"} -(45,1,1) = {" drp drp drp @@ -47868,110 +46245,9 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aIO -baX -aoR -fZX -yca -yca -inW -yca -yca -fZX -yca -yca -yca -yca -yca -enK -yca -fZX -dmx -dmx -dmx -dmx -dmx -tYz -dmx -dmx -fXH -dmx -dmx -fZX -rzB -mqd -sst -fZX -fZX -fZX -wsg -fZX -fZX -fZX -fZX -fZX -fZX -fZX -fZX -fZX -fZX -fZX -fZX -yca -yca -yca -dmx -dmx -dmx -dmx -dmx -dmx -pcy -dmx -dmx -dmx -dmx -fcp -xWq -xWq -vYn -xWq -xWq -xWq -xWq -fcp -xWq -xWq -jpW -xWq -dQk -fcp -baX -baX -pLq -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp +"} +(38,1,1) = {" drp drp drp @@ -48048,8 +46324,6 @@ drp drp drp drp -"} -(46,1,1) = {" drp drp drp @@ -48058,6 +46332,22 @@ drp drp drp drp +aek +aUx +aUx +aUx +aUx +fZX +fZX +oRc +fZX +baX +baX +baX +baX +xIZ +baX +xIZ drp drp drp @@ -48078,12 +46368,19 @@ drp drp drp drp +aIO drp drp drp +usX +usX +vBw +usX +uQO drp drp drp +aIO drp drp drp @@ -48104,6 +46401,22 @@ drp drp drp drp +baX +xIZ +baX +xIZ +baX +baX +baX +fcp +kni +fcp +fcp +aUx +aUx +aUx +aUx +hBy drp drp drp @@ -48125,109 +46438,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aIO -baX -baX -azC -fkp -fkp -rXA -yca -yca -fZX -yca -yca -yca -fZX -fZX -nPK -fZX -fZX -sAv -ptj -xAe -niE -krX -qGE -uZP -asA -aGi -qGE -uQG -ftM -oeJ -oeJ -sAq -tOC -vds -azl -baZ -sLc -vEc -wsg -kqR -nPZ -ohw -tjz -xaL -wHl -xdd -oDE -fZX -fZX -fZX -fZX -fZX -yca -yca -yca -yca -yca -yca -yca -yca -yca -nKN -fcp -fcp -fcp -fcp -fcp -xWq -xWq -xWq -fcp -xWq -xWq -veq -rPL -dkF -nwa -baX -baX -aIO -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -48293,6 +46503,8 @@ drp drp drp drp +"} +(39,1,1) = {" drp drp drp @@ -48305,8 +46517,6 @@ drp drp drp drp -"} -(47,1,1) = {" drp drp drp @@ -48379,112 +46589,100 @@ drp drp drp drp +aek +aUx +aUx +aUx +aUx +fZX +doX +pjp +fZX +fZX +oRc +fZX +baX +baX +baX +baX +baX +xIZ +baX +xIZ drp drp drp baX baX +fIP baX baX +fIP baX baX +fIP baX baX -baX -aek -aUx -aIO +fIP +drp aIO +icn +icn +icn +usX +icn +wgR +icn +usX +icn +icn +icn aIO -fZX -hVC -tQx -inW -yca -yca -fZX -fZX -fZX -fZX -fZX +drp baX baX +fIP baX -ftM -krX -krX -hkN -qdi -krX -qGE -uZP -nxK -uQr -nTz -jZN -ftM -oeJ -pGW -sIC -tYN -vnm -azw -vnm -pRz -cuK -wsg -oQU -ine -iNt -iNt -iNt -iNt -iNt -qsD -pox -cHC -oAZ -iBv -fZX -yca -yca -yca -yca -yca -yca -yca -yca -yca -yca -fZX -giM -giM -giM -fcp -fcp -egj -fcp -fcp -xWq -xWq -jpW -fmP -nIG -fcp -aIO -aIO -aIO -aUx -hBy +baX +fIP baX baX +fIP +baX baX +fIP +drp +drp +drp baX +xIZ baX +xIZ baX baX baX baX +fcp +kni +fcp +fcp +sJd +oTE +fcp +aUx +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -48563,7 +46761,12 @@ drp drp drp "} -(48,1,1) = {" +(40,1,1) = {" +drp +drp +drp +drp +drp drp drp drp @@ -48639,6 +46842,35 @@ drp drp drp drp +drp +drp +drp +drp +aek +aUx +aUx +aUx +aUx +awf +ale +cVy +abT +eQb +vYM +fZX +fZX +oRc +oRc +fZX +baX +baX +baX +baX +aIO +drp +drp +baX +baX baX baX baX @@ -48648,16 +46880,20 @@ baX baX baX baX -aek -aUx -aIO baX -aoR fZX fZX +nPK +nPK +nPK fZX -pEy +nPK +wkI +nPK fZX +nPK +nPK +nPK fZX fZX baX @@ -48667,81 +46903,43 @@ baX baX baX baX -ftM -sAv -ptj -xTp -ait -krX -qGE -uZP -fsU -aGi -qGE -jZN -ftM -oeJ -oeJ -sME -tOC -fze -jyX -skR -sTp -axa -wsg -kQw -dZP -ttN -yeM -uPR -wHX -hmB -hmB -mdS -eNr -iNt -iNt -fZX -yca -yca -yca -yca -yca -yca -yca -yca -yca -yca -fZX -giM -giM -giM -rXF -giM -giM -giM -fcp -fcp -fcp -pDf -fcp -fcp -fcp -baX -baX -pLq -aUx -hBy baX baX baX baX baX +drp +drp +aIO baX baX baX baX +fcp +kni +kni +fcp +fcp +wZo +gZv +oNn +isX +iAM +jjP +aUx +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -48820,7 +47018,16 @@ drp drp drp "} -(49,1,1) = {" +(41,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -48896,27 +47103,34 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aIO -baX -baX -azC -fkp -fkp -rXA +aUx +aUx +aUx +fZX yca +sRz +dIV +fkp +srh +fZX yca +khk +kzp +fZX fZX +oRc +oRc +fZX +aIO +drp +drp +baX +baX +baX +baX +baX baX baX baX @@ -48924,72 +47138,23 @@ baX baX baX baX -ftM -krX -krX -fAK -aDo -seg -oUj -pXY -fvX -phS -vZr -jZN -ftM -oeJ -auy -oeJ -tOC -rwr -jyX -jyX -sTp -rhP -wsg -jmC -ldU -iNt -iNt -sKV -iNt -iNt -iNt -pox -iNt -aIA -ucC fZX yca +nQy +nQy +nQy +boE +aaY +xvv +aaY +jQH +hYk +kTW yca -yca -yca -yca -yca -yca -yca -yca -yca +suG fZX -rXF -onM -bYy -bYy -bYy -bYy -ltt -fcp -xWq -xWq -veq -rPL -rPL -nwa baX baX -aIO -aUx -hBy baX baX baX @@ -48999,6 +47164,39 @@ baX baX baX baX +baX +drp +drp +aIO +fcp +kni +kni +fcp +fcp +txa +yiO +xWq +fcp +jHS +rPL +mPG +lom +xWq +fcp +aUx +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -49077,7 +47275,16 @@ drp drp drp "} -(50,1,1) = {" +(42,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -49153,109 +47360,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aIO -baX -baX +aUx +aUx +aUx +fZX +fZX +fZX fZX yca -yca -inW -yca -yca +gKm fZX -baX -baX -baX -baX -baX -baX -baX -ftM -cYD -ptj -dAf -dHB -krX -afF -fiX -fDC -aGi -qGE -atr -ftM -wsg -wsg -trf -wsg -puW -azE -jyX -sTp -rhP -wsg -pPS -cmV -iNt -wsg -wsg -wsg +glw +pqx +sKj +tNy +tNy +khk +twZ fZX fZX +nPK fZX fZX +oRc fZX fZX +oRc +fZX +fZX +oRc +fZX +fZX +oRc +fZX fZX yca -yca -yca -yca -yca -yca -yca -yca -yca -yca +oLG +fLG +rHZ +tmg +uPa +xGu +uPa +uPa +nkb +oRl +poY +suG +fZX +fZX +oRc +fZX +fZX +oRc +fZX +fZX +oRc +fZX +fZX +oRc +fZX +fZX +nPK fZX -giM -tyF -yiw -tyF -yiw -tyF -tyF fcp +xHf +hCh +qNs +qNs xWq +kkh xWq -jpW -xWq +fcp +peh xWq fcp -baX -baX -aIO +fcp +fcp +fcp +aUx +aUx +aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -49334,7 +47532,16 @@ drp drp drp "} -(51,1,1) = {" +(43,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -49410,109 +47617,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aIO -aIO -tQh +aUx +baX +jEV fZX +cqD +tQl yca yca -inW +gKm +fZX yca +nGc +qOt +gaE +yca +pqx yca fZX -baX -baX -baX -baX -baX -baX -baX -ftM -krX -krX -krX -krX -krX -oWT -gfQ -fGQ -siE -qGE -iMZ -ilX -oqH -jTY -kLQ -wsg -wsg -wJa -wJa -nWP -qJx -wsg -wsg -vHt -wsg -wsg -amA -jyX -dmx yca yca yca yca +pdi yca -wai yca +hgc +tBM +tjr +xYR +tjr +tjr +xYR +tjr +oHZ +tjr +tjr +wni +guv +uuR +yca +xHH yca yca yca yca yca yca +fZX +yca +pqx +yca +yca +pqx +yca +qib +pqx +yca +yca +pdi +yca yca yca yca -fZX -giM -tyF -yiw -tyF -yiw -tyF -tyF fcp xWq +jnh +moB xWq -jpW xWq +nYE xWq fcp -aIO -aIO -pLq +peh +xWq +xWq +nfe +nTe +fcp +baX +kKb +aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -49591,7 +47789,16 @@ drp drp drp "} -(52,1,1) = {" +(44,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -49667,109 +47874,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx +aUx +aIO aIO -baX -baX azC fkp fkp -rXA -yca -poY -fZX -baX -baX -baX -baX -baX -baX -baX -ftM -qGE -qGE -dDD -krX -aiw -qGE -sGe -qGE -djv -kvx -kvx -lqv -oqH -pWz -twj -piG -xsq -eaU -eaU -wqH -qMu -tTs -dfh -bIH -adX -nJE -mvK -aMO -dmx -rll -yca -yca -yca -yca -dmx -yca -yca -yca -yca -yca -yca +vaJ +cIu +hLZ +mUl +cIu +muX +bYl +cIu +tjr +uon +lDP +aea +cIu +cIu +cIu +cIu +nOF +cIu +cIu +aRH +azi yca yca +fZX +fZX +fZX +fZX +fZX yca yca -fZX -giM -tyF -yiw -tyF -yiw -tyF -tyF -fcp -xWq -xWq -veq +wpp +tjr +uFp +tjr +mGo +tjr +tjr +tjr +tjr +tjr +tjr +oHZ +tjr +xYR +tjr +tjr +xYR +tjr +tjr +xYR +tjr +tjr +evC +tjr +tjr +tjr +tjr +qen +mBB +qOg +skz +ozc +eFC +mqX +qVi +niM +gup +qVi +knr rPL rPL nwa -baX -baX +aIO aIO aUx +aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -49848,7 +48046,16 @@ drp drp drp "} -(53,1,1) = {" +(45,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -49924,109 +48131,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aIO baX -baX +aoR fZX yca yca inW yca -aVm -fZX -baX -baX -baX -baX -baX -baX -baX -ftM -qGE -dhO -dHg -dOd -aiS -nuG -dHg -dHg -jcm -gqn -dHg -oKa -iKc -pZu -twN -urH -qkZ -vwq -urH -vhF -eHr -kNE -kNE -orF -oJL -jyX -sTp -jyX -xrn -yca -yca -yca -iFM -hzZ -dmx yca +fZX yca yca yca yca yca +enK yca +fZX +dmx +dmx +dmx +dmx +dmx +tYz +dmx +dmx +fXH +dmx +dmx +fZX +rzB +mqd +sst +fZX +fZX +fZX +wsg +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX yca yca yca -fZX -rXF -tyF -yiw -tyF -yiw -tyF -tyF +dmx +dmx +dmx +dmx +dmx +dmx +pcy +dmx +dmx +dmx +dmx fcp xWq xWq -jpW +vYn +xWq +xWq +xWq xWq +fcp +xWq +xWq +jpW xWq +dQk fcp baX baX -aIO +pLq aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -50105,7 +48303,16 @@ drp drp drp "} -(54,1,1) = {" +(46,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -50181,20 +48388,11 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aUx aIO -uxk +baX +baX azC fkp fkp @@ -50202,88 +48400,88 @@ rXA yca yca fZX -baX -baX -baX -baX -baX -baX -baX -ftM -qGE -luW -aiq -krX -uGH -lrm -qGE -wpu -fXN -nOE -qGE -llN -oqH -arF -jyX -jyX -raq -ixJ -xSP -dSJ -ikV -jDz -jyX -ixJ -woZ -jyX -sTp -ltW -dmx -isl -yca -yca -qib -dha -dmx -yca -yca -yca -yca -yca -yca -yca yca yca yca fZX -giM -yiw -yiw -yiw -yiw -yiw -yiw +fZX +nPK +fZX +fZX +sAv +ptj +xAe +niE +krX +qGE +uZP +asA +aGi +qGE +uQG +ftM +oeJ +oeJ +sAq +tOC +vds +azl +baZ +sLc +vEc +wsg +kqR +nPZ +ohw +tjz +xaL +wHl +xdd +oDE +fZX +fZX +fZX +fZX +fZX +yca +yca +yca +yca +yca +yca +yca +yca +yca +nKN +fcp +fcp +fcp +fcp +fcp +xWq +xWq +xWq fcp xWq xWq veq rPL -rPL +dkF nwa +baX +baX aIO -whU -aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -50362,7 +48560,16 @@ drp drp drp "} -(55,1,1) = {" +(47,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -50438,70 +48645,61 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aUx -baX -baX +aIO +aIO +aIO fZX -ixl -yca +hVC +tQx inW yca yca -nPK -baX -baX -baX -baX -baX -baX -baX +fZX +fZX +fZX +fZX +fZX +drp +drp +drp ftM -tVQ -luW -qGE krX -qMz -qGE -qGE -qGE -fZL +krX +hkN +qdi +krX qGE -suN -rNE -oqH -jZL -jyX -dab -tRq -sMv -gCg -dZE -iFf -lwu -hHg -kjn -sbI -dab -sTp -nqF -dmx -yca -chh -tae -xPt -dha -dmx +uZP +nxK +uQr +nTz +jZN +ftM +oeJ +pGW +sIC +tYN +vnm +azw +vnm +pRz +cuK +wsg +oQU +ine +iNt +iNt +iNt +iNt +iNt +qsD +pox +cHC +oAZ +iBv +fZX yca yca yca @@ -50514,33 +48712,33 @@ yca yca fZX giM -tyF -yiw -tyF -yiw -tyF -tyF +giM +giM +fcp +fcp egj +fcp +fcp xWq xWq jpW -xWq -xWq +fmP +nIG fcp -baX -baX -aUx +aIO +aIO +aIO aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -50619,7 +48817,16 @@ drp drp drp "} -(56,1,1) = {" +(48,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -50695,109 +48902,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aUx -aUx -aUx -fZX -yca -yca -inW -yca -yca -nPK -baX -baX -baX -baX -baX -baX +aIO baX -ftM -hod -voa -nTz -krX -dGn -mFK -cWb -sIg -gaN -qGE -hSu -iyH -oqH -kau -pHT -jyX -sOT -xrF -edz -wZQ -iFf -jyX -dGp -xrF -pXR -jyX -eiN -wIC -dmx -fZX -fZX -lgl -fZX -qra -fZX -fZX -fZX -fZX +aoR fZX fZX fZX +pEy fZX fZX fZX +drp +drp +drp +drp +drp +drp +drp +ftM +sAv +ptj +xTp +ait +krX +qGE +uZP +fsU +aGi +qGE +jZN +ftM +oeJ +oeJ +sME +tOC +fze +jyX +skR +sTp +axa +wsg +kQw +dZP +ttN +yeM +uPR +wHX +hmB +hmB +mdS +eNr +iNt +iNt fZX +yca +yca +yca +yca +yca +yca +yca +yca +yca +yca fZX -hIs -tyF -yiw -tyF -yiw -tyF -tyF -egj -xWq -xWq -jpW -xWq -xWq +giM +giM +giM +rXF +giM +giM +giM +fcp +fcp +fcp +pDf +fcp +fcp fcp -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX baX baX +pLq +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -50876,7 +49074,16 @@ drp drp drp "} -(57,1,1) = {" +(49,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -50952,109 +49159,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aUx -oWz -aUx -fZX -yca -yca -inW -yca -yca -nPK -baX -baX -baX -baX +aIO baX baX -cfj -aoQ -qGE -luW -qGE -krX -krX +azC +fkp +fkp +rXA +yca +yca +fZX +drp +drp +drp +drp +drp +drp +drp +ftM krX -huX -huX -huX -huX krX -eNf -oqH -fca +fAK +aDo +seg +oUj +pXY +fvX +phS +vZr +jZN +ftM +oeJ +auy +oeJ +tOC +rwr jyX -ula -rVt -hUw -wcw -lbA -oeT -eBG -cjm -hUw -jSu -dVM -txM -xDt -dlz -xpm -gDV -ekI -sYd -lCi -xpm -xpm -xpm -hMD -sxJ -rke -xpm -ubi -hzs -lNK -fRI -pAh -giM -tyF -yiw -tyF -yiw -tyF -tyF -egj -xWq -xWq -jpW +jyX +sTp +rhP +wsg +jmC +ldU +iNt +iNt +sKV +iNt +iNt +iNt +pox +iNt +aIA +ucC +fZX +yca +yca +yca +yca +yca +yca +yca +yca +yca +yca +fZX +rXF +onM +bYy +bYy +bYy +bYy +ltt +fcp xWq xWq -fcp -aUx -oWz -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX +veq +rPL +rPL +nwa baX baX +aIO +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -51133,7 +49331,16 @@ drp drp drp "} -(58,1,1) = {" +(50,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -51209,20 +49416,11 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aUx -aUx -aUx +aIO +baX +baX fZX yca yca @@ -51230,62 +49428,62 @@ inW yca yca fZX -baX -baX -baX -baX -baX -baX -cfj -aoQ -qGE -fhu +drp +drp +drp +drp +drp +drp +drp +ftM +cYD +ptj +dAf +dHB +krX +afF +fiX +fDC +aGi qGE -ydV -gnY -hit -hWj -hWj -hWj -hWj -dxF -dxF -hbS -brP -qeY -dxF -uUg -wfh -vrX -iUr -oYM -tMy -vzo -wfh -vrB -fhB -wTe -gtc -xaP -uJR -wbV -wyl -xKu -nHb -xKu -wyl -xKu -gQQ -xKu -ueu -xKu -aKH -xKu -xKu -fTM -rFv -ddE -lXO +atr +ftM +wsg +wsg +trf +wsg +puW +azE +jyX +sTp +rhP +wsg +pPS +cmV +iNt +wsg +wsg +wsg +fZX +fZX +fZX +fZX +fZX +fZX +fZX +yca +yca +yca +yca +yca +yca +yca +yca +yca +yca +fZX +giM +tyF yiw tyF yiw @@ -51298,20 +49496,20 @@ jpW xWq xWq fcp -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX baX baX +aIO +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -51390,7 +49588,16 @@ drp drp drp "} -(59,1,1) = {" +(51,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -51466,109 +49673,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aUx -aUx -aUx -fZX -fZX -fZX -pEy +aIO +aIO +tQh fZX +yca +yca +inW +yca +yca fZX +drp +drp +drp +drp +drp +drp +drp +ftM +krX +krX +krX +krX +krX +oWT +gfQ +fGQ +siE +qGE +iMZ +ilX +oqH +jTY +kLQ +wsg +wsg +wJa +wJa +nWP +qJx +wsg +wsg +vHt +wsg +wsg +amA +jyX +dmx +yca +yca +yca +yca +yca +wai +yca +yca +yca +yca +yca +yca +yca +yca +yca +yca fZX -baX -baX -baX -baX -baX -baX -bPw -cIM -dch -drQ -dch -dQu -dyf -mYp -mYp -mYp -mYp -mYp -dtR -cyD -rNl -bMw -wpd -sIe -unH -qUs -iYk -pgd -bCa -oIF -sVJ -nJx -ljm -fhB -sTD -fRI -aSe -mfx -wEf -uLt -wEf -izD -wEf -vkA -wEf -oMO -wEf -vkA -wEf -sbH -vUB -vUB -vUB -pAh giM -wIZ -qCn -qCn -qCn -qCn -shq -fcp -fcp -fcp -pDf -fcp +tyF +yiw +tyF +yiw +tyF +tyF fcp +xWq +xWq +jpW +xWq +xWq fcp -aUx -aUx -aUx +aIO +aIO +pLq aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -51647,7 +49845,16 @@ drp drp drp "} -(60,1,1) = {" +(52,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -51723,109 +49930,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aUx -aUx -aUx -fZX -yca -yca -inW -yca -pUn -fZX -baX -baX -baX -baX +aIO baX baX -abz +azC +fkp +fkp +rXA +yca +poY +fZX +drp +drp +drp +drp +drp +drp +drp ftM qGE -luW -aiq -ydV -gcy -kzw -aKl -tRw -csG -hhG -qeY -lwx -kSL -iFU -btP -gnP -lII -dxF -sEo -fiy -qPJ -tlX -sOp -fhB -xVP -fhB -rhJ -rhJ -rhJ -xqi -fRI -hRL -fRI -ngE -fRI -ycd -fRI -vYR -fRI -ycd -fRI -nYR -tKh -vcn -eoG -fhB -giM +qGE +dDD +krX +aiw +qGE +sGe +qGE +djv +kvx +kvx +lqv +oqH +pWz +twj +piG +xsq +eaU +cFz +wqH +qMu +tTs +dfh +bIH +adX +nJE +mvK +aMO +dmx +rll +yca +yca +yca +yca +dmx +yca +yca +yca +yca +yca +yca +yca +yca +yca +yca +fZX giM -onM -bMU -bYy -bMU -lXO +tyF +yiw +tyF +yiw +tyF +tyF fcp xWq xWq -jpW -xWq -xWq -fcp -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX +veq +rPL +rPL +nwa baX baX +aIO +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -51904,7 +50102,16 @@ drp drp drp "} -(61,1,1) = {" +(53,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -51980,83 +50187,74 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aUx -aUx -aUx +aIO +baX +baX fZX yca yca inW yca +aVm +fZX +drp +drp +drp +drp +drp +drp +drp +ftM +qGE +dhO +dHg +dOd +aiS +nuG +dHg +dHg +jcm +gqn +dHg +oKa +iKc +pZu +twN +urH +qkZ +vwq +urH +vhF +eHr +kNE +kNE +orF +oJL +jyX +sTp +jyX +xrn +yca +yca +yca +iFM +hzZ +dmx +yca +yca +yca +yca +yca +yca +yca +yca +yca yca fZX -baX -baX -baX -baX -baX -baX -bPw -aBZ -dch -dqp -enG -dQT -euc -ats -vWT -hNX -rHn -bBl -qeY -mqW -mqW -rko -kpb -xwp -lXJ -xwp -kOo -vHO -qUt -cQY -sbK -dTd -kaD -dTd -uwn -wlT -xtm -mNn -yiU -sfH -obm -riW -eEm -rKX -fBz -oWr -isK -aXi -fRI -eON -uiu -vcn -dLK -dTd -giM -giM +rXF +tyF yiw tyF yiw @@ -52069,20 +50267,20 @@ jpW xWq xWq fcp -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX baX baX +aIO +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -52161,7 +50359,16 @@ drp drp drp "} -(62,1,1) = {" +(54,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -52237,109 +50444,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx -aUx -aUx -fZX -yca -yca -inW +aIO +uxk +azC +fkp +fkp +rXA yca yca fZX -baX -baX -baX -baX -vnA -ftM -ftM +drp +drp +drp +drp +drp +drp +drp ftM -ivz +qGE luW +aiq +krX +uGH +lrm qGE -ydV -gbQ -lkR -bjZ -kcE -aEx -hiq -qeY -kUu -kUu -rqW -kUu -dxF -mTY -dxF -sKt -riK -qVU -tYB -soi -sQL -pLI -fhB -wEf -jRD -nnq -teN -fRI -atW -fRI -tWN -fRI -wQy -fRI -roG -fRI -wQy -fRI -dhc -uBY -vcn -eoG -fhB -fzg -fhB +wpu +fXN +nOE +qGE +llN +oqH +arF +jyX +jyX +raq +ixJ +xSP +dSJ +ikV +jDz +jyX +ixJ +woZ +jyX +sTp +ltW +dmx +isl +yca +yca +qib +dha +dmx +yca +yca +yca +yca +yca +yca +yca +yca +yca +yca +fZX +giM +yiw +yiw +yiw +yiw yiw -tyF yiw -tyF -tyF fcp xWq xWq -jpW -xWq -xWq -fcp -aUx -aUx +veq +rPL +rPL +nwa +aIO +whU aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -52418,7 +50616,16 @@ drp drp drp "} -(63,1,1) = {" +(55,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -52494,109 +50701,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx -aUx -aUx +baX +baX fZX -yca +ixl yca inW yca yca -fZX -baX -baX -baX -baX -baX +nPK +drp +drp +drp +drp +drp +drp +drp ftM -abF -krX tVQ luW qGE -iIX -gYc -hWj -hWj -hWj -gem -hbm -dxF -mqW -hWp -iBx -qUW -lfv -mzx -nEy -maS -hdi -jZP -raT -qbK -fhB -xNl -fhB -iuY -bQR -xxr -iqY -rhJ -hUB -rhJ -rPZ -rhJ -oZA -rhJ -kDS -rhJ -wmk -rhJ -fjc -ajp -ajp -ajp -uSf -aUl -fhB +krX +qMz +qGE +qGE +qGE +fZL +qGE +suN +rNE +oqH +jZL +jyX +dab +tRq +sMv +gCg +dZE +iFf +lwu +hHg +kjn +sbI +dab +sTp +nqF +dmx +yca +chh +tae +xPt +dha +dmx +yca +yca +yca +yca +yca +yca +yca +yca +yca +yca +fZX +giM +tyF yiw tyF yiw tyF tyF -fcp +egj xWq xWq jpW xWq xWq fcp -aUx -aUx +baX +baX aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -52675,7 +50873,16 @@ drp drp drp "} -(64,1,1) = {" +(56,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -52751,15 +50958,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx @@ -52772,67 +50970,67 @@ inW yca yca nPK -baX -baX -baX -baX -baX -byr -ezI -cPb -pPc -bzY +drp +drp +drp +drp +drp +drp +drp +ftM +hod +voa +nTz +krX +dGn +mFK +cWb +sIg +gaN qGE -ydV -qIP -cwv -kUo -fEz -iiY -jKN -mUf -mUf -hXC -hha -oIF -hGh -nzE -nGX -pjB -oyI -qYr -raT -spm -sXi -ubQ -oIF -ktU -emF -kPk -wks -wut -vWE -yeR -tey -yeR -vWE -yeR -fUp -yeR -nFs -hiu -hYM -hiu -hiu -hiu -uCD -bFp -nZb -xaO -rdx -rdx -rdx -kpL +hSu +iyH +oqH +kau +pHT +jyX +sOT +xrF +edz +wZQ +iFf +jyX +dGp +xrF +pXR +jyX +eiN +wIC +dmx +fZX +fZX +lgl +fZX +qra +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +hIs +tyF +yiw +tyF +yiw +tyF +tyF egj xWq xWq @@ -52845,15 +51043,15 @@ aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -52932,7 +51130,16 @@ drp drp drp "} -(65,1,1) = {" +(57,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -53008,19 +51215,10 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx -aUx +oWz aUx fZX yca @@ -53029,67 +51227,67 @@ inW yca yca nPK -baX -baX -baX -baX -baX -ftM -iJR -buP -dEm -fCu -dEm -ydV -ydV -ydV -ydV -ydV -geu -ydV -ydV -fUQ -oMZ -rtH -tGL -uAz -mAK -nHU -nzI -aTB -qZc -rxZ -mhk -trq -uan -dYs -dEx -qlj -jlw -ioq -hAH -aSV -msJ -fdV -fRI -kuj +drp +drp +drp +drp +drp +drp +cfj +aoQ +qGE +luW +qGE +krX +krX +krX +huX +huX +huX +huX +krX +eNf +oqH +fca +jyX +ula +rVt +hUw +wcw +lbA +oeT +eBG +cjm +hUw +jSu +dVM +txM +xDt +dlz +xpm +gDV +ekI +sYd +lCi +xpm +xpm +xpm +hMD +sxJ +rke +xpm +ubi +hzs +lNK fRI -oBp -jbm -eBl -dEA -whk -ksK -lFJ -upK -hIT -hsX -lQS -kpL -eLM -eLM -eLM -eLM +pAh +giM +tyF +yiw +tyF +yiw +tyF +tyF egj xWq xWq @@ -53098,19 +51296,19 @@ xWq xWq fcp aUx -aUx +oWz aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -53189,7 +51387,16 @@ drp drp drp "} -(66,1,1) = {" +(58,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -53265,15 +51472,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx @@ -53286,90 +51484,90 @@ inW yca yca fZX -baX -baX -baX -baX -baX -ftM -krX -krX -qGE -luW -aiq -krX -oFW -ajx -oox -chY -ghF -jXk -atJ -wVk -iVW -oPC -oPC -oLo -mBQ -kVv -pjI -kVv -iIu -kVv -gCu -tsi -ube -hbz -oKX -nXQ -xzx -iTn -fhB -qss -fhB -fhB -fhB -fhB -fhB -fhB -fhB -dTd -dTd -dTd -fhB -fhB -fhB -fhB -kjC -fhB -nVA -eLM -eLM -eLM -eLM -fcp -xWq -xWq -jpW -xWq -xWq -fcp -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -drp -drp +drp +drp +drp +drp +drp +drp +cfj +aoQ +qGE +fhu +qGE +ydV +gnY +hit +hWj +hWj +hWj +hWj +dxF +dxF +hbS +brP +qeY +dxF +uUg +wfh +vrX +iUr +oYM +tMy +vzo +wfh +vrB +fhB +wTe +gtc +xaP +uJR +wbV +wyl +xKu +nHb +xKu +wyl +xKu +gQQ +xKu +ueu +xKu +aKH +xKu +xKu +fTM +rFv +ddE +lXO +yiw +tyF +yiw +tyF +tyF +fcp +xWq +xWq +jpW +xWq +xWq +fcp +aUx +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -53446,7 +51644,16 @@ drp drp drp "} -(67,1,1) = {" +(59,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -53522,109 +51729,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx aUx aUx fZX -yca -yca -inW -yca -yca fZX -baX -baX -baX -baX -baX -aoQ -bPI -wCR -qGE -qiI -qGE -krX -pFn -pFn -qpo -gwi -ghF -bBb -mlg -mlg -krg -ryg -tGS -oPC -tAF -nVO -plM -rKj -tUj -ain -sqU -tup -qKD -oPC -tqK -aNh -coP -usy -tlt -rGe -itu -meh -bPs -mSN -meh -btC -ote -nUE -nUE -nUE -nUE -jpV -meh -lyE -iZw -skd -nVA -eLM -eLM -eLM -eLM +fZX +pEy +fZX +fZX +fZX +drp +drp +drp +drp +drp +drp +bPw +cIM +dch +drQ +dch +dQu +dyf +mYp +mYp +mYp +mYp +mYp +dtR +cyD +rNl +bMw +wpd +sIe +unH +qUs +iYk +pgd +bCa +oIF +sVJ +nJx +ljm +fhB +sTD +fRI +aSe +mfx +wEf +uLt +wEf +izD +wEf +vkA +wEf +oMO +wEf +vkA +wEf +sbH +vUB +vUB +vUB +pAh +giM +wIZ +qCn +qCn +qCn +qCn +shq +fcp +fcp +fcp +pDf +fcp fcp -xWq -xWq -jpW -xWq -xWq fcp aUx aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -53703,7 +51901,16 @@ drp drp drp "} -(68,1,1) = {" +(60,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -53779,15 +51986,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx @@ -53798,69 +51996,69 @@ yca yca inW yca -yca +pUn fZX -baX -baX -baX -baX -baX -aoQ -qGE -qGE +drp +drp +drp +drp +drp +drp +abz +ftM qGE luW -qGE -krX -wHy -wHy -xvG -gwi -ghF -qFt -uHG -uHG -oWb -pYa -pYa -oPC -nBc -oPC -rPX -oPC -qMO -oPC -fwU -oPC -iMq -oPC -mOD -pYa -pYa -umY -saZ -qHg -loJ -meh -meh -meh -meh -aNB -iIJ -bPs -bPs -bPs -iIJ -xJd -meh -scA -aBp -meh -nVA -eLM -eLM -eLM -eLM +aiq +ydV +gcy +kzw +aKl +tRw +csG +hhG +qeY +lwx +kSL +iFU +btP +gnP +lII +dxF +sEo +fiy +qPJ +tlX +sOp +fhB +xVP +fhB +rhJ +rhJ +rhJ +xqi +fRI +hRL +fRI +ngE +fRI +ycd +fRI +vYR +fRI +ycd +fRI +nYR +tKh +vcn +eoG +fhB +giM +giM +onM +bMU +bYy +bMU +lXO fcp xWq xWq @@ -53873,15 +52071,15 @@ aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -53960,7 +52158,16 @@ drp drp drp "} -(69,1,1) = {" +(61,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -54036,15 +52243,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx @@ -54057,88 +52255,88 @@ inW yca yca fZX -baX -baX -baX -baX -baX -aoQ -qGE -qGE -qGE -luW -qGE -krX -rDV -rDV -mJv -gwi -ghF -gwi -qTv -mGK -oWb -faV -pYa -pYa -nCk -uyy -ozH -aMg -gIw -fmY -kWd -vCc -lEY -jOr -tsC -tsC -pYa -pYa -pYa -pYa -pYa -dgI -ybJ -ybJ -rLM -izl -pKB -wrD -fQE -wrD -cII -xJd -ybJ -ybJ -ybJ -fJV -nVA -eLM -eLM -eLM -eLM -fcp -xWq -xWq -jpW -xWq -xWq -fcp -aUx -aUx +drp +drp +drp +drp +drp +drp +bPw +aBZ +dch +dqp +enG +dQT +euc +ats +vWT +hNX +rHn +bBl +qeY +mqW +mqW +rko +kpb +xwp +lXJ +xwp +kOo +vHO +qUt +cQY +sbK +dTd +kaD +dTd +uwn +wlT +xtm +mNn +yiU +sfH +obm +riW +eEm +rKX +fBz +oWr +isK +aXi +fRI +eON +uiu +vcn +dLK +dTd +giM +giM +yiw +tyF +yiw +tyF +tyF +fcp +xWq +xWq +jpW +xWq +xWq +fcp +aUx +aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -54217,7 +52415,16 @@ drp drp drp "} -(70,1,1) = {" +(62,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -54293,109 +52500,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx aUx aUx fZX +yca +yca +inW +yca +yca fZX -fZX -pEy -fZX -fZX -fZX -baX -baX -baX -baX -baX -aoQ -adA -bQe -qGE +drp +drp +drp +drp +vnA +ftM +ftM +ftM +ivz luW qGE -krX -eME -eME -hQh -gwi -gww -hla -tvp -hla -iMh -rVR -nYt -nYt -mEo -nSP -jaZ -qhd -gIw -pYa -pYa -luB -pYa -pYa -woH -iKJ -fGD -fGD -fGD -fGD -oFt -dgI -ybJ -ybJ -jZl -aNB -gVE -bPs -cNv -bPs -gVE -xJd -ybJ -ybJ -ybJ -fJV -nVA -eLM -eLM -eLM -eLM -fcp -fcp -fcp -pDf -fcp +ydV +gbQ +lkR +bjZ +kcE +aEx +hiq +qeY +kUu +kUu +rqW +kUu +dxF +mTY +dxF +sKt +riK +qVU +tYB +soi +sQL +pLI +fhB +wEf +jRD +nnq +teN +fRI +atW +fRI +tWN +fRI +wQy +fRI +roG +fRI +wQy +fRI +dhc +uBY +vcn +eoG +fhB +fzg +fhB +yiw +tyF +yiw +tyF +tyF fcp +xWq +xWq +jpW +xWq +xWq fcp aUx aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -54474,7 +52672,16 @@ drp drp drp "} -(71,1,1) = {" +(63,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -54550,88 +52757,79 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx aUx aUx fZX -kIG -kIG +yca +yca inW yca yca fZX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp ftM -bSs -gvX -vZv -voa -nTz +abF krX -abX -awN -hRH -gwi -kuT -bDK -alj -gwi -oWb -mCi -tKi -uYG -vsy -uYG -uTs -puN -mDK -mYq -bXd -vmu -bXd -bXd -bXd -wlQ -jYZ -pYa -pYa -pYa -iFb -kcL -ybJ -ybJ -orb -muI -twL -twL -twL -twL -twL -gII -vdr -ybJ -ybJ -meh -gEd -eLM -eLM -eLM -eLM +tVQ +luW +qGE +iIX +gYc +hWj +hWj +hWj +gem +hbm +dxF +mqW +hWp +iBx +qUW +lfv +mzx +nEy +maS +hdi +jZP +raT +qbK +fhB +xNl +fhB +iuY +bQR +xxr +iqY +rhJ +hUB +rhJ +rPZ +rhJ +oZA +rhJ +kDS +rhJ +wmk +rhJ +fjc +ajp +ajp +ajp +uSf +aUl +fhB +yiw +tyF +yiw +tyF +tyF fcp xWq xWq @@ -54644,15 +52842,15 @@ aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -54731,7 +52929,16 @@ drp drp drp "} -(72,1,1) = {" +(64,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -54807,15 +53014,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx @@ -54827,89 +53025,89 @@ yca inW yca yca -fZX -baX -baX -baX -baX -baX -ftM -nYj -nYj -qGE -qiI +nPK +drp +drp +drp +drp +drp +byr +ezI +cPb +pPc +bzY qGE -ftM -myC -myC -myC -myC -myC -myC -myC -myC -ume -ume -ava -pYa -nCk -pYa -lkj -qjO -pYa -pYa -pYa -luB -pYa -pYa -pYa -pYa -fYA -pYa -pYa -pYa -bXV -kcL -oAs -xVt -kxf -sjL -qfG -hks -hks -hks -qfG -sjL -miN -xVt -xVt -meh -gEd -dmy -pkZ -dmy -pkZ -fcp -rNd +ydV +qIP +cwv +kUo +fEz +iiY +jKN +mUf +mUf +hXC +hha +oIF +hGh +nzE +nGX +pjB +oyI +qYr +raT +spm +sXi +ubQ +oIF +ktU +emF +kPk +wks +wut +vWE +yeR +tey +yeR +vWE +yeR +fUp +yeR +nFs +hiu +hYM +hiu +hiu +hiu +uCD +bFp +nZb +xaO +rdx +rdx +rdx +kpL +egj +xWq xWq jpW xWq -juX +xWq fcp aUx aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -54988,7 +53186,16 @@ drp drp drp "} -(73,1,1) = {" +(65,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -55064,15 +53271,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -aaK -baX -baX -baX aek aUx aUx @@ -55080,93 +53278,93 @@ aUx aUx fZX yca -qib +yca inW yca yca -fZX -baX -baX -baX -baX -baX +nPK +drp +drp +drp +drp +drp ftM -whY -ttm -oUj -tAL -qGE -myC -iSw -eWR -ank -ylF -tEQ -jft -dHo -mUD -iSw -ume -tMw -pYa -nCk -pYa -lkj -qjO -pYa -pYa -pYa -cWy -pYa -pYa -pYa -pYa -fYA -pYa -pYa -pYa -cbY -kcL -ygo -exv -plN -pSO -tdZ -kfc -kfc -kfc -oDl -pSO -lIF -ybJ -asd -meh -bQM -fOq -nvY -fOq -nvY -fcp -qoe +iJR +buP +dEm +fCu +dEm +ydV +ydV +ydV +ydV +ydV +geu +ydV +ydV +fUQ +oMZ +rtH +tGL +uAz +mAK +nHU +nzI +aTB +qZc +rxZ +mhk +trq +uan +dYs +dEx +qlj +jlw +ioq +hAH +aSV +msJ +fdV +fRI +kuj +fRI +oBp +jbm +eBl +dEA +whk +ksK +lFJ +upK +hIT +hsX +lQS +kpL +eLM +eLM +eLM +eLM +egj +xWq xWq jpW xWq -juX +xWq fcp aUx aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -55245,7 +53443,16 @@ drp drp drp "} -(74,1,1) = {" +(66,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -55321,89 +53528,80 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx aUx aUx fZX -kNp -kNp +yca +yca inW yca -yaS -nPK -baX -baX -baX -baX -baX +yca +fZX +drp +drp +drp +drp +drp ftM -bZQ -xci +krX +krX qGE luW aiq -gbL -ygl -eWR -vEe -vEe -vEe -vEe -vEe -nbm -ygl -ume -tHv -sIz -mCA -aCt -qqu -aHo -lNQ -rLL -kSt -iJu -lNQ -gss -pYa -pYa -hBx -nUD -pYa -pYa -dus -kcL -ybJ -oSo -sKG -kks -qHB -seW -oKg -uzw -kBB -kks -mzN -kpW -ybJ -bEr -dTB -fOq -nvY -fOq -nvY -egj +krX +oFW +ajx +oox +chY +ghF +jXk +atJ +wVk +iVW +oPC +oPC +oLo +mBQ +kVv +pjI +kVv +iIu +kVv +gCu +tsi +ube +hbz +oKX +nXQ +xzx +iTn +fhB +qss +fhB +fhB +fhB +fhB +fhB +fhB +fhB +dTd +dTd +dTd +fhB +fhB +fhB +fhB +kjC +fhB +nVA +eLM +eLM +eLM +eLM +fcp xWq xWq jpW @@ -55415,17 +53613,6 @@ aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -drp -drp drp drp drp @@ -55501,13 +53688,6 @@ drp drp drp drp -"} -(75,1,1) = {" -drp -drp -drp -drp -drp drp drp drp @@ -55519,6 +53699,8 @@ drp drp drp drp +"} +(67,1,1) = {" drp drp drp @@ -55578,109 +53760,125 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -oWz -aUx -fZX -mwP -lup -inW -yca -yaS -nPK -baX -baX -baX -baX -baX -aoQ -caS -uCi -qGE -luW -qGE -myC -iSw -rOV -vEe -utu -wIp -vEe -vEe -nbm -oWR -ume -gIw -pYa -wyv -omo -pBR -wjQ -rhb -rMh -vBB -dmr -rhb -upw -xZu -wMg -fYA -pYa -pYa -pYa -ejx -dgI -ybJ -oiH -plN -pSO -nlg -kFa -mlA -kFa -mtP -pSO -lIF -oiH -ybJ -fJV -nVA -fOq -nvY -nvY -nvY -egj -xWq -xWq -jpW -xWq -xWq -fcp -aUx -oWz -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +aUx +aUx +fZX +yca +yca +inW +yca +yca +fZX +drp +drp +drp +drp +drp +aoQ +bPI +wCR +qGE +qiI +qGE +krX +pFn +pFn +qpo +gwi +ghF +bBb +mlg +mlg +krg +ryg +tGS +oPC +tAF +nVO +plM +rKj +tUj +ain +sqU +tup +qKD +oPC +tqK +aNh +coP +usy +tlt +rGe +itu +meh +bPs +mSN +meh +btC +ote +nUE +nUE +nUE +nUE +jpV +meh +lyE +iZw +skd +nVA +eLM +eLM +eLM +eLM +fcp +xWq +xWq +jpW +xWq +xWq +fcp +aUx +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -55759,7 +53957,16 @@ drp drp drp "} -(76,1,1) = {" +(68,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -55835,15 +54042,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx @@ -55854,71 +54052,71 @@ yca yca inW yca -pMS +yca fZX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp aoQ qGE qGE qGE luW qGE -myC -gEK -ioG -vEe -vEe -gjR -uhO -kXA -mXO -iPJ -ume -gIw -pYa -tfS -nRF -lkj -qkq -lNQ -rLL -kSt -iJu -lNQ -rZL +krX +wHy +wHy +xvG +gwi +ghF +qFt +uHG +uHG +oWb pYa -wOE -fYA pYa +oPC +nBc +oPC +rPX +oPC +qMO +oPC +fwU +oPC +iMq +oPC +mOD pYa pYa -fyA -dgI -ybJ -pZY -tyN -sjL -sjL -ooz -kHl -ooz -sjL -sjL -cfK -lyK -ybJ -fJV +umY +saZ +qHg +loJ +meh +meh +meh +meh +aNB +iIJ +bPs +bPs +bPs +iIJ +xJd +meh +scA +aBp +meh nVA -fOq -oPv -nzP -nvY +eLM +eLM +eLM +eLM fcp -poN +xWq xWq jpW xWq @@ -55929,15 +54127,15 @@ aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -56016,7 +54214,16 @@ drp drp drp "} -(77,1,1) = {" +(69,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -56092,20 +54299,11 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aUx -baX -jEV +aUx +aUx fZX yca yca @@ -56113,67 +54311,67 @@ inW yca yca fZX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp aoQ qGE qGE qGE luW qGE -myC -iSw -dLC -vEe -vEe -vEe -vEe -vEe -nbm -pbT -ume -idD +krX +rDV +rDV +mJv +gwi +ghF +gwi +qTv +mGK +oWb +faV pYa -axw -aCH -pGP -wjQ -rhb -ezQ -liy -tua -rhb -upw -xZu -jUx -fYA pYa +nCk +uyy +ozH +aMg +gIw +fmY +kWd +vCc +lEY +jOr +tsC +tsC pYa pYa -fyA -dgI -eKm -ewy -tJo -bet -sjL -fRx -kQD -lLl -vFB -epl -uNZ -eVe -vdr +pYa +pYa +gTF +kcL +ybJ +ybJ +rLM +izl +pKB +wrD +fQE +wrD +cII +xJd +ybJ +ybJ +ybJ fJV nVA -fOq -dmy -ueg -nvY +eLM +eLM +eLM +eLM fcp xWq xWq @@ -56181,25 +54379,11 @@ jpW xWq xWq fcp -baX -kKb +aUx +aUx aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -drp -drp -drp -drp -drp drp drp drp @@ -56272,13 +54456,6 @@ drp drp drp drp -"} -(78,1,1) = {" -drp -drp -drp -drp -drp drp drp drp @@ -56293,6 +54470,8 @@ drp drp drp drp +"} +(70,1,1) = {" drp drp drp @@ -56349,109 +54528,128 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aIO -aIO -azC -nMF -fkp -rXA -yca -yca -fZX -baX -baX -baX -baX -baX -aoQ -adG -eaz -qGE -irI -eIe -gim -ebd -uBW -vEe -vEe -vEe -vEe -vEe -nbm -ygl -ume -gIw -pYa -tfS -nRF -lkj -aHW -lNQ -aKW -gwT -aIb -lNQ -bHW -aPz -aNl -oqV -aPz -aPz -aTw -gmo -dgI -oAe -veX -fRH -uNZ -xEB -sRS -lZG -sRS -xEB -uNZ -uNZ -veX -lOA -fJV -nVA -fOq -nvY -nvY -nvY -fcp -xWq -xWq -veq -rPL -rPL -nwa -aIO -aIO -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +aUx +aUx +fZX +fZX +fZX +pEy +fZX +fZX +fZX +drp +drp +drp +drp +drp +aoQ +adA +bQe +qGE +luW +qGE +krX +eME +eME +hQh +gwi +gww +hla +tvp +hla +iMh +rVR +nYt +nYt +mEo +nSP +jaZ +qhd +gIw +pYa +pYa +luB +pYa +pYa +woH +iKJ +fGD +fGD +fGD +fGD +oFt +pjM +ybJ +ybJ +jZl +aNB +gVE +bPs +cNv +bPs +gVE +xJd +ybJ +ybJ +ybJ +fJV +nVA +eLM +eLM +eLM +eLM +fcp +fcp +fcp +pDf +fcp +fcp +fcp +aUx +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -56530,7 +54728,16 @@ drp drp drp "} -(79,1,1) = {" +(71,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -56606,109 +54813,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aIO -baX -aoR +aUx +aUx +aUx fZX -ixl -yca +kIG +kIG inW yca yca -nPK -baX -baX -baX -baX -baX +fZX +drp +drp +drp +drp +drp ftM +bSs +gvX +vZv +voa +nTz krX -krX -qGE -luW -qGE -wvf -hBt -eWR -moE -vEe -vEe -vEe -anz -nbm -iSw -ume -vOF +abX +awN +hRH +gwi +kuT +bDK +alj +iOe +oWb +mCi +tKi +uYG +vsy +uYG +uTs +puN +mDK +mYq +bXd +vmu +bXd +bXd +bXd +wlQ +jYZ pYa -ayg -aEb -pGP -wjQ -rhb -wTf -bat -iDf -rhb -upw -xZu -jUx -fYA pYa pYa -xjk -xjk +iFb kcL -oRS -rLe -wnK -uNZ -dVT -rGA -cgT -hWe -dVT -uNZ -uNZ -veX -uNZ -bEr -uvc -nzP -nvY -fOq -nvY -egj +ybJ +ybJ +orb +muI +twL +twL +twL +twL +twL +gII +vdr +ybJ +ybJ +meh +gEd +eLM +eLM +eLM +eLM +fcp xWq xWq jpW xWq xWq fcp -baX -baX -pLq +aUx +aUx +aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -56787,7 +54985,16 @@ drp drp drp "} -(80,1,1) = {" +(72,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -56863,109 +55070,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aIO -baX -baX -azC -fkp -fkp -rXA +aUx +aUx +aUx +fZX yca yca -nPK -baX -baX -baX -baX -baX +inW +yca +yca +fZX +drp +drp +drp +drp +drp ftM -xAe -krX -wVE -fCu -dEm -ico -ico -ico -ico -pXO -pXO -pXO -ico -nbG -ico +nYj +nYj +qGE +qiI +qGE +ftM +myC +myC +myC +myC +myC +myC +dHo +myC ume -gIw +ume +ava +pYa +nCk pYa -tfS -nRF lkj -qle -lNQ -rLL -kSt -iJu -lNQ -unM -hJV -wOE +qjO +pYa +pYa +pYa +luB +pYa +pYa +pYa +pYa fYA pYa pYa -xgK -xgK +pYa +bXV kcL -rCz -veX -bHL -uNZ -uNZ -uNZ -wTT -uNZ -uNZ -uNZ -uNZ -veX -uNZ +oAs +xVt +kxf +sjL +qfG +hks +hks +hks +qfG +sjL +miN +xVt +xVt meh -nVA -nVA -nvY -fOq -nvY -egj +gEd +dmy +pkZ +dmy +pkZ +fcp +rNd xWq +jpW xWq -veq -rPL -rPL -nwa -baX -baX -aIO +juX +fcp +aUx +aUx +aUx aUx hBy -baX -baX -baX -aaK -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -57044,7 +55242,7 @@ drp drp drp "} -(81,1,1) = {" +(73,1,1) = {" drp drp drp @@ -57120,109 +55318,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +eLi +drp +drp +drp aek aUx -aIO -aIO -aIO -fZX -fZX -fZX -pEy -fZX +aUx +aUx +aUx fZX +yca +qib +inW +yca +yca fZX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp ftM -xAe -krX -ivz -luW -qGE -iBo -jGU -gSV -rcn -kLY -kLY -kLY -aoF -nnK -yeG +whY +ttm +oUj +tAL +qGE +myC +iSw +eWR +ank +ylF +tEQ +jft +kXA +mUD +iSw ume -gIw +tMw pYa -ayX -aEn -pGP -wjQ -rhb -rNF -uMS -vJz -rhb -uxF -qoX -wWy -nBn -xIy -xIy -hxW -gHG +nCk +pYa +lkj +qjO +pYa +pYa +pYa +cWy +pYa +pYa +pYa +pYa +fYA +pYa +pYa +pYa +cbY kcL -eSB -jVQ -uNZ -uNZ -uNZ -uNZ -wTT -uNZ -uNZ -xPE -xPE -veX -uNZ -bEr -uvc -vhW -kpL -oPv -xxw -fcp -fcp -fcp -pDf -fcp +ygo +exv +plN +pSO +tdZ +kfc +kfc +kfc +oDl +pSO +lIF +ybJ +asd +meh +bQM +fOq +nvY +fOq +nvY fcp +qoe +xWq +jpW +xWq +juX fcp -aIO -aIO -aIO +aUx +aUx +aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -57301,7 +55499,16 @@ drp drp drp "} -(82,1,1) = {" +(74,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -57377,109 +55584,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aIO -baX -aoR +aUx +aUx +aUx fZX -yca -yca +kNp +kNp inW yca -tyl -fZX -fZX -fZX -qsv -qsv -qsv -qsv -vZU -vZU -tVQ -irI -eIe -ebQ -ofL -tzF -snl -kLY -kLY -kLY -lhm -nnK -jlP +yaS +nPK +drp +drp +drp +drp +drp +ftM +bZQ +xci +qGE +luW +aiq +gbL +ygl +eWR +vEe +vEe +vEe +vEe +vEe +nbm +ygl ume -ava -pYa -tfS -nRF -lkj -qnU -dnS +tHv +sIz +mCA +aCt +qqu +aHo +lNQ rLL kSt iJu -dnS -drn -vjB -wOE -fYA +lNQ +gss pYa pYa +hBx +nUD +pYa pYa -mqF +dus kcL -iLI -qDA -uNZ -uNZ -uNZ -uNZ -wTT -uNZ -mzO -dvH -mzO -veX -vWQ -fcp -fcp -fcp -fcp -fcp -fcp -fcp +ybJ +oSo +sKG +kks +qHB +seW +oKg +uzw +kBB +kks +mzN +kpW +ybJ +bEr +dTB +fOq +nvY +fOq +nvY +egj xWq xWq jpW xWq xWq fcp -baX -baX -pLq +aUx +aUx +aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -57558,7 +55756,16 @@ drp drp drp "} -(83,1,1) = {" +(75,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -57634,109 +55841,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aIO -baX -baX -azC -fkp -fkp -rXA -yca -yca -fZX -xpy +aUx +oWz +aUx fZX -bYr -aJu -aaL -uUv -rUj -vZU -ylD -rSI -elJ -ico -gGg -vIS -kLY -kLY -kLY -kLY -kLY -nnK -jvD +mwP +lup +inW +yca +yaS +nPK +drp +drp +drp +drp +drp +aoQ +caS +uCi +qGE +luW +qGE +myC +iSw +rOV +vEe +utu +wIp +vEe +vEe +nbm +oWR ume gIw pYa -azc -aEY -pGP +wyv +omo +pBR wjQ rhb -rTN -iVt -oFG +rMh +vBB +dmr rhb upw -vWz -jUx -rNr -noT -noT -noT -clS -gOD -ylr -fFh -ylr -ylr -ylr -ylr -uix -ylr -ylr -qbN -ylr -pLw -wIK -upQ -udm +xZu +wMg +fYA +pYa +pYa +pYa +ejx +dgI +ybJ +oiH +plN +pSO +nlg +kFa +mlA +kFa +mtP +pSO +lIF +oiH +ybJ +fJV +nVA +fOq +nvY +nvY +nvY +egj xWq xWq +jpW xWq xWq fcp -poN -xWq -veq -rPL -rPL -nwa -baX -baX -aIO +aUx +oWz +aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -57815,7 +56013,16 @@ drp drp drp "} -(84,1,1) = {" +(76,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -57891,109 +56098,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aIO -baX -baX +aUx +aUx +aUx fZX yca yca inW yca -yca -fZX -xpy +pMS fZX -mQS -nkE -txX -vjQ -mgr -cQZ -mAv -muj -eUQ -ico -hai -hpI -icv -icv -iyP -icv -icv -npN -piA +drp +drp +drp +drp +drp +aoQ +qGE +qGE +qGE +luW +qGE +myC +gEK +ioG +vEe +vEe +gjR +uhO +kXA +mXO +iPJ ume gIw pYa tfS nRF lkj -qpk +qkq lNQ rLL kSt iJu lNQ -nEK -vjB +rZL +pYa wOE -xeT +fYA pYa pYa pYa -mxM -kcL -uNZ -nbs -uNZ -uNZ -uNZ -uNZ -lDd -uNZ -mzO -vgU -mzO -veX -uNZ -vNG -dRL -vYc -fSR -qxu -uVD -qxC -uVD -uVD -mnh +fyA +dgI +ybJ +pZY +tyN +sjL +sjL +ooz +kHl +ooz +sjL +sjL +cfK +lyK +ybJ +fJV +nVA +fOq +oPv +nzP +nvY +fcp +poN +xWq +jpW xWq xWq fcp -baX -baX -aIO +aUx +aUx +aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -58072,7 +56270,16 @@ drp drp drp "} -(85,1,1) = {" +(77,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -58148,109 +56355,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aIO -aIO -tQh -fZX -fZX -fZX -pEy -fZX -fZX +aUx +baX +jEV fZX -xpy +yca +yca +inW +yca +yca fZX -vDg -oZt -dpG -dVF -knQ -cVk +drp +drp +drp +drp +drp +aoQ +qGE +qGE qGE luW -eUQ -ico -yeG -wbR -kLY -kLY -kLY -kLY -kLY -nDV -pCG +qGE +myC +iSw +dLC +vEe +vEe +vEe +vEe +vEe +nbm +pbT ume -gIw +idD pYa -mEA -ond +axw +aCH pGP -qwk +wjQ rhb -rVF -vAl -fcT +ezQ +liy +tua rhb upw -vWz +xZu jUx -xeT +fYA pYa pYa -uyD -gsv -kcL -bKS -uNZ -uNZ -uNZ -rZA -uNZ -lDd +pYa +fyA +dgI +eKm +ewy +tJo +bet +sjL +fRx +kQD +lLl +vFB +epl uNZ -kxD -kxD -oan -veX -toG -tdz +eVe +vdr +fJV +nVA +fOq +dmy +ueg +nvY +fcp xWq xWq -eNX +jpW xWq xWq fcp -fcp -fcp -aTA -fcp -fcp -fcp -aIO -aIO -pLq +baX +kKb +aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -58329,7 +56527,16 @@ drp drp drp "} -(86,1,1) = {" +(78,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -58405,109 +56612,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx +aUx +aIO aIO -baX -baX azC -fkp +nMF fkp rXA -cJk -qib -fZX -xpy +yca +yca fZX -dLX -dLX -qsv -ifr -qsv -qsv -afF -luW -eUQ -pXO -jlP -wwA -wsx -kLY -kLY -kLY -igu -nDV -jlP -ume +drp +drp +drp +drp +drp +aoQ +adG +eaz +qGE +irI +eIe +gim +ebd +uBW +vEe +vEe +vEe +vEe +vEe +nbm +iSw +iwC gIw -nUD +pYa tfS nRF lkj -qxO +aHW lNQ -rLL -kSt -iJu +aKW +gwT +aIb lNQ -pkR -omD -ycR -iUx -sIz -toT -oqh -meh -meh -meh -meh -meh -meh -meh -rGA -cgT -hWe -trr +bHW +aPz +aNl +oqV +aPz +aPz +aTw +gmo +dgI +oAe +veX +fRH uNZ +xEB +sRS +lZG +sRS +xEB uNZ -veX uNZ -tdz -tdz -tdz -mpk -tdz -tdz +veX +lOA +fJV +nVA +fOq +nvY +nvY +nvY fcp xWq xWq -xRA +veq rPL rPL nwa -baX -baX aIO +aIO +aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -58586,7 +56784,16 @@ drp drp drp "} -(87,1,1) = {" +(79,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -58662,109 +56869,100 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx aIO baX -baX +aoR fZX -hVC -hVC +ixl +yca inW yca yca -fZX -xpy -fZX -slX -oTm -sMn -ncN -tQV -qsv -sXc +nPK +drp +drp +drp +drp +drp +ftM +krX +krX +qGE luW -fgP -ico -yeG -wwA -mHA -ipP -ban -bgg -aqK -nDV -yeG +qGE +wvf +hBt +eWR +moE +vEe +vEe +vEe +anz +nbm +ygl ume -gIw +vOF pYa -mYf -aFb +ayg +aEb pGP wjQ rhb -rVH -yde -pKh +wTf +bat +iDf rhb -uzp -ybH -nJM -xBd -waQ -kys -kys -oRU -ova -bqT -uRW -fcp -hLl -meh -sRS -mRS -sRS -nLn +upw +xZu +jUx +fYA +pYa +pYa +xjk +xjk +kcL +oRS +rLe +wnK +uNZ +dVT +rGA +cgT +hWe +dVT uNZ uNZ veX uNZ -tdz -xWq -xWq -xWq -xWq -xWq -fcp +bEr +uvc +nzP +nvY +fOq +nvY +egj xWq xWq -jgA +jpW xWq xWq fcp baX baX -aIO +pLq aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -58843,7 +57041,16 @@ drp drp drp "} -(88,1,1) = {" +(80,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -58919,129 +57126,95 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aUx aIO -uxk +baX +baX azC fkp fkp -pXc -qdG -mJM -fZX -xpy -fZX -ngK -knQ -knQ -knQ -sqR -qsv -krX -drc +rXA +yca +yca +nPK +drp +drp +drp +drp +drp +ftM +xAe krX +wVE +fCu +dEm ico ico ico ico +pXO +pXO +pXO ico -hcE -hxA -ico -ico +nbG ico ume -pct +lQG pYa tfS nRF lkj -qAQ +qle lNQ rLL kSt iJu lNQ -axn -wcV +unM +hJV wOE -mWv -jnP +fYA pYa -qDD -ume -ume -ume -ume -fcp -hLl -sjL -gwk -aYt -cYt -vFB +pYa +xgK +xgK +kcL +rCz +veX +bHL +uNZ +uNZ +uNZ +wTT +uNZ +uNZ +uNZ uNZ -dvW veX -mqx -tdz -xWq -xWq -xWq +uNZ +meh +nVA +nVA +nvY +fOq +nvY +egj xWq xWq -fcp -pST -dCC -gsP +veq rPL rPL nwa +baX +baX aIO -whU -aUx aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp -drp drp drp drp +eLi drp drp drp @@ -59099,8 +57272,6 @@ drp drp drp drp -"} -(89,1,1) = {" drp drp drp @@ -59126,6 +57297,8 @@ drp drp drp drp +"} +(81,1,1) = {" drp drp drp @@ -59176,109 +57349,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -baX -baX -fZX -yca -yca -yca -yca -inW -fZX -xpy -fZX -elW -wlh -lKg -knQ -mRM -qsv -bsC -axq -fqL -eUf -eMQ -feL -frr -tRi -lWf -jHO -vrO -qvF -uAo -mlT -afh -qHg -nrv -ono -pGP -wjQ -rhb -saf -vbj -eIj -rhb -uzp -wfA -euY -aTT -jnP -dra -bXy -sxG -kIr -cIS -aJl -fcp -hLl -sjL -ooz -fdI -ooz -sjL -kcL -kcL -bxq -kcL -tdz -xWq -xWq -xWq -xWq -xWq -fcp -bbF -fcp -fcp -fcp -fcp -fcp -baX -baX -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -59313,11 +57383,91 @@ drp drp drp drp +aek +aUx +aIO +aIO +aIO +fZX +fZX +fZX +pEy +fZX +fZX +fZX drp drp drp drp drp +ftM +xAe +krX +ivz +luW +qGE +iBo +jGU +gSV +rcn +kLY +kLY +kLY +aoF +nnK +jlP +ume +gIw +pYa +ayX +aEn +pGP +wjQ +rhb +rNF +uMS +vJz +rhb +uxF +qoX +wWy +nBn +xIy +xIy +hxW +gHG +kcL +eSB +jVQ +uNZ +uNZ +uNZ +uNZ +wTT +uNZ +uNZ +xPE +xPE +veX +uNZ +bEr +uvc +vhW +kpL +oPv +xxw +fcp +fcp +fcp +pDf +fcp +fcp +fcp +aIO +aIO +aIO +aUx +hBy drp drp drp @@ -59356,8 +57506,6 @@ drp drp drp drp -"} -(90,1,1) = {" drp drp drp @@ -59406,6 +57554,8 @@ drp drp drp drp +"} +(82,1,1) = {" drp drp drp @@ -59433,109 +57583,157 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -fZX -tQx -tQx -yca -yca -inW -fZX -xpy -fZX -arA -aLt -aQb -knQ -ckS -dLX -lfQ -eEE -mUK -fjA -mUK -ffs -jYT -xPs -lcc -vXD -tVs -fpa -jPx -oWW -kZs -moY -vwd -vwd -kJu -qGd -ume -ume -kCG -ume -ume -qMl -vPO -wOE -aTT -jnP -pYa -nEv -ume -ume -ume -ume -fcp -hLl -sjL -hiV -jUd -hiV -sjL -ldl -wtv -vTA -mtp -tdz -eAB -xWq -xWq -xWq -xWq -fcp -jgA -fcp -dTT -xWq -lUf -egj -fyD -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aIO +baX +aoR +fZX +yca +yca +inW +yca +tyl +fZX +fZX +fZX +qsv +qsv +qsv +qsv +vZU +vZU +tVQ +irI +eIe +ebQ +ofL +tzF +snl +kLY +kLY +kLY +lhm +nnK +yeG +iwC +gIw +pYa +tfS +nRF +lkj +qnU +dnS +rLL +kSt +iJu +dnS +drn +vjB +wOE +fYA +pYa +pYa +pYa +mqF +kcL +iLI +qDA +uNZ +uNZ +uNZ +uNZ +wTT +uNZ +mzO +dvH +mzO +veX +vWQ +fcp +fcp +fcp +fcp +fcp +fcp +fcp +xWq +xWq +jpW +xWq +xWq +fcp +baX +baX +pLq +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -59614,7 +57812,16 @@ drp drp drp "} -(91,1,1) = {" +(83,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -59690,109 +57897,6822 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -aUx -aUx -aUx -fZX -fZX -fZX -fZX -fZX -pEy +aIO +baX +baX +azC +fkp +fkp +rXA +yca +yca fZX xpy fZX -srB -min -knQ -knQ -com -dLX -deg -faU -pkb -mUK -fjA -fgl -flj -tki -iAd -hLO -lBf -pmf -flj -oWb -lgn -uhN -oWb -oWb -oWb -niV -ume -wTB -wTB -wTB +bYr +aJu +aaL +uUv +rUj +vZU +ylD +rSI +elJ +ico +gGg +vIS +kLY +kLY +kLY +kLY +kLY +nnK +jvD ume -uCq -wns -wWH -jFi -qOu -jHX -bhN -ogu -uRu -rpH -iYz -fcp -hLl -sjL -dZU -xyW -jsp -buq -rHX -eoF -uNZ -gLH -tdz -eAB +gIw +pYa +azc +aEY +pGP +wjQ +rhb +rTN +iVt +oFG +rhb +upw +vWz +jUx +rNr +noT +noT +noT +clS +gOD +ylr +fFh +ylr +ylr +ylr +ylr +uix +ylr +ylr +qbN +ylr +pLw +wIK +upQ +udm xWq xWq xWq xWq fcp -jgA -fcp -xWq -xWq +poN xWq -egj -fyD -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX +veq +rPL +rPL +nwa baX baX +aIO +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(84,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aIO baX baX +fZX +yca +yca +inW +yca +yca +fZX +xpy +fZX +mQS +nkE +txX +vjQ +mgr +cQZ +mAv +muj +eUQ +ico +hai +hpI +icv +icv +iyP +icv +icv +npN +piA +ume +gIw +pYa +tfS +nRF +lkj +qpk +lNQ +rLL +kSt +iJu +lNQ +nEK +vjB +wOE +xeT +pYa +pYa +pYa +mxM +kcL +uNZ +nbs +uNZ +uNZ +uNZ +uNZ +lDd +uNZ +mzO +vgU +mzO +veX +uNZ +vNG +dRL +vYc +fSR +qxu +uVD +qxC +uVD +uVD +mnh +xWq +xWq +fcp +baX +baX +aIO +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(85,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aIO +aIO +tQh +fZX +fZX +fZX +pEy +fZX +fZX +fZX +xpy +fZX +vDg +oZt +dpG +dVF +knQ +cVk +qGE +luW +eUQ +ico +yeG +wbR +kLY +kLY +kLY +kLY +kLY +nDV +pCG +ume +gIw +pYa +mEA +ond +pGP +qwk +rhb +rVF +vAl +fcT +rhb +upw +vWz +jUx +xeT +pYa +pYa +uyD +gsv +kcL +bKS +uNZ +uNZ +uNZ +rZA +uNZ +lDd +uNZ +kxD +kxD +oan +veX +toG +tdz +xWq +xWq +eNX +xWq +xWq +fcp +fcp +fcp +aTA +fcp +fcp +fcp +aIO +aIO +pLq +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(86,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aIO +baX +baX +azC +fkp +fkp +rXA +cJk +qib +fZX +xpy +fZX +dLX +dLX +qsv +ifr +qsv +qsv +afF +luW +eUQ +pXO +jlP +wwA +wsx +kLY +kLY +kLY +igu +nDV +jlP +ume +gIw +nUD +tfS +nRF +lkj +qxO +lNQ +rLL +kSt +iJu +lNQ +pkR +omD +ycR +iUx +sIz +toT +oqh +meh +meh +meh +meh +meh +meh +meh +rGA +cgT +hWe +trr +uNZ +uNZ +veX +uNZ +tdz +tdz +tdz +mpk +tdz +tdz +fcp +xWq +xWq +xRA +rPL +rPL +nwa +baX +baX +aIO +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(87,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aIO +baX +baX +fZX +hVC +hVC +inW +yca +yca +fZX +xpy +fZX +slX +oTm +sMn +ncN +tQV +qsv +sXc +luW +fgP +ico +yeG +wwA +mHA +ipP +ban +bgg +aqK +nDV +yeG +ume +gIw +pYa +mYf +aFb +pGP +wjQ +rhb +rVH +yde +pKh +rhb +uzp +ybH +nJM +xBd +waQ +kys +kys +oRU +ova +bqT +uRW +fcp +hLl +meh +sRS +mRS +sRS +nLn +uNZ +uNZ +veX +uNZ +tdz +xWq +xWq +xWq +xWq +xWq +fcp +xWq +xWq +jgA +xWq +xWq +fcp +baX +baX +aIO +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(88,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +aIO +uxk +azC +fkp +fkp +pXc +qdG +mJM +fZX +xpy +fZX +ngK +knQ +knQ +knQ +sqR +qsv +krX +drc +krX +ico +ico +ico +ico +ico +hcE +hxA +ico +ico +ico +ume +pct +pYa +tfS +nRF +lkj +qAQ +lNQ +rLL +kSt +iJu +lNQ +axn +wcV +wOE +mWv +jnP +pYa +qDD +ume +ume +ume +ume +fcp +hLl +sjL +gwk +aYt +cYt +vFB +uNZ +dvW +veX +mqx +tdz +xWq +xWq +xWq +xWq +xWq +fcp +pST +dCC +gsP +rPL +rPL +nwa +aIO +whU +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(89,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +baX +baX +fZX +yca +yca +yca +yca +inW +fZX +xpy +fZX +elW +wlh +lKg +knQ +mRM +qsv +bsC +axq +fqL +eUf +eMQ +feL +frr +tRi +lWf +jHO +vrO +qvF +uAo +mlT +afh +qHg +nrv +ono +pGP +wjQ +rhb +saf +vbj +eIj +rhb +uzp +wfA +euY +aTT +jnP +dra +bXy +sxG +kIr +cIS +aJl +fcp +hLl +sjL +ooz +fdI +ooz +sjL +kcL +kcL +bxq +kcL +tdz +xWq +xWq +xWq +xWq +xWq +fcp +bbF +fcp +fcp +fcp +fcp +fcp +baX +baX +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(90,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +aUx +aUx +fZX +tQx +tQx +yca +yca +inW +fZX +xpy +fZX +arA +aLt +aQb +knQ +ckS +dLX +lfQ +eEE +mUK +fjA +mUK +ffs +jYT +xPs +lcc +vXD +tVs +fpa +jPx +oWW +kZs +moY +vwd +vwd +kJu +qGd +ume +ume +kCG +ume +ume +qMl +vPO +wOE +aTT +jnP +pYa +nEv +ume +ume +ume +ume +fcp +hLl +sjL +hiV +jUd +hiV +sjL +ldl +wtv +vTA +mtp +tdz +eAB +xWq +xWq +xWq +xWq +fcp +jgA +fcp +dTT +xWq +lUf +egj +fyD +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(91,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +aUx +aUx +fZX +fZX +fZX +fZX +fZX +pEy +fZX +xpy +fZX +srB +min +knQ +knQ +com +dLX +deg +faU +pkb +mUK +fjA +fgl +flj +tki +iAd +hLO +lBf +pmf +flj +oWb +lgn +uhN +oWb +oWb +oWb +niV +ume +wTB +wTB +wTB +ume +uCq +wns +wWH +jFi +qOu +jHX +bhN +ogu +uRu +rpH +iYz +fcp +hLl +sjL +dZU +xyW +jsp +buq +rHX +eoF +uNZ +gLH +tdz +cjc +xWq +xWq +xWq +xWq +fcp +jgA +fcp +xWq +xWq +xWq +egj +fyD +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(92,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +aUx +aUx +cei +fZX +tSr +yca +yca +inW +fZX +xpy +fZX +atd +aLK +blL +knQ +cxP +dLX +mUK +eEE +ykC +ykC +azy +fha +flj +flj +flj +hHb +flj +flj +flj +kCD +lCs +mpH +mZO +oGK +awp +iHR +ume +ume +qHG +ume +ume +uHM +vjB +nor +osJ +tJU +bVG +hsL +fcp +fcp +fcp +fcp +fcp +hLl +sjL +jUd +jUd +jUd +sjL +kuF +eoF +uNZ +kMj +tdz +rNd +dQk +xWq +xWq +xWq +fcp +jgA +fcp +rau +xWq +xWq +egj +fyD +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(93,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +aUx +aUx +cei +fZX +uxY +yca +yca +inW +fZX +xpy +fZX +atk +aLW +brE +knQ +cAU +qsv +bvN +eEE +ykC +ghW +ykC +mUK +eVT +mUK +mUK +hKB +mUK +iAI +fwL +spr +tOo +ykC +lna +upI +lna +qGn +xDY +sap +fEm +xMJ +dZx +sTJ +wEa +nsQ +xWn +spu +sNw +gNi +fcp +hLl +hLl +hLl +hLl +hLl +sjL +sjL +sjL +sjL +sjL +cwV +iwi +uNZ +kwq +tdz +vso +xWq +xWq +xWq +xWq +fcp +jgA +ena +xWq +xWq +fcp +fcp +fcp +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(94,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +aUx +aUx +cei +fZX +xUg +yca +lhx +inW +fZX +xpy +fZX +ngK +knQ +knQ +knQ +cCa +qsv +dhp +dBs +gnE +gnE +gnE +gnE +mmp +isN +gnE +jAn +gnE +gnE +jSi +srz +kqM +mrN +ndg +fUk +ykC +ykC +fjA +puI +mUK +bYe +oWb +xIC +vjB +pYa +xeT +cUn +ybf +tTY +fcp +fcp +fcp +fcp +fcp +fcp +fcp +hLl +hLl +hLl +fcp +jjV +qOE +miL +uNZ +tdz +xWq +xWq +xWq +xWq +xWq +fcp +jgA +fcp +xWq +hKQ +uDA +flB +fgc +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(95,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +aUx +aUx +fZX +fZX +fZX +fZX +xpy +aiJ +fZX +xpy +fZX +aFP +aNY +iAn +bIM +cIp +cWm +dml +mUK +mUK +mUK +mUK +mUK +jtv +lWj +iDk +jNp +aua +odC +fUk +xFk +lJK +mrQ +iDq +onK +eGS +ull +ull +bMH +ivg +lMv +oWb +llT +vjB +pYa +xbh +pYf +faV +pYa +fcp +rjB +rjB +jon +wHL +vuU +fcp +fcp +fcp +fcp +fcp +tdz +tdz +cBT +tdz +tdz +xWq +xWq +xWq +xWq +xWq +fcp +mNz +fcp +fcp +fcp +rRV +fcp +fcp +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(96,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +aUx +aUx +aUx +fZX +doX +aUo +qMK +yca +inW +fZX +xpy +fZX +fZX +fZX +fZX +fZX +fZX +fZX +doo +agy +mUK +mUK +eUk +aON +dmx +dmx +dmx +dmx +dmx +dmx +dmx +bpe +qgL +lpQ +mUK +fUk +mUK +hPj +fUC +vJW +fjR +txB +ugx +rgN +mve +nuy +xOK +hri +aWV +mnZ +tgO +vvU +vvU +eZV +xWq +xWq +bvn +cic +xWq +qbz +tdz +xWq +xWq +nGE +xWq +tdz +xWq +xWq +xWq +xWq +xWq +fcp +jgA +xWq +rKp +oTE +oTE +fcp +aUx +aUx +aUx +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(97,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +jfr +oGJ +aUx +aUx +aUx +awf +ale +mWy +ucd +eQb +faC +fZX +xpy +xpy +xpy +xpy +xpy +xpy +xpy +fZX +dmx +dmx +dFl +dmx +dmx +dmx +dmx +bJA +dmx +yca +yca +yca +dmx +dmx +lUS +dmx +dmx +dmx +lpi +yge +asw +kUK +fsN +xTw +oWb +pYa +niV +oWb +oWb +oWb +oWb +oWb +tdz +tdz +tdz +teg +nxe +xWq +xWq +xWq +kuB +xWq +tdz +nTe +xWq +nGE +xWq +tdz +tdz +tdz +mpk +tdz +tdz +fcp +gXo +bYp +cFg +jGi +iAM +jjP +aUx +aUx +aUx +oGJ +nYB +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(98,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aIO +drp +oGJ +oGJ +oGJ +fZX +fXU +kBh +dhZ +fkp +rXA +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +fZX +nBT +yca +yca +yca +yca +yca +yca +yca +dmx +yca +yca +yca +rff +ifB +adL +yca +yca +kRq +kRq +kRq +kRq +eAP +ewk +rlM +dsG +wps +dsG +vHj +wxz +uXg +fGM +vmg +uXg +cUO +tdz +cMv +uEF +uEF +uEF +qaS +xWq +xWq +tdz +nzK +xWq +nGE +xWq +xWq +xWq +xWq +xWq +xWq +xWq +fcp +xRA +kZw +icV +jlT +auI +fcp +oGJ +oGJ +nYB +drp +aIO +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(99,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aIO +drp +drp +fZX +oSb +oSb +fZX +yca +cIk +anb +cIu +cIu +cIu +cIu +cIu +cIu +cIu +dZT +agk +agk +agk +agk +agk +agk +agk +agk +dCe +agk +agk +agk +agk +agk +qwQ +yca +yca +kRq +azI +dYV +cnN +ftr +liO +lmx +jJX +aqQ +oBw +oxt +oqz +rSl +eyC +oaW +joQ +olz +tdz +xFh +qfF +aGm +aGm +bSx +cYe +sBG +dSn +oBK +qdr +udM +oBK +oBK +oBK +oBK +oBK +oBK +oBK +qTF +wAu +xWq +fcp +hsF +hsF +fcp +drp +drp +aIO +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(100,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +baX +kQp +rSD +fZX +fZX +fZX +fZX +yca +yca +yca +yca +yca +elz +yca +inW +yca +yca +yca +yca +yca +yca +yca +yca +dmx +yca +yca +yca +yca +yca +yca +yca +yca +kRq +fNy +fNy +tqr +kYR +qcC +aAG +jwj +err +err +err +sae +jNg +cEr +cEr +cEr +oiy +owJ +pJe +xWq +xWq +xWq +xWq +xWq +xWq +tdz +fmP +oMV +xWq +xWq +xWq +xWq +xWq +xWq +xWq +xWq +fcp +fcp +fcp +fcp +rSD +baX +kQp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(101,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +eLi +drp +drp +drp +drp +drp +drp +drp +drp +baX +baX +drp +drp +drp +drp +fZX +fZX +fZX +fZX +fZX +fZX +lWT +dmx +gZe +dmx +dmx +dmx +dmx +dmx +dmx +dmx +xpy +dmx +yca +yca +yca +yca +yca +yca +yca +yca +kRq +hub +fNy +lZW +vDx +liO +lmx +tuR +jAk +sNM +olz +qQP +wRb +jAk +olz +olz +olz +tdz +iCG +lEQ +qvC +xWq +fmP +xIj +xWq +tdz +nIG +oMV +xWq +xWq +xWq +xWq +fcp +fcp +fcp +fcp +fcp +drp +drp +drp +drp +baX +baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(102,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +vpI +pTY +hEY +hTm +uuc +ouq +bQq +lsG +bIO +vml +dmx +yca +dmx +dmx +boQ +dmx +dmx +dmx +dmx +dmx +dmx +kRq +kRq +kRq +xFx +oNS +viN +bJZ +lFW +wKz +tLu +mHk +wTV +mXW +lUr +olz +olz +rSl +tdz +dUJ +tdz +tdz +bsz +tdz +tdz +tdz +tdz +xWq +oMV +xWq +xWq +xWq +xWq +fcp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(103,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +vpI +vpI +hgi +ifG +hpH +sAK +sAK +sAK +njS +aJG +dmx +yca +dmx +ltS +tnT +xHw +tHT +nut +vcW +wPK +lLc +xEo +eHP +pgj +iFS +wgs +twx +dfP +ayw +lzN +pog +ajq +ajq +xAn +gkd +olz +olz +eCo +tdz +fko +tdz +hUo +uOo +wsq +hBc +iry +tdz +tdz +ozF +tdz +tdz +fcp +fcp +fcp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(104,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +icn +sdV +qfB +ifG +hpH +sAK +sAK +sAK +njS +sLF +dmx +yca +dmx +nwN +tpU +lfP +jeJ +nzJ +ciB +eaL +eaL +eaL +vth +eaL +jrV +alP +liO +tfi +tuR +olz +jZK +olz +eco +ftr +olz +olz +olz +qQr +tdz +fko +tdz +jQT +mmN +laf +qLI +jxK +ttB +ccE +iMR +iWe +ldk +sGU +icn +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(105,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +mjO +iKj +tQW +ifG +hpH +gcZ +sAK +sAK +lAF +waz +dmx +qib +dmx +bOk +tiC +jng +tHT +gUH +xrB +bVj +bVj +nbx +eaL +eaL +oME +abm +liO +tfi +wzs +wyc +xJD +jAk +jAk +wRb +olz +olz +olz +rSl +tdz +fko +tdz +akT +smM +wmW +fno +pCn +icc +dxg +igf +cAI +grg +xzi +cxm +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(106,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +icn +sdV +qHQ +ifG +hpH +sAK +sAK +sAK +njS +qzW +dmx +yca +dmx +put +fPB +oAN +tHT +aaf +wSO +eaL +eaL +eaL +vNP +eaL +hHa +abm +wgb +tfi +sVu +wsO +jBP +cOf +rrp +mXW +lUr +olz +olz +eyG +tdz +fko +tdz +mrY +wEX +vEp +tCK +uMi +ttB +mrY +gsj +asE +ofF +sGU +icn +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(107,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +mjO +iKj +dYO +uzJ +hpH +lHV +sAK +sAK +jLs +oqc +dmx +yca +dmx +xWD +uqv +eMe +tHT +ueZ +wSO +eaL +eaL +eaL +eaL +eaL +hHa +abm +liO +tfi +aUX +rQZ +tkR +tkR +uiQ +lwy +olz +olz +olz +xni +tdz +fko +tdz +ttB +ttB +ttB +xoP +ttB +ttB +ttB +oUK +oIn +cDq +xzi +cxm +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(108,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aIO +vpI +oMl +sxO +fYa +lza +urq +alr +ctw +dmx +pJK +dmx +dmx +dmx +dmx +dmx +qoj +nCH +itT +bSJ +axl +eaL +qYb +xRQ +roT +liO +bhA +qck +huD +gzR +olz +eco +ftr +olz +olz +olz +fgO +tdz +fko +tdz +dlK +mll +ljR +iTm +wnw +mbt +tJL +lYW +jbz +jBW +aIO +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(109,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +icn +sdV +cfL +trZ +out +wGc +rEF +qMX +vKq +bJC +gTc +nhR +lbf +iAf +mHa +fBw +cUl +wrR +alw +kHs +nWp +eaL +eaL +rqs +bYc +jFF +qRn +tuR +jAk +cpt +blH +cpt +wMD +jAk +olz +olz +pJa +tdz +dbC +ohZ +njw +njw +njw +dwh +pTl +mVk +mVk +iEN +mVk +oeB +icn +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -59830,6 +64750,8 @@ drp drp drp drp +"} +(110,1,1) = {" drp drp drp @@ -59870,8 +64792,6 @@ drp drp drp drp -"} -(92,1,1) = {" drp drp drp @@ -59933,6 +64853,69 @@ drp drp drp drp +icn +sdV +chE +jip +inL +mfH +lJF +dIf +nsi +dmx +dmx +wMW +hYp +dmx +rXh +dmx +xOx +cTs +qhC +sCZ +izB +eaL +eaL +hHa +bYc +liO +iGX +lFW +wKz +tOn +mHk +mHk +fDK +rSl +olz +olz +rSl +tdz +fko +tdz +ojk +mVk +mVk +aXY +mSy +eoO +mVk +iEN +ojk +oeB +icn +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -59947,109 +64930,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -cei -fZX -tSr -yca -yca -inW -fZX -xpy -fZX -atd -aLK -blL -knQ -cxP -dLX -mUK -eEE -ykC -ykC -azy -fha -flj -flj -flj -hHb -flj -flj -flj -kCD -lCs -mpH -mZO -oGK -awp -iHR -ume -ume -qHG -ume -ume -uHM -vjB -nor -osJ -tJU -bVG -hsL -fcp -fcp -fcp -fcp -fcp -hLl -sjL -jUd -jUd -jUd -sjL -kuF -eoF -uNZ -kMj -tdz -rNd -dQk -xWq -xWq -xWq -fcp -jgA -fcp -rau -xWq -xWq -egj -fyD -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -60128,7 +65008,7 @@ drp drp drp "} -(93,1,1) = {" +(111,1,1) = {" drp drp drp @@ -60204,109 +65084,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -cei -fZX -uxY -yca -yca -inW -fZX -xpy -fZX -atk -aLW -brE -knQ -cAU -qsv -bvN -eEE -ykC -ghW -ykC -mUK -eVT -mUK -mUK -hKB -mUK -iAI -fwL -spr -tOo -ykC -lna -upI -lna -qGn -xDY -sap -fEm -xMJ -dZx -sTJ -wEa -nsQ -xWn -spu -sNw -gNi -fcp -hLl -hLl -hLl -hLl -hLl -sjL -sjL -sjL -sjL -sjL -cwV -iwi -uNZ -kwq +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +icn +sdV +rfA +uyB +fHS +qxg +xAq +svn +njS +plo +lAB +uDj +xEG +dmx +kxM +dmx +oGt +oGt +oGt +oGt +aUp +eaL +eaL +rmU +bYc +liO +dzZ +gDe +akb +miD +dne +akb +bNl +luh +bxI +bxI +bxI +iEZ +eWn tdz -vso -xWq -xWq -xWq -xWq -fcp -jgA -ena -xWq -xWq -fcp -fcp -fcp -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX +lNi +lNi +lNi +iTm +mVk +hLq +lNi +uQl +lNi +oeB +icn +aIO +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -60385,7 +65265,32 @@ drp drp drp "} -(94,1,1) = {" +(112,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -60462,108 +65367,83 @@ drp drp drp baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -cei -fZX -xUg -yca -lhx -inW -fZX -xpy -fZX -ngK -knQ -knQ -knQ -cCa -qsv -dhp -dBs -gnE -gnE -gnE -gnE -mmp -isN -gnE -jAn -gnE -gnE -jSi -srz -kqM -mrN -ndg -fUk -ykC -ykC -fjA -puI -mUK -bYe -oWb -xIC -vjB -pYa -xeT -cUn -ybf -tTY -fcp -fcp -fcp -fcp -fcp -fcp -fcp -hLl -hLl -hLl -fcp -jjV -qOE -miL -uNZ +jEV +iKj +dWb +sHv +uOM +rtj +vlY +lGn +qyL +flg +efV +aCw +kEp +mNB +mEF +cRD +hIF +bfa +dzH +oGt +xhm +eaL +eaL +oGt +xWX +viN +ldG +dHN +rdN +gXG +sgZ +mVl +vDO +xAf +arg +nAi +rWp tdz -xWq -xWq -xWq -xWq -xWq -fcp -jgA -fcp -xWq -hKQ -uDA -flB -fgc -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX +lij +tdz +xVu +kFA +fKi +wmm +wEY +aQl +kax +oWh +rKz +keg baX +kKb +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -60642,7 +65522,32 @@ drp drp drp "} -(95,1,1) = {" +(113,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -60720,105 +65625,55 @@ drp drp baX baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -fZX -fZX -fZX -fZX -xpy -aiJ -fZX -xpy -fZX -aFP -aNY -iAn -bIM -cIp -cWm -dml -mUK -mUK -mUK -mUK -mUK -jtv -lWj -iDk -jNp -aua -odC -fUk -xFk -lJK -mrQ -iDq -onK -eGS -ull -ull -bMH -ivg -lMv -oWb -llT -vjB -pYa -xbh -pYf -faV -pYa -fcp -rjB -rjB -jon -wHL -vuU -fcp -fcp -fcp -fcp -fcp +vpI +pwz +syf +aNz +qxg +mHl +svn +uDj +xET +mNB +lDU +acP +mNB +jMa +lGG +pnl +oYe +dzH +not +qLh +eaL +kls +oGt +sIS +ewk +siD +dsG tdz tdz -cBT tdz tdz -xWq -xWq -xWq -xWq -xWq -fcp -mNz -fcp -fcp -fcp -rRV -fcp -fcp -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX +tdz +tdz +tdz +tdz +tdz +tdz +hJG +tdz +uDz +lNi +lNi +lHv +cIC +mVk +lNi +uQl +auT +jBW baX baX drp @@ -60898,8 +65753,6 @@ drp drp drp drp -"} -(96,1,1) = {" drp drp drp @@ -60925,6 +65778,20 @@ drp drp drp drp +"} +(114,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -60975,109 +65842,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -aUx -aUx -aUx -fZX -doX -aUo -qMK -yca -inW -fZX -xpy -fZX -fZX -fZX -fZX -fZX -fZX -fZX -doo -agy -mUK -mUK -eUk -aON -dmx -dmx -dmx -dmx -dmx -dmx -dmx -bpe -qgL -lpQ -mUK -fUk -mUK -hPj -fUC -vJW -fjR -txB -ugx -rgN -mve -nuy -xOK -hri -aWV -mnZ -tgO -vvU -vvU -eZV -xWq -xWq -bvn -cic -xWq -qbz -tdz -xWq -xWq -nGE -xWq -tdz -xWq -xWq -xWq -xWq -xWq -fcp -jgA -xWq -rKp -oTE -oTE -fcp -aUx -aUx -aUx -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -61117,6 +65881,59 @@ drp drp drp drp +icn +sdV +gzL +kyZ +rGm +awV +qCE +svn +uDj +uBe +mNB +aWP +rnY +mNB +fWW +dug +tKR +gOb +vjo +oGt +kry +eaL +eaL +oGt +rYe +pdJ +jKk +bpE +tdz +ola +gNH +cJF +xWq +pNa +pQB +vOq +qkh +tdz +lij +tdz +oHT +dOS +uVi +xsC +mVk +wEc +jhM +foC +fKi +oeB +icn +drp +drp drp drp drp @@ -61155,8 +65972,6 @@ drp drp drp drp -"} -(97,1,1) = {" drp drp drp @@ -61220,6 +66035,8 @@ drp drp drp drp +"} +(115,1,1) = {" drp drp drp @@ -61232,109 +66049,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -jfr -oGJ -aUx -aUx -aUx -awf -ale -mWy -ucd -eQb -faC -fZX -xpy -xpy -xpy -xpy -xpy -xpy -xpy -fZX -dmx -dmx -dFl -dmx -dmx -dmx -dmx -bJA -dmx -yca -yca -yca -dmx -dmx -lUS -dmx -dmx -dmx -lpi -yge -asw -kUK -fsN -xTw -oWb -pYa -niV -oWb -oWb -oWb -oWb -oWb -tdz -tdz -tdz -teg -nxe -xWq -xWq -xWq -kuB -xWq -tdz -nTe -xWq -nGE -xWq -tdz -tdz -tdz -mpk -tdz -tdz -fcp -gXo -bYp -cFg -jGi -iAM -jjP -aUx -aUx -aUx -oGJ -nYB -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -61412,8 +66126,6 @@ drp drp drp drp -"} -(98,1,1) = {" drp drp drp @@ -61426,6 +66138,57 @@ drp drp drp drp +icn +sdV +irN +vRl +mXH +qxg +qCE +svn +poq +qVW +mNB +chp +bIw +mNB +nRc +bts +fIX +bZp +kXN +oGt +vym +vNP +eaL +xiG +diz +pdJ +rYC +aTr +npq +pIL +pLX +xWq +xWq +xWq +xWq +xWq +xWq +tdz +lij +tdz +tLW +lNi +lNi +iTm +mVk +mVk +lNi +uQl +lNi +oeB +icn drp drp drp @@ -61489,109 +66252,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -baX -oGJ -oGJ -oGJ -fZX -fXU -kBh -dhZ -fkp -rXA -fZX -fZX -fZX -fZX -fZX -fZX -fZX -fZX -fZX -nBT -yca -yca -yca -yca -yca -yca -yca -dmx -yca -yca -yca -rff -ifB -adL -yca -yca -kRq -kRq -kRq -kRq -eAP -ewk -rlM -dsG -wps -dsG -vHj -wxz -uXg -fGM -vmg -uXg -cUO -tdz -cMv -uEF -uEF -uEF -qaS -xWq -xWq -tdz -nzK -xWq -nGE -xWq -xWq -xWq -xWq -xWq -xWq -xWq -fcp -xRA -kZw -icV -jlT -auI -fcp -oGJ -oGJ -nYB -baX -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -61632,6 +66292,8 @@ drp drp drp drp +"} +(116,1,1) = {" drp drp drp @@ -61669,8 +66331,6 @@ drp drp drp drp -"} -(99,1,1) = {" drp drp drp @@ -61729,6 +66389,72 @@ drp drp drp drp +aIO +drp +drp +drp +drp +drp +icn +sdV +rfA +mSr +ygY +qxg +qCE +jdd +uDj +aQG +mNB +mNB +mNB +mNB +afD +aTh +mZg +jLV +bDS +oGt +oGt +jaB +bfT +oGt +cPY +pdJ +pyL +dSB +iVR +pLX +raz +xWq +xWq +xWq +xWq +xWq +qoe +tdz +lij +tdz +oBL +kFA +fKi +xsC +mVk +wEc +jhM +foC +fKi +oeB +icn +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -61746,109 +66472,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -baX -baX -fZX -oSb -oSb -fZX -yca -cIk -anb -cIu -cIu -cIu -cIu -cIu -cIu -cIu -dZT -agk -agk -agk -agk -agk -agk -agk -agk -dCe -agk -agk -agk -agk -agk -qwQ -yca -yca -kRq -azI -dYV -cnN -ftr -liO -lmx -jJX -aqQ -oBw -oxt -oqz -rSl -eyC -oaW -joQ -olz -tdz -xFh -qfF -aGm -aGm -bSx -cYe -sBG -dSn -oBK -qdr -udM -oBK -oBK -oBK -oBK -oBK -oBK -oBK -qTF -wAu -xWq -fcp -hsF -hsF -fcp -baX -baX -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -61927,7 +66550,7 @@ drp drp drp "} -(100,1,1) = {" +(117,1,1) = {" drp drp drp @@ -62003,109 +66626,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -kQp -rSD -fZX -fZX -fZX -fZX -yca -yca -yca -yca -yca -elz -yca -inW -yca -yca -yca -yca -yca -yca -yca -yca -dmx -yca -yca -yca -yca -yca -yca -yca -yca -kRq -fNy -fNy -tqr -kYR -qcC -aAG -jwj -err -err -err -sae -jNg -cEr -cEr -cEr -oiy -owJ -pJe -xWq -xWq -xWq -xWq +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +col +col +lDl +col +col +col +col +qyh +kMG +rEo +grw +dsL +neA +fUz +uDj +jio +aoe +vMm +sjo +lwp +wyu +uUZ +uUZ +jFE +uUZ +uUZ +qkx +shv +oUe +uUZ +ivA +pdJ +tkZ +uGt +xYo +pLX +pLX xWq xWq tdz -fmP -oMV -xWq -xWq -xWq -xWq -xWq -xWq -xWq -xWq -fcp -fcp -fcp -fcp -rSD -baX -kQp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +tdz +vxx +tdz +tdz +lij +tdz +kFt +lNi +lNi +lWU +cBs +mVk +lNi +uQl +ffF +jBW +aIO +fBV +fBV +aIO +drp +drp +aIO +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -62184,7 +66807,7 @@ drp drp drp "} -(101,1,1) = {" +(118,1,1) = {" drp drp drp @@ -62260,109 +66883,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -aaK -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -fZX -fZX -fZX -fZX -fZX -fZX -lWT -dmx -gZe -dmx -dmx -dmx -dmx -dmx -dmx -dmx -xpy -dmx -yca -yca -yca -yca -yca -yca -yca -yca -kRq -hub -fNy -lZW -vDx -liO -lmx -tuR -jAk -sNM -olz -qQP -wRb -jAk -olz -olz -olz +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +jGa +gsI +ebk +oCV +pqD +jgU +txp +mNB +thS +rEo +qeT +mjX +uny +hWg +pqJ +pXC +bkc +eje +shv +shv +oYD +vDr +vBu +tBq +uJI +bpD +rLr +vnF +vnF +lLq +qEk +jhD +mGa +uGt tdz -iCG -lEQ -qvC -xWq -fmP -xIj -xWq +rAl +juX +xZD +aBR tdz -nIG -oMV -xWq +fmP xWq xWq xWq -fcp -fcp -fcp -fcp -fcp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +lij +tdz +jhM +kFA +fKi +xsC +mVk +wEc +jhM +foC +fKi +jBW +jBW +vIF +vIF +jBW +uzR +jBW +jBW +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +eLi +drp drp drp drp @@ -62441,7 +67064,7 @@ drp drp drp "} -(102,1,1) = {" +(119,1,1) = {" drp drp drp @@ -62517,109 +67140,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -vpI -pTY -hEY -hTm -uuc -ouq -bQq -lsG -bIO -vml -dmx -yca -dmx -dmx -boQ -dmx -dmx -dmx -dmx -dmx -dmx -kRq -kRq -kRq -xFx -oNS -viN -bJZ -lFW -wKz -tLu -mHk -wTV -mXW -lUr -olz -olz -rSl +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +jJd +rmH +fOk +iTi +jex +lKG +jex +mNB +urt +izc +dDt +wbv +uUA +uUA +uUA +uUA +uUZ +hsH +rDu +nGg +tZP +shv +sjs +shv +vCC +lWq +tKX +lWq +vnP +dHs +diz +pdJ +qlu +asI tdz -dUJ tdz tdz -bsz tdz tdz tdz tdz xWq -oMV -xWq -xWq -xWq -xWq -wGk -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +nTe +nfe +jDo +tdz +lNi +lNi +lNi +iTm +xff +mVk +lNi +uQl +lNi +fNu +ctd +lNi +lNi +jWE +oxS +nWB +nFB +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -62698,7 +67321,8 @@ drp drp drp "} -(103,1,1) = {" +(120,1,1) = {" +drp drp drp drp @@ -62774,109 +67398,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -vpI -vpI -hgi -ifG -hpH -sAK -sAK -sAK -njS -aJG -dmx -yca -dmx -ltS -tnT -xHw -tHT -nut -vcW -wPK -lLc -xEo -eHP -pgj -iFS -wgs -twx -dfP -ayw -lzN -pog -ajq -ajq -xAn -gkd -olz -olz -eCo -tdz -fko -tdz -hUo -uOo -wsq -hBc -iry -tdz -tdz -ozF -tdz -tdz -fcp -fcp -wGk -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -62896,6 +67417,69 @@ drp drp drp drp +jGa +qIn +kEW +guT +guT +jLK +cNG +bjL +cNG +eFv +lmL +amt +aSF +rPr +gIy +uUA +mTs +tun +hPx +ktK +bfy +hPx +gmv +hPx +lxp +hPx +hPx +kkw +mYV +nfK +diz +pdJ +qlu +asI +arC +eXF +dWd +qGN +xEj +qGN +tdz +xWq +fFV +fFV +fFV +fFV +oHT +kFA +bgk +iTm +mVk +mVk +jhM +foC +fKi +lNi +lNi +kqF +lNi +hoT +rWz +xaC +fMV drp drp drp @@ -62954,8 +67538,6 @@ drp drp drp drp -"} -(104,1,1) = {" drp drp drp @@ -62995,6 +67577,8 @@ drp drp drp drp +"} +(121,1,1) = {" drp drp drp @@ -63031,109 +67615,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -icn -sdV -qfB -ifG -hpH -sAK -sAK -sAK -njS -sLF -dmx -yca -dmx -nwN -tpU -lfP -jeJ -nzJ -ciB -eaL -eaL -eaL -vth -eaL -jrV -alP -liO -tfi -tuR -olz -jZK -olz -eco -ftr -olz -olz -olz -qQr -tdz -fko -tdz -jQT -mmN -laf -qLI -jxK -ttB -ccE -iMR -iWe -ldk -sGU -icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -63193,6 +67674,71 @@ drp drp drp drp +col +col +col +jda +gOQ +mgx +jex +hxk +nRw +fUq +biX +jex +ioU +ryd +ryd +uUA +xuy +tun +hMd +piI +mvJ +bLD +vvf +ivv +obl +grJ +rAn +shv +gTJ +nfK +diz +pdJ +qlu +uwD +vzE +wQa +hba +hba +hba +hba +tdz +xWq +fFV +liz +deu +uvA +mQQ +lNi +lNi +iTm +jyK +mVk +lNi +uIu +ieg +niq +gdT +gdT +bAp +kqz +lWp +eQR +nFB +drp +drp drp drp drp @@ -63211,8 +67757,6 @@ drp drp drp drp -"} -(105,1,1) = {" drp drp drp @@ -63288,111 +67832,10 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -mjO -iKj -tQW -ifG -hpH -gcZ -sAK -sAK -lAF -waz -dmx -qib -dmx -bOk -tiC -jng -tHT -gUH -xrB -bVj -bVj -nbx -eaL -eaL -oME -abm -liO -tfi -wzs -wyc -xJD -jAk -jAk -wRb -olz -olz -olz -rSl -tdz -fko -tdz -akT -smM -wmW -fno -pCn -icc -dxg -igf -cAI -grg -xzi -cxm -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp +"} +(122,1,1) = {" drp drp drp @@ -63468,8 +67911,6 @@ drp drp drp drp -"} -(106,1,1) = {" drp drp drp @@ -63490,6 +67931,71 @@ drp drp drp drp +icn +drp +jJd +ttt +cAE +dCI +ons +vBx +lfG +elN +hIz +eCR +uUA +kPP +ryd +uUA +upW +tun +shv +shv +tZP +shv +eSo +shv +tZP +shv +shv +shv +nRc +voL +diz +eUy +vlc +vuZ +mnS +xeE +onb +tDB +xWF +hba +kEj +xWq +fFV +ivT +ivT +aml +lNi +jdX +jdX +atF +mVk +mVk +jdX +hsc +usN +mAB +eLS +cOT +pSS +lRy +shu +jBW +jBW +drp +drp drp drp drp @@ -63545,109 +68051,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -icn -sdV -qHQ -ifG -hpH -sAK -sAK -sAK -njS -qzW -dmx -yca -dmx -put -fPB -oAN -tHT -aaf -wSO -eaL -eaL -eaL -vNP -eaL -hHa -abm -wgb -tfi -sVu -wsO -jBP -cOf -rrp -mXW -lUr -olz -olz -eyG -tdz -fko -tdz -mrY -wEX -vEp -tCK -uMi -ttB -mrY -gsj -asE -ofF -sGU -icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -63688,6 +68091,8 @@ drp drp drp drp +"} +(123,1,1) = {" drp drp drp @@ -63725,8 +68130,6 @@ drp drp drp drp -"} -(107,1,1) = {" drp drp drp @@ -63785,6 +68188,72 @@ drp drp drp drp +icn +drp +jJd +ttt +vFM +pzC +wbo +tSn +lHi +tcX +drJ +cHk +uUA +uUA +uUA +uUA +ygK +cZl +ebK +gAO +tai +shv +cfQ +shv +tZP +xQQ +tcj +shv +eSr +uUZ +diz +pdJ +ihQ +uwD +hba +hba +hba +hba +hba +hba +tdz +xWq +fFV +qXI +ivT +lon +kXz +shM +shM +lSA +cIC +mVk +hsr +dBY +tBl +euw +rYV +gag +hgM +cIC +oeB +drp +icn +drp +drp +drp drp drp drp @@ -63802,109 +68271,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -mjO -iKj -dYO -uzJ -hpH -lHV -sAK -sAK -jLs -oqc -dmx -yca -dmx -xWD -uqv -eMe -tHT -ueZ -wSO -eaL -eaL -eaL -eaL -eaL -hHa -abm -liO -tfi -aUX -rQZ -tkR -tkR -uiQ -lwy -olz -olz -olz -xni -tdz -fko -tdz -ttB -ttB -ttB -xoP -ttB -ttB -ttB -oUK -oIn -cDq -xzi -cxm -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -63983,7 +68349,7 @@ drp drp drp "} -(108,1,1) = {" +(124,1,1) = {" drp drp drp @@ -64059,109 +68425,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -vpI -oMl -sxO -fYa -lza -urq -alr -ctw -dmx -pJK -dmx -dmx -dmx -dmx -dmx -qoj -nCH -itT -bSJ -axl -eaL -qYb -xRQ -roT -liO -bhA -qck -huD -gzR -olz -eco -ftr -olz -olz -olz -fgO -tdz -fko +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +icn +drp +jJd +tJZ +kMh +pzC +jex +tWo +jex +fZb +biX +xSa +rJi +otP +sol +uUZ +www +myl +ebe +hTj +mbW +kAg +mmr +shv +lxp +nnl +pxn +dQg +sUi +uUZ +eJN +pdJ +ihQ +asI +wGn +iHd +iHd +iHd +iHd +pSQ tdz -dlK -mll -ljR +cnD +fFV +fFV +fFV +fFV +nbA +jdX +jdX iTm -wnw -mbt -tJL -lYW -jbz -jBW -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +mVk +mVk +fUM +tdY +oyd +eKy +oyd +lhb +kbt +sPr +oeB +pQh +icn +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -64240,7 +68606,27 @@ drp drp drp "} -(109,1,1) = {" +(125,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -64316,109 +68702,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX icn -sdV -cfL -trZ -out -wGc -rEF -qMX -vKq -bJC -gTc -nhR -lbf -iAf -mHa -fBw -cUl -wrR -alw -kHs -nWp -eaL -eaL -rqs -bYc -jFF -qRn -tuR -jAk -cpt -blH -cpt -wMD -jAk -olz -olz -pJa -tdz -dbC -ohZ -njw -njw -njw -dwh -pTl -mVk +jsw +jJd +ttt +fOk +pYe +jex +uSU +nRw +aBN +bad +aLD +kzC +jtP +wDm +lQD +uUZ +uUZ +fBT +fgs +cxh +uUZ +jIe +skf +wkw +nTW +mvV +uUZ +uUZ +lQD +biC +pdJ +ihQ +asI +asI +uwD +uwD +uwD +uwD +asI +asI +mDU +dSB +fHD +fHD +rWz +cMJ +ihT +rWz +lWU +cBs mVk -iEN +sMd +vbC +ech mVk -oeB -icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +kPd +mlm +bvO +cBs +jBW +lWF +jBW +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -64497,7 +68863,7 @@ drp drp drp "} -(110,1,1) = {" +(126,1,1) = {" drp drp drp @@ -64573,109 +68939,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -icn -sdV -chE -jip -inL -mfH -lJF -dIf -nsi -dmx -dmx -wMW -hYp -dmx -rXh -dmx -xOx -cTs -qhC -sCZ -izB -eaL -eaL -hHa -bYc -liO -iGX -lFW -wKz -tOn -mHk -mHk -fDK -rSl -olz -olz -rSl -tdz -fko -tdz -ojk -mVk -mVk -aXY -mSy -eoO -mVk -iEN -ojk -oeB -icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -64696,6 +68959,69 @@ drp drp drp drp +col +col +lSq +tdK +kMh +byz +vll +vmk +ipH +qIM +uLk +ons +gVh +imQ +oDb +rAw +mhd +cHT +uLN +jPB +saS +kSY +pNZ +rRE +lwz +saS +saS +saS +saS +coV +buh +fIp +bNX +aTU +wLe +saS +saS +saS +saS +ivb +saS +saS +saS +saS +thP +vVc +fMR +gko +adl +pcI +maD +maD +mnA +msK +mnA +mnA +mnA +qeM +nuN +jBq +jBW +ajW +jBW drp drp drp @@ -64753,8 +69079,6 @@ drp drp drp drp -"} -(111,1,1) = {" drp drp drp @@ -64795,6 +69119,8 @@ drp drp drp drp +"} +(127,1,1) = {" drp drp drp @@ -64830,109 +69156,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -icn -sdV -rfA -uyB -fHS -qxg -xAq -svn -njS -plo -lAB -uDj -xEG -dmx -kxM -dmx -oGt -oGt -oGt -oGt -aUp -eaL -eaL -rmU -bYc -liO -dzZ -gDe -akb -miD -dne -akb -bNl -luh -bxI -bxI -bxI -iEZ -eWn -tdz -lNi -lNi -lNi -iTm -mVk -hLq -lNi -uQl -lNi -oeB -icn -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -64993,6 +69216,71 @@ drp drp drp drp +jGa +ctT +kEW +guT +guT +fsz +guT +guT +hSE +guT +qft +jex +jex +afg +jex +qwd +beZ +kTT +unu +mDU +wOB +mDU +dBg +mDU +vpH +aKd +mDU +mDU +sDX +dEz +pxd +boG +glB +quX +mDU +mDU +mDU +mDU +wOB +mDU +mDU +mDU +aKd +mDU +qxi +mDU +vpH +mDU +qhP +cRV +cet +cet +nMh +nMh +nMh +nMh +cwU +nvd +pxy +gpg +lWp +fxa +nFB +tjY +drp drp drp drp @@ -65010,8 +69298,6 @@ drp drp drp drp -"} -(112,1,1) = {" drp drp drp @@ -65087,112 +69373,11 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -jEV -iKj -dWb -sHv -uOM -rtj -vlY -lGn -qyL -flg -efV -aCw -kEp -mNB -mEF -cRD -hIF -bfa -dzH -oGt -xhm -eaL -eaL -oGt -xWX -viN -ldG -dHN -rdN -gXG -sgZ -mVl -vDO -xAf -arg -nAi -rWp -tdz -lij -tdz -xVu -kFA -fKi -wmm -wEY -aQl -kax -oWh -rKz -keg -baX -kKb -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp +"} +(128,1,1) = {" drp drp drp @@ -65267,8 +69452,6 @@ drp drp drp drp -"} -(113,1,1) = {" drp drp drp @@ -65290,6 +69473,69 @@ drp drp drp drp +jJd +rXV +fOk +iTi +jex +jex +kVt +jex +cSg +dxC +eZb +qiX +hHS +sty +eJt +rDt +iGI +wMr +gbq +bVq +dNK +wMr +lTU +lEH +psf +xLm +wMr +wMr +dyy +aCs +cOe +npJ +bSh +qiY +oKP +oKP +oKP +oKP +hQm +oKP +xHD +oKP +owK +fzD +kor +oKP +dnd +oKP +epB +mTD +jvY +tFI +jdX +jdX +jdX +gfZ +vIk +ovc +yfp +rWz +rWz +wCT +jBW drp drp drp @@ -65344,109 +69590,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -vpI -pwz -syf -aNz -qxg -mHl -svn -uDj -xET -mNB -lDU -acP -mNB -jMa -lGG -pnl -oYe -dzH -not -qLh -eaL -kls -oGt -sIS -ewk -siD -dsG -tdz -tdz -tdz -tdz -tdz -tdz -tdz -tdz -tdz -tdz -hJG -tdz -uDz -lNi -lNi -lHv -cIC -mVk -lNi -uQl -auT -jBW -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -65490,6 +69633,8 @@ drp drp drp drp +"} +(129,1,1) = {" drp drp drp @@ -65524,8 +69669,6 @@ drp drp drp drp -"} -(114,1,1) = {" drp drp drp @@ -65587,6 +69730,75 @@ drp drp drp drp +jGa +gsI +ebk +gDY +trA +bHD +lVn +uKi +crs +auu +wPZ +crs +crs +qlT +jex +lKG +jqX +dSB +vDM +dWk +mDU +dSB +mDU +uQs +rTu +uQs +uQs +pJI +fmX +pmp +unu +pdJ +ihQ +oBd +cYh +oXv +feG +qKY +cJr +faJ +exW +fOa +cJr +quN +nVB +fSU +qqd +quN +quN +iTw +quN +quN +dpM +quN +dpM +quN +vIk +lhE +oJH +ieM +vIk +pnE +owu +drp +drp +drp +drp +drp +drp drp drp drp @@ -65601,109 +69813,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -icn -sdV -gzL -kyZ -rGm -awV -qCE -svn -uDj -uBe -mNB -aWP -rnY -mNB -fWW -dug -tKR -gOb -vjo -oGt -kry -eaL -eaL -oGt -rYe -pdJ -jKk -bpE -tdz -ola -gNH -cJF -xWq -pNa -pQB -vOq -qkh -tdz -lij -tdz -oHT -dOS -uVi -xsC -mVk -wEc -jhM -foC -fKi -oeB -icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -65782,7 +69891,7 @@ drp drp drp "} -(115,1,1) = {" +(130,1,1) = {" drp drp drp @@ -65858,109 +69967,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -icn -sdV -irN -vRl -mXH -qxg -qCE -svn -poq -qVW -mNB -chp -bIw -mNB -nRc -bts -fIX -bZp -kXN -oGt -vym -vNP -eaL -xiG -diz +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +col +col +lDl +crs +wgt +vFY +crs +crs +crs +wCc +uGY +wDM +crs +vkB +obI +xIw +hAr +hAr +vCG +aKS +jDs +deI +hLi +uQs +mls +wEg +nZj +oHz +oHz +oHz +gqi pdJ -rYC -aTr -npq -pIL -pLX -xWq -xWq -xWq -xWq -xWq -xWq -tdz -lij -tdz -tLW -lNi -lNi -iTm -mVk -mVk -lNi -uQl -lNi -oeB -icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +ihQ +gkH +gkH +gkH +cfk +cJr +cJr +wGj +rCc +ion +bRa +vUl +vrM +rZt +oDu +xJI +pAr +qgc +lti +dJw +bjQ +gPQ +qtQ +xcI +vIk +lpZ +czK +jRA +hNH +uDv +iLN +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -66039,7 +70148,7 @@ drp drp drp "} -(116,1,1) = {" +(131,1,1) = {" drp drp drp @@ -66115,109 +70224,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -baX -baX -baX -baX -baX -icn -sdV -rfA -mSr -ygY -qxg -qCE -jdd -uDj -aQG -mNB -mNB -mNB -mNB -afD -aTh -mZg -jLV -bDS -oGt -oGt -jaB -bfT -oGt -cPY +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +eXv +bWv +xGO +diN +diN +hMZ +aHw +pvG +mzm +kjk +mBv +koy +lfE +rLG +hAr +rHs +rQK +oQq +frR +frR +frR +uQs +lKq +iBR +oNI +nVt +qQd +oHz +hsu pdJ -pyL -dSB -iVR -pLX -raz -xWq -xWq -xWq -xWq -xWq -qoe -tdz -lij -tdz -oBL -kFA -fKi -xsC -mVk -wEc -jhM -foC -fKi -oeB -icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +hzB +gkH +uDQ +ucB +cfk +aER +hNF +ceL +gud +pee +chH +qgc +cRx +fWo +jeG +qgc +qgc +qgc +piL +qhH +quU +qgc +izp +bPM +vIk +hbw +bmf +oeX +amR +tPa +iLN drp drp drp @@ -66295,8 +70384,6 @@ drp drp drp drp -"} -(117,1,1) = {" drp drp drp @@ -66317,6 +70404,11 @@ drp drp drp drp +"} +(132,1,1) = {" +drp +drp +drp drp drp drp @@ -66372,109 +70464,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -col -col -lDl -col -col -col -col -qyh -kMG -rEo -grw -dsL -neA -fUz -uDj -jio -aoe -vMm -sjo -lwp -wyu -uUZ -uUZ -jFE -uUZ -uUZ -qkx -shv -oUe -uUZ -ivA -pdJ -tkZ -uGt -xYo -pLX -pLX -xWq -xWq -tdz -tdz -vxx -tdz -tdz -lij -tdz -kFt -lNi -lNi -lWU -cBs -mVk -lNi -uQl -ffF -jBW -aIO -fBV -fBV -aIO -baX -baX -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -66512,6 +70501,77 @@ drp drp drp drp +aek +fyD +eXv +fTT +vLG +vLG +kem +oUL +iHE +wjH +iHE +rDP +lSF +hlw +eLV +rLG +hAr +oFw +gOx +pvS +nil +frR +yeo +tky +fgE +nKi +oHz +kRO +kRO +wGa +unu +pdJ +ihQ +okz +bAS +bAS +cfk +oFH +cSv +pim +frY +ayV +ncp +qgc +eTz +qSt +bqx +dim +dim +vnJ +fvf +haC +pKi +fWo +qgc +tDb +sMu +mRq +bmf +vqt +iLN +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -66552,8 +70612,6 @@ drp drp drp drp -"} -(118,1,1) = {" drp drp drp @@ -66603,6 +70661,8 @@ drp drp drp drp +"} +(133,1,1) = {" drp drp drp @@ -66629,109 +70689,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -jGa -gsI -ebk -oCV -pqD -jgU -txp -mNB -thS -rEo -qeT -mjX -uny -hWg -pqJ -pXC -bkc -eje -shv -shv -oYD -vDr -vBu -tBq -uJI -bpD -rLr -vnF -vnF -lLq -qEk -jhD -mGa -uGt -tdz -rAl -juX -xZD -aBR -tdz -fmP -xWq -xWq -xWq -lij -tdz -jhM -kFA -fKi -xsC -mVk -wEc -jhM -foC -fKi -jBW -jBW -vIF -vIF -jBW -uzR -jBW -jBW -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aaK -baX drp drp drp @@ -66801,6 +70758,69 @@ drp drp drp drp +aek +fyD +eXv +vzU +iHE +kQK +qEA +tXS +tXS +cer +kNN +pcX +nwi +vrH +hqq +rLG +hAr +byx +pCj +anN +xhM +frR +gDF +uQs +xhD +ovK +oHz +wpr +kRO +mIz +kef +jhD +tlD +vPs +eZP +bAS +cfk +jcr +cSv +pim +frY +ayV +cJr +fub +jiU +fIm +hAb +rmW +pAr +hll +piL +qhH +quU +qgc +qtQ +xcI +pQv +pQv +vsf +pQv +trj +aUx +hBy drp drp drp @@ -66809,8 +70829,6 @@ drp drp drp drp -"} -(119,1,1) = {" drp drp drp @@ -66886,109 +70904,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -jJd -rmH -fOk -iTi -jex -lKG -jex -mNB -urt -izc -dDt -wbv -uUA -uUA -uUA -uUA -uUZ -hsH -rDu -nGg -tZP -shv -sjs -shv -vCC -lWq -tKX -lWq -vnP -dHs -diz -pdJ -qlu -asI -tdz -tdz -tdz -tdz -tdz -tdz -tdz -xWq -nTe -nfe -jDo -tdz -lNi -lNi -lNi -iTm -xff -mVk -lNi -uQl -lNi -fNu -ctd -lNi -lNi -jWE -oxS -nWB -nFB -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -67003,6 +70918,8 @@ drp drp drp drp +"} +(134,1,1) = {" drp drp drp @@ -67066,8 +70983,6 @@ drp drp drp drp -"} -(120,1,1) = {" drp drp drp @@ -67099,6 +71014,71 @@ drp drp drp drp +aIO +aek +fyD +eXv +sRt +gay +gXx +mGb +sqk +nmC +iVi +ewO +qqD +crs +wiX +deU +tGe +hAr +dLr +ipT +nPS +fOv +xfM +eYd +kHE +lML +fgE +oHz +oHz +oHz +oHz +tLG +pdJ +fOK +gkH +cfk +cfk +cfk +tcs +hrk +ceL +gud +vLP +chH +qgc +upe +qgc +oDu +nSL +qgc +qgc +kOp +jgQ +qgc +oSw +rnS +saD +pQv +nkj +nNE +wYY +trj +aUx +hBy +aIO drp drp drp @@ -67143,109 +71123,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -jGa -qIn -kEW -guT -guT -jLK -cNG -bjL -cNG -eFv -lmL -amt -aSF -rPr -gIy -uUA -mTs -tun -hPx -ktK -bfy -hPx -gmv -hPx -lxp -hPx -hPx -kkw -mYV -nfK -diz -pdJ -qlu -asI -arC -eXF -dWd -qGN -xEj -qGN -tdz -xWq -fFV -fFV -fFV -fFV -oHT -kFA -bgk -iTm -mVk -mVk -jhM -foC -fKi -lNi -lNi -kqF -lNi -hoT -rWz -xaC -fMV -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -67298,6 +71175,8 @@ drp drp drp drp +"} +(135,1,1) = {" drp drp drp @@ -67323,8 +71202,6 @@ drp drp drp drp -"} -(121,1,1) = {" drp drp drp @@ -67395,114 +71272,89 @@ drp drp drp drp +aek +aUx +eXv +eXv +eXv +eXv +eXv +eXv +eXv +pSU +crs +fts +crs +xwj +kRs +sly +hAr +hAr +cWq +hAr +hAr +fmk +jDs +uQs +uQs +fgE +uQs +ebx +eER +hEi +unu +pdJ +ihQ +hEi +eEp +mLK +aVl +wAq +hqF +wGj +rCc +jkY +cJr +vei +cRx +pjE +oDu +quN +quN +iTw +quN +mTz +qgc +est +qgc +uNb +pQv +jVH +ycs +trj +trj +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -col -col -col -jda -gOQ -mgx -jex -hxk -nRw -fUq -biX -jex -ioU -ryd -ryd -uUA -xuy -tun -hMd -piI -mvJ -bLD -vvf -ivv -obl -grJ -rAn -shv -gTJ -nfK -diz -pdJ -qlu -uwD -vzE -wQa -hba -hba -hba -hba -tdz -xWq -fFV -liz -deu -uvA -mQQ -lNi -lNi -iTm -jyK -mVk -lNi -uIu -ieg -niq -gdT -gdT -bAp -kqz -lWp -eQR -nFB -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -67581,7 +71433,7 @@ drp drp drp "} -(122,1,1) = {" +(136,1,1) = {" drp drp drp @@ -67657,109 +71509,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx icn -baX -jJd -ttt -cAE -dCI -ons -vBx -lfG -elN -hIz -eCR -uUA -kPP -ryd -uUA -upW -tun -shv -shv -tZP -shv -eSo -shv -tZP -shv -shv -shv -nRc -voL -diz -eUy -vlc -vuZ -mnS -xeE -onb -tDB -xWF -hba -kEj -xWq -fFV -ivT -ivT -aml -lNi -jdX -jdX -atF -mVk -mVk -jdX -hsc -usN -mAB -eLS -cOT -pSS -lRy -shu -jBW -jBW -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +pJt +mai +qtY +sjW +wDT +vxs +nuR +upb +hCu +nlX +oXq +kSZ +snK +ipd +kSZ +oPt +uJY +qlM +iUH +bjb +yiE +uQs +mDB +uQs +uQs +uQs +oXv +unu +pdJ +ihQ +oXv +cJr +rOj +tMs +gud +hqF +gud +gud +rsq +cJr +quN +sgv +quN +rwz +quN +cdt +qgc +xTQ +aaG +aaG +iPF +aaG +aaG +fCJ +fSj +dcM +mvd +icn +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -67838,7 +71690,7 @@ drp drp drp "} -(123,1,1) = {" +(137,1,1) = {" drp drp drp @@ -67914,109 +71766,90 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aIO +aek +aUx icn -baX -jJd -ttt -vFM -pzC -wbo -tSn -lHi -tcX -drJ -cHk -uUA -uUA -uUA -uUA -ygK -cZl -ebK -gAO -tai -shv -cfQ -shv -tZP -xQQ -tcj -shv -eSr -uUZ -diz -pdJ -ihQ -uwD -hba -hba -hba -hba -hba -hba -tdz -xWq -fFV -qXI -ivT -lon -kXz -shM -shM -lSA -cIC -mVk -hsr -dBY -tBl -euw -rYV -gag -hgM -cIC -oeB -baX +qNy +gUj +lAG +hOk +xgR +yhk +plS +nlw +uZQ +nlw +jCG +nlw +sly +nlw +kji +tMq +akp +iuT +bnl +fCe +dbK +uQs +nsN +fgM +fgE +uQs +xEs +iJX +cEf +hIK +feG +cJr +cIB +ayj +iCW +nGt +bPJ +hke +cYJ +iok +cGP +qGQ +tSL +cGP +kUa +eUT +bkS +jjG +fjZ +fjZ +xRJ +qgc +bdj +pQv +sag +ftX +mvd icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +aUx +hBy +aIO drp drp drp @@ -68094,8 +71927,6 @@ drp drp drp drp -"} -(124,1,1) = {" drp drp drp @@ -68115,6 +71946,9 @@ drp drp drp drp +"} +(138,1,1) = {" +drp drp drp drp @@ -68171,109 +72005,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -icn -baX -jJd -tJZ -kMh -pzC -jex -tWo -jex -fZb -biX -xSa -rJi -otP -sol -uUZ -www -myl -ebe -hTj -mbW -kAg -mmr -shv -lxp -nnl -pxn -dQg -sUi -uUZ -eJN -pdJ -ihQ -asI -wGn -iHd -iHd -iHd -iHd -pSQ -tdz -cnD -fFV -fFV -fFV -fFV -nbA -jdX -jdX -iTm -mVk -mVk -fUM -tdY -oyd -eKy -oyd -lhb -kbt -sPr -oeB -pQh -icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -68312,6 +72043,69 @@ drp drp drp drp +aek +aUx +icn +sQH +azr +xVG +kwS +nlw +deU +fJu +xmt +reb +ogm +vVz +suL +fdL +nlw +dwB +iHz +uJY +rnj +aTi +tGT +dvb +uQs +fgE +fgE +fgE +hYn +eNL +unu +rtl +ihQ +blv +oVl +hSM +rsq +mTJ +cIB +bha +lzz +huK +ncp +mPp +gjl +fsk +mXf +quN +vsb +hfs +mMe +lWl +oqO +dgW +qdf +mPo +pQv +fUt +nRL +mvd +icn +aUx +hBy drp drp drp @@ -68351,8 +72145,6 @@ drp drp drp drp -"} -(125,1,1) = {" drp drp drp @@ -68411,6 +72203,8 @@ drp drp drp drp +"} +(139,1,1) = {" drp drp drp @@ -68428,109 +72222,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -icn -jsw -jJd -ttt -fOk -pYe -jex -uSU -nRw -aBN -bad -aLD -kzC -jtP -wDm -lQD -uUZ -uUZ -fBT -fgs -cxh -uUZ -jIe -skf -wkw -nTW -mvV -uUZ -uUZ -lQD -biC -pdJ -ihQ -asI -asI -uwD -uwD -uwD -uwD -asI -asI -mDU -dSB -fHD -fHD -rWz -cMJ -ihT -rWz -lWU -cBs -mVk -sMd -vbC -ech -mVk -kPd -mlm -bvO -cBs -jBW -lWF -jBW -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -68608,9 +72299,70 @@ drp drp drp drp -"} -(126,1,1) = {" drp +aek +aUx +mjO +snG +dQZ +deU +deU +deU +iSJ +wTi +hOk +ehU +deU +xhi +xhi +pKI +xRm +xhi +jZR +uJY +bTS +vIE +sFo +xKf +uQs +fgE +nBZ +eqV +uQs +lPZ +eih +vSI +eyl +lPZ +enF +rvQ +rxN +enF +jqV +cJr +xDc +cJr +cJr +tCh +ogg +mPp +mPp +xHL +xHL +kiC +kgM +xHL +xHL +xKx +pQv +pQv +pQv +pQv +bOr +cog +cxm +aUx +hBy drp drp drp @@ -68685,109 +72437,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -col -col -lSq -tdK -kMh -byz -vll -vmk -ipH -qIM -uLk -ons -gVh -imQ -oDb -rAw -mhd -cHT -uLN -jPB -saS -kSY -pNZ -rRE -lwz -saS -saS -saS -saS -coV -buh -fIp -bNX -aTU -wLe -saS -saS -saS -saS -ivb -saS -saS -saS -saS -thP -vVc -fMR -gko -adl -pcI -maD -maD -mnA -msK -mnA -mnA -mnA -qeM -nuN -jBq -jBW -ajW -jBW -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -68811,6 +72460,11 @@ drp drp drp drp +"} +(140,1,1) = {" +drp +drp +drp drp drp drp @@ -68865,8 +72519,6 @@ drp drp drp drp -"} -(127,1,1) = {" drp drp drp @@ -68904,6 +72556,71 @@ drp drp drp drp +aIO +aek +aUx +icn +pJt +dmn +bNS +sjW +wDT +vxs +xoV +jdF +aAU +miQ +xhi +sRb +gqc +sRb +bLm +mrF +pie +rAa +rAa +rAa +pKs +uQs +ymh +pKS +psw +uQs +qoS +bED +eLE +sZK +uUz +eoI +fsy +iHV +eoI +jbv +gJJ +aWL +aSx +jZb +gvO +ouJ +mxu +mPp +kgM +uhw +tRS +hcN +thW +lQL +pQv +wYY +jQJ +jbC +nkj +nRL +mvd +icn +aUx +hBy +aIO drp drp drp @@ -68942,109 +72659,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -jGa -ctT -kEW -guT -guT -fsz -guT -guT -hSE -guT -qft -jex -jex -afg -jex -qwd -beZ -kTT -unu -mDU -wOB -mDU -dBg -mDU -vpH -aKd -mDU -mDU -sDX -dEz -pxd -boG -glB -quX -mDU -mDU -mDU -mDU -wOB -mDU -mDU -mDU -aKd -mDU -qxi -mDU -vpH -mDU -qhP -cRV -cet -cet -nMh -nMh -nMh -nMh -cwU -nvd -pxy -gpg -lWp -fxa -nFB -tjY -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -69103,6 +72717,8 @@ drp drp drp drp +"} +(141,1,1) = {" drp drp drp @@ -69122,8 +72738,6 @@ drp drp drp drp -"} -(128,1,1) = {" drp drp drp @@ -69199,109 +72813,90 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -jJd -rXV -fOk -iTi -jex -jex -kVt -jex -cSg -dxC -eZb -qiX -hHS -sty -eJt -rDt -iGI -wMr -gbq -bVq -dNK -wMr -lTU -lEH -psf -xLm -wMr -wMr -dyy -aCs -cOe -npJ -bSh -qiY -oKP -oKP -oKP -oKP -hQm -oKP -xHD -oKP -owK -fzD -kor -oKP -dnd -oKP -epB -mTD -jvY -tFI -jdX -jdX -jdX -gfZ -vIk -ovc -yfp -rWz -rWz -wCT -jBW -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +aek +aUx +icn +qNy +fTW +mmO +smb +nrR +ick +pOl +hAh +vSl +fCT +xhi +kSi +okO +ndu +sRb +mrF +uJY +xCB +hts +nAX +cGN +uQs +cTz +fgE +ovK +uQs +sVp +maw +imE +rsQ +cxG +ibL +fsy +iHV +eoI +iHq +jGz +kqW +jGz +nlF +tCh +lIe +mPp +mPp +xHL +fSI +xwG +vVh +obB +rbA +pQv +wYY +ssO +hhz +wpN +mKS +mvd +icn +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -69380,7 +72975,7 @@ drp drp drp "} -(129,1,1) = {" +(142,1,1) = {" drp drp drp @@ -69456,109 +73051,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aTc -baX -baX -baX -jGa -gsI -ebk -gDY -trA -bHD -lVn -uKi -crs -auu -wPZ -crs -crs -qlT -jex -lKG -jqX -dSB -vDM -dWk -mDU -dSB -mDU -uQs -rTu -uQs +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aek +aUx +icn +sQH +hDa +xVG +kwS +nlw +deU +jMJ +nlw +wYj +nuV +xhi +rfu +eGe +ubj +sbQ +eWG +oZp +oZp +oZp +oZp +oZp +oZp +fgE +idV +nKi uQs -pJI -fmX -pmp -unu -pdJ -ihQ -oBd -cYh -oXv -feG -qKY -cJr -faJ -exW -fOa -cJr -quN -nVB -fSU -qqd -quN -quN -iTw -quN -quN -dpM -quN -dpM -quN -vIk -lhE -oJH -ieM -vIk -pnE -owu -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +icP +qvE +qbF +nUR +dji +eoI +viS +iHV +eoI +vOv +euO +nhS +wJT +jvx +aTI +pxq +nYo +nYo +giK +sTz +ndZ +jNs +cSp +atq +pQv +eVJ +iVC +wYY +hpK +nRL +mvd +icn +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -69637,7 +73232,18 @@ drp drp drp "} -(130,1,1) = {" +(143,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -69713,109 +73319,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -col -col -lDl -crs -wgt -vFY -crs -crs -crs -wCc -uGY -wDM -crs -vkB -obI -xIw -hAr -hAr -vCG -aKS -jDs -deI -hLi -uQs -mls -wEg -nZj -oHz -oHz -oHz -gqi -pdJ -ihQ -gkH -gkH -gkH -cfk -cJr -cJr -wGj -rCc -ion -bRa -vUl -vrM -rZt -oDu -xJI -pAr -qgc -lti -dJw -bjQ -gPQ -qtQ -xcI -vIk -lpZ -czK -jRA -hNH -uDv -iLN -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -69824,6 +73327,71 @@ drp drp drp drp +aIO +aek +aUx +mjO +snG +iai +deU +deU +deU +deU +wZI +kji +shl +mtS +xhi +csr +gqc +vAz +sRb +bhD +ern +ibM +fYJ +scI +cfY +oZp +jcC +lBh +gEA +pwr +kYJ +trJ +epv +bvf +pGx +eoI +kkE +iHV +eoI +iFL +tCh +tCh +tCh +tCh +tCh +ogg +mPp +pOj +xHL +xHL +xHL +xHL +xHL +gbS +pQv +pQv +pQv +pQv +hpK +lMJ +cog +cxm +aUx +hBy +aIO drp drp drp @@ -69893,8 +73461,6 @@ drp drp drp drp -"} -(131,1,1) = {" drp drp drp @@ -69922,6 +73488,8 @@ drp drp drp drp +"} +(144,1,1) = {" drp drp drp @@ -69970,109 +73538,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -eXv -bWv -xGO -diN -diN -hMZ -aHw -pvG -mzm -kjk -mBv -koy -lfE -rLG -hAr -rHs -rQK -oQq -frR -frR -frR -uQs -lKq -iBR -oNI -nVt -qQd -oHz -hsu -pdJ -hzB -gkH -uDQ -ucB -cfk -aER -hNF -ceL -gud -pee -chH -qgc -cRx -fWo -jeG -qgc -qgc -qgc -piL -qhH -quU -qgc -izp -bPM -vIk -hbw -bmf -oeX -amR -tPa -iLN -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -70120,6 +73585,69 @@ drp drp drp drp +aek +aUx +icn +pJt +dmn +jbO +sjW +wDT +vxs +vji +nSR +sZn +fjb +xhi +itt +gqc +sRb +eNW +gqc +oZp +cPM +wVM +oaJ +eaE +oZp +fgE +dCv +fgE +uQs +ptb +gUG +wYK +fZj +dpD +eoI +lch +iHV +xfO +eoI +hGa +qZk +kSk +qrs +kZF +pxq +nYo +nYo +iwf +skA +fwE +dby +uFd +pQv +wYY +pvR +drl +pQv +hpK +nRL +trj +icn +aUx +hBy drp drp drp @@ -70150,8 +73678,6 @@ drp drp drp drp -"} -(132,1,1) = {" drp drp drp @@ -70219,6 +73745,8 @@ drp drp drp drp +"} +(145,1,1) = {" drp drp drp @@ -70227,109 +73755,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -fyD -eXv -fTT -vLG -vLG -kem -oUL -iHE -wjH -iHE -rDP -lSF -hlw -eLV -rLG -hAr -oFw -gOx -pvS -nil -frR -yeo -tky -fgE -nKi -oHz -kRO -kRO -wGa -unu -pdJ -ihQ -okz -bAS -bAS -cfk -oFH -cSv -pim -frY -ayV -ncp -qgc -eTz -qSt -bqx -dim -dim -vnJ -fvf -haC -quU -fWo -qgc -tDb -sMu -mRq -bmf -vqt -iLN -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -70407,8 +73832,6 @@ drp drp drp drp -"} -(133,1,1) = {" drp drp drp @@ -70419,6 +73842,71 @@ drp drp drp drp +aek +aUx +icn +qNy +mfI +lAG +eeT +xgR +sQQ +tNC +iuj +bOX +xhi +xhi +xhi +aZl +pEK +xhi +bZP +oZp +apQ +qfe +hXl +liG +oZp +fSz +dCv +fgE +uQs +qvs +odB +tiJ +cxG +dxw +eoI +uGu +ngn +anU +fGy +kvL +mrc +xnl +uEk +chS +ogg +mPp +jFX +boz +kDN +djQ +uoy +eQh +kvz +wYY +ssO +hhz +lwE +wpN +mKS +trj +icn +aUx +hBy +drp +drp drp drp drp @@ -70484,109 +73972,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -fyD -eXv -vzU -iHE -kQK -qEA -tXS -tXS -cer -kNN -pcX -nwi -vrH -hqq -rLG -hAr -byx -pCj -anN -xhM -frR -gDF -uQs -xhD -ovK -oHz -wpr -kRO -mIz -kef -jhD -tlD -vPs -eZP -bAS -cfk -jcr -cSv -pim -frY -ayV -cJr -fub -jiU -fIm -hAb -rmW -pAr -hll -piL -qhH -quU -qgc -qtQ -xcI -pQv -pQv -vsf -pQv -trj -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -70617,6 +74002,8 @@ drp drp drp drp +"} +(146,1,1) = {" drp drp drp @@ -70664,8 +74051,6 @@ drp drp drp drp -"} -(134,1,1) = {" drp drp drp @@ -70713,6 +74098,71 @@ drp drp drp drp +aIO +aek +aUx +icn +sQH +hDa +xVG +dRc +nlw +deU +vzr +sfi +kCC +gpT +bHq +iOU +oDA +caD +crp +lKC +oZp +nsw +qfe +hAT +mYR +oZp +fgE +xRq +bOM +uQs +tfv +cMn +xsj +hzV +dVU +eoI +vBi +fsy +iHV +eoI +ptV +mkI +cdk +eVC +acn +scE +rGa +jFX +dhb +iyd +acM +awG +hiR +pQv +hDn +iVC +wYY +pQv +hpK +nRL +trj +icn +aUx +hBy +aIO drp drp drp @@ -70720,6 +74170,7 @@ drp drp drp drp +eLi drp drp drp @@ -70741,109 +74192,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -aek -fyD -eXv -sRt -gay -gXx -mGb -sqk -nmC -iVi -ewO -qqD -crs -wiX -deU -tGe -hAr -dLr -ipT -nPS -fOv -xfM -eYd -kHE -lML -fgE -oHz -oHz -oHz -oHz -tLG -pdJ -fOK -gkH -cfk -cfk -cfk -tcs -hrk -ceL -gud -vLP -chH -qgc -upe -qgc -oDu -nSL -qgc -qgc -kOp -jgQ -qgc -oSw -rnS -saD -pQv -nkj -nNE -wYY -trj -aUx -hBy -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -70911,6 +74259,18 @@ drp drp drp drp +"} +(147,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -70921,8 +74281,6 @@ drp drp drp drp -"} -(135,1,1) = {" drp drp drp @@ -70998,109 +74356,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -eXv -eXv -eXv -eXv -eXv -eXv -eXv -pSU -crs -fts -crs -xwj -kRs -sly -hAr -hAr -cWq -hAr -hAr -fmk -jDs +mjO +snG +mmm +deU +deU +deU +csT +pBU +wYj +nlw +xhi +utr +mny +spV +oQf +oQf +lKC +oZp +xSb +jGf +pTe +cVO +oZp uQs +fVT uQs -fgE uQs -ebx -eER -hEi -unu -pdJ -ihQ -hEi -eEp -mLK -aVl -wAq -hqF -wGj -rCc -jkY -cJr -vei -cRx -pjE -oDu -quN -quN -iTw -quN -mTz -qgc -est -qgc -uNb +lPZ +eYk +nSc +nnB +pLS +eoI +eoI +eoI +meI +eoI +dKn +dKn +dKn +dKn +dKn +lww +mPp +jFX +boz +boz +boz +boz +boz pQv -jVH -ycs -trj -trj +pQv +pQv +pQv +pQv +hpK +lMJ +cog +cxm aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -71179,7 +74517,27 @@ drp drp drp "} -(136,1,1) = {" +(148,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -71255,109 +74613,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx icn pJt mai -qtY +jyF sjW wDT vxs -nuR -upb -hCu -nlX -oXq -kSZ -snK -ipd +kfG +cTx kSZ -oPt -uJY -qlM -iUH -bjb -yiE -uQs -mDB -uQs -uQs -uQs -oXv -unu -pdJ -ihQ -oXv -cJr -rOj -tMs -gud -hqF -gud -gud -rsq -cJr -quN -sgv -quN -rwz -quN -cdt -qgc -xTQ -aaG -aaG -iPF -aaG -aaG -fCJ -fSj -dcM -mvd -icn -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +fdm +wMT +mlI +cnv +oxV +xaa +jqC +oZp +hDk +eaE +goB +mbk +mbk +jQw +rOK +pQv +nGw +hid +nGw +nGw +fEq +hOz +nGw +nGw +nGw +bfn +eoI +dti +pJl +wFd +tzi +acn +ogg +mPp +jFX +dhb +hdA +xiI +dDP +fvF +pQv +wYY +pvR +drl +pQv +hpK +nRL +mvd +icn +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -71436,7 +74774,26 @@ drp drp drp "} -(137,1,1) = {" +(149,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -71512,109 +74869,90 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX aIO aek aUx icn qNy -gUj lAG -hOk +lAG +xFe xgR -yhk -plS -nlw -uZQ -nlw -jCG -nlw -sly -nlw -kji -tMq -akp -iuT -bnl -fCe -dbK -uQs -nsN -fgM -fgE -uQs -xEs -iJX -cEf -hIK -feG -cJr -cIB -ayj -iCW -nGt -bPJ -hke -cYJ -iok -cGP -qGQ -tSL -cGP -kUa -eUT -bkS -jjG -fjZ -fjZ -xRJ -qgc -bdj +ddc +iuj +qAS +bvK +xhi +uQy +ahn +qVm +wRZ +lXw +iha +oZp +tdM +eaE +twc +lar +eaE pQv -sag -ftX +tnw +pQv +tht +nGw +nGw +nGw +qKH +nGw +nGw +nGw +nGw +bfn +fGy +kvL +otm +ufY +uEk +dKn +oTO +mPp +jFX +sZk +kDN +pne +dXZ +eQh +kvz +wYY +ssO +hhz +lwE +wpN +mKS mvd icn aUx hBy aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -71693,7 +75031,7 @@ drp drp drp "} -(138,1,1) = {" +(150,1,1) = {" drp drp drp @@ -71769,26 +75107,26 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +eLi +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp aek aUx icn @@ -71798,80 +75136,80 @@ xVG kwS nlw deU -fJu -xmt -reb -ogm -vVz -suL -fdL -nlw -dwB -iHz -uJY -rnj -aTi -tGT -dvb -uQs -fgE -fgE -fgE -hYn -eNL -unu -rtl -ihQ -blv -oVl -hSM -rsq -mTJ -cIB -bha -lzz -huK -ncp -mPp -gjl -fsk -mXf -quN -vsb -hfs -mMe -lWl -oqO -dgW -qdf -mPo +rgT +eSD +vXJ +wBi +wBi +mVF +xCs +wBi +wBi +cap +oZp +oZp +oOO +oZp +oZp +oZp pQv -fUt +tnw +pQv +tht +nGw +nGw +agH +qfk +nGw +nGw +nGw +nGw +bfn +eoI +otm +tLz +mKm +iko +uOv +uIO +xDq +xDq +mLD +uTl +gBF +hvJ +dXZ +pQv +hDn +iVC +wYY +pQv +hpK nRL mvd icn aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -71950,7 +75288,27 @@ drp drp drp "} -(139,1,1) = {" +(151,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -72026,109 +75384,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX aek aUx -mjO -snG -dQZ -deU -deU +wLO +wLO +wLO +wLO +wLO +wLO +wLO deU -iSJ -wTi -hOk -ehU +rXt deU -xhi -xhi -pKI -xRm -xhi -jZR -uJY -bTS -vIE -sFo -xKf -uQs -fgE -nBZ -eqV -uQs -lPZ -eih -vSI -eyl -lPZ -enF -enF -rxN -enF -jqV -cJr -xDc -cJr -cJr -tCh +wBi +omQ +leq +rft +gXW +wBi +bhh +fLs +wOb +dmF +eFQ +dCx +byf +pQv +tnw +pQv +uID +nGw +nGw +nGw +mnK +nGw +nGw +nGw +nGw +bfn +eoI +eoI +eoI +eoI +eoI +eoI ogg mPp mPp -xHL -xHL -kiC -kgM -xHL -xHL -xKx pQv pQv pQv pQv -bOr -cog -cxm +pQv +pQv +pQv +pQv +pQv +pQv +vXd +nRL +trj +trj aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -72207,7 +75545,7 @@ drp drp drp "} -(140,1,1) = {" +(152,1,1) = {" drp drp drp @@ -72283,109 +75621,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -aek -aUx -icn -pJt -dmn -bNS -sjW -wDT -vxs -xoV -jdF -aAU -miQ -xhi -sRb -gqc -sRb -bLm -mrF -pie -rAa -rAa -rAa -pKs -uQs -ymh -pKS -psw -uQs -qoS -bED -eLE -sZK -uUz -eoI -fsy -iHV -eoI -jbv -gJJ -aWL -aSx -jZb -gvO -ouJ -mxu -mPp -kgM -uhw -tRS -hcN -thW -lQL -pQv -wYY -jQJ -jbC -nkj -nRL -mvd -icn -aUx -hBy -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -72405,6 +75640,71 @@ drp drp drp drp +aIO +aek +aUx +wLO +bBq +wqA +jYY +nUe +ria +wLO +jVg +xQB +pcq +tTo +hSh +pum +ejd +bnE +wBi +weK +lGS +dmF +qOc +kgh +qOc +dmF +cXI +tnw +pQv +nGw +nGw +nGw +iyx +bfE +fJH +fJH +lpH +fJH +nFl +mBp +gMs +wBd +gMs +gMs +dZq +amO +tdG +ikq +tZO +uod +uod +uod +uod +uod +uod +uod +uod +uod +fSj +fmN +wYY +trj +aUx +hBy +aIO drp drp drp @@ -72463,8 +75763,6 @@ drp drp drp drp -"} -(141,1,1) = {" drp drp drp @@ -72503,6 +75801,10 @@ drp drp drp drp +"} +(153,1,1) = {" +drp +drp drp drp drp @@ -72540,109 +75842,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -icn -qNy -fTW -mmO -smb -nrR -ick -pOl -hAh -vSl -fCT -xhi -kSi -okO -ndu -sRb -mrF -uJY -xCB -hts -nAX -cGN -uQs -cTz -fgE -ovK -uQs -sVp -maw -imE -rsQ -cxG -ibL -fsy -iHV -eoI -iHq -jGz -kqW -jGz -nlF -tCh -lIe -mPp -mPp -xHL -fSI -xwG -vVh -obB -rbA -pQv -wYY -ssO -hhz -wpN -mKS -mvd -icn -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -72699,6 +75898,69 @@ drp drp drp drp +aek +fyD +wLO +cZt +tuS +tuS +oiO +tdc +wLO +oZE +fxq +ycc +wBi +uWI +xBO +die +gDB +wBi +nSQ +dmF +dmF +lLR +nET +dKO +hJb +pQv +tnw +pQv +nGw +nGw +nGw +nGw +oSt +nGw +nGw +lGF +nGw +xwo +eoI +eoI +eoI +eoI +eoI +eoI +dgs +mPp +mPp +pQv +pQv +pQv +pQv +pQv +pQv +pQv +pQv +pQv +pQv +hpK +hjA +hjw +trj +aUx +hBy drp drp drp @@ -72720,8 +75982,6 @@ drp drp drp drp -"} -(142,1,1) = {" drp drp drp @@ -72797,110 +76057,9 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -icn -sQH -hDa -xVG -kwS -nlw -deU -jMJ -nlw -wYj -nuV -xhi -rfu -eGe -ubj -sbQ -eWG -oZp -oZp -oZp -oZp -oZp -oZp -fgE -idV -nKi -uQs -icP -qvE -qbF -nUR -dji -eoI -viS -iHV -eoI -vOv -euO -nhS -wJT -jvx -aTI -pxq -nYo -nYo -giK -sTz -ndZ -jNs -cSp -atq -pQv -eVJ -iVC -wYY -hpK -nRL -mvd -icn -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp +"} +(154,1,1) = {" drp drp drp @@ -72977,8 +76136,6 @@ drp drp drp drp -"} -(143,1,1) = {" drp drp drp @@ -72998,6 +76155,69 @@ drp drp drp drp +aek +fyD +wLO +ehh +tuS +kzF +dbi +bxp +xWT +izJ +hPU +fQx +wBi +kpG +qEw +gRN +ujB +wBi +npk +tRo +eax +rpY +nET +qGT +kop +pQv +tnw +pQv +nGw +nGw +nGw +nGw +oSt +nGw +nGw +nGw +nGw +iyv +ksS +dwp +ikd +ybo +uDi +sUe +pxq +nYo +nYo +rxk +tYt +xzn +kCK +pJY +pQv +wYY +pvR +drl +pQv +hpK +sEf +dCq +trj +aUx +hBy drp drp drp @@ -73054,109 +76274,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -aek -aUx -mjO -snG -iai -deU -deU -deU -deU -wZI -kji -shl -mtS -xhi -csr -gqc -vAz -sRb -bhD -ern -ibM -fYJ -scI -cfY -oZp -jcC -lBh -gEA -pwr -kYJ -trJ -epv -bvf -pGx -eoI -kkE -iHV -eoI -iFL -tCh -tCh -tCh -tCh -tCh -ogg -mPp -pOj -xHL -xHL -xHL -xHL -xHL -gbS -pQv -pQv -pQv -pQv -hpK -lMJ -cog -cxm -aUx -hBy -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -73198,6 +76315,8 @@ drp drp drp drp +"} +(155,1,1) = {" drp drp drp @@ -73234,8 +76353,6 @@ drp drp drp drp -"} -(144,1,1) = {" drp drp drp @@ -73294,6 +76411,73 @@ drp drp drp drp +aIO +aek +fyD +wLO +eoz +gUJ +hrA +oyG +wyd +wLO +iuh +ukF +dzR +bHV +ycq +tPb +gkl +ybr +rxP +niT +dmF +dmF +ubJ +kgh +kgh +gaq +pQv +tnw +pQv +nGw +nGw +nGw +nGw +cvp +eav +nGw +nGw +nGw +kgs +ksS +jSP +hIk +kKE +irg +ksS +yjR +mPp +pOj +qPv +qgs +qDQ +onY +bUu +pQv +wYY +ssO +hhz +lwE +wpN +rFX +wSE +trj +aUx +hBy +aIO +drp +drp drp drp drp @@ -73311,109 +76495,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -icn -pJt -dmn -jbO -sjW -wDT -vxs -vji -nSR -sZn -fjb -xhi -itt -gqc -sRb -eNW -gqc -oZp -cPM -wVM -oaJ -eaE -oZp -fgE -dCv -fgE -uQs -ptb -gUG -wYK -fZj -dpD -eoI -lch -iHV -xfO -eoI -hGa -qZk -kSk -qrs -kZF -pxq -nYo -nYo -iwf -skA -fwE -dby -uFd -pQv -wYY -pvR -drl -pQv -hpK -nRL -trj -icn -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -73492,7 +76573,27 @@ drp drp drp "} -(145,1,1) = {" +(156,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -73568,109 +76669,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX aek -aUx -icn -qNy -mfI -lAG -eeT -xgR -sQQ -tNC -iuj -bOX -xhi -xhi -xhi -aZl -pEK -xhi -bZP -oZp -apQ -qfe -hXl -liG -oZp -fSz -dCv -fgE -uQs -qvs -odB -tiJ -cxG -dxw -eoI -uGu -ngn -anU -fGy -kvL -mrc -xnl -uEk -chS -ogg +bWG +wLO +fbW +tuS +lcT +oWN +wLS +bpg +sue +bbB +mdA +fyv +oYR +hPH +joR +jze +fyv +wHu +aot +dmF +vGe +dmF +dmF +byf +pQv +tnw +pQv +nGw +nGw +qeG +hxb +veR +nGw +nGw +nGw +nGw +lhw +ksS +kTH +hIk +tik +xAU +dTu +scE +rGa mPp -jFX -boz -kDN -djQ -uoy -eQh -kvz -wYY -ssO -hhz -lwE -wpN -mKS -trj -icn -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +geP +gpN +cgg +onY +nxM +pQv +hDn +iVC +wYY +pQv +hpK +iny +yaE +trj +aUx +hBy +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -73749,7 +76830,27 @@ drp drp drp "} -(146,1,1) = {" +(157,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -73825,109 +76926,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO aek -aUx -icn -sQH -hDa -xVG -dRc -nlw -deU -vzr -sfi -kCC -gpT -bHq -iOU -oDA -caD -crp -lKC -oZp -nsw -qfe -hAT -mYR -oZp -fgE -xRq -bOM -uQs -tfv -cMn -xsj -hzV -dVU -eoI -vBi -fsy -iHV -eoI -ptV -mkI -cdk -eVC -acn -scE -rGa -jFX -dhb -iyd -acM -awG -hiR +fyD +wLO +ffw +tuS +xjT +eiS +xbt +wLO +pya +fxq +dzP +wBi +wBi +fla +gGp +wBi +wBi +pGp +xjx +wBW +dmF +nhO +crr +noy pQv -hDn -iVC -wYY +ssc +igj +oKG +byc +vez +lWr +jsJ +xSj +nGw +jPo +vzl +mLU +rKD +rKD +mZl +rKD +rKD +rKD +smX +mPp +mPp +uRY +uRY +uRY +mUs +uRY pQv -hpK +pQv +pQv +pQv +pQv +fUt nRL +kwB trj -icn aUx hBy -aIO -baX -baX -baX -baX -baX -baX -baX -aaK -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -74006,7 +77087,7 @@ drp drp drp "} -(147,1,1) = {" +(158,1,1) = {" drp drp drp @@ -74082,112 +77163,90 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aIO aek -aUx -mjO -snG -mmm -deU -deU -deU -csT -pBU -wYj -nlw -xhi -utr -mny -spV -oQf -oQf -lKC -oZp -xSb -jGf -pTe -cVO -oZp -uQs -fVT -uQs -uQs -lPZ -eYk -nSc -nnB -pLS -eoI -eoI -eoI -meI -eoI -dKn -dKn -dKn -dKn -dKn -lww -mPp -jFX -boz -boz -boz -boz -boz +fyD +wLO +foi +tuS +tuS +eiS +xbF +wLO +vwM +lxE +ycc +bhC +ygO +ogN +taE +azv +iiT +tcJ +bxD +dmF +qwX +dbh +rHt pQv pQv +tnw pQv pQv pQv -hpK -lMJ -cog -cxm +pQv +aNs +jVJ +qmK +qmK +qmK +qmK +rKD +rKD +lMr +vcw +dQJ +vuI +rKD +btN +hYq +jkz +uRY +bGX +qSB +oTN +jGe +uPC +xHB +pQv +dav +pQv +pQv +eHg +trj +trj aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -drp -drp -drp +aIO drp drp drp @@ -74262,8 +77321,6 @@ drp drp drp drp -"} -(148,1,1) = {" drp drp drp @@ -74286,6 +77343,8 @@ drp drp drp drp +"} +(159,1,1) = {" drp drp drp @@ -74339,109 +77398,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -icn -pJt -mai -jyF -sjW -wDT -vxs -kfG -cTx -kSZ -fdm -wMT -mlI -cnv -oxV -xaa -jqC -oZp -hDk -eaE -goB -mbk -mbk -jQw -rOK -pQv -nGw -hid -nGw -nGw -fEq -hOz -nGw -nGw -nGw -bfn -eoI -dti -pJl -wFd -tzi -acn -ogg -mPp -jFX -dhb -hdA -xiI -dDP -fvF -pQv -wYY -pvR -drl -pQv -hpK -nRL -mvd -icn -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -74484,6 +77440,69 @@ drp drp drp drp +aek +fyD +wLO +fFJ +gWQ +lDA +pJh +xfp +wLO +gSc +xup +mDr +fZc +krY +qVr +pgc +krY +sLC +iTX +lGS +dmF +qwX +qwX +dsz +pQv +ads +qRg +wYY +wYY +aiA +wYY +pQv +gEV +dGd +tPs +wME +rmO +aQf +kCb +sIF +ctX +eLK +pad +gtx +jnv +sAV +tqO +cJi +fXX +efF +enb +kFK +jxN +fhS +bpP +hVc +uUw +ngu +mXr +qOx +trj +aUx +hBy drp drp drp @@ -74519,8 +77538,6 @@ drp drp drp drp -"} -(149,1,1) = {" drp drp drp @@ -74583,6 +77600,8 @@ drp drp drp drp +"} +(160,1,1) = {" drp drp drp @@ -74596,109 +77615,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -aek -aUx -icn -qNy -lAG -lAG -xFe -xgR -ddc -iuj -qAS -bvK -xhi -uQy -ahn -qVm -wRZ -lXw -iha -oZp -tdM -eaE -twc -lar -eaE -pQv -tnw -pQv -tht -nGw -nGw -nGw -qKH -nGw -nGw -nGw -nGw -bfn -fGy -kvL -otm -ufY -uEk -dKn -oTO -mPp -jFX -sZk -kDN -pne -dXZ -eQh -kvz -wYY -ssO -hhz -lwE -wpN -mKS -mvd -icn -aUx -hBy -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -74776,13 +77692,74 @@ drp drp drp drp -"} -(150,1,1) = {" drp drp drp drp drp +aek +aUx +uhH +uhH +uhH +uhH +qgZ +uhH +uhH +cbk +xMr +xLR +bhC +iAJ +xbe +jjR +dmF +dmF +rnA +dmF +dmF +dmF +nhO +crr +pQv +qaJ +mLX +xYH +vva +poW +uSK +wOU +tax +uHt +sNB +uHt +uHt +rKD +vDE +gYN +ijD +rEe +oKL +rKD +gnz +mzf +ogg +uRY +ntr +opS +gec +szl +uhP +wLx +pQv +skl +cas +ozT +vNp +hpK +mvd +aUx +hBy drp drp drp @@ -74853,109 +77830,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -aaK -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -icn -sQH -azr -xVG -kwS -nlw -deU -rgT -eSD -vXJ -wBi -wBi -mVF -xCs -wBi -wBi -cap -oZp -oZp -oOO -oZp -oZp -oZp -pQv -tnw -pQv -tht -nGw -nGw -agH -qfk -nGw -nGw -nGw -nGw -bfn -eoI -otm -tLz -mKm -iko -uOv -uIO -xDq -xDq -mLD -uTl -gBF -hvJ -dXZ -pQv -hDn -iVC -wYY -pQv -hpK -nRL -mvd -icn -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -74983,6 +77857,11 @@ drp drp drp drp +"} +(161,1,1) = {" +drp +drp +drp drp drp drp @@ -75033,8 +77912,6 @@ drp drp drp drp -"} -(151,1,1) = {" drp drp drp @@ -75076,6 +77953,71 @@ drp drp drp drp +aIO +aek +fyD +uhH +fGx +uhH +nmn +qnt +xkm +uhH +bmX +xBi +iuh +wqe +hbl +ejW +toc +dmF +dmF +rnA +dmF +dmF +qwX +ijH +gTa +pQv +xyK +wle +gNm +mlb +aiA +nrL +pQv +mpq +joU +uHt +joU +joU +qaI +qaI +nvE +pLV +nem +qaI +qaI +pyV +ieX +fkk +uRY +sSm +oST +xwD +mWr +luo +nfv +pQv +gYE +cas +cas +vNp +hpK +mvd +aUx +hBy +aIO drp drp drp @@ -75110,109 +78052,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -wLO -wLO -wLO -wLO -wLO -wLO -wLO -deU -rXt -deU -wBi -omQ -leq -rft -gXW -wBi -bhh -fLs -wOb -dmF -eFQ -dCx -byf -pQv -tnw -pQv -uID -nGw -nGw -nGw -mnK -nGw -nGw -nGw -nGw -bfn -eoI -eoI -eoI -eoI -eoI -eoI -ogg -mPp -mPp -pQv -pQv -pQv -pQv -pQv -pQv -pQv -pQv -pQv -pQv -vXd -nRL -trj -trj -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -75275,6 +78114,13 @@ drp drp drp drp +"} +(162,1,1) = {" +drp +drp +drp +drp +drp drp drp drp @@ -75290,8 +78136,6 @@ drp drp drp drp -"} -(152,1,1) = {" drp drp drp @@ -75367,109 +78211,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO aek -aUx -wLO -bBq -wqA -jYY -nUe -ria -wLO -jVg -xQB -pcq -tTo -hSh -pum -ejd -bnE -wBi -weK -lGS -dmF -qOc -kgh -qOc -dmF -cXI -tnw -pQv -nGw -nGw -nGw -iyx -bfE -fJH -fJH -lpH -fJH -nFl -mBp -gMs -wBd -gMs -gMs -dZq -amO -tdG -ikq -tZO -uod -uod -uod -uod -uod -uod -uod -uod -uod -fSj -fmN -wYY +fyD +uhH +fGx +uhH +gTd +kgp +xBS +uhH +taT +vIs +tqn +eFM +nSb +nSb +tto +jxY +nSb +dyY +kxw +qIR +bYE +uPZ +gFt +jQR +ykj +trj trj +pQv +pQv +pQv +xKx +elb +jpd +uHt +uHt +uHt +aOI +hyv +rQQ +hyv +oHA +oHA +get +wLK +uLO +oJc +uRY +uRY +sOv +imh +uHC +dPE +uRY +pQv +jPX +cas +liE +vNp +hpK +mvd aUx hBy -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -75548,7 +78372,27 @@ drp drp drp "} -(153,1,1) = {" +(163,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -75624,109 +78468,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX aek fyD -wLO -cZt -tuS -tuS -oiO -tdc -wLO -oZE -fxq -ycc -wBi -uWI -xBO -die -gDB -wBi -nSQ -dmF +uhH +fGx +uhH +lHO +qwe +yck +afP +afP +nHC +afP +gSC +xaq +awb dmF -lLR -nET -dKO -hJb -pQv -tnw -pQv -nGw -nGw -nGw -nGw -oSt -nGw -nGw -lGF -nGw -xwo -eoI -eoI -eoI -eoI -eoI -eoI -dgs -mPp -mPp -pQv -pQv -pQv -pQv -pQv -pQv -pQv -pQv +eeK +tym +kGu +nab +tZw +xDV +imL +pYR pQv +gPL +trj +ssL +nFJ +hyE +lBt +ooo +mpq +joU +lAz +nDg +dnU +jVx +nTq +ihe +oOB +elD +dVL +get +wLK +wLK +rpp +dCQ +pTs +cqE +vGp +vGp +vGp +vGp pQv -hpK -hjA -hjw +efA +uUw +nCf +kMH +lDR trj aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -75805,7 +78629,7 @@ drp drp drp "} -(154,1,1) = {" +(164,1,1) = {" drp drp drp @@ -75881,109 +78705,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +aIO aek -fyD -wLO -ehh -tuS -kzF -dbi -bxp -xWT -izJ -hPU -fQx -wBi -kpG -qEw -gRN -ujB -wBi -npk -tRo -eax -rpY -nET -qGT -kop +aUx +afP +afP +afP +dwe +afP +afP +afP +lBq +jce +slU +abs +abs +abs +abs +trj pQv -tnw pQv -nGw -nGw -nGw -nGw -oSt -nGw -nGw -nGw -nGw -iyv -ksS -dwp -ikd -ybo -uDi -sUe -pxq -nYo -nYo -rxk -tYt -xzn -kCK -pJY pQv -wYY -pvR -drl pQv -hpK -sEf -dCq +pQv +pQv +pQv +pQv +gPL +trj +pMp +iVI +lVO +rIp +aXl +iaz +ajN +wIk +eyf +tgQ +fvs +xSX +dVL +xmb +qPW +jSp +gAd +wLK +wLK +oJc +wLK +hmZ +wLK +wLK +eqR +wLK +wLK +pQv +pQv +pQv +pQv +oTo +pQv trj aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +aIO +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -76062,7 +78886,27 @@ drp drp drp "} -(155,1,1) = {" +(165,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -76138,109 +78982,69 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO aek fyD -wLO -eoz -gUJ -hrA -oyG -wyd -wLO -iuh -ukF -dzR -bHV -ycq -tPb -gkl -ybr -rxP -niT -dmF -dmF -ubJ -kgh -kgh -gaq -pQv -tnw -pQv -nGw -nGw -nGw -nGw -cvp -eav -nGw -nGw -nGw -kgs -ksS -jSP -hIk -kKE -irg -ksS -yjR -mPp -pOj -qPv -qgs -qDQ -onY -bUu +xXO +bgz +hHd +yjC +uwN +pjK +pFp +sUV +jgK +xrv +abs +nBP +kjT +oAG +trj +wYY +wYY +wYY +wYY +hRr +wTW +iNe +iTb +oYL +trj +tia +bOh +lJU +nMX +hLS +inD +svO +mpb +jDn +fZN +hbv +aqr +aqr +qjc +dZB +miK +gCz +mYQ +sVq +kKK +htO +uqr +uqr +rQq +wLK +wLK +upa pQv wYY -ssO -hhz -lwE -wpN -rFX -wSE +wYY +saG +yhM +wYY trj aUx hBy -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -76318,8 +79122,6 @@ drp drp drp drp -"} -(156,1,1) = {" drp drp drp @@ -76340,6 +79142,8 @@ drp drp drp drp +"} +(166,1,1) = {" drp drp drp @@ -76395,109 +79199,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -bWG -wLO -fbW -tuS -lcT -oWN -wLS -bpg -sue -bbB -mdA -fyv -oYR -hPH -joR -jze -fyv -wHu -aot -dmF -vGe -dmF -dmF -byf -pQv -tnw -pQv -nGw -nGw -qeG -hxb -veR -nGw -nGw -nGw -nGw -lhw -ksS -kTH -hIk -tik -xAU -dTu -scE -rGa -mPp -geP -gpN -cgg -onY -nxM -pQv -hDn -iVC -wYY -pQv -hpK -iny -yaE -trj -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -76538,6 +79239,71 @@ drp drp drp drp +aek +fyD +xXO +wSy +sVP +rMK +rMK +vuF +vuF +rMK +pVE +rMK +ugA +dDn +npd +npd +trj +wYY +wYY +wYY +dEa +oqm +wYY +gPL +trj +trj +trj +sRf +dXd +trs +gIR +sRf +vqD +joU +yhu +joU +joU +fvs +hxC +dVL +jgs +jfM +ofu +dVZ +twI +iep +ltM +rPO +mZG +xpp +nIV +wLK +wLK +pmQ +pQv +mtg +vbW +vfr +lYm +fmW +trj +aUx +hBy +drp +drp drp drp drp @@ -76575,8 +79341,6 @@ drp drp drp drp -"} -(157,1,1) = {" drp drp drp @@ -76635,6 +79399,8 @@ drp drp drp drp +"} +(167,1,1) = {" drp drp drp @@ -76652,109 +79418,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -fyD -wLO -ffw -tuS -xjT -eiS -xbt -wLO -pya -fxq -dzP -wBi -wBi -fla -gGp -wBi -wBi -pGp -xjx -wBW -dmF -nhO -crr -noy -pQv -ssc -igj -oKG -byc -vez -lWr -jsJ -xSj -nGw -jPo -vzl -mLU -rKD -rKD -mZl -rKD -rKD -rKD -smX -mPp -mPp -uRY -uRY -uRY -mUs -uRY -pQv -pQv -pQv -pQv -pQv -fUt -nRL -kwB -trj -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -76832,8 +79495,71 @@ drp drp drp drp -"} -(158,1,1) = {" +aIO +aek +fyD +xXO +rMK +bcT +vte +vte +etF +dRo +cFr +ifC +sCS +fiU +ouK +npd +wxA +trj +wYY +wYY +wYY +wYY +pQv +wYY +gPL +trj +xxR +ahJ +qzM +eJP +mvM +gkm +sjQ +gkw +uHt +mYX +uHt +uHt +aOI +rlZ +gpD +pEZ +lng +ofu +iWs +wLK +iep +reO +wLK +wLK +wLK +wLK +wLK +wLK +pnm +pQv +ada +jLm +nMK +cch +wYY +trj +aUx +hBy +aIO drp drp drp @@ -76909,109 +79635,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -aek -fyD -wLO -foi -tuS -tuS -eiS -xbF -wLO -vwM -lxE -ycc -bhC -ygO -ogN -taE -azv -iiT -tcJ -bxD -dmF -qwX -dbh -rHt -pQv -pQv -tnw -pQv -pQv -pQv -pQv -aNs -jVJ -qmK -qmK -qmK -qmK -rKD -rKD -lMr -vcw -dQJ -vuI -rKD -btN -hYq -jkz -uRY -bGX -qSB -oTN -jGe -uPC -xHB -pQv -dav -pQv -pQv -eHg -trj -trj -aUx -hBy -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -77033,6 +79656,8 @@ drp drp drp drp +"} +(168,1,1) = {" drp drp drp @@ -77089,8 +79714,6 @@ drp drp drp drp -"} -(159,1,1) = {" drp drp drp @@ -77130,6 +79753,69 @@ drp drp drp drp +aek +aXe +afP +ahF +rrO +epp +pvX +hxc +sQX +fcH +vsq +meB +grf +uaO +xpG +fKE +trj +trj +pQv +pQv +pQv +pQv +wYY +gPL +trj +aqq +ijr +uaF +uaF +jSY +cle +sRf +sEN +gJg +kfT +jGN +joU +aOI +lOU +upT +xdv +upq +hGG +get +qdI +iep +ltM +wLK +wLK +wLK +wLK +wLK +wLK +wLK +pQv +pQv +pQv +pQv +dqK +pQv +trj +aXe +hBy drp drp drp @@ -77166,109 +79852,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -fyD -wLO -fFJ -gWQ -lDA -pJh -xfp -wLO -gSc -xup -mDr -fZc -krY -qVr -pgc -krY -sLC -iTX -lGS -dmF -qwX -qwX -dsz -pQv -ads -qRg -wYY -wYY -aiA -wYY -pQv -gEV -dGd -tPs -wME -rmO -aQf -kCb -sIF -ctX -eLK -pad -gtx -jnv -sAV -tqO -cJi -fXX -efF -enb -kFK -jxN -fhS -bpP -hVc -uUw -ngu -mXr -qOx -trj -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -77330,6 +79913,12 @@ drp drp drp drp +"} +(169,1,1) = {" +drp +drp +drp +drp drp drp drp @@ -77346,8 +79935,6 @@ drp drp drp drp -"} -(160,1,1) = {" drp drp drp @@ -77423,109 +80010,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX aek -aUx -uhH -uhH -uhH -uhH -qgZ -uhH -uhH -cbk -xMr -xLR -bhC -iAJ -xbe -jjR -dmF -dmF -rnA -dmF -dmF -dmF -nhO -crr +fyD +xXO +eAc +rrO +fhR +cla +pRp +sAE +aPA +gyD +jde +abs +dNA +qnx +hzF +uZq +trj +wYY +dPi +wYY +wYY +wYY +ukC +trj +jkX +nTH +etK +pEk +ler +tnp +lSp +vZt pQv -qaJ -mLX -xYH -vva -poW -uSK -wOU -tax -uHt -sNB -uHt -uHt -rKD -vDE -gYN -ijD -rEe -oKL -rKD -gnz -mzf -ogg -uRY -ntr -opS -gec -szl -uhP -wLx +tzl pQv -skl -cas -ozT -vNp -hpK -mvd +pQv +trj +fOf +dVL +gNM +htK +iwq +oaf +jWu +iep +ltM +mbq +nfV +nEC +orZ +oRJ +fKT +vGp +pQv +wYY +qED +wYY +heC +wYY +trj aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -77604,7 +80171,26 @@ drp drp drp "} -(161,1,1) = {" +(170,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -77680,109 +80266,90 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX aIO aek fyD -uhH -fGx -uhH -nmn -qnt -xkm -uhH -bmX -xBi -iuh -wqe -hbl -ejW -toc -dmF -dmF -rnA -dmF -dmF -qwX -ijH -gTa +xXO +jPf +mLZ +abs +abs +abs +abs +bTA +jrr +vYd +abs +nYd +bMg +gZC +etQ +trj +iNN +kwv +dbG +sWw +sWw +tug +trj +nbl +awc +wVR +wIS +wVR +hel +trj +aVi +mTW +dTQ +vca +iUM pQv -xyK -wle -gNm -mlb -aiA -nrL +vDb +gxq +oeb +htL +iRo +gAd +kzO +iep +lOl pQv -mpq -joU -uHt -joU -joU -qaI -qaI -nvE -pLV -nem -qaI -qaI -pyV -ieX -fkk -uRY -sSm -oST -xwD -mWr -luo -nfv pQv -gYE -cas -cas -vNp -hpK -mvd +pQv +pQv +pQv +pQv +pQv +pQv +pQv +qED +rlh +aQM +soE +trj aUx hBy aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -77861,7 +80428,27 @@ drp drp drp "} -(162,1,1) = {" +(171,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -77937,109 +80524,89 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX aek fyD -uhH -fGx -uhH -gTd -kgp -xBS -uhH -taT -vIs -tqn -eFM -nSb -nSb -tto -jxY -nSb -dyY -kxw -qIR -bYE -uPZ -gFt -jQR -ykj +xXO +cCI +lcF +abs +rZb +cSM +abs +uQE +qlC +mqP +abs +xie +jTz +abs +trj +trj +wYY +wYY +wYY +wYY +wYY +lOE trj +gEx +sin +tvy +afB +rDB +afB trj +vLf +egF +nxN +fVK +bUP pQv +trj +trj +trj +trj +trj +trj pQv +iNr pQv -xKx -elb -jpd -uHt -uHt -uHt -aOI -hyv -rQQ -hyv -oHA -oHA -get -wLK -uLO -oJc -uRY -uRY -sOv -imh -uHC -dPE -uRY pQv -jPX -cas -liE -vNp -hpK -mvd +wYY +wYY +pQv +efA +nya +pFQ +oMJ +pQv +wYY +wYY +aQM +wYY +trj aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -78118,7 +80685,27 @@ drp drp drp "} -(163,1,1) = {" +(172,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -78194,109 +80781,69 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX aek -fyD -uhH -fGx -uhH -lHO -qwe -yck -afP -afP -nHC +aUx afP -gSC -xaq -awb -dmF -eeK -tym -kGu -nab -tZw -xDV -imL -pYR -pQv -gPL +rMK +lfF +oGp +saQ +tVd +gOt +npd +qlC +npd +qMb +rsl +gMR +xuT trj -ssL -nFJ -hyE -lBt -ooo -mpq -joU -lAz -nDg -dnU -jVx -nTq -ihe -oOB -elD -dVL -get -wLK -wLK -rpp -dCQ -pTs -cqE -vGp -vGp -vGp -vGp +wYY +wYY +wYY +wYY +wYY +amB +lOE +trj +trj +oEQ +trj +trj +trj +trj +trj +vZt pQv -efA -uUw -nCf -kMH -lDR +dWH +pQv +pQv +pQv +wmR +peR +qOj +peR +mzd +bLR +mzd +pzp +mzd +mIB +pjF +pjF +oRD +gTp +gTp +gTp +gTp +oRD +pjF +rwI +ePR +wYY trj aUx hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -78374,8 +80921,6 @@ drp drp drp drp -"} -(164,1,1) = {" drp drp drp @@ -78396,6 +80941,8 @@ drp drp drp drp +"} +(173,1,1) = {" drp drp drp @@ -78451,109 +80998,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -aek -aUx -afP -afP -afP -dwe -afP -afP -afP -lBq -jce -slU -abs -abs -abs -abs -trj -pQv -pQv -pQv -pQv -pQv -pQv -pQv -pQv -gPL -trj -pMp -iVI -lVO -rIp -aXl -iaz -ajN -wIk -eyf -tgQ -fvs -xSX -dVL -xmb -qPW -jSp -gAd -wLK -wLK -oJc -wLK -hmZ -wLK -wLK -eqR -wLK -wLK -pQv -pQv -pQv -pQv -oTo -pQv -trj -aUx -hBy -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -78591,8 +81035,72 @@ drp drp drp drp +eLi drp drp +afP +afP +afP +iEU +rrO +abs +abs +abs +abs +ybm +qlC +npd +npd +npd +gMR +omY +trj +pQv +pQv +glz +pQv +pQv +pQv +fsE +oDf +ezU +bbz +ezU +ezU +ezU +ezU +ezU +fod +ezU +jDK +mzd +peR +mzd +ePR +wYY +trj +pQv +pQv +pQv +pQv +pQv +pQv +pQv +tie +pQv +pQv +paJ +tYw +pGo +pOq +pQv +wYY +bKu +kvS +trj +trj +trj +trj drp drp drp @@ -78631,8 +81139,6 @@ drp drp drp drp -"} -(165,1,1) = {" drp drp drp @@ -78692,6 +81198,8 @@ drp drp drp drp +"} +(174,1,1) = {" drp drp drp @@ -78708,109 +81216,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -fyD -xXO -bgz -hHd -yjC -uwN -pjK -pFp -sUV -jgK -xrv -abs -nBP -kjT -oAG -trj -wYY -wYY -wYY -wYY -hRr -wTW -iNe -iTb -oYL -trj -tia -bOh -lJU -nMX -hLS -inD -svO -mpb -jDn -fZN -hbv -aqr -aqr -qjc -dZB -miK -gCz -mYQ -sVq -kKK -htO -uqr -uqr -rQq -wLK -wLK -upa -pQv -wYY -wYY -saG -yhM -wYY -trj -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -78888,8 +81293,83 @@ drp drp drp drp -"} -(166,1,1) = {" +drp +drp +bfr +cZI +gnC +iNo +mgd +oKs +sca +ydc +wlM +npd +qlC +sab +jgw +npd +gMR +jXi +trj +qjY +wSE +wYY +hjw +dCq +trj +trj +trj +mvd +lvx +mvd +trj +trj +mvd +mvd +ndY +trj +trj +mvd +mvd +bZK +trj +trj +trj +con +esI +eYL +fqZ +gwP +iIR +jnr +iOO +mnu +pQv +pQv +pQv +dpk +pQv +pQv +pQv +rGS +pQv +pQv +eTZ +ovd +trj +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -78965,109 +81445,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -fyD -xXO -wSy -sVP -rMK -rMK -vuF -vuF -rMK -pVE -rMK -ugA -dDn -npd -npd -trj -wYY -wYY -wYY -dEa -oqm -wYY -gPL -trj -trj -trj -sRf -dXd -trs -gIR -sRf -vqD -joU -yhu -joU -joU -fvs -hxC -dVL -jgs -jfM -ofu -dVZ -twI -iep -ltM -rPO -mZG -xpp -nIV -wLK -wLK -pmQ -pQv -mtg -vbW -vfr -lYm -fmW -trj -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -79078,6 +81455,8 @@ drp drp drp drp +"} +(175,1,1) = {" drp drp drp @@ -79145,8 +81524,6 @@ drp drp drp drp -"} -(167,1,1) = {" drp drp drp @@ -79174,6 +81551,71 @@ drp drp drp drp +bcj +bzI +dMA +hSc +iVV +mJr +abs +sTO +dFz +abs +byQ +okE +dFz +nKC +npd +npu +qXb +trj +wYY +wYY +wyw +wYY +wYY +trj +aIO +bTz +oJf +cxW +icn +opC +aIO +icn +icn +nif +noN +aIO +icn +icn +icn +aIO +aIO +bKK +gDC +gDC +fiI +azx +gwP +azx +glV +gDC +gDC +pQv +wYY +wYY +wYY +xWz +pQv +wYY +ttV +hhz +eXW +vpt +hKX +vaG +nCX drp drp drp @@ -79222,109 +81664,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -aek -fyD -xXO -rMK -bcT -vte -vte -etF -dRo -cFr -ifC -sCS -fiU -ouK -npd -wxA -trj -wYY -wYY -wYY -wYY -pQv -wYY -gPL -trj -xxR -ahJ -qzM -eJP -mvM -gkm -sjQ -gkw -uHt -mYX -uHt -uHt -aOI -rlZ -gpD -pEZ -lng -ofu -iWs -wLK -iep -reO -wLK -wLK -wLK -wLK -wLK -wLK -pnm -pQv -ada -jLm -nMK -cch -wYY -trj -aUx -hBy -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -79373,6 +81712,8 @@ drp drp drp drp +"} +(176,1,1) = {" drp drp drp @@ -79402,8 +81743,6 @@ drp drp drp drp -"} -(168,1,1) = {" drp drp drp @@ -79470,118 +81809,89 @@ drp drp drp drp +afP +eEn +afP +afP +mWX +abs +abs +abs +abs +erG +pHg +npd +mIC +npd +nUx +abs +trj +trj +sZs +wYY +wYY +qom +mvd +icn +drp +drp +usX +drp drp drp drp +usX drp drp drp drp +usX drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aXe -afP -ahF -rrO -epp -pvX -hxc -sQX -fcH -vsq -meB -grf -uaO -xpG -fKE -trj -trj -pQv -pQv -pQv +icn +cey +ohq +eKh +egH +azx +azx +azx +jDi +gDC +gDC pQv wYY -gPL -trj -aqq -ijr -uaF -uaF -jSY -cle -sRf -sEN -gJg -kfT -jGN -joU -aOI -lOU -upT -xdv -upq -hGG -get -qdI -iep -ltM -wLK -wLK -wLK -wLK -wLK -wLK -wLK -pQv -pQv -pQv -pQv -dqK +wYY +wYY +wYY pQv +qog +lfe +wYY +jSD +amB +wQb trj -aXe -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -79660,7 +81970,7 @@ drp drp drp "} -(169,1,1) = {" +(177,1,1) = {" drp drp drp @@ -79736,109 +82046,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -fyD -xXO -eAc -rrO -fhR -cla -pRp -sAE -aPA -gyD -jde +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +afP +afP +afP +jnG +nBw +oSx +tkg +oLb +jMs +bhc +unB +xvt +xvt +duc +aCm abs -dNA -qnx -hzF -uZq +mQs trj +jkv +dGm +wYY +nXR +mvd +icn +drp +drp +usX +azV +qZV +qZV +qZV +fCr +qZV +qZV +qZV +azV +usX +drp +drp +icn +cey +auP +jxs +jxs +gcv +kds +iTR +gcv +gcv +gcv +pQv wYY -dPi wYY wYY wYY -ukC -trj -jkX -nTH -etK -pEk -ler -tnp -lSp -vZt -pQv -tzl pQv +qvL +rBY +wYY pQv trj -fOf -dVL -gNM -htK -iwq -oaf -jWu -iep -ltM -mbq -nfV -nEC -orZ -oRJ -fKT -vGp -pQv -wYY -qED -wYY -heC -wYY trj -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +trj +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -79917,7 +82227,7 @@ drp drp drp "} -(170,1,1) = {" +(178,1,1) = {" drp drp drp @@ -79993,109 +82303,109 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -aek -fyD -xXO -jPf -mLZ -abs -abs +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +bFt +drp +afP +jwx +ofM abs +tHQ +qCZ +pmR +usA +aZm +tnA +tnA +wxA abs -bTA -jrr -vYd abs -nYd -bMg -gZC -etQ -trj -iNN -kwv -dbG -sWw -sWw -tug +dJv trj -nbl -awc -wVR -wIS -wVR -hel +gZT +wYY +wYY +qom trj -aVi -mTW -dTQ -vca -iUM -pQv -vDb -gxq -oeb -htL -iRo -gAd -kzO -iep -lOl -pQv -pQv -pQv -pQv -pQv -pQv -pQv +aIO +drp +emc +qZV +fCr +baX +drp +drp +drp +drp +drp +drp +fCr +qZV +fCr +drp +aIO +bKK +cLG +azx +aiE +azx +cLG +jfB +jDR +azx +azx pQv +wYY +wYY +wYY +wYY pQv -qED -rlh -aQM -soE +sHH +lfe +wYY +wYY trj -aUx -hBy -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -80174,7 +82484,7 @@ drp drp drp "} -(171,1,1) = {" +(179,1,1) = {" drp drp drp @@ -80250,109 +82560,87 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -fyD -xXO -cCI -lcF -abs -rZb -cSM +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +afP +alZ +afP abs -uQE -qlC -mqP abs -xie -jTz abs +eQW +cZY +cXV +hZf +wTj +cWa +nQT +abH +bzb trj -trj -wYY -wYY -wYY +hSn wYY wYY -lOE -trj -gEx -sin -tvy -afB -rDB -afB -trj -vLf -egF -nxN -fVK -bUP -pQv -trj -trj trj trj +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +bKK +bKK +cLG +dWT +azx +azx +azx +dWT +gwP +gwP +qPd +lqL +lqL +lqL +bwU +hUM +hUM +qqz +oLD +cog trj -trj -pQv -iNr -pQv -pQv -wYY -wYY -pQv -efA -nya -pFQ -oMJ -pQv -wYY -wYY -aQM -wYY -trj -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -80430,8 +82718,6 @@ drp drp drp drp -"} -(172,1,1) = {" drp drp drp @@ -80454,6 +82740,16 @@ drp drp drp drp +"} +(180,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -80507,109 +82803,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aek -aUx -afP -rMK -lfF -oGp -saQ -tVd -gOt -npd -qlC -npd -qMb -rsl -gMR -xuT -trj -wYY -wYY -wYY -wYY -wYY -amB -lOE -trj -trj -oEQ -trj -trj -trj -trj -trj -vZt -pQv -dWH -pQv -pQv -pQv -wmR -peR -qOj -peR -mzd -bLR -mzd -pzp -mzd -mIB -pjF -pjF -oRD -gTp -gTp -gTp -gTp -oRD -pjF -rwI -ePR -wYY -trj -aUx -hBy -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -80646,6 +82839,28 @@ drp drp drp drp +baX +kQp +icn +icn +aIO +abs +kEI +gZS +eAY +pOp +sqE +aAF +abs +lRg +lbw +trj +rWc +wYY +wYY +mvd +icn +drp drp drp drp @@ -80662,6 +82877,27 @@ drp drp drp drp +icn +cey +azx +ikp +azx +azx +azx +azx +kxc +smF +slv +trj +mvd +bZK +eXp +trj +aIO +icn +icn +baX +kQp drp drp drp @@ -80687,8 +82923,6 @@ drp drp drp drp -"} -(173,1,1) = {" drp drp drp @@ -80763,110 +82997,9 @@ drp drp drp drp +"} +(181,1,1) = {" drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aaK -baX -baX -afP -afP -afP -iEU -rrO -abs -abs -abs -abs -ybm -qlC -npd -npd -npd -gMR -omY -trj -pQv -pQv -glz -pQv -pQv -pQv -fsE -oDf -ezU -bbz -ezU -ezU -ezU -ezU -ezU -fod -ezU -jDK -mzd -peR -mzd -ePR -wYY -trj -pQv -pQv -pQv -pQv -pQv -pQv -pQv -tie -pQv -pQv -paJ -tYw -pGo -pOq -pQv -wYY -bKu -kvS -trj -trj -trj -trj -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -80944,8 +83077,6 @@ drp drp drp drp -"} -(174,1,1) = {" drp drp drp @@ -80965,9 +83096,27 @@ drp drp drp drp +baX +baX drp drp drp +baX +kQp +icn +icn +icn +kEI +kEI +abs +abs +abs +trj +mex +tBA +wYY +mvd +icn drp drp drp @@ -80985,9 +83134,27 @@ drp drp drp drp +icn +cey +ehL +azx +fJK +bKK +bKK +cey +cey +mNa +eXp +aIO +icn +icn +baX +kQp drp drp drp +baX +baX drp drp drp @@ -81021,109 +83188,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -bfr -cZI -gnC -iNo -mgd -oKs -sca -ydc -wlM -npd -qlC -sab -jgw -npd -gMR -jXi -trj -qjY -wSE -wYY -hjw -dCq -trj -trj -trj -mvd -lvx -mvd -trj -trj -mvd -mvd -ndY -trj -trj -mvd -mvd -bZK -trj -trj -trj -con -esI -eYL -fqZ -gwP -iIR -jnr -iOO -mnu -pQv -pQv -pQv -dpk -pQv -pQv -pQv -rGS -pQv -pQv -eTZ -ovd -trj -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -81190,6 +83254,8 @@ drp drp drp drp +"} +(182,1,1) = {" drp drp drp @@ -81201,8 +83267,6 @@ drp drp drp drp -"} -(175,1,1) = {" drp drp drp @@ -81278,109 +83342,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -bcj -bzI -dMA -hSc -iVV -mJr -abs -sTO -dFz -abs -byQ -okE -dFz -nKC -npd -npu -qXb -trj -wYY -wYY -wyw -wYY -wYY -trj -aIO -bTz -oJf -cxW -icn -opC -aIO -icn -icn -nif -noN -aIO -icn -icn -icn -aIO -aIO -bKK -gDC -gDC -fiI -azx -gwP -azx -glV -gDC -gDC -pQv -wYY -wYY -wYY -xWz -pQv -wYY -ttV -hhz -eXW -vpt -hKX -vaG -nCX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -81397,11 +83358,22 @@ drp drp drp drp +baX +baX drp drp drp +rSD +rSD drp drp +aIO +trj +trj +mvd +mvd +trj +aIO drp drp drp @@ -81419,9 +83391,22 @@ drp drp drp drp +aIO +bKK +cey +cey +bKK +bKK +aIO +icn +icn +rSD +rSD drp drp drp +baX +baX drp drp drp @@ -81458,8 +83443,6 @@ drp drp drp drp -"} -(176,1,1) = {" drp drp drp @@ -81528,6 +83511,8 @@ drp drp drp drp +"} +(183,1,1) = {" drp drp drp @@ -81535,109 +83520,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -afP -eEn -afP -afP -mWX -abs -abs -abs -abs -erG -pHg -npd -mIC -npd -nUx -abs -trj -trj -sZs -wYY -wYY -qom -mvd -icn -baX -baX -usX -baX -baX -baX -baX -usX -baX -baX -baX -baX -usX -baX -baX -icn -cey -ohq -eKh -egH -azx -azx -azx -jDi -gDC -gDC -pQv -wYY -wYY -wYY -wYY -pQv -qog -lfe -wYY -jSD -amB -wQb -trj -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -81715,8 +83597,6 @@ drp drp drp drp -"} -(177,1,1) = {" drp drp drp @@ -81746,6 +83626,10 @@ drp drp drp drp +aIO +icn +icn +aIO drp drp drp @@ -81765,6 +83649,21 @@ drp drp drp drp +aIO +icn +icn +aIO +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -81792,109 +83691,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -afP -afP -afP -jnG -nBw -oSx -tkg -oLb -jMs -bhc -unB -xvt -xvt -duc -aCm -abs -mQs -trj -jkv -dGm -wYY -nXR -mvd -icn -baX -baX -usX -azV -qZV -qZV -qZV -fCr -qZV -qZV -qZV -azV -usX -baX -baX -icn -cey -auP -jxs -jxs -gcv -kds -iTR -gcv -gcv -gcv -pQv -wYY -wYY -wYY -wYY -pQv -qvL -rBY -wYY -pQv -trj -trj -trj -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -81973,7 +83769,7 @@ drp drp drp "} -(178,1,1) = {" +(184,1,1) = {" drp drp drp @@ -82049,109 +83845,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -bFt -baX -afP -jwx -ofM -abs -tHQ -qCZ -pmR -usA -aZm -tnA -tnA -wxA -abs -abs -dJv -trj -gZT -wYY -wYY -qom -trj -aIO -baX -emc -qZV -fCr -baX -baX -baX -baX -baX -baX -baX -fCr -qZV -fCr -baX -aIO -bKK -cLG -azx -aiE -azx -cLG -jfB -jDR -azx -azx -pQv -wYY -wYY -wYY -wYY -pQv -sHH -lfe -wYY -wYY -trj -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -82229,8 +83922,6 @@ drp drp drp drp -"} -(179,1,1) = {" drp drp drp @@ -82249,6 +83940,7 @@ drp drp drp drp +eLi drp drp drp @@ -82306,109 +83998,78 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -afP -alZ -afP -abs -abs -abs -eQW -cZY -cXV -hZf -wTj -cWa -nQT -abH -bzb -trj -hSn -wYY -wYY -trj -trj -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -bKK -bKK -cLG -dWT -azx -azx -azx -dWT -gwP -gwP -qPd -lqL -lqL -lqL -bwU -hUM -hUM -qqz -oLD -cog -trj -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(185,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -82486,8 +84147,6 @@ drp drp drp drp -"} -(180,1,1) = {" drp drp drp @@ -82563,109 +84222,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -kQp -icn -icn -aIO -abs -kEI -gZS -eAY -pOp -sqE -aAF -abs -lRg -lbw -trj -rWc -wYY -wYY -mvd -icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -icn -cey -azx -ikp -azx -azx -azx -azx -kxc -smF -slv -trj -mvd -bZK -eXp -trj -aIO -icn -icn -baX -kQp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -82726,6 +84282,8 @@ drp drp drp drp +"} +(186,1,1) = {" drp drp drp @@ -82743,8 +84301,6 @@ drp drp drp drp -"} -(181,1,1) = {" drp drp drp @@ -82820,109 +84376,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -kQp -icn -icn -icn -kEI -kEI -abs -abs -abs -trj -mex -tBA -wYY -mvd -icn -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -icn -cey -ehL -azx -fJK -bKK -bKK -cey -cey -mNa -eXp -aIO -icn -icn -baX -kQp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -83000,8 +84453,6 @@ drp drp drp drp -"} -(182,1,1) = {" drp drp drp @@ -83077,109 +84528,45 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -rSD -rSD -baX -baX -aIO -trj -trj -mvd -mvd -trj -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -bKK -cey -cey -bKK -bKK -aIO -icn -icn -rSD -rSD -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(187,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -83257,8 +84644,6 @@ drp drp drp drp -"} -(183,1,1) = {" drp drp drp @@ -83334,109 +84719,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -icn -icn -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aIO -icn -icn -aIO -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -83515,7 +84797,59 @@ drp drp drp "} -(184,1,1) = {" +(188,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -83591,109 +84925,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aaK -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -83771,8 +85002,6 @@ drp drp drp drp -"} -(185,1,1) = {" drp drp drp @@ -83824,6 +85053,10 @@ drp drp drp drp +"} +(189,1,1) = {" +drp +drp drp drp drp @@ -83848,109 +85081,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -84028,8 +85158,6 @@ drp drp drp drp -"} -(186,1,1) = {" drp drp drp @@ -84105,109 +85233,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -84286,7 +85311,7 @@ drp drp drp "} -(187,1,1) = {" +(190,1,1) = {" drp drp drp @@ -84362,109 +85387,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -84542,8 +85464,6 @@ drp drp drp drp -"} -(188,1,1) = {" drp drp drp @@ -84619,109 +85539,94 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(191,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -84799,8 +85704,6 @@ drp drp drp drp -"} -(189,1,1) = {" drp drp drp @@ -84876,109 +85779,79 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(192,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -85056,8 +85929,6 @@ drp drp drp drp -"} -(190,1,1) = {" drp drp drp @@ -85133,109 +86004,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -85314,7 +86082,26 @@ drp drp drp "} -(191,1,1) = {" +(193,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -85390,109 +86177,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -85570,8 +86254,6 @@ drp drp drp drp -"} -(192,1,1) = {" drp drp drp @@ -85647,109 +86329,43 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(194,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -85827,8 +86443,6 @@ drp drp drp drp -"} -(193,1,1) = {" drp drp drp @@ -85904,109 +86518,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -86085,7 +86596,7 @@ drp drp drp "} -(194,1,1) = {" +(195,1,1) = {" drp drp drp @@ -86161,109 +86672,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp @@ -86316,6 +86724,7 @@ drp drp drp drp +eLi drp drp drp @@ -86341,8 +86750,6 @@ drp drp drp drp -"} -(195,1,1) = {" drp drp drp @@ -86418,109 +86825,61 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -aaK -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +"} +(196,1,1) = {" +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp +drp drp drp drp @@ -86598,8 +86957,6 @@ drp drp drp drp -"} -(196,1,1) = {" drp drp drp @@ -86675,109 +87032,6 @@ drp drp drp drp -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX -baX drp drp drp diff --git a/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm b/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm index 9e8a6e6d428..4969b02cb6e 100644 --- a/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm +++ b/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm @@ -80,6 +80,7 @@ name = "Bathroom Cell" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/locker) "abO" = ( @@ -132,11 +133,17 @@ }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/west, +/turf/open/floor/carpet/ship/orange_carpet, +/area/crew_quarters/heads/chief) +"afT" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/carpet/ship/orange_carpet, -/area/crew_quarters/heads/chief) +/obj/structure/window/reinforced/spawner/east, +/obj/structure/window/reinforced/spawner, +/obj/item/bodypart/r_leg/skeleton, +/turf/open/floor/engine, +/area/science/research) "ags" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -209,6 +216,7 @@ /obj/structure/cable/yellow{ icon_state = "5-10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "aiE" = ( @@ -218,7 +226,8 @@ /area/science/xenobiology) "aiL" = ( /obj/machinery/atmospherics/pipe/layer_manifold/visible, -/turf/closed/wall/r_wall/ship, +/obj/effect/spawner/structure/window/reinforced/ship, +/turf/open/floor/plating, /area/gateway) "aiY" = ( /obj/structure/shuttle/engine/large{ @@ -252,13 +261,13 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/door/airlock/ship/engineering/glass{ name = "FTL Drive"; req_one_access_txt = "24" }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/floor/engine, /area/gateway) "ajO" = ( @@ -318,6 +327,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/cargo) "alS" = ( @@ -325,9 +335,9 @@ /turf/open/floor/carpet/ship, /area/science/server) "alT" = ( -/obj/effect/landmark/carpspawn, -/turf/open/space/basic, -/area/space/nearstation) +/obj/item/toy/plush/moth/gothic, +/turf/open/floor/plating, +/area/nsv/weapons/starboard) "alU" = ( /turf/closed/wall/r_wall/ship, /area/maintenance/department/crew_quarters/dorms) @@ -451,6 +461,7 @@ name = "Library Backroom"; req_one_access_txt = "37" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/wood, /area/library) "apz" = ( @@ -473,9 +484,10 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "apQ" = ( -/obj/structure/frame/machine, -/turf/open/floor/carpet/ship/purple_carpet, -/area/science/research) +/obj/structure/closet/crate, +/obj/item/xenoartifact/maint, +/turf/open/floor/plating, +/area/maintenance/department/crew_quarters/dorms) "aqb" = ( /obj/machinery/door/airlock/ship/external/glass{ name = "External Access Deck 2 Fore Starboard"; @@ -698,6 +710,7 @@ req_one_access_txt = "12;7" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "axW" = ( @@ -746,6 +759,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -791,6 +805,7 @@ /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/nsv/hanger/storage) "aAZ" = ( @@ -889,9 +904,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/carpet/ship/orange_carpet, /area/crew_quarters/heads/chief) "aEe" = ( @@ -1091,12 +1103,6 @@ /obj/structure/closet/crate, /turf/open/floor/plating, /area/maintenance/department/science/central) -"aLh" = ( -/obj/structure/hull_plate/end{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/nsv/atc) "aLi" = ( /obj/machinery/disposal/deliveryChute{ dir = 8; @@ -1212,6 +1218,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/mixing) "aPN" = ( @@ -1310,6 +1317,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "10;24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/engine/engineering/reactor_control) "aSI" = ( @@ -1336,12 +1344,10 @@ /area/maintenance/department/crew_quarters/dorms) "aST" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 8 - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/engine, /area/gateway) "aSZ" = ( @@ -1378,6 +1384,7 @@ name = "Bridge"; req_access_txt = "19" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -1511,6 +1518,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/fore) "bbg" = ( @@ -1662,7 +1670,9 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/engine/vacuum, /area/nsv/hanger) "bfP" = ( @@ -1675,7 +1685,7 @@ /obj/item/stack/cable_coil, /obj/item/stock_parts/cell/empty, /obj/item/stock_parts/cell/potato, -/obj/item/cartridge/signal, +/obj/item/computer_hardware/hard_drive/role/signal, /turf/open/floor/holofloor/wood, /area/science/computer_lab) "bfR" = ( @@ -1864,7 +1874,7 @@ /obj/structure/table/wood, /obj/item/flashlight/lamp, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "bkw" = ( /obj/structure/table/glass, /obj/machinery/camera/autoname{ @@ -1877,6 +1887,12 @@ /obj/item/pen, /turf/open/floor/carpet, /area/library) +"blm" = ( +/obj/machinery/computer/xenoartifact_console{ + dir = 1 + }, +/turf/open/floor/carpet/ship/purple_carpet, +/area/science/research) "blY" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/machinery/atmospherics/components/unary/portables_connector/layer4{ @@ -2149,6 +2165,9 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/openspace, /area/engine/engine_smes) "btD" = ( @@ -2296,6 +2315,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -2318,6 +2338,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/cargo) "bxM" = ( @@ -2367,6 +2388,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) "byg" = ( @@ -2659,6 +2681,7 @@ /obj/structure/cable/yellow{ icon_state = "6-10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "bGw" = ( @@ -2767,6 +2790,7 @@ "bMG" = ( /obj/structure/closet/emcloset, /obj/item/storage/toolbox/emergency, +/obj/item/xenoartifact/maint, /turf/open/floor/plating, /area/maintenance/fore) "bNH" = ( @@ -2836,13 +2860,14 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plasteel/freezer, /area/crew_quarters/pool_party) "bTd" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "bTh" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -2900,6 +2925,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/bridge) "bUO" = ( @@ -2994,7 +3020,7 @@ /turf/open/floor/engine, /area/nsv/hanger/storage) "bXL" = ( -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /obj/item/storage/secure/safe{ pixel_x = 32 }, @@ -3235,15 +3261,6 @@ /obj/structure/chair, /turf/open/floor/plasteel/freezer, /area/crew_quarters/pool_party) -"ciw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/nsv/hanger) "ciI" = ( /obj/structure/cable/yellow{ icon_state = "0-4" @@ -3705,6 +3722,7 @@ }, /obj/machinery/atmospherics/pipe/simple/purple/hidden, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -3768,6 +3786,7 @@ /obj/structure/cable{ icon_state = "5-10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "cxr" = ( @@ -3986,6 +4005,9 @@ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/openspace, /area/engine/engine_smes) "cEf" = ( @@ -4107,6 +4129,7 @@ name = "E.X.P.E.R.I-MENTOR Access"; req_one_access_txt = "47" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/explab) "cJa" = ( @@ -4140,7 +4163,7 @@ /obj/item/camera_film, /obj/item/camera, /obj/item/taperecorder, -/obj/item/cartridge/curator, +/obj/item/computer_hardware/hard_drive/role/curator, /turf/open/floor/carpet, /area/library) "cKo" = ( @@ -4159,9 +4182,8 @@ "cLa" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Bridge" + location = "Bridge"; + name = "navigation beacon (Bridge Delivery)" }, /turf/open/floor/carpet/ship, /area/hallway/nsv/deck2/forward) @@ -4233,6 +4255,7 @@ "cPh" = ( /obj/machinery/door/firedoor/border_only/directional/west, /obj/effect/landmark/event_spawn, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/blue, /area/bridge) "cPn" = ( @@ -4346,7 +4369,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/landmark/patrol_node{ id = "deck2_hangar"; next_id = "deck2_cargooffice" @@ -4504,10 +4526,12 @@ req_one_access_txt = "55" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/xenobiology) "dbO" = ( -/turf/closed/wall/ship, +/obj/effect/spawner/structure/window/reinforced/ship, +/turf/open/floor/plating, /area/gateway) "dcv" = ( /obj/machinery/atmospherics/pipe/layer_manifold{ @@ -4559,7 +4583,7 @@ dir = 4 }, /obj/item/paper{ - info = "

Munitions notice: Reminder that the laser anti missile systems provided must have power allocated, must be enabled, and must have Anti-missile countermeasures enabled in the AMS control console!

" + default_raw_text = "

Munitions notice: Reminder that the laser anti missile systems provided must have power allocated, must be enabled, and must have Anti-missile countermeasures enabled in the AMS control console!

" }, /turf/open/floor/engine, /area/nsv/weapons/fore) @@ -4690,6 +4714,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/quartermaster/storage) "diA" = ( @@ -4868,6 +4893,7 @@ dir = 4; id = "aethermunitions" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/nsv/weapons/fore) "drW" = ( @@ -4884,6 +4910,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "dsu" = ( @@ -5040,22 +5067,23 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "10;24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/engine/engineering/reactor_control) "dzp" = ( /obj/structure/table/wood, -/obj/item/pda/curator{ +/obj/item/modular_computer/tablet/pda/curator{ pixel_x = 3; pixel_y = 3 }, /obj/item/gun/ballistic/revolver/russian{ pixel_x = -12 }, -/obj/item/pda/curator{ +/obj/item/modular_computer/tablet/pda/curator{ pixel_x = 13; pixel_y = 5 }, -/obj/item/pda/curator{ +/obj/item/modular_computer/tablet/pda/curator{ pixel_x = 9; pixel_y = -6 }, @@ -5106,6 +5134,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "dBX" = ( @@ -5322,6 +5351,7 @@ name = "Captain Quarters"; req_access_txt = "20" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) "dKo" = ( @@ -5351,7 +5381,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "dLq" = ( /obj/machinery/computer/laser_pd{ gun_id = 2 @@ -5467,6 +5497,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "dOf" = ( @@ -5480,6 +5511,12 @@ /obj/machinery/door/window/westright, /turf/open/floor/plating, /area/crew_quarters/pool_party) +"dOG" = ( +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "dOX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -5540,7 +5577,7 @@ dir = 4 }, /obj/item/paper{ - info = "

Engineering notice: There are three wire colors used on the Aetherwhisp 6 ship model. White cable is wired to the Stormdrive MK-4 and the supermatter crystal near atmospherics. These lead to their own SMES located nearby. Yellow wires are department distribution wires, which deliver power from the engines SMES to deparment SMES. Red wires deliver power from department SMES to department APCs.

" + default_raw_text = "

Engineering notice: There are three wire colors used on the Aetherwhisp 6 ship model. White cable is wired to the Stormdrive MK-4 and the supermatter crystal near atmospherics. These lead to their own SMES located nearby. Yellow wires are department distribution wires, which deliver power from the engines SMES to deparment SMES. Red wires deliver power from department SMES to department APCs.

" }, /obj/machinery/newscaster/directional/west, /obj/structure/cable/yellow{ @@ -5569,6 +5606,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/robotics/lab) "dQY" = ( @@ -5930,7 +5968,7 @@ }, /obj/structure/hull_plate, /turf/open/floor/plating/airless, -/area/nsv/atc) +/area/space/nearstation) "ehz" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5984,7 +6022,7 @@ pixel_x = -4 }, /obj/machinery/airalarm/directional/east, -/obj/item/cartridge/janitor, +/obj/item/computer_hardware/hard_drive/role/janitor, /obj/item/pushbroom, /turf/open/floor/carpet/ship, /area/janitor) @@ -6004,6 +6042,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "ejy" = ( @@ -6335,7 +6374,7 @@ pixel_x = -6; pixel_y = 4 }, -/obj/item/cartridge/roboticist, +/obj/item/computer_hardware/hard_drive/role/roboticist, /obj/structure/window/reinforced{ dir = 1 }, @@ -6547,12 +6586,10 @@ /area/maintenance/fore) "eAV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/engine, /area/gateway) "eAZ" = ( @@ -6581,6 +6618,7 @@ req_one_access_txt = "31;50" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/quartermaster/sorting) "eBS" = ( @@ -6618,12 +6656,20 @@ /turf/open/floor/plating, /area/maintenance/nsv/hangar) "eCq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/fax{ + fax_name = "Cargo"; + name = "Cargo Fax Machine" + }, /obj/structure/window/reinforced{ - dir = 1 + layer = 2.89 }, -/obj/effect/turf_decal/stripes/line{ +/obj/structure/window/reinforced{ dir = 8 }, +/obj/structure/table, /turf/open/floor/engine, /area/quartermaster/storage) "eCw" = ( @@ -6678,6 +6724,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/quartermaster/lobby) "eDY" = ( @@ -6711,8 +6758,8 @@ /turf/open/floor/plating, /area/nsv/atc) "eFv" = ( -/obj/machinery/door/firedoor/border_only/directional/north, /obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/engine, /area/quartermaster/storage) "eFO" = ( @@ -6767,8 +6814,8 @@ /turf/open/floor/engine, /area/nsv/weapons/starboard) "eHQ" = ( -/obj/machinery/door/firedoor/border_only/directional/north, /obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/carpet/orange, /area/quartermaster/storage) "eHV" = ( @@ -6778,7 +6825,7 @@ /turf/open/openspace, /area/engine/engine_smes) "eIb" = ( -/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/carpet/orange, /area/quartermaster/storage) "eIc" = ( @@ -6881,6 +6928,7 @@ name = "Public EVA Storage"; req_access_txt = "19" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -7110,7 +7158,7 @@ /obj/machinery/air_sensor/atmos{ id_tag = "ftl_sensor" }, -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engine_smes) "eSC" = ( /obj/machinery/light_switch/east, @@ -7255,7 +7303,10 @@ /area/crew_quarters/dorms) "eWo" = ( /obj/machinery/newscaster/directional/east, -/turf/open/floor/plating, +/obj/structure/table, +/obj/item/gun/syringe, +/obj/item/restraints/handcuffs, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "eWt" = ( /turf/closed/wall/ship, @@ -7268,7 +7319,7 @@ "eXw" = ( /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "eXQ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -7303,6 +7354,7 @@ name = "Public EVA Storage" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -7467,7 +7519,7 @@ "fcZ" = ( /obj/effect/spawner/room/tenxfive, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "fdh" = ( /obj/machinery/firealarm/directional/east, /turf/open/floor/carpet/ship, @@ -7653,6 +7705,7 @@ name = "Server Room"; req_one_access_txt = "30" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/science/server) "fkg" = ( @@ -7682,11 +7735,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - on = 1; - target_pressure = 2000 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/nsv/atc) "fkz" = ( @@ -7749,7 +7798,7 @@ name = "stormdrive power monitoring console" }, /obj/item/paper{ - info = "

Engineering notice: There are three wire colors used on the Aetherwhisp 6 ship model. White cable is wired to the Stormdrive MK-4 and the supermatter crystal near atmospherics. These lead to their own SMES located nearby. Yellow wires are department distribution wires, which deliver power from the engines SMES to deparment SMES. Red wires deliver power from department SMES to department APCs.

" + default_raw_text = "

Engineering notice: There are three wire colors used on the Aetherwhisp 6 ship model. White cable is wired to the Stormdrive MK-4 and the supermatter crystal near atmospherics. These lead to their own SMES located nearby. Yellow wires are department distribution wires, which deliver power from the engines SMES to deparment SMES. Red wires deliver power from department SMES to department APCs.

" }, /turf/open/floor/carpet/ship/orange_carpet, /area/nsv/weapons/fore) @@ -8068,6 +8117,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/fore) "fwr" = ( @@ -8084,7 +8134,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/green/visible, @@ -8279,6 +8329,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/effect/landmark/start/bridge, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/blue, /area/bridge) "fDN" = ( @@ -8523,6 +8574,7 @@ /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) "fKd" = ( @@ -8583,8 +8635,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/cable/yellow{ + icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/openspace, @@ -8822,6 +8874,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/quartermaster/storage) "fTY" = ( @@ -8830,7 +8883,7 @@ }, /obj/structure/cable, /obj/item/paper{ - info = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; + default_raw_text = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; pixel_x = 4; pixel_y = 4 }, @@ -9286,6 +9339,11 @@ /obj/item/storage/toolbox/emergency, /turf/open/floor/plating, /area/maintenance/disposal) +"glf" = ( +/obj/item/stack/cable_coil, +/obj/item/wallframe/camera, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "glw" = ( /obj/machinery/light/small{ dir = 1 @@ -9369,6 +9427,7 @@ /obj/structure/cable/pink{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/maintenance/fore) "gmR" = ( @@ -9423,6 +9482,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -9567,6 +9627,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/wood, /area/maintenance/department/crew_quarters/dorms) "gul" = ( @@ -9602,6 +9663,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "gvQ" = ( @@ -9627,6 +9689,7 @@ name = "Master At Arms Office"; req_access_txt = "70" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/beige_carpet{ color = "#CC8899"; name = "nanoweave carpet (puce)" @@ -9976,7 +10039,7 @@ "gKz" = ( /obj/structure/table_frame/wood, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "gKC" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -10016,12 +10079,14 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/engine/vacuum, /area/nsv/hanger) @@ -10078,6 +10143,9 @@ /obj/machinery/atmospherics/components/binary/drive_pylon{ dir = 8 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/engine, /area/gateway) "gNy" = ( @@ -10179,6 +10247,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "gQT" = ( @@ -10313,10 +10382,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore) -"gXM" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/nsv/atc) "gYd" = ( /obj/structure/reagent_dispensers/water_cooler{ anchored = 0 @@ -10477,11 +10542,6 @@ /obj/item/clothing/mask/gas, /turf/open/floor/plating, /area/maintenance/department/science/central) -"hbD" = ( -/obj/item/wallframe/airalarm, -/obj/item/electronics/airalarm, -/turf/open/floor/engine/vacuum, -/area/nsv/hanger) "hbN" = ( /obj/machinery/atmospherics/pipe/simple/purple/visible, /turf/open/floor/plating, @@ -10504,6 +10564,7 @@ name = "Maintenance Access Executive Officer Office"; req_one_access_txt = "57" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -10653,8 +10714,6 @@ /obj/effect/turf_decal/bot, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; location = "QM #2" }, /mob/living/simple_animal/bot/mulebot{ @@ -10713,6 +10772,7 @@ /obj/structure/cable/yellow{ icon_state = "6-9" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/wood, /area/crew_quarters/dorms) "hkG" = ( @@ -10740,7 +10800,8 @@ /turf/open/floor/carpet/ship, /area/quartermaster/lobby) "hkM" = ( -/turf/open/floor/plating, +/obj/item/bodypart/l_leg/skeleton, +/turf/open/floor/engine, /area/science/research) "hkU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -10795,10 +10856,11 @@ pixel_y = 32 }, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "hnK" = ( /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/north, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/blue, /area/bridge) "hod" = ( @@ -11232,10 +11294,12 @@ }, /obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ dir = 8; - id = "ftl_in"; - on = 0 + id = "ftl_in" }, -/turf/open/floor/engine/vacuum, +/obj/machinery/camera/autoname{ + dir = 8 + }, +/turf/open/floor/engine/nucleium, /area/engine/engine_smes) "hEV" = ( /obj/machinery/atmospherics/components/binary/pump/layer4{ @@ -11374,6 +11438,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/quartermaster/lobby) "hLo" = ( @@ -11453,6 +11518,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "hOJ" = ( @@ -11612,6 +11678,7 @@ name = "Maintenance Access Munitions Weapons Bay"; req_one_access_txt = "69;19" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/beige_carpet{ color = "#CC8899"; name = "nanoweave carpet (puce)" @@ -11740,6 +11807,7 @@ icon_state = "5-10" }, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/crew_quarters/heads/hor) "hXr" = ( @@ -12224,7 +12292,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "iqE" = ( /obj/structure/disposalpipe/segment{ @@ -12285,9 +12353,8 @@ }, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Munitions" + location = "Munitions"; + name = "navigation beacon (Munitions Delivery)" }, /turf/open/floor/plating, /area/maintenance/nsv/bridge) @@ -12300,7 +12367,7 @@ }, /obj/item/storage/pill_bottle/floorpill, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "isX" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 @@ -12443,6 +12510,7 @@ name = "AI Core"; req_one_access_txt = "16" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/ai_monitored/turret_protected/aisat_interior) "ixT" = ( @@ -12470,6 +12538,7 @@ req_one_access_txt = "12;37;55" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "iyw" = ( @@ -12612,6 +12681,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "iDL" = ( @@ -12673,6 +12743,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/quartermaster/qm) "iEX" = ( @@ -12737,6 +12808,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/freezer, /area/crew_quarters/pool_party) +"iIw" = ( +/obj/structure/table, +/obj/machinery/fax{ + fax_name = "Munitions"; + name = "Munitions Fax Machine" + }, +/turf/open/floor/engine, +/area/nsv/weapons/fore) "iIB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -12867,17 +12946,6 @@ /obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/plating, /area/maintenance/disposal) -"iMT" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plating/airless, -/area/nsv/hanger) "iMY" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/machinery/atmospherics/components/unary/portables_connector/layer4{ @@ -12950,6 +13018,7 @@ name = "Engine Observation Room"; req_one_access_txt = "10;24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/engine/engine_smes) "iPS" = ( @@ -13161,6 +13230,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -13259,6 +13329,7 @@ name = "Chief Engineer Office"; req_one_access_txt = "56" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/crew_quarters/heads/chief) "jbh" = ( @@ -13313,7 +13384,7 @@ }, /obj/machinery/door/window/eastright, /obj/item/paper{ - info = "

Reminder that squad equipment vendors are located in the council chamber, tool storage, and that 4-way junction at the primary hallway, Deck 1

" + default_raw_text = "

Reminder that squad equipment vendors are located in the council chamber, tool storage, and that 4-way junction at the primary hallway, Deck 1

" }, /obj/machinery/door/poddoor/shutters/ship/preopen{ dir = 4; @@ -13350,6 +13421,7 @@ /obj/machinery/door/airlock/ship/public/glass{ req_one_access_txt = "30" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/science/server) "jdq" = ( @@ -13537,6 +13609,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/beige_carpet{ color = "#CC8899"; name = "nanoweave carpet (puce)" @@ -13724,12 +13797,10 @@ /area/science/computer_lab) "jqX" = ( /obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 8 - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/engine, /area/gateway) "jrf" = ( @@ -13825,7 +13896,7 @@ "jtO" = ( /obj/structure/table/wood, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "jtR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -13981,7 +14052,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible, /obj/structure/bookcase, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "jyN" = ( /obj/structure/rack, /turf/open/floor/plating, @@ -14001,12 +14072,12 @@ "jyX" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 8 }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/floor/engine, /area/gateway) "jzH" = ( @@ -14298,13 +14369,10 @@ }, /area/bridge/meeting_room) "jIv" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, /obj/machinery/light{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "jIw" = ( /obj/structure/disposalpipe/segment{ @@ -14363,24 +14431,12 @@ /obj/structure/cable/pink{ icon_state = "9-10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" }, /area/maintenance/fore) -"jLA" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/purple/hidden{ - dir = 4 - }, -/turf/open/floor/engine/vacuum, -/area/nsv/hanger) "jLE" = ( /obj/structure/chair/office/light{ dir = 4 @@ -14720,6 +14776,16 @@ name = "nanoweave carpet (bluer)" }, /area/bridge/meeting_room/council) +"jYU" = ( +/obj/machinery/atmospherics/pipe/manifold/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "jZB" = ( /obj/structure/frame/machine, /obj/effect/landmark/start/cyborg, @@ -15001,6 +15067,7 @@ /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) "knV" = ( @@ -15109,7 +15176,7 @@ icon_state = "0-8" }, /obj/item/paper{ - info = "

Munitions notice: Reminder that the laser anti missile systems provided must have power allocated, must be enabled, and must have Anti-missile countermeasures enabled in the AMS control console!

" + default_raw_text = "

Munitions notice: Reminder that the laser anti missile systems provided must have power allocated, must be enabled, and must have Anti-missile countermeasures enabled in the AMS control console!

" }, /turf/open/floor/carpet/ship/orange_carpet, /area/nsv/weapons/fore) @@ -15148,6 +15215,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "3;12;19;69;72" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/bridge) "kuT" = ( @@ -15341,6 +15409,12 @@ }, /turf/open/floor/carpet/ship/purple_carpet, /area/science/research) +"kGv" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/six, +/obj/item/xenoartifact/maint, +/turf/open/floor/plating, +/area/maintenance/department/science/central) "kGw" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -15374,16 +15448,6 @@ /obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall/ship, /area/maintenance/department/crew_quarters/dorms) -"kIr" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/binary/drive_pylon{ - dir = 4 - }, -/turf/open/floor/engine, -/area/gateway) "kIu" = ( /obj/machinery/status_display/ai, /turf/closed/wall/ship, @@ -15410,6 +15474,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/disposal) "kJc" = ( @@ -15518,6 +15583,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -15603,6 +15669,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "kPp" = ( @@ -15688,7 +15755,7 @@ "kTB" = ( /obj/structure/bookcase, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "kTG" = ( /obj/structure/closet/radiation, /obj/item/shovel, @@ -15857,6 +15924,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "lav" = ( @@ -15903,6 +15971,7 @@ name = "Custodial Office"; req_one_access_txt = "26" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/janitor) "lbQ" = ( @@ -16021,6 +16090,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/hallway/nsv/deck2/forward) "lgV" = ( @@ -16064,7 +16134,7 @@ dir = 8; name = "emergency shower" }, -/turf/open/floor/plating, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "llG" = ( /obj/item/storage/fancy/donut_box, @@ -16092,13 +16162,6 @@ }, /turf/open/floor/carpet/ship, /area/nsv/atc) -"llI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/engine/vacuum, -/area/nsv/hanger) "llQ" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -16154,17 +16217,6 @@ /obj/machinery/power/port_gen/pacman, /turf/open/floor/plating, /area/maintenance/department/science/central) -"loz" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plating/airless, -/area/nsv/hanger) "lpi" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/carpet/ship/blue{ @@ -16240,11 +16292,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/closet/l3closet/scientist, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, +/obj/structure/window/reinforced/spawner/east, +/turf/open/floor/engine, /area/science/research) "lqA" = ( /obj/structure/cable{ @@ -17043,6 +17092,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "3;12;19;69;72" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/nsv/hangar) "lUg" = ( @@ -17054,6 +17104,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/crew_quarters/heads/chief) "lUj" = ( @@ -17074,11 +17125,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/engine/vacuum, /area/nsv/hanger) "lVe" = ( @@ -17100,6 +17153,7 @@ /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) "lWu" = ( @@ -17146,6 +17200,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "lYM" = ( @@ -17221,7 +17276,6 @@ /area/science/mixing) "mcT" = ( /obj/structure/table, -/obj/machinery/airalarm/directional/north, /obj/item/storage/fancy/cigarettes/cigars, /obj/item/binoculars, /obj/item/lighter/greyscale, @@ -17267,6 +17321,7 @@ name = "Engine Observation Room"; req_one_access_txt = "10;24" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/engine/engineering/reactor_control) "mfF" = ( @@ -17615,13 +17670,13 @@ }, /area/bridge/meeting_room) "mnN" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/computer/ship/viewscreen, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/engine, /area/gateway) "mop" = ( @@ -17724,6 +17779,7 @@ name = "Escape Pod Munitions"; req_one_access_txt = "3;69;72" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/bridge) "mqe" = ( @@ -17845,6 +17901,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/quartermaster/sorting) "mtJ" = ( @@ -18128,7 +18185,7 @@ dir = 8 }, /obj/item/paper{ - info = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; + default_raw_text = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; pixel_x = 4; pixel_y = 4 }, @@ -18232,6 +18289,7 @@ req_one_access_txt = "69;19" }, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/beige_carpet{ color = "#CC8899"; name = "nanoweave carpet (puce)" @@ -18363,6 +18421,7 @@ name = "AI Core Access"; req_one_access_txt = "16" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/ai_monitored/turret_protected/aisat/hallway) "mHQ" = ( @@ -18400,6 +18459,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/robotics/lab) "mJw" = ( @@ -18453,13 +18513,13 @@ /area/science/xenobiology) "mLn" = ( /obj/structure/bookcase/random, -/obj/machinery/airalarm/directional/north, /obj/machinery/light_switch/east, /obj/item/book/manual/wiki/telescience, /obj/machinery/firealarm{ pixel_x = 26; pixel_y = 25 }, +/obj/machinery/airalarm/directional/north, /turf/open/floor/carpet/ship, /area/nsv/atc) "mLZ" = ( @@ -18485,6 +18545,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/south, /obj/effect/landmark/start/bridge, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/blue, /area/bridge) "mNk" = ( @@ -18719,7 +18780,7 @@ "mXP" = ( /obj/item/cigbutt, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "mXX" = ( /obj/structure/hull_plate/end{ dir = 1 @@ -18910,6 +18971,10 @@ "nhj" = ( /turf/open/floor/plating, /area/maintenance/department/science/central) +"nhF" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "nin" = ( /obj/structure/frame/computer{ dir = 1 @@ -18923,6 +18988,7 @@ name = "Maintenance Access Metahuman Research"; req_one_access_txt = "7;9;29;47" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/medical/genetics) "niv" = ( @@ -18997,6 +19063,7 @@ /obj/machinery/door/airlock/ship/public{ name = "Bathroom Cell" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/auxiliary) "njy" = ( @@ -19065,6 +19132,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/barricade/wooden/crude, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/nsv/atc) "nkP" = ( @@ -19084,6 +19152,7 @@ name = "Vault"; req_one_access_txt = "53" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -19183,6 +19252,7 @@ name = "Maintenance Access Xenobiology"; req_one_access_txt = "55" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "noZ" = ( @@ -19327,6 +19397,7 @@ /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) "nuy" = ( @@ -19493,7 +19564,8 @@ /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/turf/closed/wall/r_wall/ship, +/obj/effect/spawner/structure/window/reinforced/ship, +/turf/open/floor/plating, /area/engine/engine_smes) "nzF" = ( /obj/machinery/holopad, @@ -19560,6 +19632,7 @@ }, /obj/structure/disposalpipe/segment, /obj/structure/barricade/wooden/crude, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/nsv/atc) "nBF" = ( @@ -19894,6 +19967,14 @@ }, /turf/open/floor/carpet, /area/crew_quarters/dorms) +"nLE" = ( +/obj/structure/table/glass, +/obj/machinery/fax{ + fax_name = "Science"; + name = "Science Fax Machine" + }, +/turf/open/floor/carpet/ship/purple_carpet, +/area/science/research) "nLX" = ( /obj/structure/disposalpipe/sorting/wrap/flip{ dir = 4 @@ -20149,6 +20230,7 @@ name = "Council Chamber Bathroom" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -20208,10 +20290,9 @@ /turf/open/floor/circuit, /area/science/server) "nUD" = ( -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/door/firedoor/border_only/directional/south, -/turf/open/floor/plating, -/area/quartermaster/lobby) +/obj/machinery/airalarm/directional/north, +/turf/open/floor/carpet/ship, +/area/nsv/atc) "nUJ" = ( /obj/item/reagent_containers/pill/floorpill, /obj/item/reagent_containers/pill{ @@ -20223,7 +20304,7 @@ pixel_y = 5 }, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "nUQ" = ( /obj/structure/sign/departments/minsky/research/genetics{ name = "Metahuman Research" @@ -20340,6 +20421,7 @@ name = "Maintenance Access Cargo Security Checkpoint"; req_one_access_txt = "63" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/security/checkpoint/supply) "nYQ" = ( @@ -20475,6 +20557,7 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/quartermaster/warehouse) "obS" = ( @@ -20808,7 +20891,7 @@ dir = 8 }, /obj/item/paper{ - info = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; + default_raw_text = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; pixel_x = 4; pixel_y = 4 }, @@ -20834,6 +20917,7 @@ name = "Maintenance Access Bathroom"; req_one_access_txt = "12" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/hangar) "osO" = ( @@ -21079,13 +21163,13 @@ /area/nsv/weapons/starboard) "oBd" = ( /obj/structure/table, -/obj/item/cartridge/atmos, +/obj/item/computer_hardware/hard_drive/role/atmos, /obj/item/multitool{ pixel_x = -4; pixel_y = 2 }, /obj/item/clothing/gloves/color/black, -/obj/item/cartridge/engineering, +/obj/item/computer_hardware/hard_drive/role/engineering, /obj/item/holosign_creator/atmos, /obj/machinery/computer/security/telescreen/ce{ dir = null; @@ -21094,9 +21178,6 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/cable{ - icon_state = "1-4" - }, /turf/open/floor/carpet/ship/orange_carpet, /area/crew_quarters/heads/chief) "oBl" = ( @@ -21164,7 +21245,7 @@ icon_state = "1-2" }, /obj/effect/landmark/event_spawn, -/turf/open/floor/plating, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "oEq" = ( /obj/structure/sign/poster/official/random{ @@ -21459,6 +21540,7 @@ }, /obj/machinery/atmospherics/pipe/simple/purple/hidden, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "oNH" = ( @@ -21541,6 +21623,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/crew_quarters/heads/chief) "oRv" = ( @@ -21639,6 +21722,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "oVB" = ( @@ -21776,6 +21860,7 @@ /obj/structure/cable/pink{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/bridge) "oZI" = ( @@ -21898,13 +21983,10 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "pcZ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/binary/drive_pylon{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/engine, /area/gateway) "pde" = ( @@ -22029,7 +22111,7 @@ dir = 4 }, /obj/item/paper{ - info = "

Reminder that squad equipment vendors are located in the council chamber, tool storage, and that 4-way junction at the primary hallway, Deck 1

" + default_raw_text = "

Reminder that squad equipment vendors are located in the council chamber, tool storage, and that 4-way junction at the primary hallway, Deck 1

" }, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; @@ -22063,6 +22145,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/hangar) "phk" = ( @@ -22122,6 +22205,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "pjf" = ( @@ -22223,6 +22307,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12;31" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "plS" = ( @@ -22520,9 +22605,6 @@ /area/science/research) "puO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 8 }, @@ -22532,6 +22614,9 @@ /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2{ dir = 8 }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/floor/engine, /area/gateway) "pva" = ( @@ -22571,6 +22656,10 @@ /obj/structure/cable/pink{ icon_state = "1-2" }, +/obj/machinery/fax{ + fax_name = "Bridge"; + name = "Bridge Fax Machine" + }, /turf/open/floor/carpet/blue, /area/bridge/meeting_room) "pvu" = ( @@ -22599,6 +22688,21 @@ /obj/machinery/suit_storage_unit/pilot, /turf/open/floor/plating, /area/nsv/atc) +"pwI" = ( +/obj/structure/table, +/obj/item/xenoartifact_label, +/obj/item/xenoartifact_label{ + pixel_x = 4 + }, +/obj/item/xenoartifact_label{ + pixel_x = -5 + }, +/obj/item/xenoartifact_label{ + pixel_x = 1; + pixel_y = 6 + }, +/turf/open/floor/carpet/ship/purple_carpet, +/area/science/research) "pwQ" = ( /obj/structure/closet/l3closet/security, /obj/item/clothing/mask/surgical, @@ -22621,6 +22725,10 @@ /obj/effect/spawner/lootdrop/gloves, /turf/open/floor/carpet/ship, /area/quartermaster/qm) +"pxU" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "pye" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -22785,7 +22893,7 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/turf/open/floor/plating, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "pFt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ @@ -22841,6 +22949,9 @@ /obj/machinery/atmospherics/components/binary/drive_pylon{ dir = 4 }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/engine, /area/gateway) "pHk" = ( @@ -22993,10 +23104,9 @@ }, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos{ id_tag = "ftl_out"; - internal_pressure_bound = 1000; - on = 0 + internal_pressure_bound = 1000 }, -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engine_smes) "pNP" = ( /obj/machinery/door/firedoor/border_only/directional/west, @@ -23011,6 +23121,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/medical/genetics) "pNQ" = ( @@ -23070,6 +23181,7 @@ /obj/structure/cable/pink{ icon_state = "5-6" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -23245,8 +23357,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "pTj" = ( /obj/structure/disposalpipe/segment, /obj/machinery/camera/autoname{ @@ -23465,6 +23578,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/nsv/weapons/fore) "qek" = ( @@ -23483,6 +23597,7 @@ /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/department/crew_quarters/dorms) "qeu" = ( @@ -23660,7 +23775,7 @@ /obj/item/camera, /obj/item/hand_labeler_refill, /obj/item/computer_hardware/card_slot, -/obj/item/cartridge/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster, /obj/structure/table, /obj/machinery/camera/autoname, /turf/open/floor/carpet/orange, @@ -23727,7 +23842,8 @@ /obj/machinery/camera/autoname{ dir = 4 }, -/turf/open/floor/carpet/ship/purple_carpet, +/obj/structure/window/reinforced/spawner, +/turf/open/floor/engine, /area/science/research) "qpE" = ( /obj/machinery/airalarm/directional/east, @@ -23790,8 +23906,27 @@ /obj/structure/sign/poster/official/random{ pixel_x = 32 }, -/obj/structure/frame/machine, -/turf/open/floor/plating, +/obj/structure/table, +/obj/item/reagent_containers/syringe{ + list_reagents = list("/datum/reagent/toxin/chloralhydrate = 15"); + name = "Tranqulizer"; + pixel_y = 12 + }, +/obj/item/reagent_containers/syringe{ + list_reagents = list("/datum/reagent/toxin/chloralhydrate = 15"); + name = "Tranqulizer"; + pixel_y = 8 + }, +/obj/item/reagent_containers/syringe{ + list_reagents = list("/datum/reagent/toxin/chloralhydrate = 15"); + name = "Tranqulizer"; + pixel_y = 4 + }, +/obj/item/reagent_containers/syringe{ + list_reagents = list("/datum/reagent/toxin/chloralhydrate = 15"); + name = "Tranqulizer" + }, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "qrF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -23832,10 +23967,8 @@ /turf/open/floor/plating, /area/maintenance/department/science/central) "qsN" = ( -/obj/structure/frame/computer{ - dir = 1 - }, -/turf/open/floor/plating, +/obj/item/bodypart/chest/skeleton, +/turf/open/floor/engine, /area/science/research) "qti" = ( /obj/structure/chair{ @@ -24158,6 +24291,7 @@ /obj/machinery/door/airlock/ship/public/glass{ name = "Central Primary Hallway" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/bridge/meeting_room/council) "qGo" = ( @@ -24394,10 +24528,8 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/auxiliary) "qQS" = ( -/obj/machinery/door/window/northleft{ - req_one_access_txt = "9" - }, -/turf/open/floor/plating, +/obj/machinery/xenoartifact_inbox, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "qQU" = ( /obj/structure/cable{ @@ -24633,7 +24765,7 @@ pixel_y = 4 }, /obj/item/paper{ - info = "

Reminder that squad equipment vendors are located in the council chamber, tool storage, and that 4-way junction at the primary hallway, Deck 1

" + default_raw_text = "

Reminder that squad equipment vendors are located in the council chamber, tool storage, and that 4-way junction at the primary hallway, Deck 1

" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -24908,11 +25040,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - on = 1; - target_pressure = 2000 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/quartermaster/lobby) "rcI" = ( @@ -25004,7 +25132,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible, /obj/structure/bookcase/random, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "req" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 8 @@ -25014,6 +25142,7 @@ "reK" = ( /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "reN" = ( @@ -25122,16 +25251,16 @@ "rhn" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical, -/obj/item/cartridge/signal/toxins{ +/obj/item/computer_hardware/hard_drive/role/signal/toxins{ pixel_x = -4; pixel_y = 2 }, -/obj/item/cartridge/signal/toxins, -/obj/item/cartridge/signal/toxins{ +/obj/item/computer_hardware/hard_drive/role/signal/toxins, +/obj/item/computer_hardware/hard_drive/role/signal/toxins{ pixel_x = 4; pixel_y = 6 }, -/obj/item/cartridge/signal, +/obj/item/computer_hardware/hard_drive/role/signal, /turf/open/floor/carpet/ship/purple_carpet, /area/science/mixing) "rhw" = ( @@ -25291,6 +25420,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "rnm" = ( @@ -25321,6 +25451,10 @@ /obj/item/stack/package_wrap, /turf/open/floor/wood, /area/library) +"rns" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/closed/wall/r_wall/ship, +/area/maintenance/department/cargo) "rnt" = ( /obj/structure/chair/office/light{ dir = 8 @@ -25343,7 +25477,7 @@ amount = 8 }, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "rpN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -25427,6 +25561,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/quartermaster/miningoffice) "rrd" = ( @@ -25807,7 +25942,7 @@ }, /obj/item/reagent_containers/pill/floorpill, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "rCR" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 @@ -25830,10 +25965,7 @@ /turf/open/openspace, /area/shuttle/turbolift/secondary) "rDI" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, +/turf/open/floor/engine, /area/science/research) "rDV" = ( /obj/machinery/door/firedoor/border_only/directional/north, @@ -25842,6 +25974,7 @@ name = "Maintenance Access Munitions Weapons Bay"; req_one_access_txt = "69;19" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/nsv/weapons/starboard) "rEj" = ( @@ -26054,6 +26187,7 @@ name = "Metahuman Research"; req_one_access_txt = "7;9;29;47" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/nsv/astronomy) "rJE" = ( @@ -26108,6 +26242,18 @@ }, /turf/open/floor/plating, /area/science/research) +"rKj" = ( +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "rKr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/holofloor/wood, @@ -26157,6 +26303,7 @@ name = "Meeting Room"; req_access_txt = "19" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -26394,9 +26541,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/carpet/ship/orange_carpet, /area/crew_quarters/heads/chief) "rQB" = ( @@ -26491,9 +26635,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/carpet/ship/orange_carpet, /area/crew_quarters/heads/chief) "rTM" = ( @@ -26728,6 +26869,7 @@ /obj/machinery/door/airlock/ship/public{ name = "Bathroom Cell" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/locker) "sbr" = ( @@ -26794,7 +26936,7 @@ "sdb" = ( /obj/structure/bookcase/random, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "sdu" = ( /turf/closed/wall/ship, /area/quartermaster/warehouse) @@ -26842,7 +26984,7 @@ }, /obj/machinery/modular_computer/console/preset/research, /obj/item/paper{ - info = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; + default_raw_text = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; pixel_x = 4; pixel_y = 4 }, @@ -26880,6 +27022,7 @@ /obj/machinery/door/airlock/ship/maintenance{ name = "Maintenance Access Science Lobby" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "shx" = ( @@ -26911,19 +27054,23 @@ }, /area/bridge/meeting_room) "shY" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, /turf/open/floor/engine, /area/gateway) +"siP" = ( +/obj/structure/frame/machine, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "sjz" = ( /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 9 @@ -26979,7 +27126,7 @@ /obj/structure/cable{ icon_state = "1-4" }, -/turf/open/floor/plating, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "skZ" = ( /obj/effect/turf_decal/stripes/line{ @@ -26995,15 +27142,10 @@ /obj/structure/extinguisher_cabinet/east, /turf/open/floor/carpet/ship/purple_carpet, /area/science/mixing) -"slK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/engine/vacuum, -/area/nsv/hanger) "slO" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plating, +/obj/structure/table, +/obj/item/xenoartifact_labeler, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "slS" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -27037,6 +27179,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "snp" = ( @@ -27172,7 +27315,7 @@ /obj/structure/cable, /obj/machinery/door/firedoor/border_only/directional/east, /obj/item/paper{ - info = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; + default_raw_text = "

Executive Officer notice: Modular computers are currently experiencing technical difficulties regarding their ID modification hardware. The 'identification card authentication module' supports 2 ID slots, and was previously paired with the 'ID Card Modification' program that also supported 2 IDs. There was recently a software update that removed the need to insert your own ID to authenticate and log in. However, it did not update the hardware, nor does it allow you to remove an ID from the authentication slot anymore.

To edit IDs with a modular computer without losing your ID, insert the target's ID but NEVER insert your own ID. You will still be able to log in if you are wearing it. Make sure you never put more than 1 ID in the modular computer.

If you do accidentally lose your own ID and getting a new one without your XO access is borderline impossible, contact Central Command. Politely ask them to remote into the console, then run subroutine '/proc/eject_id'

Have a secure shift

"; pixel_x = 4; pixel_y = 4 }, @@ -27197,6 +27340,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "7" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "ssn" = ( @@ -27314,13 +27458,8 @@ /turf/open/openspace, /area/engine/engineering/reactor_control) "sxk" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, +/obj/machinery/door/window/southleft, +/turf/open/floor/engine, /area/science/research) "sxI" = ( /obj/structure/disposalpipe/segment{ @@ -27344,6 +27483,7 @@ /obj/structure/cable/yellow{ icon_state = "5-6" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/wood, /area/maintenance/department/crew_quarters/dorms) "sys" = ( @@ -27387,6 +27527,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "7;12;29;47;55" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "szE" = ( @@ -27425,6 +27566,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "7;12;29;47;55" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "sAm" = ( @@ -27506,6 +27648,7 @@ name = "Maintenance Access Research and Development"; req_one_access_txt = "9;47" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "sDg" = ( @@ -27582,7 +27725,7 @@ "sGH" = ( /obj/machinery/chem_dispenser, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "sHv" = ( /obj/structure/cable{ icon_state = "4-8" @@ -27708,6 +27851,7 @@ /obj/structure/cable/yellow{ icon_state = "6-10" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/science/server) "sLR" = ( @@ -27728,12 +27872,12 @@ pixel_x = -32; pixel_y = -32 }, -/obj/item/cartridge/captain, +/obj/item/computer_hardware/hard_drive/role/captain, /obj/item/computer_hardware/card_slot, /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) "sLS" = ( -/obj/structure/table, +/obj/structure/closet/crate/science, /turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "sMv" = ( @@ -27776,6 +27920,9 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/openspace, /area/engine/engine_smes) @@ -27968,6 +28115,7 @@ req_one_access_txt = "37" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "sTF" = ( @@ -27988,9 +28136,8 @@ "sUe" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Science" + location = "Science"; + name = "navigation beacon (Science Delivery)" }, /turf/open/floor/carpet/ship/purple_carpet, /area/science/computer_lab) @@ -28010,6 +28157,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/orange_carpet, /area/crew_quarters/heads/chief) "sUy" = ( @@ -28061,6 +28209,7 @@ /obj/structure/cable/yellow{ icon_state = "6-9" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -28182,6 +28331,7 @@ name = "Metahuman Research"; req_one_access_txt = "7;9;29;47" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/medical/genetics) "tdz" = ( @@ -28206,6 +28356,7 @@ name = "Meeting Room"; req_access_txt = "19" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/blue{ color = "#9999DD"; name = "nanoweave carpet (bluer)" @@ -28351,6 +28502,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "7;12;29;47;55" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "toW" = ( @@ -28567,6 +28719,7 @@ id_tag = "cabin8"; name = "Cabin 8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/wood, /area/crew_quarters/dorms) "twL" = ( @@ -28618,6 +28771,7 @@ req_one_access_txt = "3;12;19;69;72" }, /obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/bridge) "tyD" = ( @@ -28664,6 +28818,7 @@ /obj/effect/mapping_helpers/airlock/unres{ dir = 1 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/heads/captain/private) "tBl" = ( @@ -28874,19 +29029,19 @@ /turf/open/floor/carpet/ship, /area/bridge/secondary) "tLs" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, /obj/structure/window/reinforced, /obj/structure/table, -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/item/folder/yellow, /obj/item/reagent_containers/food/drinks/coffee{ pixel_x = 7; pixel_y = 1 }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, /turf/open/floor/engine, /area/gateway) "tLv" = ( @@ -29063,7 +29218,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 10 }, @@ -29173,6 +29327,7 @@ /obj/structure/cable/yellow{ icon_state = "5-9" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/wood, /area/crew_quarters/dorms) "tWI" = ( @@ -29203,6 +29358,7 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "tXj" = ( @@ -29636,12 +29792,13 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/nsv/atc) "uno" = ( /obj/structure/closet/secure_closet/combat_pilot, -/obj/machinery/airalarm/directional/north, /obj/machinery/light_switch/west, +/obj/machinery/airalarm/directional/north, /turf/open/floor/engine, /area/nsv/hanger/storage) "unu" = ( @@ -29863,6 +30020,13 @@ }, /turf/open/floor/carpet/ship, /area/janitor) +"uzC" = ( +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 23 + }, +/turf/closed/wall/r_wall/ship, +/area/nsv/atc) "uzL" = ( /obj/machinery/modular_computer/console/preset/command{ dir = 8 @@ -29908,6 +30072,7 @@ /obj/structure/cable/white{ icon_state = "6-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/bridge) "uBM" = ( @@ -29939,11 +30104,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "uDy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/layer4{ - dir = 1 - }, /turf/open/floor/engine/vacuum, /area/nsv/hanger) "uDQ" = ( @@ -29961,6 +30122,11 @@ /obj/structure/chair/stool, /turf/open/floor/carpet/ship/purple_carpet, /area/science/computer_lab) +"uEZ" = ( +/obj/structure/table, +/obj/item/clothing/gloves/artifact_pinchers, +/turf/open/floor/carpet/ship/purple_carpet, +/area/science/research) "uFP" = ( /obj/machinery/advanced_airlock_controller/directional/north, /obj/machinery/atmospherics/pipe/layer_manifold, @@ -30102,6 +30268,7 @@ name = "AI Core Upload Chamber"; req_one_access_txt = "16" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/ai_monitored/nuke_storage) "uLJ" = ( @@ -30127,13 +30294,6 @@ /obj/effect/landmark/start/cyborg, /turf/open/floor/carpet/ship/purple_carpet, /area/science/robotics/lab) -"uNa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/engine/vacuum, -/area/nsv/hanger) "uNA" = ( /obj/structure/cable{ icon_state = "1-2" @@ -30178,6 +30338,7 @@ req_one_access_txt = "63" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/red_carpet, /area/security/checkpoint/science/research) "uPh" = ( @@ -30371,6 +30532,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/purple/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/crew_quarters/heads/hor) "uVP" = ( @@ -30596,6 +30758,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/crew_quarters/heads/captain/private) "vdZ" = ( @@ -30748,6 +30911,7 @@ req_one_access_txt = "26" }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/maintenance/nsv/hangar) "vlx" = ( @@ -30755,7 +30919,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/green/visible, @@ -30881,6 +31045,9 @@ icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, /turf/open/openspace, /area/engine/engine_smes) "vrD" = ( @@ -30921,7 +31088,7 @@ /obj/item/tank/internals/plasmaman/belt/full{ pixel_x = 7 }, -/obj/item/pda/curator{ +/obj/item/modular_computer/tablet/pda/curator{ pixel_x = -10 }, /obj/machinery/airalarm/directional/north, @@ -30930,7 +31097,7 @@ "vtq" = ( /obj/machinery/chem_master, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "vtr" = ( /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 @@ -31196,9 +31363,10 @@ /obj/machinery/door/firedoor/border_only/directional/north, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/station{ - name = "Research Division"; + name = "Artifact Research"; req_one_access_txt = "7;47" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "vCZ" = ( @@ -31214,6 +31382,7 @@ id_tag = "cabin5"; name = "Cabin 5" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/wood, /area/crew_quarters/dorms) "vDm" = ( @@ -31277,6 +31446,7 @@ name = "AI Core Upload Chamber"; req_one_access_txt = "16" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/ai_monitored/turret_protected/aisat_interior) "vGa" = ( @@ -31485,10 +31655,9 @@ /turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "vNv" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, +/obj/machinery/door/window/southright, +/obj/effect/mob_spawn/human/corpse/charredskeleton, +/turf/open/floor/engine, /area/science/research) "vNG" = ( /turf/open/floor/carpet/ship/blue{ @@ -31601,15 +31770,15 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 5 }, /obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/floor/engine, /area/engine/engine_smes) "vRT" = ( @@ -31716,6 +31885,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/fore) "vWs" = ( @@ -31819,7 +31989,8 @@ /turf/open/floor/carpet, /area/crew_quarters/dorms) "vZF" = ( -/obj/structure/table_frame, +/obj/structure/table, +/obj/item/xenoartifact, /turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "vZK" = ( @@ -32006,6 +32177,7 @@ name = "Maintenance Access Disposals"; req_one_access_txt = "31" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/disposal) "whM" = ( @@ -32266,6 +32438,7 @@ /obj/structure/cable/pink{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/nsv/weapons/starboard) "wqW" = ( @@ -32581,6 +32754,7 @@ dir = 4; id = "aethermunitions" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/nsv/weapons/fore) "wED" = ( @@ -32595,6 +32769,7 @@ /obj/machinery/door/airlock/ship/public{ name = "Shower" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/auxiliary) "wEG" = ( @@ -32742,6 +32917,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/science/central) "wJI" = ( @@ -32770,6 +32946,7 @@ /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/science/mixing) "wKz" = ( @@ -32945,6 +33122,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/engine/engineering/reactor_control) "wPI" = ( @@ -33072,7 +33250,7 @@ }, /obj/item/reagent_containers/glass/beaker, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "wSV" = ( /obj/machinery/door/window/southright{ name = "Cyborg Upload Console Window"; @@ -33179,8 +33357,8 @@ /obj/item/pen, /obj/item/storage/toolbox/mechanical, /obj/item/folder/yellow, -/obj/item/cartridge/engineering, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering, +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = 3 }, /obj/item/reagent_containers/pill/patch/silver_sulf, @@ -33398,6 +33576,7 @@ /obj/machinery/door/airlock/ship/public/glass{ name = "Central Primary Hallway" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/bridge/meeting_room/council) "xdA" = ( @@ -33577,6 +33756,7 @@ name = "Maintenance Access Pool Area"; req_one_access_txt = "12;46" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "xil" = ( @@ -33627,7 +33807,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/carpet/ship/purple_carpet, /area/science/research) "xjr" = ( /turf/closed/wall/r_wall/ship, @@ -33639,7 +33819,7 @@ /obj/effect/spawner/lootdrop/maintenance/eight, /obj/effect/spawner/lootdrop/costume, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) +/area/maintenance/department/cargo) "xlb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -33662,6 +33842,7 @@ id_tag = "cabin6"; name = "Cabin 6" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/wood, /area/crew_quarters/dorms) "xlr" = ( @@ -33696,12 +33877,6 @@ }, /turf/open/floor/carpet/ship/purple_carpet, /area/science/xenobiology) -"xnd" = ( -/obj/structure/hull_plate/end{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/nsv/atc) "xnh" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -33723,6 +33898,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/fore) "xnt" = ( @@ -33821,6 +33997,7 @@ name = "Server Room"; req_one_access_txt = "7;47" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship/purple_carpet, /area/science/server) "xsN" = ( @@ -33912,6 +34089,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/fore) "xvB" = ( @@ -34254,6 +34432,7 @@ id = "deck2_bridge"; next_id = "deck2_councilchamber2" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/blue, /area/bridge) "xJT" = ( @@ -34486,14 +34665,14 @@ /turf/open/floor/carpet/ship, /area/science/server) "xPr" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, /obj/machinery/power/apc/auto_name/north, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/item/kirbyplants/random, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, /turf/open/floor/engine, /area/gateway) "xPQ" = ( @@ -34641,6 +34820,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/engine, /area/nsv/hanger/storage) "xRR" = ( @@ -34946,6 +35126,12 @@ /obj/structure/closet/crate, /turf/open/floor/plating, /area/science/nsv/astronomy) +"ydi" = ( +/obj/structure/frame/computer{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) "ydk" = ( /obj/structure/sign/poster/random{ pixel_x = -32 @@ -34992,6 +35178,7 @@ "yfW" = ( /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/blue, /area/bridge) "ygf" = ( @@ -35061,6 +35248,7 @@ name = "Battle Bridge"; req_access_txt = "19" }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/bridge/secondary) "yhd" = ( @@ -35159,6 +35347,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/nsv/weapons/starboard) "ylv" = ( @@ -41428,109 +41617,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -41608,8 +41694,6 @@ nZT nZT nZT nZT -"} -(26,1,1) = {" nZT nZT nZT @@ -41685,109 +41769,62 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(26,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -41865,8 +41902,6 @@ nZT nZT nZT nZT -"} -(27,1,1) = {" nZT nZT nZT @@ -41942,109 +41977,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -42123,7 +42055,7 @@ nZT nZT nZT "} -(28,1,1) = {" +(27,1,1) = {" nZT nZT nZT @@ -42199,109 +42131,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -42379,8 +42208,6 @@ nZT nZT nZT nZT -"} -(29,1,1) = {" nZT nZT nZT @@ -42456,109 +42283,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -42587,6 +42311,8 @@ nZT nZT nZT nZT +"} +(28,1,1) = {" nZT nZT nZT @@ -42636,8 +42362,6 @@ nZT nZT nZT nZT -"} -(30,1,1) = {" nZT nZT nZT @@ -42713,109 +42437,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -42893,8 +42514,6 @@ nZT nZT nZT nZT -"} -(31,1,1) = {" nZT nZT nZT @@ -42949,6 +42568,13 @@ nZT nZT nZT nZT +"} +(29,1,1) = {" +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -42970,109 +42596,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -43150,8 +42673,6 @@ nZT nZT nZT nZT -"} -(32,1,1) = {" nZT nZT nZT @@ -43227,109 +42748,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -43408,7 +42826,7 @@ nZT nZT nZT "} -(33,1,1) = {" +(30,1,1) = {" nZT nZT nZT @@ -43484,109 +42902,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -43664,8 +42979,6 @@ nZT nZT nZT nZT -"} -(34,1,1) = {" nZT nZT nZT @@ -43741,109 +43054,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -43872,6 +43082,8 @@ nZT nZT nZT nZT +"} +(31,1,1) = {" nZT nZT nZT @@ -43921,8 +43133,6 @@ nZT nZT nZT nZT -"} -(35,1,1) = {" nZT nZT nZT @@ -43998,109 +43208,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -agZ -sdP -agZ -agZ -agZ -agZ -agZ -igF -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -igF -agZ -agZ -agZ -sdP -agZ -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -44178,8 +43285,6 @@ nZT nZT nZT nZT -"} -(36,1,1) = {" nZT nZT nZT @@ -44234,6 +43339,13 @@ nZT nZT nZT nZT +"} +(32,1,1) = {" +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -44255,109 +43367,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aON -cwO -cwO -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -igF -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -igF -agZ -agZ -agZ -agZ -agZ -agZ -cwO -cwO -gxr -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -44435,8 +43444,6 @@ nZT nZT nZT nZT -"} -(37,1,1) = {" nZT nZT nZT @@ -44512,109 +43519,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB -cwO -cwO -cwO -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -cwO -cwO -cwO -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -44693,7 +43597,7 @@ nZT nZT nZT "} -(38,1,1) = {" +(33,1,1) = {" nZT nZT nZT @@ -44769,109 +43673,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB -awB -awB -alU -alU -gPm -alU -agZ -agZ -agZ -agZ -dlN -agZ -dlN -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -dlN -agZ -dlN -agZ -agZ -agZ -qhB -bEe -qhB -qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -44949,8 +43750,6 @@ nZT nZT nZT nZT -"} -(39,1,1) = {" nZT nZT nZT @@ -45026,109 +43825,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB -awB -awB -alU -ikZ -seU -alU -alU -gPm -alU -agZ -agZ -agZ -agZ -agZ -dlN -agZ -dlN -agZ -agZ -agZ -agZ -agZ -igF -agZ -agZ -igF -agZ -agZ -igF -agZ -agZ -igF -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -igF -agZ -agZ -igF -agZ -agZ -igF -agZ -agZ -igF -agZ -agZ -agZ -agZ -dlN -agZ -dlN -agZ -agZ -agZ -agZ -qhB -bEe -qhB -qhB -phk -kYn -qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -45157,6 +43853,8 @@ nZT nZT nZT nZT +"} +(34,1,1) = {" nZT nZT nZT @@ -45206,8 +43904,6 @@ nZT nZT nZT nZT -"} -(40,1,1) = {" nZT nZT nZT @@ -45283,109 +43979,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB -awB -awB -aqb -ila -oSf -iur -oDI -lAP -alU -alU -gPm -gPm -alU -agZ -agZ -agZ -agZ -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -alU -alU -iRO -iRO -iRO -alU -iRO -iRO -iRO -alU -iRO -iRO -iRO -alU -alU -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -agZ -agZ -agZ -agZ -qhB -bEe -bEe -qhB -qhB -bVc -hCU -sIQ -icO -haZ -qsE -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -45463,8 +44056,6 @@ nZT nZT nZT nZT -"} -(41,1,1) = {" nZT nZT nZT @@ -45519,6 +44110,8 @@ nZT nZT nZT nZT +"} +(35,1,1) = {" nZT nZT nZT @@ -45540,109 +44133,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB -awB -awB -alU -pBc -tPB -vkL -mQy -bnA -alU -pBc -aNl -sjz -alU -alU -gPm -gPm -alU -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -alU -nOW -tBy -pBc -pBc -pcr -man -pBc -pBc -fTp -wFU -vKg -vKg -pBc -alU -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -qhB -bEe -bEe -qhB -qhB -rqR -dVb -nhj -qhB -rjD -mdm -jNL -hUA -nhj -qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -45706,10 +44196,15 @@ nZT nZT nZT nZT +sdP nZT +sdP nZT nZT nZT +agZ +agZ +igF nZT nZT nZT @@ -45720,8 +44215,6 @@ nZT nZT nZT nZT -"} -(42,1,1) = {" nZT nZT nZT @@ -45779,10 +44272,15 @@ nZT nZT nZT nZT +agZ +agZ +igF nZT nZT nZT +sdP nZT +sdP nZT nZT nZT @@ -45797,109 +44295,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB -awB -awB -alU -alU -alU -alU -pBc -aQu -alU -oFh -wPI -pBc -rcp -paP -aNl -sjz -alU -alU -iRO -alU -alU -gPm -alU -alU -gPm -alU -alU -gPm -alU -alU -gPm -alU -alU -pBc -pBc -pBc -pBc -gdt -pBc -pBc -aen -rzz -bpw -pBc -pBc -pBc -alU -alU -gPm -alU -alU -gPm -alU -alU -gPm -alU -alU -gPm -alU -alU -iRO -alU -qhB -xbx -dVb -cHF -wCB -nhj -ttI -nhj -qhB -nuy -nhj -qhB -qhB -qhB -qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -45972,13 +44367,13 @@ nZT nZT nZT nZT +"} +(36,1,1) = {" nZT nZT nZT nZT nZT -"} -(43,1,1) = {" nZT nZT nZT @@ -46054,112 +44449,107 @@ nZT nZT nZT nZT +nZT +nZT +nZT +nZT +aON +cwO +cwO +nZT +nZT +nZT agZ agZ agZ agZ agZ +igF +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT agZ agZ -agZ -agZ -aan -awB -awB -agZ -aiY -alU -nOW -tBy -pBc -pBc -aQu -alU -pBc -uin -pBc -pBc -pBc -wPI -pBc -alU -pBc -pBc -pBc -pBc -sDy -pBc -pBc -eKg -fvb -pBc -wPI -pBc -pBc -wPI -pBc -vDP -pBc -pBc -pBc -pBc -ofL -pBc -pBc -pBc -pBc -hQE -pBc -pBc -pBc -vDP -pBc -wPI -pBc -pBc -mYI -vDP -pBc -wPI -fCe -pBc -wPI -vDP -pBc -pBc -pBc -qhB -jig -mSo -qod -qod -qod -avx -nhj -qhB -nuy -nhj -nhj -rAA -sbr -qhB -agZ -vCn -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ +igF agZ agZ agZ nZT nZT nZT +cwO +cwO +gxr +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -46235,7 +44625,16 @@ nZT nZT nZT "} -(44,1,1) = {" +(37,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -46311,103 +44710,12 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB -sdP -sdP -cmn -csI -csI -wal -iGH -xNd -dBK -iGH -idf -fMC -iGH -dmU -lNx -tuX -laj -spc -spc -spc -spc -lyW -spc -spc -vPn -tFU -bjm -iHZ -ygp -eKZ -fJT -eKZ -drW -eKZ -eKZ -eKZ -eKZ -lFx -xSy -xSy -xSy -xSy -xSy -xSy -xSy -xSy -dNM -xSy -vxQ -xSy -xSy -vxQ -dNM -xSy -vxQ -xSy -xSy -vxQ -dNM -xSy -xSy -xSy -cxa -uIO -aSI -qJG -bYR -jRp -eIu -pCO -kPo -gul -pCO -hkG -mdm -mdm -fjO -sdP -sdP -awB -awB -rCi -agZ -agZ -agZ +cwO +cwO +cwO agZ agZ agZ @@ -46475,6 +44783,18 @@ nZT nZT nZT nZT +agZ +agZ +agZ +agZ +agZ +agZ +cwO +cwO +cwO +awB +awB +rCi nZT nZT nZT @@ -46491,8 +44811,6 @@ nZT nZT nZT nZT -"} -(45,1,1) = {" nZT nZT nZT @@ -46563,114 +44881,13 @@ nZT nZT nZT nZT +"} +(38,1,1) = {" nZT nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -sdP -agZ -aqx -alU -pBc -pBc -xJj -pBc -pBc -alU -wBQ -dbv -alU -alU -pBc -pcy -pBc -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -ejn -vDP -vDP -nHH -pBc -pBc -pBc -vDP -vlP -taE -pBc -pBc -fDV -pBc -pBc -pBc -pBc -pBc -pBc -pBc -pBc -vDP -pBc -pBc -pBc -pBc -pBc -vDP -pBc -pBc -pBc -pBc -pBc -vDP -rff -fCe -orZ -qhB -nhj -nhj -gfA -qhB -qhB -lcI -jbB -qhB -bax -nhj -fft -nhj -nhj -qhB -agZ -agZ -hkh -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -46748,10 +44965,24 @@ nZT nZT nZT nZT -"} -(46,1,1) = {" nZT nZT +aan +awB +awB +awB +awB +alU +alU +gPm +alU +agZ +agZ +agZ +agZ +dlN +agZ +dlN nZT nZT nZT @@ -46805,6 +45036,22 @@ nZT nZT nZT nZT +agZ +dlN +agZ +dlN +agZ +agZ +agZ +qhB +bEe +qhB +qhB +awB +awB +awB +awB +rCi nZT nZT nZT @@ -46825,109 +45072,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -sdP -agZ -agZ -cmn -csI -csI -spT -pBc -pBc -alU -rQe -wzU -pBc -alU -alU -iRO -alU -alU -sDz -pVa -aIY -cWf -pOs -ecR -vDP -pBc -pBc -pBc -vDP -nHH -pBc -pBc -alU -alU -alU -alU -alU -alU -oRk -alU -alU -alU -alU -alU -pBc -pBc -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -azA -qhB -qhB -nlL -qhB -qhB -uCJ -ptF -kYn -qhB -nhj -nhj -pRo -mdm -mdm -fjO -agZ -agZ -sdP -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -46994,6 +45138,8 @@ nZT nZT nZT nZT +"} +(39,1,1) = {" nZT nZT nZT @@ -47005,8 +45151,6 @@ nZT nZT nZT nZT -"} -(47,1,1) = {" nZT nZT nZT @@ -47080,111 +45224,91 @@ nZT nZT nZT nZT +aan +awB +awB +awB +awB +alU +ikZ +seU +alU +alU +gPm +alU +agZ +agZ +agZ +agZ +agZ +dlN +agZ +dlN +nZT nZT nZT agZ agZ +igF +agZ agZ +igF agZ agZ +igF agZ agZ +igF +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT agZ agZ -aan -awB -sdP -sdP -sdP -alU -vlP -taE -xJj -pBc -pBc -alU -alU -jff -alU -alU +igF agZ agZ +igF agZ -alU -ojZ -xhz -lBY -liN -jUd -pBc -vDP -pBc -pBc -pBc -vDP -nHH -pBc -pBc -alU -nTT -aRj -ePs -boi -rqN -xdH -qSB -afy -oBd -wVI -alU -alU -alU -alU -vXl -rBs -gCz -jRb -grF -jqX -mDo -czR -cCG -vDP -pBc -pBc -pBc -tQJ -vDP -asu -alU -xCB -xCB -xCB -qhB -qhB -dcv -qhB -qhB -nhj -nhj -fft -vpG -xgM -qhB -sdP -sdP -sdP -awB -rCi agZ +igF agZ agZ +igF +nZT +nZT +nZT agZ +dlN agZ +dlN agZ agZ agZ agZ +qhB +bEe +qhB +qhB +phk +kYn +qhB +awB +awB +awB +awB +rCi nZT nZT nZT @@ -47262,8 +45386,6 @@ nZT nZT nZT nZT -"} -(48,1,1) = {" nZT nZT nZT @@ -47273,6 +45395,8 @@ nZT nZT nZT nZT +"} +(40,1,1) = {" nZT nZT nZT @@ -47339,27 +45463,52 @@ nZT nZT nZT nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +awB +awB +aqb +ila +oSf +iur +oDI +lAP +alU +alU +gPm +gPm +alU agZ agZ agZ agZ -agZ -agZ -agZ -agZ -agZ -aan -awB sdP +nZT +nZT +agZ +agZ +agZ +agZ agZ -aqx -alU -alU -alU -pTf -alU -alU -hrT agZ agZ agZ @@ -47368,71 +45517,22 @@ agZ agZ agZ alU -sRj -gZx -tAR -ful -wUt -glT -hNR -glT -pVA -pBc -vDP -nHH -pBc -pBc alU -agV -eui -rAv -lUg -yad -pPj -mRi -skw -rTl -qPY -boi -oZh -bCd -boi -dEy -rLk -xio -gNv -jaQ -pcZ -jaQ -orS -xio -vDP -pBc -pBc -pBc -pBc -vDP -asu +iRO +iRO +iRO +alU +iRO +iRO +iRO +alU +iRO +iRO +iRO +alU alU -xCB -xCB -xCB -xCB -xCB -jGE -xCB -qhB -qhB -qhB -wJG -qhB -qhB -qhB agZ agZ -hkh -awB -rCi agZ agZ agZ @@ -47442,6 +45542,39 @@ agZ agZ agZ agZ +agZ +nZT +nZT +sdP +agZ +agZ +agZ +agZ +qhB +bEe +bEe +qhB +qhB +bVc +hCU +sIQ +icO +haZ +qsE +awB +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -47520,7 +45653,16 @@ nZT nZT nZT "} -(49,1,1) = {" +(41,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -47596,27 +45738,34 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -alT aan awB +awB +awB +awB +alU +pBc +tPB +vkL +mQy +bnA +alU +pBc +aNl +sjz +alU +alU +gPm +gPm +alU sdP +nZT +nZT +agZ +agZ +agZ agZ agZ -cmn -jyw -jyw -spT -jtO -isB -hrT agZ agZ agZ @@ -47625,71 +45774,22 @@ agZ agZ agZ alU -mIo -pBc -ogk -pBc -hsC -pBc -vDP -pBc -wZN -pBc -vDP -nHH -pBc +nOW +tBy pBc -alU -bFE -eMW -eMW -boi -jPr -jwr -bii -bIg -rQp -sPn -jaV -eff -eff -boi -otN -nyu -nyi -jMj -eoL -eAV -wXr -lxb -hJZ -vDP pBc +pcr +apQ pBc pBc +fTp +wFU +vKg +vKg pBc -gQL -asu alU -xCB -xCB -xCB -xCB -xCB -jGE -xCB -qhB -nhj -nhj -pRo -hbN -hbN -fjO agZ agZ -sdP -awB -rCi agZ agZ agZ @@ -47699,6 +45799,39 @@ agZ agZ agZ agZ +agZ +nZT +nZT +sdP +qhB +bEe +bEe +qhB +qhB +rqR +dVb +nhj +qhB +rjD +mdm +jNL +hUA +nhj +qhB +awB +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -47777,7 +45910,16 @@ nZT nZT nZT "} -(50,1,1) = {" +(42,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -47853,109 +45995,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -sdP -agZ -agZ +awB +awB +awB +alU +alU +alU alU pBc +aQu +alU +oFh +wPI pBc -xJj -mXP -bkc -hrT -agZ -agZ -agZ -agZ -agZ -agZ -agZ +rcp +paP +aNl +sjz +alU +alU +iRO +alU +alU +gPm +alU +alU +gPm +alU +alU +gPm +alU +alU +gPm +alU alU -lgV -rku -wCf -hdJ -vMP -cZc -vDP pBc -wZN pBc -vDP -nHH pBc pBc -alU -kmC -rQo -hkY -boi -miz -mAc -roa -cLe -aDF -hlo -boi -ctw -jVM -boi -xPr -rLk -uVP -iho -xio -xio -xio -xio -xio -vDP +gdt +pBc pBc +aen +rzz +bpw pBc pBc pBc -vDP -asu alU -xCB -dXQ -xCB -xCB -xCB -jGE -xCB +alU +gPm +alU +alU +gPm +alU +alU +gPm +alU +alU +gPm +alU +alU +iRO +alU qhB +xbx +dVb +cHF +wCB nhj +ttI nhj -fft -nhj +qhB +nuy nhj qhB -agZ -agZ -sdP +qhB +qhB +qhB +awB +awB +awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -48034,7 +46167,16 @@ nZT nZT nZT "} -(51,1,1) = {" +(43,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -48110,109 +46252,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -sdP -sdP -glV +awB +agZ +aiY alU -rff +nOW +tBy pBc -xJj pBc -gKz -hrT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -alU -alU -alU -alU -alU -alU +aQu alU +pBc +uin +pBc +pBc +pBc +wPI +pBc alU +pBc +pBc +pBc +pBc +sDy +pBc +pBc +eKg +fvb +pBc +wPI +pBc +pBc +wPI +pBc vDP -iDw -vDP -vDP -clt -vDP -vDP -alU -boi -boi -boi -boi -mYr -mYr -mYr -boi -sUq -boi -boi -boi -boi -boi -mnN -rLk -wsL -cFp -xio -xio -xio -xio -xio +pBc +pBc +pBc +pBc +ofL +pBc +pBc +pBc +pBc +hQE +pBc +pBc +pBc vDP pBc +wPI +pBc pBc +mYI +vDP pBc +wPI +fCe pBc +wPI vDP -asu -alU -xCB -xCB -xCB -xCB -xCB -jGE -xCB +pBc +pBc +pBc qhB +jig +mSo +qod +qod +qod +avx nhj -nhj -fft +qhB +nuy nhj nhj +rAA +sbr qhB -sdP -sdP -hkh +agZ +vCn +awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -48291,7 +46424,16 @@ nZT nZT nZT "} -(52,1,1) = {" +(44,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -48367,109 +46509,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB +awB +sdP sdP -agZ -agZ cmn -jyw -rdY -spT -pBc -pBc -hrT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -gyk -xSs -yhd -mxG -cvd -oYa -oYa -cvd -oYa -mPa -fhy -vDP -nHH -vDP -hTZ -xYk -gqf -xYk -xYk -kwV -vrA -cEc -btx -sNR -fLR -vlx -fwU -vlx -vRA -ajC -shY -puO -jyX -tLs -xio -xio -xio -jup -xio -vDP -vDP -vDP -vDP -vDP -vDP -asu -alU -xCB -tZN -kYF -xCB -xCB -jGE -xCB -qhB -nhj -nhj -pRo -hbN -hbN +csI +csI +wal +iGH +xNd +dBK +iGH +idf +fMC +iGH +dmU +lNx +tuX +laj +spc +spc +spc +spc +lyW +spc +spc +vPn +tFU +bjm +iHZ +ygp +eKZ +fJT +eKZ +drW +eKZ +eKZ +eKZ +eKZ +lFx +xSy +xSy +xSy +xSy +xSy +xSy +xSy +xSy +dNM +xSy +vxQ +xSy +xSy +vxQ +dNM +xSy +vxQ +xSy +xSy +vxQ +dNM +xSy +xSy +xSy +cxa +uIO +aSI +qJG +bYR +jRp +eIu +pCO +kPo +gul +pCO +hkG +mdm +mdm fjO -agZ -agZ +sdP sdP awB +awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -48548,7 +46681,16 @@ nZT nZT nZT "} -(53,1,1) = {" +(45,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -48624,109 +46766,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB sdP agZ -agZ +aqx alU pBc pBc xJj pBc pBc -hrT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -gyk -fhy -lOA -mxG -oYa -oYa -oYa -oYa -oYa -qPs -dOX -xif -nqA -iPa -ard -gTz -kLo -kLo -kLo -pbD -oRj -oLl -irp -gTz -kLo -kLo -kLo -pbD -skZ -eER -aby -ewa -wsL -fzg -xio -xio -xio -xio -xio +alU +wBQ +dbv +alU +alU +pBc +pcy +pBc +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +ejn +vDP +vDP +nHH +pBc +pBc +pBc +vDP +vlP +taE +pBc +pBc +fDV +pBc +pBc +pBc +pBc +pBc +pBc +pBc +pBc vDP pBc pBc pBc pBc +pBc vDP -asu -alU -mjF -hpp -cow -xCB -xCB -jGE -xCB +pBc +pBc +pBc +pBc +pBc +vDP +rff +fCe +orZ qhB nhj nhj +gfA +qhB +qhB +lcI +jbB +qhB +bax +nhj fft nhj nhj qhB agZ agZ -sdP +hkh awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -48805,7 +46938,16 @@ nZT nZT nZT "} -(54,1,1) = {" +(46,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -48881,109 +47023,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB sdP -hxk +agZ +agZ cmn -hnf +csI csI spT -sGH -vtq -hrT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -gyk -rqb -lOA -mxG -oYa -oYa -oYa -oYa -oYa -mAT -kqH -vDP -sBN +pBc +pBc +alU +rQe +wzU +pBc +alU +alU +iRO +alU +alU +sDz +pVa +aIY +cWf +pOs +ecR vDP -ard -iOJ -pvG -pvG -lfd -rYY -oRj -ueQ -irp -lNm -eHV -pvG -pvG -qCL -nzC -eER -tpy -sqn -uVP -itc -xio -xio -xio -xio -xio +pBc +pBc +pBc vDP +nHH pBc pBc +alU +alU +alU +alU +alU +alU +oRk +alU +alU +alU +alU +alU pBc pBc vDP -asu -alU -xCB -xCB -xCB -xCB -xCB -jGE -xCB +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +azA +qhB +qhB +nlL +qhB +qhB +uCJ +ptF +kYn qhB nhj nhj pRo -hbN -hbN +mdm +mdm fjO +agZ +agZ sdP -eua -awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -49062,7 +47195,16 @@ nZT nZT nZT "} -(55,1,1) = {" +(47,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -49138,109 +47280,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB -agZ -agZ +sdP +sdP +sdP alU -kTB -pBc +vlP +taE xJj pBc -nUJ -cwA -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sQA -cht -lOA -mxG -oYa -oYa -oYa -oYa -oYa -ygu -fhy -vDP -gBv +pBc +alU +alU +jff +alU +alU +nZT +nZT +nZT +alU +ojZ +xhz +lBY +liN +jUd +pBc vDP -ard -iOJ -pvG -pvG -nai -wSL -oRj -veY -aNh -irp -iOJ -pvG -pvG -qCL -pMZ -aiL -njC -hzO -fik -wBS -gbI -aST -uiC -wpN -xwq +pBc +pBc +pBc vDP +nHH pBc pBc +alU +nTT +aRj +ePs +boi +rqN +xdH +qSB +afy +oBd +wVI +alU +alU +alU +alU +vXl +rBs +gCz +jRb +grF +jqX +mDo +czR +cCG +vDP +pBc pBc pBc -gQL +tQJ +vDP asu -iRO -xCB -xCB -xCB +alU xCB xCB -jGE xCB -nlL +qhB +qhB +dcv +qhB +qhB nhj nhj fft -nhj -nhj +vpG +xgM qhB -agZ -agZ -awB +sdP +sdP +sdP awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -49319,7 +47452,16 @@ nZT nZT nZT "} -(56,1,1) = {" +(48,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -49395,72 +47537,63 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB -awB -awB +sdP +agZ +aqx +hrT +hrT +hrT +pTf +hrT +hrT +hrT +nZT +nZT +nZT +nZT +nZT +nZT +nZT alU +sRj +gZx +tAR +ful +wUt +glT +hNR +glT +pVA pBc +vDP +nHH pBc -xJj pBc -rCC -cwA -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sQA -dTT -lOA -mxG -oYa -oYa -oYa -oYa -oYa -hOL -fhy -vDP -kQx -vDP -ard -iOJ -pvG -pvG -nai -evc -eyC -cui -irp -irp -iOJ -pvG -pvG -vHd -eSz -dbO -xio -gNm +alU +agV +eui +rAv +lUg +yad +pPj +mRi +skw +rTl +qPY +boi +oZh +bCd +boi +dEy +rLk xio -pGU +gNv jaQ -kIr jaQ -sRR +jaQ +orS xio vDP pBc @@ -49469,7 +47602,7 @@ pBc pBc vDP asu -iRO +alU xCB xCB xCB @@ -49477,27 +47610,27 @@ xCB xCB jGE xCB -nlL -nhj -nhj -fft -nhj -nhj qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ +qhB +qhB +wJG +qhB +qhB +qhB agZ agZ +hkh +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -49576,7 +47709,7 @@ nZT nZT nZT "} -(57,1,1) = {" +(49,1,1) = {" nZT nZT nZT @@ -49652,81 +47785,81 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aEe aan awB -awB -geE -awB +sdP +agZ +agZ +rns +jyw +jyw +jYU +jtO +isB +hrT +nZT +nZT +nZT +nZT +nZT +nZT +nZT alU +mIo pBc +ogk +pBc +hsC pBc -xJj -tLv -wSQ -cwA -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sQA -fhy -lOA -dnb -oYa -oYa -oYa -oYa -oYa -mPa -fhy vDP -gBv +pBc +wZN +pBc vDP -ard -iOJ -pvG -pvG -nai -qcw -rXo -cui -irp -irp -iOJ -pvG -pvG -qCL -hER -dbO -qCe -kyF -iQY -nKS -bBm -nKS -jau -wcP -qCe +nHH +pBc +pBc +alU +bFE +eMW +eMW +boi +jPr +jwr +bii +bIg +rQp +sPn +jaV +eff +eff +boi +otN +nyu +nyi +jMj +eoL +eAV +wXr +lxb +hJZ vDP pBc pBc pBc pBc -vDP +gQL asu -iRO +alU xCB xCB xCB @@ -49734,27 +47867,27 @@ xCB xCB jGE xCB -nlL -nhj -nhj -fft +qhB nhj nhj -qhB -awB -geE -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ +pRo +hbN +hbN +fjO agZ agZ +sdP +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -49833,7 +47966,16 @@ nZT nZT nZT "} -(58,1,1) = {" +(50,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -49909,83 +48051,74 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB -awB -awB -alU -kTB -sdb -xJj -gKz -rpm -hrT -agZ -agZ -agZ -agZ +sdP agZ agZ -aiY -gyk -hkU -lOA -mgy -oYa -oYa -oYa -oYa -oYa -mPa -sJp -vDP -hYw -vDP -vDP -vDP -vDP -pvG -pVY -irp -irp -cui -irp -irp -wNs -pvG -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP +hrT +pyG +pyG +rKj +mXP +bkc +hrT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +alU +lgV +rku +wCf +hdJ +vMP +cZc vDP +pBc +wZN +pBc vDP +nHH +pBc +pBc +alU +kmC +rQo +hkY +boi +miz +mAc +roa +cLe +aDF +hlo +boi +ctw +jVM +boi +xPr +rLk +uVP +iho +xio +xio +xio +xio +xio vDP +pBc +pBc +pBc +pBc vDP -azA +asu alU xCB -xtX +dXQ xCB xCB xCB @@ -49995,23 +48128,23 @@ qhB nhj nhj fft -uAQ +nhj nhj qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ agZ agZ +sdP +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -50090,7 +48223,16 @@ nZT nZT nZT "} -(59,1,1) = {" +(51,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -50166,79 +48308,70 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB -awB -awB -alU +sdP +sdP +glV +hrT +dOG +pyG +rKj +pyG +gKz +hrT +nZT +nZT +nZT +nZT +nZT +nZT +nZT alU alU -pTf alU alU -hrT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -gyk -aho -lOA -mxG -oYa -oYa -oYa -oYa -oYa -mPa -kqH -vDP -kQx -wDA -pBc -pBc alU -kIk alU -aFk -mfk -aFk -mfk -aFk alU -kIk alU -pBc -pBc -pBc vDP -pBc -pBc -pBc -man -man +iDw +vDP +vDP +clt +vDP +vDP +alU +boi +boi +boi +boi +mYr +mYr +mYr +boi +sUq +boi +boi +boi +boi +boi +mnN +rLk +wsL +cFp +xio +xio +xio +xio +xio vDP pBc pBc pBc pBc -dsu vDP -man -man asu alU xCB @@ -50249,32 +48382,17 @@ xCB jGE xCB qhB +nhj +nhj +fft +nhj +nhj qhB -qhB -wJG -qhB -qhB -qhB -awB -awB -awB +sdP +sdP +hkh awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -nZT -nZT -nZT -nZT -nZT -nZT nZT nZT nZT @@ -50346,11 +48464,6 @@ nZT nZT nZT nZT -"} -(60,1,1) = {" -nZT -nZT -nZT nZT nZT nZT @@ -50366,6 +48479,8 @@ nZT nZT nZT nZT +"} +(52,1,1) = {" nZT nZT nZT @@ -50423,109 +48538,127 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB -awB -awB -alU -pBc -pBc -xJj -pBc -bTd -hrT -agZ -agZ -agZ -agZ -agZ -agZ -aiY -gyk -rzT -iFX -nSK -nSK -nSK -nSK -nSK -nSK -hYH -fhy -vDP -kQx -pBc -pBc -pBc -alU -rRn -alU -bfj -rIt -ctU -rIt -bfj -alU -rRn -alU -cDT -pBc -qMA -gvu -jrJ -jrJ -aSR -jrJ -jrJ -gvu -jrJ -jrJ -jrJ -jrJ -jrJ -gvu -jrJ -jrJ -mjL -alU -xCB -xtX -xCB -xCB -xCB -jGE -xCB -qhB -nhj -nhj -fft -uAQ -uAQ -qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +sdP +agZ +agZ +rns +jyw +rdY +jYU +pyG +pyG +hrT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +gyk +xSs +yhd +mxG +cvd +oYa +oYa +cvd +oYa +mPa +fhy +vDP +nHH +vDP +hTZ +xYk +gqf +xYk +xYk +kwV +vrA +cEc +btx +sNR +fLR +vlx +fwU +vlx +vRA +ajC +shY +puO +jyX +tLs +xio +xio +xio +jup +xio +vDP +vDP +vDP +vDP +vDP +vDP +asu +alU +xCB +tZN +kYF +xCB +xCB +jGE +xCB +qhB +nhj +nhj +pRo +hbN +hbN +fjO +agZ +agZ +sdP +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -50604,7 +48737,16 @@ nZT nZT nZT "} -(61,1,1) = {" +(53,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -50680,109 +48822,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB -awB -awB -alU -pBc -pBc -xJj -pBc -pBc -hrT -agZ -agZ -agZ -agZ -agZ +sdP agZ agZ +hrT +pyG +pyG +rKj +pyG +pyG +hrT +nZT +nZT +nZT +nZT +nZT +nZT +nZT gyk -rcR -iIi -bJO -vsz -tzh -hjX -hjX -fFi -dPn fhy +lOA +mxG +oYa +oYa +oYa +oYa +oYa +qPs +dOX +xif +nqA +iPa +ard +gTz +kLo +kLo +kLo +pbD +oRj +oLl +irp +gTz +kLo +kLo +kLo +pbD +skZ +eER +aby +ewa +wsL +fzg +xio +xio +xio +xio +xio vDP -kQx -pBc -pBc -pBc -alU -rRn -alU -aoK -rIt -ctU -rIt -aoK -alU -rRn -alU -pBc -pBc -asu -vDP -pBc -pBc -pBc -pBc -pBc -vDP -pBc pBc pBc pBc pBc vDP -pBc -pBc -pBc +asu alU -xCB -xCB -xCB +mjF +hpp +cow xCB xCB jGE xCB qhB -erh +nhj nhj fft -fOb -npo +nhj +nhj qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ agZ agZ +sdP +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -50861,7 +48994,16 @@ nZT nZT nZT "} -(62,1,1) = {" +(54,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -50937,84 +49079,75 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB -awB -awB -alU -pBc -pBc -xJj -pBc -pBc +sdP +hxk +rns +hnf +pxU +jYU +sGH +vtq hrT -agZ -agZ -agZ -agZ -hvg -kJw -kJw -kJw -duZ -duZ -duZ -bxW -duZ -mNY -mNY -mNY -bST -mNY +nZT +nZT +nZT +nZT +nZT +nZT +nZT +gyk +rqb +lOA +mxG +oYa +oYa +oYa +oYa +oYa +mAT +kqH +vDP +sBN +vDP +ard +iOJ +pvG +pvG +lfd +rYY +oRj +ueQ +irp +lNm +eHV +pvG +pvG +qCL +nzC +eER +tpy +sqn +uVP +itc +xio +xio +xio +xio +xio vDP -kQx -pBc pBc pBc -alU -rRn -alU -aoK -rIt -ctU -rIt -swK -alU -rRn -alU pBc pBc -asu -vDP -vDP -vDP vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -jkW -jkW -rbz +asu +alU +xCB +xCB +xCB xCB xCB jGE @@ -51022,24 +49155,24 @@ xCB qhB nhj nhj -fft -uAQ -uAQ -qhB -awB -awB +pRo +hbN +hbN +fjO +sdP +eua awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -51118,7 +49251,16 @@ nZT nZT nZT "} -(63,1,1) = {" +(55,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -51194,109 +49336,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB -awB -awB -alU -pBc -pBc -xJj -vKg -pBc -hrT agZ agZ -agZ -agZ -hvg -kJw -xRK -bHX -wDL -duZ -eZF -reN -rIh -mNY -mTN -kfl -pos -pMj +hrT +kTB +pyG +rKj +pyG +nUJ +cwA +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sQA +cht +lOA +mxG +oYa +oYa +oYa +oYa +oYa +ygu +fhy vDP -kQx -pBc -wLz -pBc -alU -alU -alU -lBG -rIt -ctU -rIt -map -alU -alU -alU +gBv +vDP +ard +iOJ +pvG +pvG +nai +wSL +oRj +veY +aNh +irp +iOJ +pvG +pvG +vHd +pMZ +aiL +njC +hzO +fik +wBS +gbI +aST +uiC +wpN +xwq +vDP +pBc pBc pBc +pBc +gQL asu -vDP -ukT -ukT -aQP -ukT -ukT -aQP -ukT -ukT -aQP -ukT -ukT -aQP -ukT -ukT -aQP -ukT -ukT -jkW -rbz +iRO +xCB +xCB +xCB xCB xCB jGE xCB -qhB +nlL nhj nhj fft -uAQ -wsJ +nhj +nhj qhB -awB -awB +agZ +agZ awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -51375,7 +49508,16 @@ nZT nZT nZT "} -(64,1,1) = {" +(56,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -51451,83 +49593,74 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB awB awB -alU -pBc -eXw -xJj -vKg -pBc +hrT +pyG +pyG +rKj +pyG +rCC cwA -agZ -agZ -agZ -agZ -agZ -yjF -sgW -aJr -bzb -duZ -nvK -reN -nvK -mNY -lWU -vgx -oZV -pMj +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sQA +dTT +lOA +mxG +oYa +oYa +oYa +oYa +oYa +hOL +fhy vDP kQx -pBc -vKg -vDP -vDP -dNa -xCd -dHx -rIt -ctU -rIt -rIt -mlE -dNa vDP +ard +iOJ +pvG +pvG +nai +evc +eyC +cui +irp +irp +iOJ +pvG +pvG +vHd +eSz +dbO +xio +gNm +xio +pGU +jaQ +jaQ +jaQ +sRR +xio vDP -wLz -iQq +pBc +pBc +pBc +pBc vDP -ukT -ukT -epf -ukT -ukT -xRR -ukT -ukT -epf -ukT -ukT -xRR -ukT -vQt -epf -ukT -ukT -lRA +asu +iRO +xCB +xCB xCB xCB xCB @@ -51537,23 +49670,23 @@ nlL nhj nhj fft -npo -fOb +nhj +nhj qhB awB awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -51632,7 +49765,16 @@ nZT nZT nZT "} -(65,1,1) = {" +(57,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -51708,83 +49850,74 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB +geE awB -awB -alU -pBc -aSZ -xJj -vKg -pBc +hrT +pyG +pyG +rKj +ydi +wSQ cwA -agZ -agZ -agZ -agZ -agZ -yjF -pXv -bXn -bSu -lWb -koK -bAO -nvK -mNY -dKK +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sQA +fhy +lOA +dnb +oYa +oYa +oYa +oYa +oYa +mPa fhy -jyb -kMl vDP -kQx -pBc +gBv +vDP +ard +iOJ +pvG +pvG +nai +qcw +rXo +cui +irp +irp +iOJ +pvG +pvG +vHd +hER +dbO +qCe +kyF +iQY +nKS +bBm +pcZ +jau +wcP +qCe +vDP pBc pBc -dyZ -dNa -wJI -rww -fyz -xRG -fyz -yar -mlE -dNa -dyZ pBc pBc -asu vDP -jUB -ukT -aQP -jUB -ukT -aQP -jUB -ukT -aQP -jUB -ukT -aQP -jUB -ukT -aQP -jUB -ukT -lRA +asu +iRO +xCB +xCB xCB xCB xCB @@ -51792,25 +49925,16 @@ jGE xCB nlL nhj -asK +nhj fft -uAQ -uAQ +nhj +nhj qhB awB -awB +geE awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -51888,10 +50012,6 @@ nZT nZT nZT nZT -"} -(66,1,1) = {" -nZT -nZT nZT nZT nZT @@ -51901,6 +50021,8 @@ nZT nZT nZT nZT +"} +(58,1,1) = {" nZT nZT nZT @@ -51965,109 +50087,120 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB -awB -awB -alU -pBc -pBc -xJj -tLv -pBc -hrT -agZ -agZ -agZ -agZ -agZ -kJw -scN -aJr -txG -duZ -nvK -reN -nvK -mNY -sTF -afr -jyb -xJp -vDP -kQx -pBc -pBc -pBc -vDP -dNa -vJH -pbZ -oJj -oJj -oJj -uhb -mlE -eTd -vDP -pBc -pBc -asu -vDP -aQP -dZQ -aQP -aQP -iow -aQP -aQP -iow -aQP -aQP -iow -aQP -aQP -iow -aQP -aQP -iow -jkW -iif -moz -moz -jRR -xCB -qhB -nhj -pQa -fft -uAQ -npo -qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +awB +awB +hrT +kTB +sdb +rKj +gKz +rpm +hrT +nZT +nZT +nZT +nZT +nZT +agZ +aiY +gyk +hkU +lOA +mgy +oYa +oYa +oYa +oYa +oYa +mPa +sJp +vDP +hYw +vDP +vDP +vDP +vDP +pvG +pVY +irp +irp +cui +irp +irp +wNs +pvG +vDP +alU +alU +alU +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +azA +alU +xCB +xtX +xCB +xCB +xCB +jGE +xCB +qhB +nhj +nhj +fft +uAQ +nhj +qhB +awB +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -52146,7 +50279,16 @@ nZT nZT nZT "} -(67,1,1) = {" +(59,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -52222,109 +50364,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB awB awB -alU -pBc -pBc -xJj -pBc -pBc hrT +hrT +hrT +pTf +hrT +hrT +hrT +nZT +nZT +nZT +nZT +nZT agZ agZ -agZ -agZ -agZ -kJw -duZ -duZ -duZ -duZ -dmW -reN -nvK -mNY -dOq -gbD -jyb -fhy +gyk +aho +lOA +mxG +oYa +oYa +oYa +oYa +oYa +mPa +kqH vDP kQx +wDA +pBc +pBc +alU +kIk +alU +aFk +mfk +aFk +mfk +aFk +alU +kIk +alU pBc pBc pBc vDP -dNa -mtw -tPi -tPi -tPi -tPi -syU -hvC -dNa +pBc +pBc +pBc +man +man vDP pBc pBc -asu +pBc +pBc +dsu vDP -ukT -ukT -cuD -ukT -nHe -oWY -grG -sro -fsO -aQP -lLr -cuD -nXR -ukT -ukT -aQP -dYM -jkW -kut +man +man +asu +alU +xCB xCB xCB xCB xCB +jGE +xCB +qhB +qhB +qhB +wJG +qhB qhB -nhj -nhj -fft -uAQ -uAQ qhB awB awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -52403,7 +50536,16 @@ nZT nZT nZT "} -(68,1,1) = {" +(60,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -52479,93 +50621,84 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB awB awB -alU -pBc -pBc -xJj -pBc -pBc hrT +pyG +pyG +rKj +pyG +bTd +hrT +nZT +nZT +nZT +nZT +nZT agZ -agZ -agZ -agZ -agZ -kJw -bxO -aJr -txG -duZ -cAB -reN -nvK -vDP -vDP -vDP -rng -vDP +aiY +gyk +rzT +iFX +nSK +nSK +nSK +nSK +nSK +nSK +hYH +fhy vDP kQx pBc pBc pBc -vDP -rSS -wPD -vDP -vDP -vDP -vDP -vDP -aSH -rSS -vDP -pBc +alU +rRn +alU +bfj +rIt +ctU +rIt +bfj +alU +rRn +alU +cDT pBc -asu -vDP -ukT -ukT -jfe -ukT -xmh -oZI -qRM -mKW -wyq -jAm -sPX -aFU -aFU -aFU -aFU -jAm -sDi -jkW +qMA +gvu +jrJ +jrJ +aSR +jrJ +jrJ +gvu +jrJ +jrJ +jrJ +jrJ +jrJ +gvu +jrJ +jrJ +mjL +alU xCB +xtX xCB xCB xCB +jGE xCB qhB -aqA +nhj nhj fft -fOb +uAQ uAQ qhB awB @@ -52573,15 +50706,6 @@ awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -52659,8 +50783,6 @@ nZT nZT nZT nZT -"} -(69,1,1) = {" nZT nZT nZT @@ -52670,6 +50792,8 @@ nZT nZT nZT nZT +"} +(61,1,1) = {" nZT nZT nZT @@ -52736,109 +50860,118 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB -awB -awB -alU -pBc -pBc -xJj -xkc -pBc -hrT -agZ -agZ -agZ -agZ -agZ -yjF -gqZ -bXn -bSu -fJZ -koK -eUU -phz -qel -weP -weP -hsH -nFD -jNW -gZi -pBc -pBc -pBc -vDP -pBc -odg -quX -pBc -pBc -aSZ -etw -rJO -pBc -vDP -pBc -pBc -asu -vDP -ukT -ukT -heB -nDg -mzx -pJN -wjI -tcI -rcI -qTg -jQq -kYQ -stN -ukT -ukT -oUL -ion -lRA -xCB -xCB -xCB -xCB -xCB -qhB -nhj -nhj -fft -uAQ -uAQ -qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +awB +awB +hrT +pyG +pyG +rKj +pyG +pyG +hrT +nZT +nZT +nZT +nZT +nZT +agZ +agZ +gyk +rcR +iIi +bJO +vsz +tzh +hjX +hjX +fFi +dPn +fhy +vDP +kQx +pBc +pBc +pBc +alU +rRn +alU +aoK +rIt +ctU +rIt +aoK +alU +rRn +alU +pBc +pBc +asu +vDP +pBc +pBc +pBc +pBc +pBc +vDP +pBc +pBc +pBc +pBc +pBc +vDP +pBc +pBc +pBc +alU +xCB +xCB +xCB +xCB +xCB +jGE +xCB +qhB +erh +nhj +fft +fOb +npo +qhB +awB +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -52917,7 +51050,16 @@ nZT nZT nZT "} -(70,1,1) = {" +(62,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -52993,109 +51135,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB awB awB +hrT +pyG +pyG +rKj +pyG +pyG +hrT +nZT +nZT +nZT +nZT +hvg +kJw +kJw +kJw +duZ +duZ +duZ +bxW +duZ +mNY +mNY +mNY +bST +mNY +vDP +kQx +pBc +pBc +pBc alU +rRn alU +aoK +rIt +ctU +rIt +swK alU -pTf -alU +rRn alU -hrT -agZ -agZ -agZ -agZ -agZ -yjF -cQA -knC -dKo -duZ -nvK -rTM -nvK +pBc +pBc +asu vDP vDP vDP vDP -aib vDP vDP vDP vDP vDP vDP -pBc -jan -pBc -pBc -pBc -pBc -pBc -pBc -pBc vDP -pBc -fCe -uvC vDP -aQP -iow -aQP -aQP -eqs -fcz -qmp -qmp -whM -ePD -xMv -epL -evT -ioV -ukT -fGa -ion -lRA -xCB -xCB +vDP +vDP +vDP +vDP +vDP +jkW +jkW +rbz xCB xCB +jGE xCB qhB -qhB -qhB -wJG -qhB -qhB +nhj +nhj +fft +uAQ +uAQ qhB awB awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -53174,7 +51307,16 @@ nZT nZT nZT "} -(71,1,1) = {" +(63,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -53250,109 +51392,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB awB awB -alU -pBc -pBc -xJj -pBc -fcZ hrT -agZ -agZ -agZ -agZ -agZ +pyG +pyG +rKj +siP +pyG +hrT +nZT +nZT +nZT +nZT +hvg kJw +xRK +bHX wDL -rab -jam -duZ -haq -rTM -ano duZ -oMg -sbm -dyJ -dvO -evN -gyx -mtp -sbm -wvD -xWZ -pBc -pBc -pBc -pBc -pBc -pBc -pBc +eZF +reN +rIh +mNY +mTN +kfl +pos +pMj +vDP +kQx pBc +wLz pBc -vDP +alU +alU +alU +lBG +rIt +ctU +rIt +map +alU +alU +alU pBc pBc asu vDP ukT ukT -cuD +aQP ukT -nHe -mBn -qgv -fsp -wbO -woV ukT +aQP ukT ukT +aQP +ukT +ukT +aQP +ukT +ukT +aQP ukT ukT -woV -ion jkW +rbz xCB xCB -xCB -xCB +jGE xCB qhB nhj nhj fft -nhj -nhj +uAQ +wsJ qhB awB awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -53431,7 +51564,16 @@ nZT nZT nZT "} -(72,1,1) = {" +(64,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -53507,109 +51649,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB awB awB -alU -pBc -pBc -xJj -pBc -pBc hrT -agZ -agZ -agZ -agZ -agZ -kJw -duZ -duZ -duZ +pyG +eXw +rKj +siP +pyG +cwA +nZT +nZT +nZT +nZT +nZT +yjF +sgW +aJr +bzb duZ nvK -sRD -dBj -duZ -duZ -xWZ -mOn -jXi -rpN -xXp -xXp -xWZ -xWZ -aUV -alU -alU -alU -alU -alU -alU -alU -alU -alU -alU +reN +nvK +mNY +lWU +vgx +oZV +pMj vDP +kQx pBc -asu +vKg +vDP +vDP +dNa +xCd +dHx +rIt +ctU +rIt +rIt +mlE +dNa +vDP +vDP +wLz +iQq vDP ukT ukT -jfe +epf ukT -xmh -xPQ -eYd -eYd -nwM -aQP ukT +xRR ukT -heB ukT +epf ukT -aQP -wkX -jkW -xCB +ukT +xRR +ukT +vQt +epf +ukT +ukT +lRA xCB xCB xCB +jGE xCB -qhB +nlL nhj nhj fft -nhj -nhj +npo +fOb qhB awB awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -53688,7 +51821,16 @@ nZT nZT nZT "} -(73,1,1) = {" +(65,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -53764,109 +51906,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB awB awB -alU +hrT +pyG +glf +rKj +siP +pyG +cwA +nZT +nZT +nZT +nZT +nZT +yjF +pXv +bXn +bSu +lWb +koK +bAO +nvK +mNY +dKK +fhy +jyb +kMl +vDP +kQx pBc pBc -xJj pBc +dyZ +dNa +wJI +rww +fyz +xRG +fyz +yar +mlE +dNa +dyZ pBc -hrT -agZ -agZ -agZ -agZ -agZ -kJw -gdo -xEv -wDL -duZ -cAB -rTM -xUr -duZ -qZO -sbm -oYO -eJY -rUT -gyx -gyx -abJ -wvD -kNt -uvn -dTb -uvn -uvn -uvn -uvn -uvn -uvn -dTb -uvn -vDP pBc asu vDP +jUB ukT -ukT -heB -nDg -mzx -daJ -tnk -eSL -aQP aQP -iow +jUB +ukT aQP +jUB +ukT aQP -iow +jUB +ukT aQP +jUB +ukT aQP -iow -jkW -xCB +jUB +ukT +lRA xCB xCB xCB +jGE xCB -qhB -nhj +nlL nhj +asK fft -nhj -nhj +uAQ +uAQ qhB awB awB awB awB rCi -agZ -agZ -alT -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -53945,7 +52078,16 @@ nZT nZT nZT "} -(74,1,1) = {" +(66,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -54021,15 +52163,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB @@ -54039,91 +52172,82 @@ alU pBc pBc xJj +tLv pBc -pBc -cwA -agZ -agZ -agZ -agZ -agZ -yjF -sgW -usE -cQA -duZ -dFZ -kDd -uYr -duZ +hrT +nZT +nZT +nZT +nZT +nZT +kJw +scN +aJr +txG duZ -xWZ -xpN -wFc -xXp -xXp -cFb -xWZ -xWZ -aUV -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn +nvK +reN +nvK +mNY +sTF +afr +jyb +xJp vDP +kQx +pBc +pBc +pBc +vDP +dNa +vJH +pbZ +oJj +oJj +oJj +uhb +mlE +eTd +vDP +pBc pBc asu vDP aQP +dZQ +aQP +aQP iow aQP aQP +iow aQP -idW -fsp -fsp aQP -jUB -ukT +iow aQP -jUB -ukT aQP -jUB -ukT -lRA -xCB -xCB -xCB -xCB +iow +aQP +aQP +iow +jkW +iif +moz +moz +jRR xCB -nlL -nhj +qhB nhj +pQa fft -nhj -nhj +uAQ +npo qhB awB awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -54201,8 +52325,26 @@ nZT nZT nZT nZT -"} -(75,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(67,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -54278,63 +52420,54 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB -geE awB -alU -pBc +awB +hrT +pyG +pyG +rKj +pyG +pyG +hrT +nZT +nZT +nZT +nZT +nZT +kJw +duZ +duZ +duZ +duZ +dmW +reN +nvK +mNY +dOq +gbD +jyb +fhy +vDP +kQx pBc -xJj pBc pBc -cwA -agZ -agZ -agZ -agZ -agZ -yjF -gqZ -bXn -bSu -nuw -koK -max -rfV -duZ -nml -sbm -ksa -tOr -hXr -gyx -gyx -sbm -wvD -aUV -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn vDP -cxs +dNa +mtw +tPi +tPi +tPi +tPi +syU +hvC +dNa +vDP +pBc +pBc asu vDP ukT @@ -54342,45 +52475,45 @@ ukT cuD ukT nHe -idW -fsp -fsp -epf -ukT -ukT -xRR -ukT -ukT -epf +oWY +grG +sro +fsO +aQP +lLr +cuD +nXR ukT ukT -lRA -xCB +aQP +dYM +jkW +kut xCB xCB xCB xCB -nlL +qhB nhj nhj fft -nhj -nhj +uAQ +uAQ qhB awB -geE +awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -54459,7 +52592,16 @@ nZT nZT nZT "} -(76,1,1) = {" +(68,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -54535,82 +52677,73 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB awB awB -alU -pBc -pBc -xJj -pBc -pBc hrT -agZ -agZ -agZ -agZ -agZ +pyG +pyG +rKj +pyG +pyG +hrT +nZT +nZT +nZT +nZT +nZT kJw -vRa +bxO aJr -qqs -duZ -ezp -jBD -blY -duZ +txG duZ -xWZ -weN -jXi -xWZ -xWZ -xWZ -xWZ -xWZ -aUV -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -alU +cAB +reN +nvK +vDP +vDP +vDP +rng +vDP +vDP +kQx +pBc +pBc +pBc +vDP +rSS +wPD +vDP +vDP +vDP +vDP +vDP +aSH +rSS +vDP +pBc pBc asu vDP ukT ukT -mKC +jfe ukT xmh -idW -fsp -fsp -aQP -ukT -ukT -aQP -ukT -ukT -aQP -ukT -ukT +oZI +qRM +mKW +wyq +jAm +sPX +aFU +aFU +aFU +aFU +jAm +sDi jkW xCB xCB @@ -54618,26 +52751,26 @@ xCB xCB xCB qhB -erh +aqA nhj fft -nhj -nhj +fOb +uAQ qhB awB awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -54716,7 +52849,16 @@ nZT nZT nZT "} -(77,1,1) = {" +(69,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -54792,63 +52934,54 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB -agZ -aiY -alU +awB +awB +hrT +pyG +pyG +rKj +xkc +pyG +hrT +nZT +nZT +nZT +nZT +nZT +yjF +gqZ +bXn +bSu +fJZ +koK +eUU +phz +qel +weP +weP +hsH +nFD +jNW +gZi pBc pBc -xJj +pBc +vDP +pBc +odg +quX +pBc +pBc +aSZ +etw +rJO +pBc +vDP pBc pBc -hrT -agZ -agZ -agZ -agZ -agZ -kJw -duZ -duZ -duZ -duZ -vrD -mye -blY -duZ -nml -sbm -nEh -qgI -xWZ -qYU -ucr -qYU -qYU -aUV -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -alU -gWg asu vDP ukT @@ -54856,19 +52989,19 @@ ukT heB nDg mzx -idW -fsp -ukG -vKj -vKj -vKj -vKj -vKj -vKj -vKj -vKj -vKj -sJr +pJN +wjI +tcI +rcI +qTg +jQq +kYQ +stN +ukT +ukT +oUL +ion +lRA xCB xCB xCB @@ -54878,23 +53011,23 @@ qhB nhj nhj fft -nhj -nhj +uAQ +uAQ qhB -agZ -vCn +awB +awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -54973,7 +53106,16 @@ nZT nZT nZT "} -(78,1,1) = {" +(70,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -55049,109 +53191,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB awB -sdP -sdP -cmn -csI -csI -spT -pBc -pBc +awB +awB hrT -agZ -agZ -agZ -agZ -agZ -kJw -wZK -aJr -txG -hEA -cAB -nOi -ddd +hrT +hrT +pTf +hrT +hrT +hrT +nZT +nZT +nZT +nZT +nZT +yjF +cQA +knC +dKo duZ -duZ -xWZ -weN -lIX -nUR -mhQ -oIw -hvQ -iCD -aUV -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -alU -kWT -asu +nvK +rTM +nvK +vDP +vDP +vDP +vDP +aib +vDP +vDP +vDP +vDP +vDP +vDP +pBc +jan +pBc +pBc +pBc +pBc +pBc +pBc +pBc +vDP +pBc +fCe +uvC vDP aQP iow aQP aQP -fCD -idW -fsp -ajz -vKj -tGN -iDL -poE -fHu -fHu -sqT -iMY -nnb -sJr +eqs +fcz +qmp +qmp +whM +ePD +xMv +epL +evT +ioV +ukT +fGa +ion +lRA xCB xCB xCB xCB xCB qhB -nhj -nhj -pRo -hbN -hbN -fjO -sdP -sdP +qhB +qhB +wJG +qhB +qhB +qhB +awB +awB awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -55230,7 +53363,16 @@ nZT nZT nZT "} -(79,1,1) = {" +(71,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -55306,109 +53448,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -sdP -agZ -aqx -alU -pBc -pBc -xJj -pBc -pBc -cwA -agZ -agZ -agZ -agZ -agZ -yjF -rCf -jwz -bSu -knS -nYz -rLZ -vvu +awB +awB +awB +hrT +pyG +pyG +rKj +pyG +fcZ +hrT +nZT +nZT +nZT +nZT +nZT +kJw +wDL +rab +jam +duZ +haq +rTM +ano duZ oMg sbm -pCF -hTK +dyJ +dvO +evN +gyx +mtp +sbm +wvD xWZ -ovW -ovW -cvL -ovW -aUV -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -alU +pBc +pBc +pBc +pBc +pBc +pBc +pBc +pBc +pBc vDP -eGc +pBc +pBc +asu vDP ukT ukT cuD ukT nHe -iMb +mBn qgv -aAz -vKj -qmi -aIu -hxn -fHu -fHu -aIu -uWC -uxB -jbx +fsp +wbO +woV +ukT +ukT +ukT +ukT +ukT +woV +ion +jkW xCB xCB xCB xCB xCB -nlL +qhB nhj nhj fft nhj nhj qhB -agZ -agZ -hkh +awB +awB +awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -55487,7 +53620,16 @@ nZT nZT nZT "} -(80,1,1) = {" +(72,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -55563,109 +53705,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -sdP -agZ -agZ -cmn -csI -csI -spT -pBc -pBc -cwA -agZ -agZ -agZ -agZ -agZ -yjF -sgW -aJr -aJr -duZ -fGQ -tIH -qrB -duZ -duZ +awB +awB +awB +hrT +pyG +pyG +rKj +pyG +pyG +hrT +nZT +nZT +nZT +nZT +nZT +kJw duZ duZ -hki -xza duZ duZ +nvK +sRD +dBj duZ duZ -kJw -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn -uvn +xWZ +mOn +jXi +rpN +xXp +xXp +xWZ +xWZ +aUV alU -tBy +alU +alU +alU +alU +alU +alU +alU +alU +alU +vDP +pBc asu vDP ukT ukT -mKC +jfe ukT xmh -idW -fsp -fsp -vKj -rhn -aIu -cBJ -fVM -aIu -aIu -uWC -hGx -jbx +xPQ +eYd +eYd +nwM +aQP +ukT +ukT +heB +ukT +ukT +aQP +wkX +jkW xCB xCB xCB xCB xCB -nlL -bax +qhB nhj -pRo -hbN -hbN -fjO -agZ -agZ -sdP +nhj +fft +nhj +nhj +qhB +awB +awB +awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -55744,7 +53877,16 @@ nZT nZT nZT "} -(81,1,1) = {" +(73,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -55820,64 +53962,55 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -sdP -sdP -sdP -alU -alU -alU -pTf -alU -alU +awB +awB +awB hrT -agZ -agZ -agZ -agZ -agZ +pyG +pyG +rKj +pyG +pyG +hrT +nZT +nZT +nZT +nZT +nZT kJw -cQA -oqQ -qqs -duZ -duZ -rJH +gdo +xEv +wDL duZ +cAB +rTM +xUr duZ -trM -aXi -hBL -muJ -wut -myl -jBX -leO -iMo -kJw +qZO +sbm +oYO +eJY +rUT +gyx +gyx +abJ +wvD +kNt uvn -rIy +dTb uvn uvn uvn uvn uvn uvn -rIy +dTb uvn -alU -nOW -asu +vDP +pBc +asu vDP ukT ukT @@ -55885,44 +54018,44 @@ heB nDg mzx daJ -pjf -fsp -vKj -aIu -aIu -cBJ -yaL -pFW -aIu -uWC -hGx -sJr +tnk +eSL +aQP +aQP +iow +aQP +aQP +iow +aQP +aQP +iow +jkW xCB xCB xCB xCB xCB qhB +nhj +nhj +fft +nhj +nhj qhB -qhB -wJG -qhB -qhB -qhB -sdP -sdP -sdP +awB +awB +awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +aEe +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -56001,7 +54134,16 @@ nZT nZT nZT "} -(82,1,1) = {" +(74,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -56077,109 +54219,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -sdP -agZ -aqx -alU -pBc -pBc -xJj -pBc +awB +awB +awB +hrT +pyG +pyG +rKj +pyG +pyG +cwA +nZT +nZT +nZT +nZT +nZT +yjF +sgW +usE +cQA +duZ +dFZ +kDd +uYr +duZ +duZ +xWZ +xpN +wFc +xXp +xXp +cFb +xWZ +xWZ +aUV +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +vDP pBc -oVd -oVd -oVd -oVd -oVd -oVd -oVd -oCw -oCw -oCw -pLo -kud -rWm -wKR -lqr -qQm -mbr -leO -idc -leO -eDn -leO -leO -eRw -kJw -kJw -kJw -xNQ -kJw -jSW -jSW -kJw -xNQ -kJw -kJw -alU -vlP asu vDP -vDP -vDP aQP +iow aQP aQP -fYV -vKj -vKj -vKj -iol -aIu -cBJ -tYR -aIu -aIu -uWC -hGx -sJr -qhB -qhB -qhB -qhB -qhB -qhB +aQP +idW +fsp +fsp +aQP +jUB +ukT +aQP +jUB +ukT +aQP +jUB +ukT +lRA +xCB +xCB +xCB +xCB +xCB +nlL nhj nhj fft nhj -ine +nhj qhB -agZ -agZ -hkh +awB +awB +awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -56258,7 +54391,16 @@ nZT nZT nZT "} -(83,1,1) = {" +(75,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -56334,109 +54476,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -sdP -agZ -agZ -cmn -csI -csI -spT -pBc -pBc -oVd -cTw -fpc -fpc -fpc -fpc -fpc -rWc -lnG -gkn -oCw -fKq -xWx -ffI -leO -qQm -teo -leO -idc -leO -eDn -vkW -leO -leO +awB +geE +awB +hrT +pyG +pyG +rKj +pyG +pyG +cwA +nZT +nZT +nZT +nZT +nZT +yjF +gqZ +bXn +bSu +nuw +koK +max +rfV duZ -ydx -fpm -leO -mJw -uIi -mZX -aBs -leO -mIC -bny +nml +sbm +ksa +tOr +hXr +gyx +gyx +sbm +wvD +aUV +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn vDP -uQd +cxs asu -pBc -cJo vDP -hot -oIY -gWN -mmh -vKj -ucV -ucV -ucV -aIu -cBJ -cqE -aIu -isX -uWC -hGx -vKj -nhj +ukT +ukT +cuD +ukT +nHe +idW +fsp +fsp +epf +ukT +ukT +xRR +ukT +ukT +epf +ukT +ukT +lRA +xCB +xCB +xCB +xCB +xCB +nlL nhj nhj +fft nhj nhj qhB -nhj -nhj -pRo -mdm -mdm -fjO -agZ -agZ -sdP +awB +geE +awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -56515,7 +54648,16 @@ nZT nZT nZT "} -(84,1,1) = {" +(76,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -56591,109 +54733,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -sdP -agZ -agZ +awB +awB +awB +hrT +pyG +pyG +rKj +pyG +pyG +hrT +nZT +nZT +nZT +nZT +nZT +kJw +vRa +aJr +qqs +duZ +ezp +jBD +blY +duZ +duZ +xWZ +weN +jXi +xWZ +xWZ +xWZ +xWZ +xWZ +aUV +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn alU pBc -man -dLd -pBc -pBc -oVd -dFC -xsN -unQ -lYx -rOz -fyO -tvf -okX -hfe -oCw -geJ -aAZ -sdK -nZy -rXf -gyp -nZy -amO -dTD -fph -iau -wHU -nyY -vUO -nyY -nyY -wHU -nZy -nZy -buf -veC -mKv -dBX -dBX -guf -dIL -pXI -uiQ -dIj +asu vDP -nHi -dwS -bJf -mmh -lsx -mbN -ptj -ftb -ftb -gBp -rPG -bcY -ebt -kCU -vqS -wKc -uZt -uZt -qwn -nkD -kSD -axV -kSD -kSD -pjx +ukT +ukT +mKC +ukT +xmh +idW +fsp +fsp +aQP +ukT +ukT +aQP +ukT +ukT +aQP +ukT +ukT +jkW +xCB +xCB +xCB +xCB +xCB +qhB +erh +nhj +fft nhj nhj qhB -agZ -agZ -sdP +awB +awB +awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -56772,7 +54905,16 @@ nZT nZT nZT "} -(85,1,1) = {" +(77,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -56848,109 +54990,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -sdP -sdP -glV -alU -alU -alU -pTf -alU -alU -oVd -dPl -xQl -xQl -xQl -xQl -bwh -xQl -okX -ddE -oCw -hgk -mrH -akp -xGj -eKM -xpL -aJr -caY -hrb -dks -aJr -mrH -vPv +awB +agZ +aiY +hrT +pyG +pyG +rKj +pyG +pyG +hrT +nZT +nZT +nZT +nZT +nZT +kJw duZ -iIQ -iIQ -mrH -aJr -nfD -mpN -aJr -qhN -leO -leO -vDP -pBc -vii -xnX -bju +duZ +duZ +duZ +vrD +mye +blY +duZ +nml +sbm +nEh +qgI +xWZ +qYU +ucr +qYU +qYU +aUV +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +alU +gWg +asu vDP -scH -tQd -tQd -mmh +ukT +ukT +heB +nDg +mzx +idW +fsp +ukG +vKj +vKj +vKj vKj -thf -orh -aIu -aIu -aIu -aIu -aIu -lLF -aIu -aIu vKj +vKj +vKj +vKj +vKj +sJr +xCB +xCB +xCB +xCB +xCB +qhB nhj nhj -bYG +fft nhj nhj qhB -qhB -qhB -oVn -qhB -qhB -qhB -sdP -sdP -hkh +agZ +vCn +awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -57029,7 +55162,16 @@ nZT nZT nZT "} -(86,1,1) = {" +(78,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -57105,109 +55247,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB +awB sdP -agZ -agZ -bUb -iME -fKm -hWn -kAW -kAW -kAW -dWO -hlm -uBp -kAW -kAW -kAW -lzu -qYy -eSh -wLF -leO -leO -akp -tqp -mgv -nLy -abO -cnq -jDG -xJh -vma -vuP -vuP -fRV -vuP -vuP -vuP -wSa +sdP +rns +pxU +pxU +jYU +pyG +pyG +hrT +nZT +nZT +nZT +nZT +nZT +kJw +wZK aJr -lfB -yjl -jwi -gym -gym -vDP -uaY -pBc -pfA -bju +txG +hEA +cAB +nOi +ddd +duZ +duZ +xWZ +weN +lIX +nUR +mhQ +oIw +hvQ +iCD +aUV +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +alU +kWT +asu vDP -wFT -tQd -tQd -mmh -lsx -jDx -fUn -slS -aIu -dfE -jUn -cOU -jUn -cOU -jUn -vgH -nhj -nhj -nhj -nhj -nhj +aQP +iow +aQP +aQP +fCD +idW +fsp +ajz +vKj +tGN +iDL +poE +fHu +fHu +sqT +iMY +nnb +sJr +xCB +xCB +xCB +xCB +xCB qhB nhj nhj -qov -mdm -mdm +pRo +hbN +hbN fjO -agZ -agZ +sdP sdP awB +awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -57286,7 +55419,16 @@ nZT nZT nZT "} -(87,1,1) = {" +(79,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -57362,109 +55504,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB sdP agZ -agZ -oVd -oVd -oVd -iHx -oVd -oVd -son -bsV -oVd -oVd -oVd -oCw -whL -oCw -kIw -oCw -oCw -pag -ecu -hRv -ovd -vEt -oEs -eDn -iBV -fBc -leO -leO -exI -fBU -duZ -ayF -daQ -sKw -mxi -bLA -fcd -duZ -duZ -duZ +aqx +hrT +pyG +pyG +rKj +pyG +pyG +cwA +nZT +nZT +nZT +nZT +nZT +yjF +rCf +jwz +bSu +knS +nYz +rLZ +vvu duZ +oMg +sbm +pCF +hTK +xWZ +ovW +ovW +cvL +ovW +aUV +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +alU vDP +eGc vDP -vDP -vDP -bzV -vDP -kmk -qjY -fsp -fvN +ukT +ukT +cuD +ukT +nHe +iMb +qgv +aAz vKj -ume -wVe +qmi aIu -hJc -noz -ltP -mYA -tRL -cYQ -itN -vgH -rOw -nhj -nhj -nhj +hxn +fHu +fHu +aIu +uWC +uxB +jbx +xCB +xCB +xCB +xCB +xCB +nlL nhj -qhB nhj +fft nhj -ncu nhj -avP qhB agZ agZ -sdP +hkh awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -57543,7 +55676,16 @@ nZT nZT nZT "} -(88,1,1) = {" +(80,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -57619,109 +55761,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB sdP -hxk -cyi -cYv -gBW -pZf -ndS -ufp -svX -xXu -ufp -svX -oVd -xQl -xQl -oCw -hUF +agZ +agZ +rns +pxU +pxU +jYU pyG -nkW -azu -hHu -vMQ -vuX -pOo -whn -eDn -qQm -fBc -leO -leO -vDP -vDP -vDP -vDP -vDP -vDP -vDP +pyG +cwA +nZT +nZT +nZT +nZT +nZT +yjF +sgW +aJr +aJr duZ -wjv +fGQ +tIH +qrB duZ -mlu -qzy -itR -mlP -qpG -qzy +duZ +duZ +duZ +hki +xza +duZ +duZ +duZ +duZ +kJw +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +uvn +alU +tBy +asu vDP -pye -noB -qmp -aWv -qmp -nzF +ukT +ukT +mKC +ukT +xmh +idW +fsp +fsp vKj -tno -goK -wFa -soq -eRe -hFX -qYd -ltx -bXO -rTf -nKO -xuR -nhj -nhj -bhP +rhn +aIu +cBJ +fVM +aIu +aIu +uWC +hGx +jbx +xCB +xCB +xCB +xCB +xCB +nlL +bax nhj -qhB -rcY -bnq -uOt -mdm -mdm +pRo +hbN +hbN fjO +agZ +agZ sdP -eua -awB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -57800,7 +55933,16 @@ nZT nZT nZT "} -(89,1,1) = {" +(81,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -57876,109 +56018,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB -agZ -agZ -cOm -nzd -jvn -joM -nzd -jvn -joM -xaF -jvn -joM -oVd -eSb -mlt -oCw -hUF -pyG -nkW +sdP +sdP +sdP +hrT +hrT +hrT +pTf +hrT +hrT +hrT +nZT +nZT +nZT +nZT +nZT +kJw +cQA +oqQ +qqs duZ -vCZ duZ -xll +rJH duZ duZ -vIm -kef -eNq -cMo -jiC -vDP -tBy -taE -aXw -xfg -ecA -sxZ -uFY -bjQ -cyc -tXY -fbl -dQC -yeh -boh -lUK -vDP -pcP +trM +aXi +hBL +muJ +wut +myl +jBX +leO +iMo +kJw +uvn +rIy +uvn +uvn +uvn +uvn +uvn +uvn +rIy +uvn +alU +nOW +asu vDP -xnS -clj -qBK -mXy +ukT +ukT +heB +nDg +mzx +daJ +pjf +fsp vKj -slI -jmd -taV -aBz -ogR -bWC -xOx -tRL -nrF -lbo -req -dPP -nEY -nhj -nhj -nhj +aIu +aIu +cBJ +yaL +pFW +aIu +uWC +hGx +sJr +xCB +xCB +xCB +xCB +xCB qhB -mZJ qhB qhB +wJG qhB qhB qhB -agZ -agZ -awB +sdP +sdP +sdP awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -58057,7 +56190,16 @@ nZT nZT nZT "} -(90,1,1) = {" +(82,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -58133,109 +56275,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB -awB -awB -tMv -dcD -hbS -jqh -dBn -hbS -jqh -hPQ -hbS -jqh -oVd -lna -xQl -oCw -hUF +sdP +agZ +aqx +hrT pyG -nkW -mBc -viM -duZ -viM -hVM -duZ -duZ -tWG -duZ -twx -duZ -vDP -uUv -pRg -qZi -pRg -nmS +pyG +rKj +pyG +pyG +oVd +oVd +oVd +oVd +oVd +oVd +oVd +oCw +oCw +oCw +pLo +kud +rWm +wKR +lqr +qQm +mbr +leO +idc +leO +eDn +leO +leO +eRw +kJw +kJw +kJw +xNQ +kJw +jSW +jSW +kJw +xNQ +kJw +kJw +alU +vlP +asu vDP -xlr -xKA -dkg -acS -qMw -yeh -yeh -yeh -lGF vDP -pcP vDP -aiE -tQd -tQd -jGT -vKj +aQP +aQP +aQP +fYV vKj -aPI vKj vKj -vgH -jUn -jUn -jUn -jUn -jUn -req -irz -nhj +iol +aIu +cBJ +tYR +aIu +aIu +uWC +hGx +sJr +qhB +qhB +qhB +qhB +qhB +qhB nhj nhj +fft nhj +ine qhB -jbh -qhB -aWP -aWP -aWP -nlL -owl -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ agZ agZ +hkh +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -58314,7 +56447,16 @@ nZT nZT nZT "} -(91,1,1) = {" +(83,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -58390,109 +56532,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB -awB -awB -tMv -jvn -fDg -jvn -jvn -fDg -jvn -eJc -fDg -jvn -eUm -sdu -sdu -sdu -hUF +sdP +agZ +agZ +rns +pxU +pxU +jYU pyG -nkW -vZB -qXW -duZ -qwb -nOF -duZ -rGV -eVQ +pyG +oVd +cTw +fpc +fpc +fpc +fpc +fpc +rWc +lnG +gkn +oCw +fKq +xWx +ffI +leO +qQm +teo +leO +idc +leO +eDn +vkW +leO +leO duZ -viM -oAH +ydx +fpm +leO +mJw +uIi +mZX +aBs +leO +mIC +bny vDP -ooU -jix -bhq -xQu +uQd +asu pBc +cJo vDP -rPR -exq -jmf -acS -gsU -oqw -kHD -acS -kSl -vDP -pcP -vDP -nMx -ufn -tQd -coo -ryj -agw -mzE -dxo -qip -jby -qpc -ceK -msO -sLS -sLS -hSl -bax -axd +hot +oIY +gWN +mmh +vKj +ucV +ucV +ucV +aIu +cBJ +cqE +aIu +isX +uWC +hGx +vKj +nhj +nhj nhj nhj nhj qhB -jbh -qhB -cHF -cHF -cHF -nlL -owl -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nhj +nhj +pRo +mdm +mdm +fjO agZ agZ +sdP +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -58571,7 +56704,16 @@ nZT nZT nZT "} -(92,1,1) = {" +(84,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -58647,109 +56789,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB -awB -awB -tMv -jvn -jvn -jvn -jvn -jvn -jvn -eJc -jvn -jvn -eUm -nfk -hKK -sdu -hUF +sdP +agZ +agZ +hrT pyG -nkW -bIK -bzb -duZ -bIK -cQA -duZ -rQB -ovF -duZ -qwb -nOF -vDP -ooU -vgv -vDP -vDP -vDP -vDP -aqN -lsD -jrf -dPj -vQO -anI -anI -acS -tzi -vDP -pcP +nhF +dLd +pyG +pyG +oVd +dFC +xsN +unQ +lYx +rOz +fyO +tvf +okX +hfe +oCw +geJ +aAZ +sdK +nZy +rXf +gyp +nZy +amO +dTD +fph +iau +wHU +nyY +vUO +nyY +nyY +wHU +nZy +nZy +buf +veC +mKv +dBX +dBX +guf +dIL +pXI +uiQ +dIj vDP -kUD -eXZ -eXZ -wtZ -dbK -cbJ -oAr -dUv -khp -jby -jby -cLx -ueX -jby -vZF -hSl -nhj -nhj -nhj +nHi +dwS +bJf +mmh +lsx +mbN +ptj +ftb +ftb +gBp +rPG +bcY +ebt +kCU +vqS +wKc +uZt +uZt +qwn +nkD +kSD +axV +kSD +kSD +pjx nhj nhj qhB -jbh -qhB -byN -hAj -uEg -nlL -owl -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ agZ agZ +sdP +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -58828,7 +56961,7 @@ nZT nZT nZT "} -(93,1,1) = {" +(85,1,1) = {" nZT nZT nZT @@ -58904,109 +57037,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan awB -ajY -bqC -uaV -uaV -uaV -uaV -uaV -uaV -yhM -fBj -daZ -mzO -rNY -fmx -sdu -hUF -pyG -nkW -lpD -nkW -nkW -nkW -nkW -nkW -rZv -cCR +sdP +sdP +glV +hrT +hrT +hrT +pTf +hrT +hrT +oVd +dPl +xQl +xQl +xQl +xQl +bwh +xQl +okX +ddE +oCw +hgk +mrH +akp +xGj +eKM +xpL +aJr +caY +hrb +dks +aJr +mrH +vPv duZ -bIK -cQA -vDP -ooU -vDP -tYI -bkw -rms -wNK -krz -wGl -rUh -acS -qMw -jVK -jVK -acS -tvj +iIQ +iIQ +mrH +aJr +nfD +mpN +aJr +qhN +leO +leO vDP -pcP +pBc +vii +xnX +bju vDP -cAL -upu -gZS -doX -xuH -jby -mzE -lWu -kQJ -jby -jby -cLx -ueX -apQ -vZF -hSl -rlD -rlD -snc -rlD -rlD +scH +tQd +tQd +mmh +vKj +thf +orh +aIu +aIu +aIu +aIu +aIu +lLF +aIu +aIu +vKj +nhj +nhj +bYG +nhj +nhj qhB -jbh -srY -hAj -hAj -hAj qhB -awB -awB -awB +qhB +oVn +qhB +qhB +qhB +sdP +sdP +hkh awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -59085,7 +57218,16 @@ nZT nZT nZT "} -(94,1,1) = {" +(86,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -59161,109 +57303,6796 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -awB -awB -apK -tMv -jvn -hll -kxr -oKz -pZo -jvn -eXm -tor -qUM -eUm -hNN -chg -sdu -deO -sOr -bxI -iWP -pyG -pyG -pyG -pyG -nkW -sdA -nkW -nkW -nkW -nkW -vDP -ooU +sdP +agZ +agZ +bUb +iME +fKm +hWn +kAW +kAW +kAW +dWO +hlm +uBp +kAW +kAW +kAW +lzu +qYy +eSh +wLF +leO +leO +akp +tqp +mgv +nLy +abO +cnq +jDG +xJh +vma +vuP +vuP +fRV +vuP +vuP +vuP +wSa +aJr +lfB +yjl +jwi +gym +gym vDP -dLN -jXV -jtR -apr -sGk -wzH -ugO -acS -qMw -jVK -jVK -acS -tvj +uaY +pBc +pfA +bju vDP -pcP -alU -jkW -jkW -jkW -jkW -jkW -jby -mzE -jby -ukZ -lqx -lqx -oEh -skW -qsN -slO -hSl -vpG -sWE +wFT +tQd +tQd +mmh +lsx +jDx +fUn +slS +aIu +dfE +jUn +cOU +jUn +cOU +jUn +vgH +nhj +nhj nhj nhj nhj qhB -jbh -qhB -hAj -hAj -cLT -qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nhj +nhj +qov +mdm +mdm +fjO agZ agZ +sdP +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(87,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +sdP +agZ +agZ +oVd +oVd +oVd +iHx +oVd +oVd +son +bsV +oVd +oVd +oVd +oCw +whL +oCw +kIw +oCw +oCw +pag +ecu +hRv +ovd +vEt +oEs +eDn +iBV +fBc +leO +leO +exI +fBU +duZ +ayF +daQ +sKw +mxi +bLA +fcd +duZ +duZ +duZ +duZ +vDP +vDP +vDP +vDP +bzV +vDP +kmk +qjY +fsp +fvN +vKj +ume +wVe +aIu +hJc +noz +ltP +mYA +tRL +cYQ +itN +vgH +rOw +nhj +nhj +nhj +nhj +qhB +nhj +nhj +ncu +nhj +avP +qhB +agZ +agZ +sdP +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(88,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +sdP +hxk +cyi +cYv +gBW +pZf +ndS +ufp +svX +xXu +ufp +svX +oVd +xQl +xQl +oCw +hUF +pyG +nkW +azu +hHu +vMQ +vuX +pOo +whn +eDn +qQm +fBc +leO +leO +vDP +vDP +vDP +vDP +vDP +vDP +vDP +duZ +wjv +duZ +mlu +qzy +itR +mlP +qpG +qzy +vDP +pye +noB +qmp +aWv +qmp +nzF +vKj +tno +goK +wFa +soq +eRe +hFX +qYd +ltx +bXO +rTf +nKO +xuR +nhj +nhj +bhP +nhj +qhB +rcY +bnq +uOt +mdm +mdm +fjO +sdP +eua +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(89,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +agZ +agZ +cOm +nzd +jvn +joM +nzd +jvn +joM +xaF +jvn +joM +oVd +eSb +mlt +oCw +hUF +pyG +nkW +duZ +vCZ +duZ +xll +duZ +duZ +vIm +kef +eNq +cMo +jiC +vDP +tBy +taE +aXw +xfg +ecA +sxZ +uFY +bjQ +cyc +tXY +fbl +dQC +yeh +boh +lUK +vDP +pcP +vDP +xnS +clj +qBK +mXy +vKj +slI +jmd +taV +aBz +ogR +bWC +xOx +tRL +nrF +lbo +req +dPP +nEY +nhj +nhj +nhj +qhB +mZJ +qhB +qhB +qhB +qhB +qhB +agZ +agZ +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(90,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +awB +awB +tMv +dcD +hbS +jqh +dBn +hbS +jqh +hPQ +hbS +jqh +oVd +lna +xQl +oCw +hUF +pyG +nkW +mBc +viM +duZ +viM +hVM +duZ +duZ +tWG +duZ +twx +duZ +vDP +uUv +pRg +qZi +pRg +nmS +vDP +xlr +xKA +dkg +acS +qMw +yeh +yeh +yeh +lGF +vDP +pcP +vDP +aiE +tQd +tQd +jGT +vKj +vKj +aPI +vKj +vKj +vgH +jUn +jUn +jUn +jUn +jUn +req +irz +nhj +nhj +nhj +nhj +qhB +jbh +qhB +aWP +aWP +aWP +nlL +owl +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(91,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +awB +awB +tMv +jvn +fDg +jvn +jvn +fDg +jvn +eJc +fDg +jvn +eUm +sdu +sdu +sdu +hUF +pyG +nkW +vZB +qXW +duZ +qwb +nOF +duZ +rGV +eVQ +duZ +viM +oAH +vDP +ooU +jix +bhq +xQu +pBc +vDP +rPR +exq +jmf +acS +gsU +oqw +kHD +acS +kSl +vDP +pcP +vDP +nMx +ufn +tQd +coo +ryj +agw +mzE +dxo +qip +hkM +qpc +ceK +msO +sLS +uEZ +hSl +bax +axd +nhj +nhj +nhj +qhB +jbh +qhB +cHF +cHF +cHF +nlL +owl +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(92,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +awB +awB +tMv +jvn +jvn +jvn +jvn +jvn +jvn +eJc +jvn +jvn +eUm +nfk +hKK +sdu +hUF +pyG +nkW +bIK +bzb +duZ +bIK +cQA +duZ +rQB +ovF +duZ +qwb +nOF +vDP +ooU +vgv +vDP +vDP +vDP +vDP +aqN +lsD +jrf +dPj +vQO +anI +anI +acS +tzi +vDP +pcP +vDP +kUD +eXZ +eXZ +wtZ +dbK +cbJ +oAr +dUv +khp +qsN +sxk +cLx +ueX +jby +vZF +hSl +nhj +nhj +nhj +nhj +nhj +qhB +jbh +qhB +byN +hAj +uEg +nlL +owl +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(93,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +awB +ajY +bqC +uaV +uaV +uaV +uaV +uaV +uaV +yhM +fBj +daZ +mzO +rNY +fmx +sdu +hUF +pyG +nkW +lpD +nkW +nkW +nkW +nkW +nkW +rZv +cCR +duZ +bIK +cQA +vDP +ooU +vDP +tYI +bkw +rms +wNK +krz +wGl +rUh +acS +qMw +jVK +jVK +acS +tvj +vDP +pcP +vDP +cAL +upu +gZS +doX +xuH +jby +mzE +lWu +kQJ +rDI +vNv +cLx +ueX +jby +pwI +hSl +rlD +rlD +snc +rlD +rlD +qhB +jbh +srY +hAj +hAj +hAj +qhB +awB +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(94,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +awB +apK +tMv +jvn +hll +kxr +oKz +pZo +jvn +eXm +tor +qUM +eUm +hNN +chg +sdu +deO +sOr +bxI +iWP +pyG +pyG +pyG +pyG +nkW +sdA +nkW +nkW +nkW +nkW +vDP +ooU +vDP +dLN +jXV +jtR +apr +sGk +wzH +ugO +acS +qMw +jVK +jVK +acS +tvj +vDP +pcP +alU +jkW +jkW +jkW +jkW +jkW +jby +mzE +jby +ukZ +lqx +afT +oEh +skW +jby +slO +hSl +vpG +sWE +nhj +nhj +nhj +qhB +jbh +qhB +hAj +hAj +cLT +qhB +awB +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(95,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +awB +awB +apK +oJl +oJl +oJl +oJl +oJl +oJl +sFc +sFc +oJl +eUm +eUm +xsH +gnk +sdu +alM +nkW +nkW +nkW +nkW +pyG +pyG +pyG +pyG +smS +mgq +mgq +mgq +sAn +vDP +ooU +vDP +wys +vcC +yeh +wNK +mnG +cds +kgn +acS +qmw +acS +acS +acS +mmr +vDP +pcP +alU +cqs +qmn +yfh +daU +huI +jby +mzE +lVe +wpY +jIv +jby +xjq +ueX +jby +qQS +cPn +oSE +oSE +oSE +oSE +oSE +whR +jGB +whR +whR +whR +prh +whR +hTE +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(96,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aEe +nZT +nZT +nZT +aan +awB +awB +awB +apK +oJl +ezP +hEm +cAH +oRh +rdy +tJZ +rZg +fHg +jyj +pbS +tut +gVA +hWi +uWg +tCY +wbT +knV +obF +iaa +iyZ +nwy +nwy +suU +tKg +tKg +tKg +vnD +oNm +uHI +sSW +hgZ +vXv +lBK +wNK +nwA +acS +rno +acS +qMw +arW +arW +acS +tvj +vDP +pcP +alU +cBQ +fuI +wBx +daU +hIi +jby +nTZ +cbJ +vCQ +cbJ +cbJ +pEY +iqr +jby +blm +rlD +sbr +rAA +nhj +nhj +nhj +qhB +jbh +nhj +jbB +kYn +kYn +qhB +awB +awB +awB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(97,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +bJj +dna +awB +awB +apK +cTZ +eFO +xba +lse +vPm +vPm +usl +quW +rqV +pep +pep +pep +ugR +nrw +gPt +ogx +uAr +mil +nkW +nkW +nkW +nkW +nkW +nkW +nkW +pyG +pyG +pyG +alU +fyC +vDP +wju +cJu +rqp +wNK +qce +acS +oJk +acS +iNX +arW +arW +mZb +tvj +vDP +pcP +alU +cMC +wTi +wBx +daU +hWE +jby +aTJ +rkn +wpY +llu +jby +jby +eWo +qrE +rlD +rlD +rlD +rlD +snc +rlD +rlD +qhB +foN +aOh +wEJ +uRb +haZ +qsE +awB +awB +awB +dna +cIF +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(98,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sdP +nZT +dna +dna +aWB +oJl +uSs +uSs +oJl +qYn +yiA +vir +ntE +fyo +jZT +qfz +eUK +csY +efY +kGw +mTO +bzI +mEA +vny +pxt +oEq +ryi +gmp +dWm +nkW +pyG +pyG +pJI +vDP +fyC +vDP +vDP +tik +tik +tik +tik +rfG +kZU +acS +vMr +wDN +wDN +faU +lJk +vDP +pcP +alU +ekE +hzI +wBx +daU +ksQ +jby +mzE +jXq +idv +idv +xht +ucn +idv +qhB +qhB +sBC +aKW +nhj +nhj +nhj +nhj +qhB +qov +hbN +rzG +lvW +ykf +qhB +dna +dna +cIF +nZT +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(99,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sdP +nZT +bzN +oJl +pMR +pMR +oJl +raR +cqq +dEJ +bPa +fyo +kgg +qBu +uZa +fDN +gWm +xuD +tvm +rAj +rkm +vny +klC +dXK +kxQ +jLE +kxQ +nkW +pyG +pyG +vlU +vDP +fyC +hpA +uaY +tik +inv +qAe +tik +rAD +bLr +acS +tRH +oqw +dsV +acS +kSl +vDP +pcP +alU +eND +qmn +wnL +gfB +xMO +jby +ezz +jby +idv +wdA +sMv +nFV +cNV +qhB +tKC +weM +nVG +ukf +ukf +ukf +ukf +tWP +uwl +nhj +qhB +pBJ +pBJ +qhB +nZT +nZT +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(100,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +agZ +bvn +oIn +oJl +oJl +oJl +oJl +fkN +fyo +kHa +rdB +vsi +dqI +hoI +joe +hoI +lLZ +ehN +vny +gGv +qAT +nDj +uzL +abg +nkW +pyG +pyG +pyG +vDP +fyC +pBc +mqX +tik +sDW +sDW +dpd +acS +acS +dPj +kQE +acS +acS +spN +goz +vDP +pcP +alU +frq +dlQ +fbZ +cIZ +pEV +pEV +sId +jby +idv +xRj +iDY +ygf +ixe +uVI +psL +unx +ulL +nhj +nhj +nhj +nhj +qhB +qhB +qhB +qhB +oIn +agZ +bvn +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(101,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +agZ +agZ +nZT +nZT +nZT +nZT +oJl +oJl +oJl +eUm +eUm +vAn +iOo +eIP +aml +icx +pmZ +oPk +vny +qng +iBp +jdZ +vKb +vny +nkW +nkW +nkW +vDP +vDP +ktb +niQ +jqL +tik +inv +sDW +dAr +fzd +uaD +aHt +czQ +wgU +guW +anx +lUK +vDP +pcP +alU +cqs +qmn +mzS +ltr +kxM +lbQ +kFP +bDF +idv +xYs +ewb +kfK +eEM +qhB +sHI +xuR +qhB +qhB +qhB +qhB +qhB +qhB +nZT +nZT +nZT +nZT +agZ +agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(102,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +fQo +nZT +nZT +nZT +nZT +fPU +eMl +jQZ +aml +jQZ +bwH +elq +vny +rdO +mja +yeC +uRm +vny +fGz +jcw +kkQ +vDP +pBc +pBc +pBc +eXQ +tik +tik +tik +tik +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +vDP +iRY +alU +kAI +kAI +kAI +kAI +kAI +ksD +wlO +nJG +hXq +peF +jHu +lKE +gFm +qhB +nhj +dPP +qhB +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(103,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sdP +nZT +nZT +nZT +fQo +nZT +nZT +nZT +dOf +mAB +dOf +rwe +dMe +gYj +fhp +gxM +vny +vny +iEp +vny +vny +vny +ruO +vTy +kBT +vDP +jbw +pBc +pBc +iqS +iye +xpy +xpy +jII +htg +htg +htg +htg +htg +pKk +pTj +htg +htg +llQ +alU +xIK +wQK +uKk +ajA +uQo +xZd +wKZ +did +idv +cpP +oNH +pOE +xLd +qhB +uce +qhB +qhB +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(104,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +dEK +nZT +nZT +nZT +fQo +nZT +nZT +nZT +oij +vMm +qvt +gvQ +dPh +esm +frw +gyq +ycz +aqL +iEX +jkb +lww +ewB +fTA +mHi +kEw +vDP +oIW +pBc +pBc +pcP +alU +alU +alU +ygD +alU +alU +alU +alU +alU +alU +alU +alU +alU +alU +alU +oPv +xnt +qvy +vXV +vIl +ulz +wKZ +msR +rJE +hUM +oNH +oNH +ejU +qhB +nhj +nlL +hbT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(105,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +dEK +fQo +fQo +fQo +fQo +fQo +fQo +fQo +oij +sIr +qvt +gvQ +bcs +wJD +sYj +hiE +klP +qbl +iKg +ckN +jML +xWt +gTW +jsv +kEw +nYN +pBc +pBc +pBc +pcP +alU +nCM +hHw +tKZ +kuT +cIR +alU +rRn +rRn +rRn +rRn +rRn +rRn +rRn +alU +wJL +ngC +bgo +jrj +uPb +aFS +psg +aEW +rJE +seg +bVn +xxW +noZ +jId +nhj +nlL +hbT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(106,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +dEK +nZT +nZT +nZT +fQo +nZT +nZT +tCn +oij +bFb +qvt +gvQ +dQe +euF +fxq +euF +euF +rvk +iKB +jkZ +deP +ewB +gYH +juF +mfF +vDP +pBc +pBc +pBc +pcP +alU +cqe +czm +gyY +czm +juO +alU +alU +alU +alU +alU +alU +alU +alU +alU +vIl +rSk +rSk +vIl +vIl +ivQ +bGv +wpY +idv +qeR +xxW +efE +aRt +qhB +nhj +nlL +hbT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(107,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +dEK +nZT +nZT +nZT +fQo +nZT +nZT +nZT +dOf +lQV +cNs +uQA +dQv +esm +fCb +esm +esm +seZ +iPS +esm +jSn +ewB +ewB +ewB +ewB +vDP +vDP +vDP +vDP +wNu +alU +bfR +aTn +joF +gDN +vKS +nsQ +pFt +xai +jho +obo +hsf +xOR +fYi +nsQ +rgG +haL +hys +jwm +mvd +hQH +hzH +pka +idv +rCc +xoI +xxW +lqM +qhB +nhj +qhB +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aEe +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(108,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +dEK +nZT +nZT +nZT +fQo +nZT +nZT +nZT +oij +gzY +qvt +gvQ +dRb +lhb +fDm +gDd +hEV +icG +dBZ +jll +jSM +ewJ +lgc +mma +mVy +nDW +oor +vDP +mhY +muT +alU +wCV +psm +hjD +lSc +dEh +nsQ +cCn +alS +jcX +hFi +rvt +beq +bbu +fkb +mAx +ket +utK +flV +xsK +ppw +lJb +bTu +idv +haP +pts +hwX +qhB +qhB +nhj +qhB +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(109,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +dEK +fQo +fQo +fQo +fQo +fQo +fQo +fQo +oij +sIr +qvt +gvQ +dTI +wJD +fEG +gMf +hFL +woJ +ccF +joh +jXp +otW +lsF +moS +mVU +nHL +vDP +vDP +lhB +alU +alU +srR +srR +srR +nCk +kzF +nsQ +vZu +wer +jho +tGu +pBg +fdh +cEf +nsQ +apz +iOS +uUZ +lvC +bjX +tNS +nUu +bTu +vXm +ntF +gYd +bXj +qhB +nhj +nhj +nlL +hbT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(110,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +dEK +nZT +nZT +nZT +nZT +nZT +nZT +nZT +oij +wlm +qvt +gvQ +dPh +esm +fJA +leQ +leQ +tvo +fkD +leQ +leQ +eBz +lvd +moU +mWa +nKf +vDP +pfA +pcP +alU +rXk +fbx +nyk +oCv +eIn +egj +egj +egj +egj +egj +egj +egj +egj +eIn +egj +mCq +nsQ +sLN +nsQ +nsQ +nsQ +bzg +bTu +jby +ntF +kBr +pKP +qhB +nhj +nhj +nlL +hbT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(111,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +dOf +mAB +dOf +kJu +wVN +eCq +fIr +woY +woY +woY +woY +pYV +tYN +wcV +lyQ +mqU +nbE +nLd +vDP +vDP +pcP +alU +wjg +vxa +mXu +vxa +egj +poY +buq +buq +buq +pou +fsS +pou +buq +mtA +egj +xyI +eAZ +iCZ +sNh +giw +nsQ +szE +vCI +nJG +nJG +mhv +jby +qhB +nhj +nhj +qhB +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(112,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +hEz +wSB +duf +ehz +eFv +rui +leQ +leQ +byg +esm +jqk +jXu +wcV +lCv +mqU +ngc +nLn +vDP +kSh +pcP +alU +fak +geN +wjz +eYV +nUX +dAd +aws +vKy +srN +jzM +srN +vKy +uyU +wJf +egj +nUC +pKC +mtn +dDe +wZS +nsQ +tRr +kPd +uiP +jby +tWC +fGJ +qhB +wFp +nhj +qhB +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -59327,6 +64156,8 @@ nZT nZT nZT nZT +"} +(113,1,1) = {" nZT nZT nZT @@ -59341,8 +64172,6 @@ nZT nZT nZT nZT -"} -(95,1,1) = {" nZT nZT nZT @@ -59418,109 +64247,95 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -awB -awB -apK -oJl -oJl -oJl -oJl -oJl -oJl -sFc -sFc -oJl -eUm -eUm -xsH -gnk -sdu -alM -nkW -nkW -nkW -nkW -pyG -pyG -pyG -pyG -smS -mgq -mgq -mgq -sAn -vDP -ooU -vDP -wys -vcC -yeh -wNK -mnG -cds -kgn -acS -qmw -acS -acS -acS -mmr +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +hEz +cRI +msM +ags +eHQ +fSX +gYO +pii +tgU +lhb +jqu +wiX +wcV +lDf +vbP +niS +nLX vDP +uaY pcP alU -cqs -qmn -yfh -daU -huI +kzd +nXp +qNA +bNR +rgN +cPt +qJR +nIF +egj +egj +egj +nIC +iRC +rIC +egj +gDx +qfN +uHt +pdT +tlG +gCc +eyH +xVB +jOn +nLE +pTc jby -mzE -lVe -wpY -jIv -rDI -xjq -vNv -hkM -qQS -cPn -oSE -oSE -oSE -oSE -oSE -whR -jGB -whR -whR -whR -prh -whR -hTE -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +sCA +nhj +nhj +nlL +hbT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -59599,7 +64414,7 @@ nZT nZT nZT "} -(96,1,1) = {" +(114,1,1) = {" nZT nZT nZT @@ -59675,109 +64490,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -alT -agZ -agZ -agZ -aan -awB -awB -awB -apK -oJl -ezP -hEm -cAH -oRh -rdy -tJZ -rZg -fHg -jyj -pbS -tut -gVA -hWi -uWg -tCY -wbT -knV -obF -iaa -iyZ -nwy -nwy -suU -tKg -tKg -tKg -vnD -oNm -uHI -sSW -hgZ -vXv -lBK -wNK -nwA -acS -rno -acS -qMw -arW -arW -acS -tvj +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +hEz +cTg +fLX +eiH +eIb +fTx +hbu +bgw +ihx +esm +uHL +kjt +wcV +lIk +mtg +nxV +nML vDP +pBc pcP alU -cBQ -fuI -wBx -daU -hIi -jby -nTZ -cbJ -vCQ -sxk -sxk -pEY -iqr -qsN -slO -rlD -sbr -rAA -nhj -nhj -nhj +lzC +hWU +bul +soY +ixr +fQN +bwC +yiG +kXT +cny +egj +dHG +gUl +oNa +egj +wLN +kVA +osO +ftF +lDS +kcJ +dcQ +pQw +aBE +iBi +wKZ +vru qhB -jbh +jnh nhj -jbB -kYn -kYn -qhB -awB -awB -awB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nlL +hbT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -59856,7 +64671,7 @@ nZT nZT nZT "} -(97,1,1) = {" +(115,1,1) = {" nZT nZT nZT @@ -59932,109 +64747,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -bJj -dna -awB -awB -apK -cTZ -eFO -xba -lse -vPm -vPm -usl -quW -rqV -pep -pep -pep -ugR -nrw -gPt -ogx -uAr -mil -nkW -nkW -nkW -nkW -nkW -nkW -nkW -pyG -pyG -pyG -alU -fyC +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +dOf +dOf +wNl +jcU +dEQ +fTH +hfD +vHs +vHs +dio +cNs +vHs +kIu +wcV +mtG +wcV +wcV vDP -wju -cJu -rqp -wNK -qce -acS -oJk -acS -iNX -arW -arW -mZb -tvj vDP -pcP +pim alU -cMC -wTi -wBx -daU -hWE +alU +iKA +dNe +wXO +egj +cPt +sHv +nOh +egj +egj +egj +ewr +qJR +bmY +egj +wZS +kVA +rrL +kVA +wZS +jOK +lEu +bTu jby -aTJ -rkn -wpY -llu -hkM -hkM -eWo -qrE -rlD -rlD -rlD -rlD -snc -rlD -rlD +xFT +irY +gmy qhB -foN -aOh -wEJ -uRb -haZ -qsE -awB -awB -awB -dna -cIF -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +rZZ +nhj +qhB +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -60113,7 +64928,7 @@ nZT nZT nZT "} -(98,1,1) = {" +(116,1,1) = {" nZT nZT nZT @@ -60189,109 +65004,83 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -agZ -dna -dna -aWB -oJl -uSs -uSs -oJl -qYn -yiA -vir -ntE -fyo -jZT -qfz -eUK -csY -efY -kGw -mTO -bzI -mEA -vny -pxt -oEq -ryi -gmp -dWm -nkW -pyG -pyG -pJI -vDP -fyC -vDP -vDP -tik -tik -tik -tik -rfG -kZU -acS -vMr -wDN -wDN -faU -lJk +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +cTj +uaQ +ejG +eJj +fUG +fav +hJi +vMA +iSW +sRQ +vMA +vMA +lIB +muZ +mrw +oYv vDP +pBc pcP +eUJ alU -ekE -hzI -wBx -daU -ksQ +xVt +nTB +eLz +jzH +nOh +sHv +vlg +buq +gim +buq +rMz +eMQ +wJf +egj +wZS +kVA +kVA +kVA +wZS +nsQ +pov +gmR +wPr +fOG +vNh jby -mzE -jXq -idv -idv -xht -ucn -idv qhB -qhB -sBC -aKW -nhj -nhj -nhj +sbr nhj qhB -qov -hbN -rzG -lvW -ykf -qhB -dna -dna -cIF -agZ -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -60369,8 +65158,6 @@ nZT nZT nZT nZT -"} -(99,1,1) = {" nZT nZT nZT @@ -60397,6 +65184,8 @@ nZT nZT nZT nZT +"} +(117,1,1) = {" nZT nZT nZT @@ -60446,109 +65235,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -agZ -bzN -oJl -pMR -pMR -oJl -raR -cqq -dEJ -bPa -fyo -kgg -qBu -uZa -fDN -gWm -xuD -tvm -rAj -rkm -vny -klC -dXK -kxQ -jLE -kxQ -nkW -pyG -pyG -vlU -vDP -fyC -hpA -uaY -tik -inv -qAe -tik -rAD -bLr -acS -tRH -oqw -dsV -acS -kSl -vDP -pcP -alU -eND -qmn -wnL -gfB -xMO -jby -ezz -jby -idv -wdA -sMv -nFV -cNV -qhB -tKC -weM -nVG -ukf -ukf -ukf -ukf -tWP -uwl -nhj -qhB -pBJ -pBJ -qhB -agZ -agZ -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -60595,10 +65281,69 @@ nZT nZT nZT nZT +cTj +cTj +cTj +cTj +cTj +cTj +cTj +qxf +emS +eVi +fUV +hha +hLl +ijl +ijl +juZ +ijl +ijl +rMM +muZ +vMA +nNm +vDP +oFh +pcP +pBc +alU +dYk +ayS +qwK +egj +mtA +vOg +fIO +mop +edN +nuj +gHi +qxL +mtA +egj +oXp +jOc +uQU +qxH +tgn +nsQ +fas +smo +xXE +nGN +gDM +fsK +qhB +rAA +nhj +qhB +nZT nZT nZT nZT nZT +sdP nZT nZT nZT @@ -60626,8 +65371,6 @@ nZT nZT nZT nZT -"} -(100,1,1) = {" nZT nZT nZT @@ -60698,114 +65441,13 @@ nZT nZT nZT nZT +"} +(118,1,1) = {" nZT nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -bvn -oIn -oJl -oJl -oJl -oJl -fkN -fyo -kHa -rdB -vsi -dqI -hoI -joe -hoI -lLZ -ehN -vny -gGv -qAT -nDj -uzL -abg -nkW -pyG -pyG -pyG -vDP -fyC -pBc -mqX -tik -sDW -sDW -dpd -acS -acS -dPj -kQE -acS -acS -spN -goz -vDP -pcP -alU -frq -dlQ -fbZ -cIZ -pEV -pEV -sId -jby -idv -xRj -iDY -ygf -ixe -uVI -psL -unx -ulL -nhj -nhj -nhj -nhj -qhB -qhB -qhB -qhB -oIn -agZ -bvn -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -60883,8 +65525,6 @@ nZT nZT nZT nZT -"} -(101,1,1) = {" nZT nZT nZT @@ -60898,6 +65538,70 @@ nZT nZT nZT nZT +iVm +ldc +cTj +ydk +aGd +bxM +eDo +hZX +hZX +eYJ +fYO +wuL +hOJ +ilq +itd +jvM +iUK +iUK +lNc +mGa +mGo +obS +vDP +pBc +pcP +pBc +alU +qIo +ayS +qwK +eIn +juI +buq +nOh +sHv +egj +egj +egj +egj +eIn +egj +egj +egj +nsQ +nsQ +nsQ +wEX +rJT +jcR +pui +rCn +lYE +rCn +qhB +qhB +szw +qhB +qhB +qhB +qhB +qhB +qhB +qhB +sdP nZT nZT nZT @@ -60960,109 +65664,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -oJl -oJl -oJl -eUm -eUm -vAn -iOo -eIP -aml -icx -pmZ -oPk -vny -qng -iBp -jdZ -vKb -vny -nkW -nkW -nkW -vDP -vDP -ktb -niQ -jqL -tik -inv -sDW -dAr -fzd -uaD -aHt -czQ -wgU -guW -anx -lUK -vDP -pcP -alU -cqs -qmn -mzS -ltr -kxM -lbQ -kFP -bDF -idv -xYs -ewb -kfK -eEM -qhB -sHI -xuR -qhB -qhB -qhB -qhB -qhB -qhB -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -61097,6 +65698,8 @@ nZT nZT nZT nZT +"} +(119,1,1) = {" nZT nZT nZT @@ -61140,8 +65743,6 @@ nZT nZT nZT nZT -"} -(102,1,1) = {" nZT nZT nZT @@ -61194,6 +65795,70 @@ nZT nZT nZT nZT +qLS +ajO +vax +diA +aQE +bBZ +hOJ +cYK +emY +xRZ +aqU +gyZ +rWL +rWL +rWL +rWL +wry +kKG +lRI +dYW +wry +wry +vDP +vDP +plQ +vDP +alU +dVs +ayS +xpP +egj +egj +fkz +oaD +fLO +egj +mFv +uDd +dof +iOq +adn +buq +egj +hfY +qRg +wKz +lUj +sUe +uEM +eGd +bfP +tZM +atw +rOF +rlD +nhj +ygj +tqT +cDN +cDN +cDN +cDN +nlL +hbT nZT nZT nZT @@ -61217,109 +65882,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -fQo -agZ -agZ -agZ -agZ -fPU -eMl -jQZ -aml -jQZ -bwH -elq -vny -rdO -mja -yeC -uRm -vny -fGz -jcw -kkQ -vDP -pBc -pBc -pBc -eXQ -tik -tik -tik -tik -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -vDP -iRY -alU -kAI -kAI -kAI -kAI -kAI -ksD -wlO -nJG -hXq -peF -jHu -lKE -gFm -qhB -nhj -dPP -qhB -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -61393,12 +65955,12 @@ nZT nZT nZT nZT +"} +(120,1,1) = {" nZT nZT nZT nZT -"} -(103,1,1) = {" nZT nZT nZT @@ -61474,109 +66036,105 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -agZ -agZ -agZ -fQo -agZ -agZ -agZ -dOf -mAB -dOf -rwe -dMe -gYj -fhp -gxM -vny -vny -iEp -vny -vny -vny -ruO -vTy -kBT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +cTj +ams +cTj +lVB +aWk +bCV +hOJ +cYL +epp +fbq +giz +hkI +jBr +wUp +nfd +rWL +kgi +vMA +lRI +dYW +mPz +mPz vDP -jbw pBc -pBc -iqS -iye -xpy -xpy -jII -htg -htg -htg -htg -htg -pKk -pTj -htg -htg -llQ +pcP +eUJ alU -xIK -wQK -uKk -ajA -uQo -xZd -wKZ -did -idv -cpP -oNH -pOE -xLd -qhB -uce -qhB -qhB -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +dVs +nTB +xpP +egj +fFB +buq +aCG +sHv +egj +buq +xXb +vcc +oEY +wSV +nin +tvL +uDQ +uDQ +uDQ +oEc +ghL +eTg +wkl +rqo +rFU +tFP +tFP +shm +nhj +nhj +nTo +iaJ +cDN +cDN +cDN +nlL +hbT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -61655,7 +66213,7 @@ nZT nZT nZT "} -(104,1,1) = {" +(121,1,1) = {" nZT nZT nZT @@ -61731,109 +66289,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -dEK -agZ -agZ -agZ -fQo -agZ -agZ -agZ -oij -vMm -qvt -gvQ -dPh -esm -frw -gyq -ycz -aqL -iEX -jkb -lww -ewB -fTA -mHi -kEw +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +cTj +cTj +cTj +apq +fav +ldc +hOJ +sua +eqF +ffg +gme +hoe +tSY +svv +svv +rWL +khL +aPk +hNy +jIw +nbq +oni vDP -oIW -pBc pBc pcP +pBc alU -alU -alU -ygD -alU -alU -alU -alU -alU -alU -alU -alU -alU -alU -alU -oPv -xnt -qvy -vXV -vIl -ulz -wKZ -msR -rJE -hUM -oNH -oNH -ejU -qhB +sud +ayS +hqj +egj +egj +pvu +jUl +xJU +vFX +puh +gNA +fUe +oEY +ozx +oEY +tvL +glw +wty +uDQ +bSF +tFP +klQ +wMN +wll +awX +foV +rPL +rlD nhj +nhj +qhB +cDN +cDN +cDN +cDN nlL hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -61912,7 +66470,7 @@ nZT nZT nZT "} -(105,1,1) = {" +(122,1,1) = {" nZT nZT nZT @@ -61988,109 +66546,90 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -dEK -fQo -fQo -fQo -fQo -fQo -fQo -fQo -oij -sIr -qvt -gvQ -bcs -wJD -sYj -hiE -klP -qbl -iKg -ckN -jML -xWt -gTW -jsv -kEw -nYN -pBc -pBc +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sdP +nZT +cTj +fav +fav +bGw +cTj +diF +erg +bAd +fZG +cTj +qFS +wUp +svv +rWL +dCq +aPk +uZP +hGD +nya +nya +vDP pBc pcP +pBc alU -nCM -hHw -tKZ -kuT -cIR -alU -rRn -rRn -rRn -rRn -rRn -rRn -rRn -alU -wJL -ngC -bgo -jrj -uPb -aFS -psg -aEW -rJE -seg -bVn -xxW -noZ -jId -nhj -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +vxa +ayS +paT +egj +fFB +buq +wAM +mtA +egj +buq +feu +oEY +uqL +neC +buq +tvL +huV +huV +dTc +rPI +tFP +klQ +tFP +rtY +rGo +tFP +rRI +rlD +szQ +rlD +rlD +qhB +qhB +qhB +qhB +qhB +sdP nZT nZT nZT @@ -62168,8 +66707,6 @@ nZT nZT nZT nZT -"} -(106,1,1) = {" nZT nZT nZT @@ -62189,6 +66726,8 @@ nZT nZT nZT nZT +"} +(123,1,1) = {" nZT nZT nZT @@ -62245,109 +66784,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -dEK -agZ -agZ -agZ -fQo -agZ -agZ -tCn -oij -bFb -qvt -gvQ -dQe -euF -fxq -euF -euF -rvk -iKB -jkZ -deP -ewB -gYH -juF -mfF -vDP -pBc -pBc -pBc -pcP -alU -cqe -czm -gyY -czm -juO -alU -alU -alU -alU -alU -alU -alU -alU -alU -vIl -rSk -rSk -vIl -vIl -ivQ -bGv -wpY -idv -qeR -xxW -efE -aRt -qhB -nhj -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -62389,7 +66825,67 @@ nZT nZT nZT nZT +cTj +cTj +cTj +cTj +cTj +uFP +tNU +rbe +rcs +shP +qFS +qFS +qFS +qFS +ycm +hHQ +lQa +vMA +wry +wry +vDP +vDP +plQ +vDP +vDP +srR +mHB +srR +egj +egj +egj +egj +egj +egj +unu +qly +tZH +eQL +qXG +oFE +tvL +glw +huV +acq +rhB +tFP +rSG +tFP +eRB +rFU +tFP +rTR +shB +tFP +gRp +rlD +iLx +nEY +nlL nZT +hbT nZT nZT nZT @@ -62425,8 +66921,6 @@ nZT nZT nZT nZT -"} -(107,1,1) = {" nZT nZT nZT @@ -62489,6 +66983,8 @@ nZT nZT nZT nZT +"} +(124,1,1) = {" nZT nZT nZT @@ -62502,109 +66998,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -dEK -agZ -agZ -agZ -fQo -agZ -agZ -agZ -dOf -lQV -cNs -uQA -dQv -esm -fCb -esm -esm -seZ -iPS -esm -jSn -ewB -ewB -ewB -ewB -vDP -vDP -vDP -vDP -wNu -alU -bfR -aTn -joF -gDN -vKS -nsQ -pFt -xai -jho -obo -hsf -xOR -fYi -nsQ -rgG -haL -hys -jwm -mvd -hQH -hzH -pka -idv -rCc -xoI -xxW -lqM -qhB -nhj -qhB -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -alT -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -62682,8 +67075,6 @@ nZT nZT nZT nZT -"} -(108,1,1) = {" nZT nZT nZT @@ -62691,7 +67082,67 @@ nZT nZT nZT nZT +jQc +cWN +dCz +bNH +cTj +xhu +erg +bin +pva +cTj +cTj +vAz +vAz +vAz +jQc +urt +eex +urt +wry +vMA +vMA +oFu +dYW +pOZ +oXb +sMM +wQG +fgG +xRU +jRV +iwB +vMA +vtM +egj +egj +egj +egj +egj +egj +egj +tvL +uDQ +uDQ +uDQ +lIY +tFP +klQ +rrX +tFP +bsQ +rKr +rUM +mwU +sAs +kHU +rlD +rAA +nhj +nlL nZT +hbT nZT nZT nZT @@ -62759,109 +67210,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -dEK -agZ -agZ -agZ -fQo -agZ -agZ -agZ -oij -gzY -qvt -gvQ -dRb -lhb -fDm -gDd -hEV -icG -dBZ -jll -jSM -ewJ -lgc -mma -mVy -nDW -oor -vDP -mhY -muT -alU -wCV -psm -hjD -lSc -dEh -nsQ -cCn -alS -jcX -hFi -rvt -beq -bbu -fkb -mAx -ket -utK -flV -xsK -ppw -lJb -bTu -idv -haP -pts -hwX -qhB -qhB -nhj -qhB -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -62892,6 +67240,8 @@ nZT nZT nZT nZT +"} +(125,1,1) = {" nZT nZT nZT @@ -62939,8 +67289,6 @@ nZT nZT nZT nZT -"} -(109,1,1) = {" nZT nZT nZT @@ -62989,6 +67337,79 @@ nZT nZT nZT nZT +sdP +nZT +wZr +mot +qjS +uiF +dCU +vAz +wTG +nIK +vIp +pKF +hbo +qjS +uiF +qVT +sFH +vMA +hSc +vMA +ylv +vMA +vMA +vMA +dYW +vMA +vMA +vMA +wQG +lnt +pHm +vMA +vMA +vMA +lnt +vMA +vMA +nNT +ecO +gYn +oWJ +kqS +vMA +vMA +vMA +pkZ +fxW +tFP +klQ +tFP +tFP +rFU +tFP +xin +lTy +tFP +tFP +toO +nhj +nhj +qhB +qhB +qhB +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -63016,109 +67437,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -dEK -fQo -fQo -fQo -fQo -fQo -fQo -fQo -oij -sIr -qvt -gvQ -dTI -wJD -fEG -gMf -hFL -woJ -ccF -joh -jXp -otW -lsF -moS -mVU -nHL -vDP -vDP -lhB -alU -alU -srR -srR -srR -nCk -kzF -nsQ -vZu -wer -jho -tGu -pBg -fdh -cEf -nsQ -apz -iOS -uUZ -lvC -bjX -tNS -nUu -bTu -vXm -ntF -gYd -bXj -qhB -nhj -nhj -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -63179,6 +67497,8 @@ nZT nZT nZT nZT +"} +(126,1,1) = {" nZT nZT nZT @@ -63196,8 +67516,6 @@ nZT nZT nZT nZT -"} -(110,1,1) = {" nZT nZT nZT @@ -63273,109 +67591,92 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -dEK -agZ -agZ -agZ -agZ -agZ -agZ -agZ -oij -wlm -qvt -gvQ -dPh -esm -fJA -leQ -leQ -tvo -fkD -leQ -leQ -eBz -lvd -moU -mWa -nKf -vDP -pfA -pcP -alU -rXk -fbx -nyk -oCv -eIn -egj -egj -egj -egj -egj -egj -egj -egj -eIn -egj -mCq -nsQ -sLN -nsQ -nsQ -nsQ -bzg -bTu -jby -ntF -kBr -pKP -qhB -nhj +nZT +nZT +nZT +aON +cwO +wZr +hPa +pey +pey +mfj +vAz +wTG +nIK +qvw +vAz +hPa +pey +pey +mfj +sFH +vMA +lRI +vMA +nNT +vMA +vMA +fSL +oJu +aPk +aPk +aPk +rjK +qnu +kVi +vGD +vGD +nzz +pBk +vGD +ioz +wXh +pkV +kgx +sPK +cDO +qZt +vfM +vfM +rgO +hSK +qRl +vCp +vGt +nAA +jqN +oro +rXZ +whE +foV +sHQ +rlD +hby nhj -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +jDQ +aKW +qhB +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -63454,7 +67755,7 @@ nZT nZT nZT "} -(111,1,1) = {" +(127,1,1) = {" nZT nZT nZT @@ -63530,109 +67831,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -dOf -mAB -dOf -kJu -wVN -eCq -fIr -woY -woY -woY -woY -pYV -tYN -wcV -lyQ -mqU -nbE -nLd -vDP -vDP -pcP -alU -wjg -vxa -mXu -vxa -egj -poY -buq -buq -buq -pou -fsS -pou -buq -mtA -egj -xyI -eAZ -iCZ -sNh -giw -nsQ -szE -vCI -nJG -nJG -mhv -jby -qhB +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +wZr +csi +qCO +qCO +ybo +vAz +wTG +nIK +qvw +vAz +csi +qCO +qCO +ybo +sFH +vMA +lTe +vMA +nYf +vMA +vMA +vMA +oLI +vMA +vMA +nIf +oLI +vSK +uBM +vMA +vMA +nIf +vMA +vMA +vMA +nNT +wNF +vMA +orC +vMA +vMA +odU +qXs +pkZ +mDf +dPz +qTD +tUI +urO +rHU +rKu +xpf +sOa +mOh +sVk +rlD +sWE nhj nhj -qhB -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +jyN +nlL +hbT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -63711,7 +68012,19 @@ nZT nZT nZT "} -(112,1,1) = {" +(128,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -63787,109 +68100,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -hEz -wSB -duf -ehz -eFv -rui -leQ -leQ -byg -esm -jqk -jXu -wcV -lCv -mqU -ngc -nLn -vDP -kSh -pcP -alU -fak -geN -wjz -eYV -nUX -dAd -aws -vKy -srN -jzM -srN -vKy -uyU -wJf -egj -nUC -pKC -mtn -dDe -wZS -nsQ -tRr -kPd -uiP -jby -tWC -fGJ -qhB -wFp -nhj -qhB -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -63897,6 +68107,71 @@ nZT nZT nZT nZT +sdP +aan +awB +wZr +vAz +vAz +vAz +vAz +vAz +wTG +nIK +wLR +vAz +mot +qjS +uiF +oAM +bBU +yal +lTI +yal +yal +yal +yal +yal +yal +yal +oYC +yal +yal +qNv +xcR +qOv +qGn +wry +pBV +pBV +pOB +pQv +xWB +xWB +qrF +bLM +dQT +aGz +aGz +aGz +oyS +rlX +iEZ +aGz +nUQ +rJy +eWt +eWt +eWt +eWt +eWt +rlD +rlD +nhj +bed +irz +nlL +hbT nZT nZT nZT @@ -63967,8 +68242,6 @@ nZT nZT nZT nZT -"} -(113,1,1) = {" nZT nZT nZT @@ -63995,6 +68268,8 @@ nZT nZT nZT nZT +"} +(129,1,1) = {" nZT nZT nZT @@ -64044,109 +68319,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -hEz -cRI -msM -ags -eHQ -fSX -gYO -pii -tgU -lhb -jqu -wiX -wcV -lDf -vbP -niS -nLX -vDP -uaY -pcP -alU -kzd -nXp -qNA -bNR -rgN -cPt -qJR -nIF -egj -egj -egj -nIC -iRC -rIC -egj -gDx -qfN -uHt -pdT -tlG -gCc -eyH -xVB -jOn -jby -pTc -jby -sCA -nhj -nhj -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -64193,6 +68365,70 @@ nZT nZT nZT nZT +aan +awB +wZr +vAz +vAz +vAz +vAz +vAz +wTG +nIK +qvw +vAz +hPa +pey +pey +mfj +bBU +voE +kjL +oYB +ekU +ekU +oxt +dkR +ptR +twL +obA +twL +twL +pgx +pkz +oLb +rgf +wry +pHR +pJz +pmx +aGz +cxr +iDc +tQT +uMF +fvn +sRO +vyb +rrd +jpO +rnt +mtN +aGz +iXQ +tET +xJT +uOZ +ydH +ydH +ydH +ydH +rlD +nhj +oPt +nhj +nlL +hbT nZT nZT nZT @@ -64224,8 +68460,6 @@ nZT nZT nZT nZT -"} -(114,1,1) = {" nZT nZT nZT @@ -64291,6 +68525,8 @@ nZT nZT nZT nZT +"} +(130,1,1) = {" nZT nZT nZT @@ -64301,109 +68537,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -hEz -cTg -fLX -eiH -eIb -fTx -hbu -bgw -ihx -esm -uHL -kjt -wcV -lIk -mtg -nxV -nML -vDP -pBc -pcP -alU -lzC -hWU -bul -soY -ixr -fQN -bwC -yiG -kXT -cny -egj -dHG -gUl -oNa -egj -wLN -kVA -osO -ftF -lDS -kcJ -dcQ -pQw -aBE -iBi -wKZ -vru -qhB -jnh -nhj -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -64481,8 +68614,6 @@ nZT nZT nZT nZT -"} -(115,1,1) = {" nZT nZT nZT @@ -64491,6 +68622,70 @@ nZT nZT nZT nZT +aan +awB +wZr +vAz +vAz +vAz +vAz +vAz +wTG +nIK +qvw +vAz +csi +qCO +qCO +ybo +bBU +fwr +yal +yal +yal +yal +yal +yal +mfe +pAW +mGQ +jHL +jHL +jHL +kCL +vHm +kCL +eoy +eoy +eoy +eoy +aGz +qia +qnE +nPW +twX +jso +utH +pPI +akX +hIQ +pCx +vwI +aGz +tgR +dij +rgn +jsR +oul +jFu +qbc +dEo +rlD +nhj +dPP +xuR +qhB +sdP nZT nZT nZT @@ -64558,109 +68753,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -dOf -dOf -wNl -jcU -dEQ -fTH -hfD -vHs -vHs -dio -cNs -vHs -kIu -wcV -mtG -wcV -wcV -vDP -vDP -pim -alU -alU -iKA -dNe -wXO -egj -cPt -sHv -nOh -egj -egj -egj -ewr -qJR -bmY -egj -wZS -kVA -rrL -kVA -wZS -jOK -lEu -bTu -jby -xFT -irY -gmy -qhB -rZZ -nhj -qhB -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -64690,6 +68782,8 @@ nZT nZT nZT nZT +"} +(131,1,1) = {" nZT nZT nZT @@ -64738,8 +68832,6 @@ nZT nZT nZT nZT -"} -(116,1,1) = {" nZT nZT nZT @@ -64785,6 +68877,71 @@ nZT nZT nZT nZT +bQh +bQh +mXX +bSv +jQc +hpq +vAz +vAz +vAz +vAz +tTN +nIK +qvw +vAz +mot +qjS +niM +qVT +bBU +fwr +yal +eCT +njl +qvk +viL +yal +yal +yal +jHL +wyv +byi +jHL +ruf +vHm +hpe +eoy +rDo +fXR +eoy +pSM +qiu +jum +qtm +qXD +qFg +oAC +sUM +itS +dtt +bCn +fqm +mJe +kWb +thi +cjS +ydH +ydH +aRL +ydH +kpx +rlD +reK +qhB +qhB +qhB nZT nZT nZT @@ -64815,109 +68972,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -cTj -uaQ -ejG -eJj -fUG -fav -hJi -vMA -iSW -sRQ -vMA -vMA -lIB -muZ -mrw -oYv -vDP -pBc -pcP -eUJ -alU -xVt -nTB -eLz -jzH -nOh -sHv -vlg -buq -gim -buq -rMz -eMQ -wJf -egj -wZS -kVA -kVA -kVA -wZS -nsQ -pov -gmR -wPr -fOG -vNh -jby -qhB -sbr -nhj -qhB -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -64985,6 +69039,8 @@ nZT nZT nZT nZT +"} +(132,1,1) = {" nZT nZT nZT @@ -64995,8 +69051,6 @@ nZT nZT nZT nZT -"} -(117,1,1) = {" nZT nZT nZT @@ -65072,109 +69126,99 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -cTj -cTj -cTj -cTj -cTj -cTj -cTj -qxf -emS -eVi -fUV -hha -hLl -ijl -ijl -juZ -ijl -ijl -rMM -muZ -vMA -nNm -vDP -oFh -pcP -pBc -alU -dYk -ayS -qwK -egj -mtA -vOg -fIO -mop -edN -nuj -gHi -qxL -mtA -egj -oXp -jOc -uQU -qxH -tgn -nsQ -fas -smo -xXE -nGN -gDM -fsK -qhB -rAA +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +cIY +cIY +mXX +mqe +jQc +ikq +vAz +kLc +vAz +vAz +wTG +cXE +gLD +uDy +hPa +pey +pey +rjk +bBU +fwr +yal +meH +meH +tRx +uKd +meH +gbB +ooJ +jHL +hXK +hXK +lTw +kCL +rhL +kCL +stl +xTZ +xTZ +eoy +pVj +qkP +egt +qtm +qXD +qHu +evf +iEg +qXD +qXD +bKi +lfc +aGz +iXQ +tET +sNy +ydH +ydH +ydH +xzp +ydH +rlD nhj qhB -agZ -agZ -agZ -agZ -agZ -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -65253,7 +69297,7 @@ nZT nZT nZT "} -(118,1,1) = {" +(133,1,1) = {" nZT nZT nZT @@ -65329,109 +69373,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -iVm -ldc -cTj -ydk -aGd -bxM -eDo -hZX -hZX -eYJ -fYO -wuL -hOJ -ilq -itd -jvM -iUK -iUK -lNc -mGa -mGo -obS -vDP -pBc -pcP -pBc -alU -qIo -ayS -qwK -eIn -juI -buq -nOh -sHv -egj -egj -egj -egj -eIn -egj -egj -egj -nsQ -nsQ -nsQ -wEX -rJT -jcR -pui -rCn -lYE -rCn -qhB -qhB -szw -qhB -qhB -qhB -qhB -qhB -qhB +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +bQh +bQh +mXX +mqe +jQc +krg +vAz +vAz +vAz +vAz +tTN +nIK +wLR +vAz +csi +qCO +qCO +ybo +bBU +fwr +osE +bQi +njl +uoU +toN +meH +qQx +cdX +jHL +wyv +hXK +xIC +kCL +vHm +kCL +iUY +rDo +xTZ +eoy +pZn +jum +jum +nPW +qXD +qIy +kOy +vKW +qXD +qXD +tTn +fAz +aGz +omi +tET +sPa +rBJ +ydH +ydH +xzp +ydH +rlD +nhj qhB -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -65510,7 +69554,7 @@ nZT nZT nZT "} -(119,1,1) = {" +(134,1,1) = {" nZT nZT nZT @@ -65586,109 +69630,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -qLS -ajO -vax -diA -aQE -bBZ -hOJ -cYK -emY -xRZ -aqU -gyZ -rWL -rWL -rWL -rWL -wry -kKG -lRI -dYW -wry -wry -vDP -vDP -plQ -vDP -alU -dVs -ayS -xpP -egj -egj -fkz -oaD -fLO -egj -mFv -uDd -dof -iOq -adn -buq -egj -hfY -qRg -wKz -lUj -sUe -uEM -eGd -bfP -tZM -atw -rOF -rlD -nhj -ygj -tqT -cDN -cDN -cDN -cDN -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -65709,6 +69650,70 @@ nZT nZT nZT nZT +aan +awB +mzQ +vAz +vAz +vAz +vAz +vAz +wTG +nIK +bfM +vAz +mot +qjS +sWb +oAM +bBU +fwr +yal +meH +meH +eci +gfY +meH +wED +meH +jHL +jHL +jHL +jHL +icy +vHm +fjc +eoy +eoy +eoy +eoy +qdk +jum +qoe +nPW +qXD +qJj +eKy +hlA +qfX +hbg +dUk +oyu +pQv +iXQ +tET +tsc +ydH +ydH +ydH +xzp +ydH +rlD +nhj +qhB +awB +rCi +sdP nZT nZT nZT @@ -65766,8 +69771,6 @@ nZT nZT nZT nZT -"} -(120,1,1) = {" nZT nZT nZT @@ -65807,6 +69810,10 @@ nZT nZT nZT nZT +"} +(135,1,1) = {" +nZT +nZT nZT nZT nZT @@ -65843,109 +69850,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -cTj -ams -cTj -lVB -aWk -bCV -nUD -cYL -epp -fbq -giz -hkI -jBr -wUp -nfd -rWL -kgi -vMA -lRI -dYW -mPz -mPz -vDP -pBc -pcP -eUJ -alU -dVs -nTB -xpP -egj -fFB -buq -aCG -sHv -egj -buq -xXb -vcc -oEY -wSV -nin -tvL -uDQ -uDQ -uDQ -oEc -ghL -eTg -wkl -rqo -rFU -tFP -tFP -shm -nhj -nhj -nTo -iaJ -cDN -cDN -cDN -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -66003,6 +69907,71 @@ nZT nZT nZT nZT +aan +awB +mzQ +vAz +vAz +vAz +vAz +vAz +wTG +nIK +fkO +vAz +hPa +pey +pey +mfj +bBU +xvc +yal +eCT +njl +oRS +dwt +kbN +wXQ +pvi +nTD +eza +vAK +kCL +kCL +vHm +kCL +kCL +uSR +oWV +dnX +qek +iOU +iOU +qYI +sMQ +iOU +iOU +iOU +iOU +iOU +iOU +iOU +ntC +iXQ +tET +tsc +ycY +ydH +ydH +ydH +ydH +rlD +nhj +qhB +awB +rCi +nZT +nZT nZT nZT nZT @@ -66023,8 +69992,6 @@ nZT nZT nZT nZT -"} -(121,1,1) = {" nZT nZT nZT @@ -66100,109 +70067,8 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -cTj -cTj -cTj -apq -fav -ldc -hOJ -sua -eqF -ffg -gme -hoe -tSY -svv -svv -rWL -khL -aPk -hNy -jIw -nbq -oni -vDP -pBc -pcP -pBc -alU -sud -ayS -hqj -egj -egj -pvu -jUl -xJU -vFX -puh -gNA -fUe -oEY -ozx -oEY -tvL -glw -wty -uDQ -bSF -tFP -klQ -wMN -wll -awX -foV -rPL -rlD -nhj -nhj -qhB -cDN -cDN -cDN -cDN -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +"} +(136,1,1) = {" nZT nZT nZT @@ -66280,8 +70146,6 @@ nZT nZT nZT nZT -"} -(122,1,1) = {" nZT nZT nZT @@ -66300,6 +70164,69 @@ nZT nZT nZT nZT +aan +awB +mzQ +vAz +vAz +vAz +vAz +vAz +wTG +nIK +qvw +vAz +csi +qCO +qCO +ybo +bBU +taK +yal +aPN +aPN +aPN +aPN +aPN +aPN +dnX +ehD +vmk +wMB +jrz +jrz +dvv +fPO +oJD +jdq +szu +dnX +dnX +iOU +npN +myT +cFk +pWE +aFY +pWE +aFY +mYE +pbT +aFY +ntC +tgR +kKh +iuV +mvt +oul +xBS +qbc +jFX +rlD +nhj +qhB +awB +rCi nZT nZT nZT @@ -66357,109 +70284,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -agZ -cTj -fav -fav -bGw -cTj -diF -erg -bAd -fZG -cTj -qFS -wUp -svv -rWL -dCq -aPk -uZP -hGD -nya -nya -vDP -pBc -pcP -pBc -alU -vxa -ayS -paT -egj -fFB -buq -wAM -mtA -egj -buq -feu -oEY -uqL -neC -buq -tvL -huV -huV -dTc -rPI -tFP -klQ -tFP -rtY -rGo -tFP -rRI -rlD -szQ -rlD -rlD -qhB -qhB -qhB -qhB -qhB -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -66500,6 +70324,8 @@ nZT nZT nZT nZT +"} +(137,1,1) = {" nZT nZT nZT @@ -66537,8 +70363,6 @@ nZT nZT nZT nZT -"} -(123,1,1) = {" nZT nZT nZT @@ -66596,6 +70420,71 @@ nZT nZT nZT nZT +sdP +aan +awB +mzQ +mot +qjS +qjS +oAM +vAz +wTG +nIK +qvw +vAz +mot +qjS +sWb +qVT +vlQ +kPB +yal +pWf +bjW +uzm +kQY +rSK +lbH +pzy +rYB +nEI +xeY +mlg +mlg +bBc +iiB +iiB +ipD +ofS +xMa +bHT +eYe +xum +gLb +kqz +bor +bor +iRg +bor +kjS +iai +aqW +ntC +aBF +iYF +uRL +ydH +ydH +ydH +ydH +ydH +rlD +nhj +qhB +awB +rCi +sdP nZT nZT nZT @@ -66614,109 +70503,7 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -cTj -cTj -cTj -cTj -cTj -uFP -tNU -rbe -rcs -shP -qFS -qFS -qFS -qFS -ycm -hHQ -lQa -vMA -wry -wry -vDP -vDP -plQ -vDP -vDP -srR -mHB -srR -egj -egj -egj -egj -egj -egj -unu -qly -tZH -eQL -qXG -oFE -tvL -glw -huV -acq -rhB -tFP -rSG -tFP -eRB -rFU -tFP -rTR -shB -tFP -gRp -rlD -iLx -nEY -nlL nZT -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -66795,7 +70582,7 @@ nZT nZT nZT "} -(124,1,1) = {" +(138,1,1) = {" nZT nZT nZT @@ -66871,109 +70658,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -jQc -cWN -dCz -bNH -cTj -xhu -erg -bin -pva -cTj -cTj -vAz -vAz +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +mzQ +hPa +pey +pey +mfj vAz -jQc -urt -eex -urt -wry -vMA -vMA -oFu -dYW -pOZ -oXb -sMM -wQG -fgG -xRU -jRV -iwB -vMA -vtM -egj -egj -egj -egj -egj -egj -egj -tvL -uDQ -uDQ -uDQ -lIY -tFP -klQ -rrX -tFP -bsQ -rKr -rUM -mwU -sAs -kHU +wTG +tSt +lUN +aIb +aRe +oOb +pey +mfj +vlQ +qfd +vlw +xRy +soh +soh +soh +fJf +gwp +vwQ +kNU +kNU +pPA +ieY +ieY +sae +ieY +ieY +kCL +hvE +pVT +vwQ +iOU +iai +ccR +fBY +iai +rdu +iai +iai +nOe +iai +aFY +ntC +sMO +tcM +sMO +sMO +sMO +sMO +sMO +sMO rlD -rAA nhj -nlL +rlD +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -67052,7 +70839,7 @@ nZT nZT nZT "} -(125,1,1) = {" +(139,1,1) = {" nZT nZT nZT @@ -67128,109 +70915,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -agZ -wZr -mot -qjS -uiF -dCU -hbD +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +mzQ +csi +qCO +qCO +nSn +vAz wTG -nIK -vIp -pKF -hbo -qjS -uiF -qVT -sFH -vMA -hSc -vMA -ylv -vMA -vMA -vMA -dYW -vMA -vMA -vMA -wQG -lnt -pHm -vMA -vMA -vMA -lnt -vMA -vMA -nNT -ecO -gYn -oWJ -kqS -vMA -vMA -vMA -pkZ -fxW -tFP -klQ -tFP -tFP -rFU -tFP -xin -lTy -tFP -tFP -toO -nhj -nhj -qhB -qhB +jTU +fkO +ooy +ckb +hJB +qCO +xpd +pQC +fqD +yal +ghC +gHY +fGo +soh +hAL +pvD +lpi +kNU +kNU +eBS +ieY +ieY +kTT +qti +ieY +hLo +hvE +pVT +lpi +kxl +kxl +gns +kxl +kxl +kxl +kxl +wZi +dmG +vVi +rPY +ntC +vZK +qoa +tUM +coA +ggH +hpE +ntb +jSD +rlD +reK qhB -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -67309,7 +71096,10 @@ nZT nZT nZT "} -(126,1,1) = {" +(140,1,1) = {" +nZT +nZT +nZT nZT nZT nZT @@ -67385,109 +71175,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -xnd -aLh -wZr -hPa -pey -pey -mfj -vAz -wTG -nIK -qvw -vAz -hPa -pey -pey -mfj -sFH -vMA -lRI -vMA -nNT -vMA -vMA -fSL -oJu -aPk -aPk -aPk -rjK -qnu -kVi -vGD -vGD -nzz -pBk -vGD -ioz -wXh -pkV -kgx -sPK -cDO -qZt -vfM -vfM -rgO -hSK -qRl -vCp -vGt -nAA -jqN -oro -rXZ -whE -foV -sHQ -rlD -hby -nhj -jDQ -aKW -qhB -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -67504,6 +71191,76 @@ nZT nZT nZT nZT +sdP +aan +awB +jQc +eSC +vxC +lyt +wNh +iLF +tnW +rZn +pjB +wNh +uzC +wTG +vAz +wTG +bBU +rKW +yal +fXx +ykx +ehZ +pRx +doV +nHr +kCL +mKT +kNU +pPA +kCL +kCL +qIM +kCL +kCL +kCL +hvE +pVT +kCL +aBj +cxz +xfU +nNQ +pnu +fsC +kxl +fif +nOe +iai +aFY +ntC +tUM +tZz +bof +bof +tix +aCX +wjx +ptU +nit +nhj +qhB +awB +rCi +sdP +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -67565,8 +71322,6 @@ nZT nZT nZT nZT -"} -(127,1,1) = {" nZT nZT nZT @@ -67597,6 +71352,8 @@ nZT nZT nZT nZT +"} +(141,1,1) = {" nZT nZT nZT @@ -67642,109 +71399,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -mqe -wZr -csi -qCO -qCO -ybo -vAz -wTG -nIK -qvw -vAz -csi -qCO -qCO -ybo -sFH -vMA -lTe -vMA -nYf -vMA -vMA -vMA -oLI -vMA -vMA -nIf -oLI -vSK -uBM -vMA -vMA -nIf -vMA -vMA -vMA -nNT -wNF -vMA -orC -vMA -vMA -odU -qXs -pkZ -mDf -dPz -qTD -tUI -urO -rHU -rKu -xpf -sOa -mOh -sVk -rlD -sWE -nhj -nhj -jyN -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -67795,6 +71449,69 @@ nZT nZT nZT nZT +aan +egQ +wNh +wNh +ndN +ndN +wNh +sBq +eFu +htD +fko +pwo +rhj +iaD +iHF +rbA +bBU +fwr +bBU +fFC +fFC +fFC +fFC +fFC +fFC +nTg +kNU +kNU +iUD +ieY +ieY +kTT +ieY +ieY +hLo +hvE +pVT +qRj +jej +tqH +hXX +bib +xKb +bib +szI +aFY +qDJ +iai +aFY +ntC +pKD +vXH +tUM +tUM +lFf +tqa +tUM +hhZ +rlD +nhj +qhB +awB +rCi nZT nZT nZT @@ -67822,8 +71539,6 @@ nZT nZT nZT nZT -"} -(128,1,1) = {" nZT nZT nZT @@ -67894,114 +71609,13 @@ nZT nZT nZT nZT +"} +(142,1,1) = {" nZT nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -mXX -mqe -wZr -vAz -vAz -vAz -vAz -vAz -llI -loz -jLA -vAz -mot -qjS -uiF -oAM -bBU -yal -lTI -yal -yal -yal -yal -yal -yal -yal -oYC -yal -yal -qNv -xcR -qOv -qGn -wry -pBV -pBV -pOB -pQv -xWB -xWB -qrF -bLM -dQT -aGz -aGz -aGz -oyS -rlX -iEZ -aGz -nUQ -rJy -eWt -eWt -eWt -eWt -eWt -rlD -rlD -nhj -bed -irz -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -68079,8 +71693,6 @@ nZT nZT nZT nZT -"} -(129,1,1) = {" nZT nZT nZT @@ -68094,6 +71706,69 @@ nZT nZT nZT nZT +aan +awB +wNh +iUH +sYv +jlU +bUr +stV +tnW +gqs +dEj +wRX +wNh +wNh +ndN +wNh +bBU +bwB +bBU +dMr +pfZ +rNt +asq +osz +fFC +fRY +kNU +ctL +pPA +ieY +kkw +gQq +sDg +grm +nZM +sOb +jtc +dMv +cHy +qRF +lqN +bBn +xwB +jdw +mpE +gbM +ekB +iai +aFY +ntC +mhq +ttw +tUM +bua +wLI +uIG +hmd +xhk +rlD +nhj +qhB +awB +rCi nZT nZT nZT @@ -68101,6 +71776,7 @@ nZT nZT nZT nZT +aEe nZT nZT nZT @@ -68156,109 +71832,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -mqe -wZr -vAz -vAz -vAz -vAz -vAz -wTG -nIK -qvw -vAz -hPa -pey -pey -mfj -bBU -voE -kjL -oYB -ekU -ekU -oxt -dkR -ptR -twL -obA -twL -twL -pgx -pkz -oLb -rgf -wry -pHR -pJz -pmx -aGz -cxr -iDc -tQT -uMF -fvn -sRO -vyb -rrd -jpO -rnt -mtN -aGz -iXQ -tET -xJT -uOZ -ydH -ydH -ydH -ydH -rlD -nhj -oPt -nhj -nlL -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -68293,6 +71866,12 @@ nZT nZT nZT nZT +"} +(143,1,1) = {" +nZT +nZT +nZT +nZT nZT nZT nZT @@ -68336,8 +71915,6 @@ nZT nZT nZT nZT -"} -(130,1,1) = {" nZT nZT nZT @@ -68385,6 +71962,71 @@ nZT nZT nZT nZT +sdP +aan +owl +wNh +qzq +mML +lWB +bUr +qCH +fki +lOB +uXh +mEV +bUr +oYU +fZF +qmg +yal +fwr +hcB +qLO +qLO +qLO +dtP +uPi +gxZ +rjW +kCL +kCL +oqE +vYG +vYG +nra +vYG +vYG +vYG +njN +kCL +kCL +kfe +wQe +paM +fpx +rbK +rbK +kxl +oQZ +jCh +fSN +sQd +rds +xZL +wHM +xxR +xil +rsm +vwR +tsX +btD +rlD +nhj +qhB +awB +rCi +sdP nZT nZT nZT @@ -68413,109 +72055,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -mqe -wZr -vAz -vAz -vAz -vAz -vAz -wTG -nIK -qvw -vAz -csi -qCO -qCO -ybo -bBU -fwr -yal -yal -yal -yal -yal -yal -mfe -pAW -mGQ -jHL -jHL -jHL -kCL -vHm -kCL -eoy -eoy -eoy -eoy -aGz -qia -qnE -nPW -twX -jso -utH -pPI -akX -hIQ -pCx -vwI -aGz -tgR -dij -rgn -jsR -oul -jFu -qbc -dEo -rlD -nhj -dPP -xuR -qhB -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -68584,6 +72123,8 @@ nZT nZT nZT nZT +"} +(144,1,1) = {" nZT nZT nZT @@ -68593,8 +72134,6 @@ nZT nZT nZT nZT -"} -(131,1,1) = {" nZT nZT nZT @@ -68670,109 +72209,100 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -bQh -bQh -mXX -bSv -jQc -hpq -vAz -vAz -vAz -vAz -tTN -nIK -qvw -vAz -mot -qjS -niM -qVT -bBU -fwr -yal -eCT -njl -qvk -viL -yal -yal +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +owl +mYb +iEl +exw +vWh +bUr +llG +wOQ +pfn +hfC +owU +nkM +wiG +lmX +clb yal -jHL -wyv -byi -jHL -ruf -vHm -hpe -eoy -rDo -fXR -eoy -pSM -qiu -jum -qtm -qXD -qFg -oAC -sUM -itS -dtt -bCn -fqm -mJe -kWb -thi -cjS -ydH -ydH -aRL -ydH -kpx +fwr +bBU +ttp +hWv +qLO +fNV +fTY +nWn +kCL +kCL +rYM +cXZ +dnX +rnm +eqk +bAo +dnX +xAR +haN +kCL +kCL +aBj +pfj +bqX +iaw +dMs +ubt +eJM +fJm +tWI +egH +iQf +ntC +qOh +bFz +fCa +fhf +swh +oDY +swh +swh rlD -reK -qhB -qhB +nhj qhB -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -68851,7 +72381,7 @@ nZT nZT nZT "} -(132,1,1) = {" +(145,1,1) = {" nZT nZT nZT @@ -68927,109 +72457,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -cIY -cIY -mXX -mqe -jQc -ikq -vAz -kLc -vAz -slK -uNa -cXE -gLD -uDy -ciw -pey -pey -rjk +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +owl +mYb +tdz +jjq +bej +jMw +xFN +jGS +cOE +wRu +mrg +bUr +nUD +qqW +gmW +nAG +cAp bBU -fwr -yal -meH -meH -tRx -uKd -meH -gbB -ooJ -jHL -hXK -hXK -lTw +bww +aaQ +qLO +tXM +nNs +fFC +cGt +kNU +kNU +pPA +dtW +hRp +mtJ +iAy +lge kCL -rhL +hvE +pVT kCL -stl -xTZ -xTZ -eoy -pVj -qkP -egt -qtm -qXD -qHu -evf -iEg -qXD -qXD -bKi -lfc -aGz -iXQ -tET -sNy -ydH -ydH -ydH -xzp -ydH +jej +lGt +qPW +fpx +rbK +ive +kxl +xIX +rAY +mvC +aFY +ntC +heL +nuC +tUM +fms +svo +kPp +lul +lDe rlD nhj qhB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -69108,7 +72638,7 @@ nZT nZT nZT "} -(133,1,1) = {" +(146,1,1) = {" nZT nZT nZT @@ -69184,109 +72714,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -bQh -bQh -mXX -mqe -jQc -krg -vAz -vAz -vAz -vAz -tTN -nIK -wLR -vAz -csi -qCO -qCO -ybo -bBU +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sdP +aan +awB +wNh +ycv +fvL +qqW +bUr +mLn +qzr +yjN +iIB +gTr +bUr +mcT +eNw +snA +yal fwr -osE -bQi -njl -uoU -toN -meH -qQx -cdX -jHL -wyv -hXK -xIC -kCL -vHm +bBU +wVL +cbs +mGW +fTZ +oIF +fFC kCL -iUY -rDo -xTZ -eoy -pZn -jum -jum -nPW -qXD -qIy -kOy -vKW -qXD -qXD -tTn -fAz -aGz -omi -tET -sPa -rBJ -ydH -ydH -xzp -ydH +kNU +kNU +pPA +niJ +rjQ +cVO +rxR +uPh +kCL +hvE +pVT +kCL +bph +hMn +vuK +sTI +vOM +wTx +szI +aFY +jCh +iai +aFY +ntC +lpU +sys +uhz +bof +pRE +wdq +wjx +cJa rlD nhj qhB awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -69365,7 +72895,7 @@ nZT nZT nZT "} -(134,1,1) = {" +(147,1,1) = {" nZT nZT nZT @@ -69441,109 +72971,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -mqe -mzQ -vAz -vAz -vAz -vAz -vAz -wTG -iMT -bfM -vAz -mot -qjS -sWb -oAM -bBU -fwr -yal -meH -meH -eci -gfY -meH -wED -meH -jHL -jHL -jHL -jHL -icy -vHm -fjc -eoy -eoy -eoy -eoy -qdk -jum -qoe -nPW -qXD -qJj -eKy -hlA -qfX -hbg -dUk -oyu -pQv -iXQ -tET -tsc -ydH -ydH -ydH -xzp -ydH -rlD -nhj -qhB -awB -rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -69564,6 +72991,69 @@ nZT nZT nZT nZT +aan +owl +wNh +mav +tDA +mjb +wNh +wNh +fpd +wNh +unh +wNh +wNh +wNh +wNh +wNh +bBU +fwr +bBU +nTu +hhJ +qLO +cdc +iAR +oIC +jYt +kNU +kNU +xgU +xtl +xMA +rMp +kAM +gMp +kCL +hvE +pVT +kCL +kfe +dzp +aHA +rbK +rje +rbK +kfe +aFY +jCh +iai +aFY +ntC +jvm +tUM +bTI +tUM +hjV +tUM +tUM +tUM +nit +nhj +qhB +awB +rCi nZT nZT nZT @@ -69621,8 +73111,6 @@ nZT nZT nZT nZT -"} -(135,1,1) = {" nZT nZT nZT @@ -69663,6 +73151,12 @@ nZT nZT nZT nZT +"} +(148,1,1) = {" +nZT +nZT +nZT +nZT nZT nZT nZT @@ -69698,109 +73192,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -mqe -mzQ -vAz -vAz -vAz -vAz -vAz -wTG -nIK -fkO -vAz -hPa -pey -pey -mfj -bBU -xvc -yal -eCT -njl -oRS -dwt -kbN -wXQ -pvi -nTD -eza -vAK -kCL -kCL -vHm -kCL -kCL -uSR -oWV -dnX -qek -iOU -iOU -qYI -sMQ -iOU -iOU -iOU -iOU -iOU -iOU -iOU -ntC -iXQ -tET -tsc -ycY -ydH -ydH -ydH -ydH -rlD -nhj -qhB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -69857,6 +73248,69 @@ nZT nZT nZT nZT +aan +owl +wNh +wNh +wNh +wNh +wNh +uno +qnc +mtT +dUX +nNJ +hQz +oMa +nea +nea +bBU +fwr +bBU +eIc +qLO +qLO +rwB +oMB +eVg +kCL +kNU +kNU +tsF +fWX +spb +mNx +rsF +qGE +aFD +hvE +pVT +kCL +aBj +vsA +aHA +rbK +xLj +fsC +kxl +sGg +jCh +nkE +aFY +ntC +jvm +tUM +bTI +fms +ooB +rqJ +kAC +sHX +rlD +nhj +qhB +awB +rCi nZT nZT nZT @@ -69878,8 +73332,6 @@ nZT nZT nZT nZT -"} -(136,1,1) = {" nZT nZT nZT @@ -69955,110 +73407,9 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -mqe -mzQ -vAz -vAz -vAz -vAz -vAz -wTG -nIK -qvw -vAz -csi -qCO -qCO -ybo -bBU -taK -yal -aPN -aPN -aPN -aPN -aPN -aPN -dnX -ehD -vmk -wMB -jrz -jrz -dvv -fPO -oJD -jdq -szu -dnX -dnX -iOU -npN -myT -cFk -pWE -aFY -pWE -aFY -mYE -pbT -aFY -ntC -tgR -kKh -iuV -mvt -oul -xBS -qbc -jFX -rlD -nhj -qhB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT +"} +(149,1,1) = {" nZT nZT nZT @@ -70135,8 +73486,6 @@ nZT nZT nZT nZT -"} -(137,1,1) = {" nZT nZT nZT @@ -70155,6 +73504,71 @@ nZT nZT nZT nZT +sdP +aan +owl +wjT +ati +hDk +hDk +cVf +eOT +nNJ +ssI +dUX +nNJ +nNJ +nNJ +ssI +jwf +bBU +cfz +bBU +iIV +qLO +qLO +dMz +gDr +fcv +pEl +pLv +qhW +gOX +mZf +mZf +azt +mZf +mZf +gCJ +hvE +pVT +kCL +aBj +aBj +kLt +aBj +aBj +iOt +xMP +xMP +bxB +xMP +xMP +xMP +iOt +iOt +pNP +iOt +iOt +rlD +rlD +rlD +rlD +nhj +qhB +awB +rCi +sdP nZT nZT nZT @@ -70212,109 +73626,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -mXX -mqe -mzQ -mot -qjS -qjS -oAM -vAz -wTG -nIK -qvw -vAz -mot -qjS -sWb -qVT -vlQ -kPB -yal -pWf -bjW -uzm -kQY -rSK -lbH -pzy -rYB -nEI -xeY -mlg -mlg -bBc -iiB -iiB -ipD -ofS -xMa -bHT -eYe -xum -gLb -kqz -bor -bor -iRg -bor -kjS -iai -aqW -ntC -aBF -iYF -uRL -ydH -ydH -ydH -ydH -ydH -rlD -nhj -qhB -awB -rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -70354,6 +73665,8 @@ nZT nZT nZT nZT +"} +(150,1,1) = {" nZT nZT nZT @@ -70392,8 +73705,6 @@ nZT nZT nZT nZT -"} -(138,1,1) = {" nZT nZT nZT @@ -70451,6 +73762,71 @@ nZT nZT nZT nZT +aan +awB +wjT +axP +bvI +cuz +aAP +cZH +nmh +cZH +cvl +nNJ +nNJ +ssI +nNJ +nNJ +bBU +nXy +bBU +pIT +qLO +iBU +nBI +jQz +fFC +kgk +pSJ +tTd +iyA +mZf +vVS +oWI +xIB +mZf +gOj +iCr +vIo +tyD +qVC +oDD +jvC +hod +yiM +iOt +psW +oLE +xyi +dVi +eRz +iOt +uvI +uvI +gju +uvI +iOt +vGN +kGv +iLx +rAA +nhj +qhB +awB +rCi +nZT +nZT nZT nZT nZT @@ -70469,109 +73845,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -mqe -mzQ -hPa -pey -pey -mfj -vAz -llI -tSt -lUN -aIb -aRe -oOb -pey -mfj -vlQ -qfd -vlw -xRy -soh -soh -soh -fJf -gwp -vwQ -kNU -kNU -pPA -ieY -ieY -sae -ieY -ieY -kCL -hvE -pVT -vwQ -iOU -iai -ccR -fBY -iai -rdu -iai -iai -nOe -iai -aFY -ntC -sMO -tcM -sMO -sMO -sMO -sMO -sMO -sMO -rlD -nhj -rlD -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -70650,7 +73923,7 @@ nZT nZT nZT "} -(139,1,1) = {" +(151,1,1) = {" nZT nZT nZT @@ -70726,109 +73999,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -mqe -mzQ -csi -qCO -qCO -nSn -vAz -wTG -jTU -fkO -ooy -ckb -hJB -qCO -xpd -pQC -fqD -yal -ghC -gHY -fGo -soh -hAL -pvD -lpi -kNU -kNU -eBS -ieY -ieY -kTT -qti -ieY -hLo -hvE -pVT -lpi -kxl -kxl -gns -kxl -kxl -kxl -kxl -wZi -dmG -vVi -rPY -ntC -vZK -qoa -tUM -coA -ggH -hpE -ntb -jSD -rlD -reK -qhB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +owl +wjT +hWj +pNQ +jwf +wjT +lDM +lDM +lDM +oHb +xbR +nlX +xYP +xYP +nea +bBU +nXy +bBU +bXL +kBD +cqT +spy +syA +fFC +kVE +lgz +qBL +uqu +mZf +gLR +oWI +lPP +mZf +rLd +mZf +fpb +aKo +vtK +vub +nLY +oHj +oHj +jJu +gal +gal +hgK +wZR +igE +xvp +cji +niv +cBO +hXs +fwg +agC +fOW +gjI +nhj +nhj +qhB +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -70907,7 +74180,26 @@ nZT nZT nZT "} -(140,1,1) = {" +(152,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -70983,109 +74275,90 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ sdP -mXX -mqe -jQc -eSC -vxC -lyt -wNh -iLF -tnW -rZn -pjB -wNh -wNh -wTG -vAz -wTG +aan +owl +wjT +deF +kTd +cAg +wjT +wjT +wjT +wjT +xRL +wjT +wjT +wjT +wjT +wjT bBU -rKW -yal -fXx -ykx -ehZ -pRx -doV -nHr -kCL -mKT -kNU -pPA -kCL -kCL -qIM -kCL -kCL -kCL -hvE -pVT -kCL -aBj -cxz -xfU -nNQ -pnu -fsC -kxl -fif -nOe -iai -aFY -ntC -tUM -tZz -bof -bof -tix -aCX -wjx -ptU -nit +eCc +bBU +fFC +fFC +fFC +iVM +fFC +fFC +tlt +qcW +mZf +fOI +jIp +oVB +nYY +oVB +uom +jFo +mZf +ajy +vtK +vtK +cKo +rHD +xxs +kuD +iOt +mTF +gCr +nZi +hUb +bZS +iOt +uvI +fJw +uvI +uvI +iOt +nEY +lnK +hby +rZZ nhj qhB awB rCi sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -71164,7 +74437,10 @@ nZT nZT nZT "} -(141,1,1) = {" +(153,1,1) = {" +nZT +nZT +nZT nZT nZT nZT @@ -71240,109 +74516,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -egQ -wNh -wNh -ndN -ndN -wNh -sBq -eFu -htD -fko -pwo -rhj -iaD -iHF -rbA -bBU -fwr -bBU -fFC -fFC -fFC -fFC -fFC -fFC -nTg -kNU -kNU -iUD -ieY -ieY -kTT -ieY -ieY -hLo -hvE -pVT -qRj -jej -tqH -hXX -bib -xKb -bib -szI -aFY -qDJ -iai -aFY -ntC -pKD -vXH -tUM -tUM -lFf -tqa -tUM -hhZ -rlD -nhj -qhB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -71360,6 +74533,71 @@ nZT nZT nZT nZT +aan +owl +wjT +aqC +pNQ +cAg +wjT +lJg +eGa +fhi +iSw +sss +rSH +rSH +tOT +tKO +wjT +eIt +iqE +jVq +nKd +tlt +aak +kep +plS +pCw +wTV +mZf +shX +fTg +xTC +lBw +xtc +rLh +eIG +mZf +dQY +cjX +bcu +mWS +eCw +nBF +aWO +iOt +bro +uvI +aqk +sJm +fqg +iOt +uvI +fJw +uvI +tFS +iOt +rlD +rlD +rlD +rlD +rlD +qhB +awB +rCi +nZT +nZT nZT nZT nZT @@ -71420,8 +74658,6 @@ nZT nZT nZT nZT -"} -(142,1,1) = {" nZT nZT nZT @@ -71457,6 +74693,8 @@ nZT nZT nZT nZT +"} +(154,1,1) = {" nZT nZT nZT @@ -71497,109 +74735,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -mqe -wNh -iUH -sYv -jlU -bUr -stV -tnW -gqs -dEj -wRX -wNh -wNh -ndN -wNh -bBU -bwB -bBU -dMr -pfZ -rNt -asq -osz -fFC -fRY -kNU -ctL -pPA -ieY -kkw -gQq -sDg -grm -nZM -sOb -jtc -dMv -cHy -qRF -lqN -bBn -xwB -jdw -mpE -gbM -ekB -iai -aFY -ntC -mhq -ttw -tUM -bua -wLI -uIG -hmd -xhk -rlD -nhj -qhB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -alT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -71655,6 +74790,69 @@ nZT nZT nZT nZT +aan +awB +wjT +wjT +bXu +wjT +wjT +vNI +vNI +txL +gpX +huC +huC +pKc +pKc +pKc +vcH +rbi +fgS +vkO +ici +ici +qQU +qzT +rYi +rYi +mtV +tek +mnH +rEP +nAh +aBc +wui +lqA +sPf +pOI +lDz +xGi +nzZ +rwN +snp +bXh +maU +iOt +qui +kre +jVj +vBn +kcg +iOt +uvI +grs +uvI +vCH +iOt +uvI +uvI +uvI +uvI +vvJ +xMP +awB +rCi nZT nZT nZT @@ -71677,8 +74875,6 @@ nZT nZT nZT nZT -"} -(143,1,1) = {" nZT nZT nZT @@ -71754,109 +74950,8 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -mXX -gXM -wNh -qzq -mML -lWB -bUr -qCH -fki -lOB -uXh -mEV -bUr -oYU -fZF -qmg -yal -fwr -hcB -qLO -qLO -qLO -dtP -uPi -gxZ -rjW -kCL -kCL -oqE -vYG -vYG -nra -vYG -vYG -vYG -njN -kCL -kCL -kfe -wQe -paM -fpx -rbK -rbK -kxl -oQZ -jCh -fSN -sQd -rds -xZL -wHM -xxR -xil -rsm -vwR -tsX -btD -rlD -nhj -qhB -awB -rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +"} +(155,1,1) = {" nZT nZT nZT @@ -71934,8 +75029,6 @@ nZT nZT nZT nZT -"} -(144,1,1) = {" nZT nZT nZT @@ -71953,6 +75046,73 @@ nZT nZT nZT nZT +sdP +aan +awB +asv +ayK +sZs +cHv +wjT +aRI +vNI +nuK +lSx +vNI +vNI +vNI +vNI +vNI +wjT +bjL +fGr +ivo +nLr +bOv +oAO +kmx +hvY +tlt +cLa +mZf +xMz +vjC +sXy +hJA +sXy +mzl +aLi +xlD +vtJ +vNG +vNG +qpE +qvp +vNG +qLF +iOt +usF +rwK +xhP +oWq +uMy +iOt +uvI +grs +uvI +uvI +baL +uvI +uvI +uvI +uvI +uvI +xMP +awB +rCi +sdP +nZT +nZT nZT nZT nZT @@ -72011,109 +75171,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -gXM -mYb -iEl -exw -vWh -bUr -llG -wOQ -pfn -hfC -owU -nkM -wiG -lmX -clb -yal -fwr -bBU -ttp -hWv -qLO -fNV -fTY -nWn -kCL -kCL -rYM -cXZ -dnX -rnm -eqk -bAo -dnX -xAR -haN -kCL -kCL -aBj -pfj -bqX -iaw -dMs -ubt -eJM -fJm -tWI -egH -iQf -ntC -qOh -bFz -fCa -fhf -swh -oDY -swh -swh -rlD -nhj -qhB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -72150,6 +75207,8 @@ nZT nZT nZT nZT +"} +(156,1,1) = {" nZT nZT nZT @@ -72191,8 +75250,6 @@ nZT nZT nZT nZT -"} -(145,1,1) = {" nZT nZT nZT @@ -72247,6 +75304,72 @@ nZT nZT nZT nZT +aan +awB +wjT +ast +vqy +bTU +wjT +oKu +dvJ +uKL +iUx +dbI +vNI +vNI +enQ +wZO +dvr +bAT +bUF +kcn +bAT +bAT +bAT +bAT +bAT +bAT +jjr +mZf +bIk +xvB +rci +wbJ +dzW +oVB +pnP +eQT +eQT +eQT +eQT +eQT +eQT +eQT +eQT +xMP +mNm +xMP +xMP +gmF +xMP +xMP +iOt +grs +uvI +uvI +iOt +uvI +uvI +uvI +uvI +uvI +xMP +awB +rCi +nZT +nZT +nZT nZT nZT nZT @@ -72268,109 +75391,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -mXX -gXM -mYb -tdz -jjq -bej -jMw -xFN -jGS -cOE -wRu -mrg -bUr -qqW -qqW -gmW -nAG -cAp -bBU -bww -aaQ -qLO -tXM -nNs -fFC -cGt -kNU -kNU -pPA -dtW -hRp -mtJ -iAy -lge -kCL -hvE -pVT -kCL -jej -lGt -qPW -fpx -rbK -ive -kxl -xIX -rAY -mvC -aFY -ntC -heL -nuC -tUM -fms -svo -kPp -lul -lDe -rlD -nhj -qhB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -72444,12 +75464,12 @@ nZT nZT nZT nZT +"} +(157,1,1) = {" nZT nZT nZT nZT -"} -(146,1,1) = {" nZT nZT nZT @@ -72523,111 +75543,107 @@ nZT nZT nZT nZT +aEe nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -mXX -mqe -wNh -ycv -fvL -qqW -bUr -mLn -qzr -yjN -iIB -gTr -bUr -mcT -eNw -snA -yal -fwr -bBU -wVL -cbs -mGW -fTZ -oIF -fFC -kCL -kNU -kNU -pPA -niJ -rjQ -cVO -rxR -uPh -kCL -hvE -pVT -kCL -bph -hMn -vuK -sTI -vOM -wTx -szI -aFY -jCh -iai -aFY -ntC -lpU -sys -uhz -bof -pRE -wdq -wjx -cJa -rlD -nhj -qhB +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aan +awB +wjT +wjT +wjT +wjT +wjT +pUe +ljY +gyb +jkD +hxT +dvr +dvr +dvr +dvr +dvr +kTG +fXG +ebN +nBW +nBW +akJ +nBW +nBW +nBW +oZG +eVa +mFE +pia +pnR +pvn +pAq +dEa +qTk +eQT +jAZ +jHU +cDB +eQT +nfh +qyx +vby +xMP +ejy +waO +xTb +bic +vOh +xMP +fXq +grs +uvI +iOt +iOt +iOt +iOt +iOt +iOt +xMP +xMP awB rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -72706,7 +75722,7 @@ nZT nZT nZT "} -(147,1,1) = {" +(158,1,1) = {" nZT nZT nZT @@ -72782,109 +75798,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sdP aan -owl -wNh -mav -tDA -mjb -wNh -wNh -fpd -wNh -unh -wNh -wNh -wNh -wNh -wNh -bBU -fwr -bBU -nTu -hhJ -qLO -cdc -iAR -oIC -jYt -kNU -kNU -xgU -xtl -xMA -rMp -kAM -gMp -kCL -hvE -pVT -kCL -kfe -dzp -aHA -rbK -rje -rbK -kfe -aFY -jCh -iai -aFY -ntC -jvm -tUM -bTI -tUM -hjV -tUM -tUM -tUM -nit -nhj -qhB +awB +hbT +fMJ +aYO +caM +pde +jhR +oIU +hro +kJc +ujq +bAT +pwQ +mHf +cUY +bAT +fYD +wdT +ilv +nSd +bAT +bAT +bAT +bAT +bAT +bAT +aKU +aGK +xvB +qyG +xgz +dzW +oVB +tCy +eQT +aYy +uRe +bCy +eQT +bBO +uRe +cDL +xMP +oos +jLM +ezR +tCP +cbI +xMP +fXq +grs +uvI +iOt +ocp +knK +bts +jZB +gSZ +xMP +hbT awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -72963,7 +75979,10 @@ nZT nZT nZT "} -(148,1,1) = {" +(159,1,1) = {" +nZT +nZT +nZT nZT nZT nZT @@ -73039,109 +76058,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -owl -wNh -wNh -wNh -wNh -wNh -uno -qnc -mtT -dUX -nNJ -hQz -oMa -nea -nea -bBU -fwr -bBU -eIc -qLO -qLO -rwB -oMB -eVg -kCL -kNU -kNU -tsF -fWX -spb -mNx -rsF -qGE -aFD -hvE -pVT -kCL -aBj -vsA -aHA -rbK -xLj -fsC -kxl -sGg -jCh -nkE -aFY -ntC -jvm -tUM -bTI -fms -ooB -rqJ -kAC -sHX -rlD -nhj -qhB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -73159,6 +76075,69 @@ nZT nZT nZT nZT +aan +awB +hbT +fMJ +aZI +ccb +rvq +nYQ +pjH +hxX +uwM +hyl +hUu +irN +irN +jEv +kuR +kXA +lYM +obd +nSN +omo +mHf +mHf +mHf +mHf +bAT +rgC +aGK +qYM +uNA +wQR +nZu +oVB +cyz +eQT +wzA +aHp +eTH +uLI +vBP +uYy +vdZ +xMP +baE +ppU +glF +bnr +kXh +gxS +cFX +xQf +mnn +iOt +lpQ +knK +lnD +hRl +dVk +xMP +hbT +awB +rCi nZT nZT nZT @@ -73219,8 +76198,6 @@ nZT nZT nZT nZT -"} -(149,1,1) = {" nZT nZT nZT @@ -73258,6 +76235,8 @@ nZT nZT nZT nZT +"} +(160,1,1) = {" nZT nZT nZT @@ -73296,109 +76275,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -aan -owl -wjT -ati -hDk -hDk -cVf -eOT -nNJ -ssI -dUX -nNJ -nNJ -nNJ -ssI -jwf -bBU -cfz -bBU -iIV -qLO -qLO -dMz -gDr -fcv -pEl -pLv -qhW -gOX -mZf -mZf -azt -mZf -mZf -gCJ -hvE -pVT -kCL -aBj -aBj -kLt -aBj -aBj -iOt -xMP -xMP -bxB -xMP -xMP -xMP -iOt -iOt -pNP -iOt -iOt -rlD -rlD -rlD -rlD -nhj -qhB -awB -rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -73456,6 +76332,69 @@ nZT nZT nZT nZT +aan +awB +hbT +fMJ +bdH +ciI +mwE +sRk +pzD +mwE +mwE +nQu +bAT +isw +mHf +mHf +bAT +lav +iQG +mHf +mHf +mpX +oBl +mHf +mHf +mHf +mZf +wYA +qXF +hNg +lmz +ozS +xdA +oVB +mzd +eQT +rWs +vsq +kBy +eQT +glB +fXw +vsq +xMP +xMP +xMP +sFw +wqO +xMP +xMP +iOt +iOt +grs +iOt +gSZ +gSZ +kWz +gSZ +gSZ +xMP +hbT +awB +rCi nZT nZT nZT @@ -73476,8 +76415,6 @@ nZT nZT nZT nZT -"} -(150,1,1) = {" nZT nZT nZT @@ -73553,109 +76490,10 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -wjT -axP -bvI -cuz -aAP -cZH -nmh -cZH -cvl -nNJ -nNJ -ssI -nNJ -nNJ -bBU -nXy -bBU -pIT -qLO -iBU -nBI -jQz -fFC -kgk -pSJ -tTd -iyA -mZf -vVS -oWI -xIB -mZf -gOj -iCr -vIo -tyD -qVC -oDD -jvC -hod -yiM -iOt -psW -oLE -xyi -dVi -eRz -iOt -uvI -uvI -gju -uvI -iOt -vGN -bhP -iLx -rAA -nhj -qhB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +"} +(161,1,1) = {" nZT nZT nZT @@ -73733,8 +76571,6 @@ nZT nZT nZT nZT -"} -(151,1,1) = {" nZT nZT nZT @@ -73752,6 +76588,71 @@ nZT nZT nZT nZT +sdP +aan +awB +hvg +bDz +rNy +con +hAO +ehJ +fKk +bTh +jsi +lIC +mCr +qru +qru +qru +tyk +laJ +mge +aYe +nCR +bAT +mHf +mHf +mHf +mHf +bAT +jCE +uKq +xvB +ofC +oVB +rIR +oVB +ixf +eQT +pFP +qyR +tSv +eQT +yfG +xVb +vwZ +eQT +sWO +xjr +use +xEa +ugt +kYZ +qzf +iOt +xnh +iOt +iQp +ppZ +quw +gSZ +xwZ +mZR +fMW +awB +rCi +sdP nZT nZT nZT @@ -73810,109 +76711,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -owl -wjT -hWj -pNQ -jwf -wjT -lDM -lDM -lDM -oHb -xbR -nlX -xYP -xYP -nea -bBU -nXy -bBU -bXL -kBD -cqT -spy -syA -fFC -kVE -lgz -qBL -uqu -mZf -gLR -oWI -lPP -mZf -rLd -mZf -fpb -aKo -vtK -vub -nLY -oHj -oHj -jJu -gal -gal -hgK -wZR -igE -xvp -cji -niv -cBO -hXs -fwg -agC -fOW -gjI -nhj -nhj -qhB -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -73951,6 +76749,8 @@ nZT nZT nZT nZT +"} +(162,1,1) = {" nZT nZT nZT @@ -73990,8 +76790,6 @@ nZT nZT nZT nZT -"} -(152,1,1) = {" nZT nZT nZT @@ -74048,6 +76846,70 @@ nZT nZT nZT nZT +aan +awB +hbT +axW +mkr +cpq +mwE +euo +pzD +gDg +vmb +aoH +bAT +oTv +mHf +uYq +dvr +lch +vdl +dvr +dvr +dvr +uCf +dvr +dvr +dvr +dvr +bVG +bVG +sVW +bVG +bVG +bVG +aVq +bVG +eQT +nkP +eQT +eQT +eQT +eQT +eQT +eQT +eQT +sWO +xjr +qYK +cde +wuw +rCy +pXb +iOt +kEZ +oKP +hfo +bbg +fLU +bzQ +mvk +uxC +hbT +awB +rCi +nZT nZT nZT nZT @@ -74067,109 +76929,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -aan -owl -wjT -deF -kTd -cAg -wjT -wjT -wjT -wjT -xRL -wjT -wjT -wjT -wjT -wjT -bBU -eCc -bBU -fFC -fFC -fFC -iVM -fFC -fFC -tlt -qcW -mZf -fOI -jIp -oVB -nYY -oVB -uom -jFo -mZf -ajy -vtK -vtK -cKo -rHD -xxs -kuD -iOt -mTF -gCr -nZi -hUb -bZS -iOt -uvI -fJw -uvI -uvI -iOt -nEY -lnK -hby -rZZ -nhj -qhB -awB -rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -74248,7 +77007,27 @@ nZT nZT nZT "} -(153,1,1) = {" +(163,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -74324,109 +77103,89 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan -owl -wjT -aqC -pNQ -cAg -wjT -lJg -eGa -fhi -iSw -sss -rSH -rSH -tOT -tKO -wjT -eIt -iqE -jVq -nKd -tlt -aak -kep -plS -pCw -wTV -mZf -shX -fTg -xTC -lBw -xtc -rLh -eIG -mZf -dQY -cjX -bcu -mWS -eCw -nBF -aWO -iOt -bro -uvI -aqk -sJm -fqg +awB +hbT +aAx +biH +cpJ +cww +ewG +aQR +pGe +lJn +lJn +dvr +dvr +dvr +dvr +dvr +iXF +vVH +kOE +atB +pRr +gQT +dND +skI +ylI +dQg +tBl +dTn +aJz +mlm +xKy +bjT +oEO +rwV +sAm +tfo +ixT +bVG +sWO +sWO +sWO +sWO +sWO +sWO +xjr +ojA +vpk +wuw +rCy +pXb iOt +gho uvI -fJw -uvI -tFS -iOt -rlD -rlD -rlD -rlD -rlD -qhB +gSZ +pca +xwj +gSZ +eDY +uxC +hbT awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -74505,7 +77264,7 @@ nZT nZT nZT "} -(154,1,1) = {" +(164,1,1) = {" nZT nZT nZT @@ -74581,109 +77340,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sdP aan awB -wjT -wjT -bXu -wjT -wjT -vNI -vNI -txL -gpX -huC -huC -pKc -pKc -pKc -vcH -rbi -fgS -vkO -ici -ici -qQU -qzT -rYi -rYi -mtV -tek -mnH -rEP -nAh -aBc -wui -lqA -sPf -pOI -lDz -xGi -nzZ -rwN -snp -bXh -maU -iOt -qui -kre -jVj -vBn -kcg -iOt -uvI -grs -uvI -vCH +hbT +aAx +boP +cqn +pes +kOb +neY +pZx +lJn +mjR +nJz +mkK +jdV +jEB +hIh +fqv +jyl +uLJ +xNg +vAr +oEa +qur +skI +aMe +qeu +jGs +toW +lpW +srG +gZR +dIz +oEO +xDC +oEO +abs +eKq +bVG +sWO +xjr +xjr +xjr +vSx +xjr +wqW +oNQ +vpk +wuw +rCy +rfB iOt +eqT uvI -uvI -uvI -uvI -vvJ -xMP +gSZ +byn +xwj +gSZ +fkg +uxC +hbT awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -74762,7 +77521,7 @@ nZT nZT nZT "} -(155,1,1) = {" +(165,1,1) = {" nZT nZT nZT @@ -74838,109 +77597,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -aan -awB -asv -ayK -sZs -cHv -wjT -aRI -vNI -nuK -lSx -vNI -vNI -vNI -vNI -vNI -wjT -bjL -fGr -ivo -nLr -bOv -oAO -kmx -hvY -tlt -cLa -mZf -xMz -vjC -sXy -hJA -sXy -mzl -aLi -xlD -vtJ -vNG -vNG -qpE -qvp -vNG -qLF -iOt -usF -rwK -xhP -oWq -uMy -iOt -uvI -grs -uvI -uvI -baL -uvI -uvI -uvI -uvI -uvI -xMP -awB -rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -74961,6 +77617,69 @@ nZT nZT nZT nZT +aan +awB +hvg +bDz +jyV +cYB +xxZ +dhb +neY +fqG +lJn +lpX +lpX +lpX +qOb +jJo +hIh +mHQ +dbe +tXj +hqO +sBB +oEF +vFk +cvr +rNh +luj +fnM +skH +csG +vAq +vAq +vAq +vAq +xRz +vAq +qGo +bUO +bVG +sWO +xjr +nqU +vDm +qRQ +sOc +xhK +qYK +vpk +wuw +rCy +pXb +fer +grs +uvI +gSZ +byn +gSZ +pHk +sjY +mZR +fMW +awB +rCi nZT nZT nZT @@ -75018,8 +77737,6 @@ nZT nZT nZT nZT -"} -(156,1,1) = {" nZT nZT nZT @@ -75060,6 +77777,16 @@ nZT nZT nZT nZT +"} +(166,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -75095,109 +77822,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -wjT -ast -vqy -bTU -wjT -oKu -dvJ -uKL -iUx -dbI -vNI -vNI -enQ -wZO -dvr -bAT -bUF -kcn -bAT -bAT -bAT -bAT -bAT -bAT -jjr -mZf -bIk -xvB -rci -wbJ -dzW -oVB -pnP -eQT -eQT -eQT -eQT -eQT -eQT -eQT -eQT -xMP -mNm -xMP -xMP -gmF -xMP -xMP -iOt -grs -uvI -uvI -iOt -uvI -uvI -uvI -uvI -uvI -xMP -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -75250,6 +77874,75 @@ nZT nZT nZT nZT +aan +awB +hbT +fMJ +bpM +cqZ +tva +uHX +gMX +xiw +gwu +wUl +ele +itV +ifd +lpX +hIh +nmy +ulC +vba +wBL +sxI +sba +vKa +skI +ghx +fbh +rCR +pgj +xiM +kLf +nuV +brk +qwJ +tCZ +mKw +tOn +oRT +bVG +sWO +xjr +txB +gLo +lQf +hAU +mXK +lpp +rJt +wAO +jeL +lYS +ykS +gXt +tKw +vzB +fVU +qSS +wCZ +iMe +uxC +hbT +awB +rCi +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -75275,8 +77968,6 @@ nZT nZT nZT nZT -"} -(157,1,1) = {" nZT nZT nZT @@ -75343,6 +78034,8 @@ nZT nZT nZT nZT +"} +(167,1,1) = {" nZT nZT nZT @@ -75352,109 +78045,6 @@ nZT nZT nZT nZT -agZ -agZ -alT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -wjT -wjT -wjT -wjT -wjT -pUe -ljY -gyb -jkD -hxT -dvr -dvr -dvr -dvr -dvr -kTG -fXG -ebN -nBW -nBW -akJ -nBW -nBW -nBW -oZG -eVa -mFE -pia -pnR -pvn -pAq -dEa -qTk -eQT -jAZ -jHU -cDB -eQT -nfh -qyx -vby -xMP -ejy -waO -xTb -bic -vOh -xMP -fXq -grs -uvI -iOt -iOt -iOt -iOt -iOt -iOt -xMP -xMP -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -75532,8 +78122,6 @@ nZT nZT nZT nZT -"} -(158,1,1) = {" nZT nZT nZT @@ -75542,6 +78130,71 @@ nZT nZT nZT nZT +sdP +aan +awB +hbT +fMJ +bpR +crr +pZx +eIS +neY +gzH +lJn +myc +nMw +pdJ +qsp +rHJ +hIh +wBL +wiQ +ybj +kkg +hfz +sRS +sRS +sRS +imA +qZU +xgi +nFQ +cPh +yfW +wwB +hnK +xJO +fum +vix +oEO +mBe +bVG +sWO +xjr +rKZ +sNT +qUo +tti +rhf +rbo +pmK +wuw +rCy +pXb +iOt +vWo +iOt +vLp +lHv +bfk +oTk +eBb +uxC +hbT +awB +rCi +sdP nZT nZT nZT @@ -75609,109 +78262,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -aan -awB -hbT -fMJ -aYO -caM -pde -jhR -oIU -hro -kJc -ujq -bAT -pwQ -mHf -cUY -bAT -fYD -wdT -ilv -nSd -bAT -bAT -bAT -bAT -bAT -bAT -aKU -aGK -xvB -qyG -xgz -dzW -oVB -tCy -eQT -aYy -uRe -bCy -eQT -bBO -uRe -cDL -xMP -oos -jLM -ezR -tCP -cbI -xMP -fXq -grs -uvI -iOt -ocp -knK -bts -jZB -gSZ -xMP -hbT -awB -rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -75741,6 +78291,8 @@ nZT nZT nZT nZT +"} +(168,1,1) = {" nZT nZT nZT @@ -75789,8 +78341,6 @@ nZT nZT nZT nZT -"} -(159,1,1) = {" nZT nZT nZT @@ -75838,6 +78388,69 @@ nZT nZT nZT nZT +aan +abz +hbT +aKK +aKK +crV +dqX +qdS +wEx +dqX +lJn +hzd +mAY +hIh +hIh +hIh +hIh +vlD +ulC +vba +hdn +nsd +sRS +iLi +sRS +brD +fbh +mQB +wxK +kCj +mNb +qVA +fDC +kCj +hbc +vix +pLD +ooi +bVG +sWO +xjr +ijH +ijH +ijH +vfn +ijH +vfn +eRh +rUo +jdO +pXb +iOt +tLU +iOt +mdB +gSZ +gSZ +dtY +lqE +uxC +hbT +abz +rCi nZT nZT nZT @@ -75866,109 +78479,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -hbT -fMJ -aZI -ccb -rvq -nYQ -pjH -hxX -uwM -hyl -hUu -irN -irN -jEv -kuR -kXA -lYM -obd -nSN -omo -mHf -mHf -mHf -mHf -bAT -rgC -aGK -qYM -uNA -wQR -nZu -oVB -cyz -eQT -wzA -aHp -eTH -uLI -vBP -uYy -vdZ -xMP -baE -ppU -glF -bnr -kXh -gxS -cFX -xQf -mnn -iOt -lpQ -knK -lnD -hRl -dVk -xMP -hbT -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -76038,6 +78548,20 @@ nZT nZT nZT nZT +"} +(169,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -76046,8 +78570,6 @@ nZT nZT nZT nZT -"} -(160,1,1) = {" nZT nZT nZT @@ -76123,109 +78645,89 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB -hbT -fMJ -bdH -ciI -mwE -sRk -pzD -mwE -mwE -nQu -bAT -isw -mHf -mHf -bAT -lav -iQG -mHf -mHf -mpX -oBl -mHf -mHf -mHf -mZf -wYA -qXF -hNg -lmz -ozS -xdA -oVB -mzd -eQT -rWs -vsq -kBy -eQT -glB -fXw -vsq -xMP -xMP -xMP -sFw -wqO -xMP -xMP -iOt +hvg +hMg +njy +ctR +pyZ +dlB +pGn +gBC +jPM +wsl +hWF +hIh +qyc +waX +hIh +umH +wsy +ybT +qqk +xxV +sRS +jYl +sRS +xSx +moF +rEp +rMn +bVM +iWD +ipb +wSk +mfS +qTY +pKe +scs +gcr +bVG +sWO +xjr +use +use +use +rcm +use +rcm +rqS +eGm +suy +rfB iOt -grs +qSy iOt gSZ gSZ -kWz gSZ gSZ -xMP -hbT +sET +mZR +fMW awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -76304,7 +78806,26 @@ nZT nZT nZT "} -(161,1,1) = {" +(170,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -76380,109 +78901,90 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ sdP aan awB -hvg -bDz -rNy -con -hAO -ehJ -fKk -bTh -jsi -lIC -mCr -qru -qru -qru -tyk -laJ -mge -aYe -nCR -bAT -mHf -mHf -mHf -mHf -bAT -jCE -uKq -xvB -ofC -oVB -rIR -oVB -ixf -eQT -pFP -qyR -tSv -eQT -yfG -xVb -vwZ -eQT +hbT +aKK +bru +qaL +dvP +uep +wnz +lZd +lZd +wpv +fcK +pIP +fKd +fKd +tAS +bWz +wzq +vhN +sCc +nKU +sRS +uBw +sRS +jCe +sRS +uQi +dXt +oEO +oEO +wFq +oEO +oEO +fhB +vix +bVG +bVG +bVG sWO xjr +jqA use -xEa -ugt -kYZ -qzf +use +nug +use +nug +rqS +mRd +suy +iQE iOt -xnh +qSy iOt -iQp -ppZ -quw -gSZ -xwZ -mZR -fMW +lIn +uvI +uvI +tVt +wlJ +xMP +hbT awB rCi sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -76561,7 +79063,27 @@ nZT nZT nZT "} -(162,1,1) = {" +(171,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -76637,109 +79159,89 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ aan awB hbT -axW -mkr -cpq -mwE -euo -pzD -gDg -vmb -aoH -bAT -oTv -mHf -uYq -dvr -lch -vdl -dvr -dvr -dvr -uCf -dvr -dvr -dvr -dvr -bVG -bVG -sVW -bVG -bVG -bVG -aVq +aKK +brY +qqd +iIw +dnp +oqH +wsl +ccH +ddg +hWF +hIh +ssn +rRR +hIh +iNc +bpU +vba +wBL +cvP +sRS +weG +ujZ +xAz +nkV +uXQ +vWs +fCk +tiy +rVi +tiy +oae +eqJ +qbg bVG -eQT -nkP -eQT -eQT -eQT -eQT -eQT -eQT -eQT +wSu +sWO sWO xjr -qYK -cde -wuw -rCy -pXb +jWS +use +use +use +use +use +rqS +lDF +use iOt -kEZ -oKP -hfo -bbg -fLU -bzQ -mvk -uxC +iOt +njf +iOt +iOt +iOt +iOt +iOt +xlb +xMP hbT awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -76818,7 +79320,7 @@ nZT nZT nZT "} -(163,1,1) = {" +(172,1,1) = {" nZT nZT nZT @@ -76894,109 +79396,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +alV awB hbT -aAx -biH -cpJ -cww -ewG -aQR -pGe -lJn -lJn -dvr -dvr -dvr -dvr -dvr -iXF -vVH -kOE -atB -pRr -gQT -dND -skI -ylI -dQg -tBl -dTn -aJz -mlm -xKy -bjT -oEO -rwV -sAm -tfo -ixT +aKK +bsy +uMv +lZd +dpb +fjA +hgV +dvP +jJt +hXJ +hIh +hIh +hIh +hIh +tND +dyW +kgC +nXi +oss +sRS +oVJ +qaB +gQz +bVG +bVG +euE +euE +euE +bVG +euE +euE +euE +bVG bVG -sWO -sWO -sWO -sWO -sWO sWO xjr -ojA -vpk -wuw -rCy -pXb +xjr +xjr +wPt +rjY +pae +pae +mhk +pae +bqr +pqF +vKN iOt -gho uvI -gSZ -pca -xwj -gSZ -eDY -uxC +njf +bMG +ahF +eRl +eRz +uvI +gju +xMP hbT awB rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -77075,7 +79577,7 @@ nZT nZT nZT "} -(164,1,1) = {" +(173,1,1) = {" nZT nZT nZT @@ -77151,109 +79653,89 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -aan -awB -hbT -aAx -boP -cqn -pes -kOb -neY -pZx -lJn -mjR -nJz -mkK -jdV -jEB +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aKK +aKK +aKK +aKK +eUI +eKz +nZt +dgj +gdL +rxx +mNk +mNk +mNk +pqG +ozk +gJD hIh -fqv -jyl -uLJ -xNg -vAr -oEa -qur skI -aMe -qeu -jGs -toW -lpW -srG -gZR -dIz -oEO -xDC -oEO -abs -eKq +dJc +cgr +skI +skI +sRS +oWg +rEj +jEE bVG sWO +sWO +sWO +sWO +sWO +sWO +sWO +sWO +sWO +sWO +sWO xjr +alT xjr -xjr -vSx -xjr -wqW -oNQ -vpk -wuw -rCy -rfB +hit +hit +hit +hit +hit +hit +xxz +hit +hit iOt -eqT uvI -gSZ -byn -xwj -gSZ -fkg -uxC -hbT -awB -rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +njf +uvI +uvI +uvI +uvI +uvI +nNN +xMP +xMP +xMP +xMP nZT nZT nZT @@ -77331,8 +79813,6 @@ nZT nZT nZT nZT -"} -(165,1,1) = {" nZT nZT nZT @@ -77353,6 +79833,10 @@ nZT nZT nZT nZT +"} +(174,1,1) = {" +nZT +nZT nZT nZT nZT @@ -77408,109 +79892,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -hvg -bDz -jyV -cYB -xxZ -dhb -neY -fqG -lJn -lpX -lpX -lpX -qOb -jJo -hIh -mHQ -dbe -tXj -hqO -sBB -oEF -vFk -cvr -rNh -luj -fnM -skH -csG -vAq -vAq -vAq -vAq -xRz -vAq -qGo -bUO -bVG -sWO -xjr -nqU -vDm -qRQ -sOc -xhK -qYK -vpk -wuw -rCy -pXb -fer -grs -uvI -gSZ -byn -gSZ -pHk -sjY -mZR -fMW -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -77549,6 +79930,71 @@ nZT nZT nZT nZT +aKK +vnw +aKK +aAA +fDP +cFY +ecq +fmj +fQY +tbQ +oec +jaM +fDP +fDP +fDP +hza +hIh +eSn +wEG +wBL +bnm +oGs +bVG +bVG +spx +lRX +bVG +bVG +euE +euE +euE +bVG +euE +euE +euE +bVG +bVG +bVG +xjr +xjr +xjr +gWQ +pWI +fmN +use +oRv +ezO +rqS +vAS +oBb +iOt +uvI +uUk +uvI +uvI +tRS +uvI +uvI +gju +iOt +xls +msr +xMP +nZT +nZT nZT nZT nZT @@ -77588,8 +80034,6 @@ nZT nZT nZT nZT -"} -(166,1,1) = {" nZT nZT nZT @@ -77646,6 +80090,8 @@ nZT nZT nZT nZT +"} +(175,1,1) = {" nZT nZT nZT @@ -77665,109 +80111,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -hbT -fMJ -bpM -cqZ -tva -uHX -gMX -xiw -gwu -wUl -ele -itV -ifd -lpX -hIh -nmy -ulC -vba -wBL -sxI -sba -vKa -skI -ghx -fbh -rCR -pgj -xiM -kLf -nuV -brk -qwJ -tCZ -mKw -tOn -oRT -bVG -sWO -xjr -txB -gLo -lQf -hAU -mXK -lpp -rJt -wAO -jeL -lYS -ykS -gXt -tKw -vzB -fVU -qSS -wCZ -iMe -uxC -hbT -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -77844,15 +80187,70 @@ nZT nZT nZT nZT +aKK +vnw +aKK +aKh +cmO +fzt +edT +fzt +fTa +fzt +otL +fzt +ezt +fDP +wow +fDP +hIh +tWA +wMe +wBL +wBL +sLR +hIh nZT -"} -(167,1,1) = {" nZT +mLZ nZT nZT +hbT +hbT +hbT +rhw +hbT +hbT +hbT +sdP nZT nZT nZT +sdP +xjr +dLq +jdt +gIG +use +coQ +lHj +gNy +hqX +use +rDV +uvI +vtr +uvI +uvI +kiM +uvI +uvI +mGS +aoe +hbl +lnm +jao +nSj nZT nZT nZT @@ -77922,109 +80320,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -aan -awB -hbT -fMJ -bpR -crr -pZx -eIS -neY -gzH -lJn -myc -nMw -pdJ -qsp -rHJ -hIh -wBL -wiQ -ybj -kkg -hfz -sRS -sRS -sRS -imA -qZU -xgi -nFQ -cPh -yfW -wwB -hnK -xJO -fum -vix -oEO -mBe -bVG -sWO -xjr -rKZ -sNT -qUo -tti -rhf -rbo -pmK -wuw -rCy -pXb -iOt -vWo -iOt -vLp -lHv -bfk -oTk -eBb -uxC -hbT -awB -rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -78052,6 +80347,8 @@ nZT nZT nZT nZT +"} +(176,1,1) = {" nZT nZT nZT @@ -78102,8 +80399,6 @@ nZT nZT nZT nZT -"} -(168,1,1) = {" nZT nZT nZT @@ -78149,6 +80444,29 @@ nZT nZT nZT nZT +aKK +vnw +aKK +aMY +bvR +fDP +cVB +fDP +gRQ +fDP +kui +fDP +bnc +fDP +fDP +fDP +hIh +tXU +xdB +wBL +uJt +gxD +epQ nZT nZT nZT @@ -78165,6 +80483,36 @@ nZT nZT nZT nZT +hbT +xjr +qNm +jdt +gIG +use +use +use +jhp +cRp +shx +iOt +uvI +vzQ +uvI +uvI +mnf +uvI +uvI +uvI +lPa +yeG +hAI +xMP +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -78179,109 +80527,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -abz -hbT -aKK -aKK -crV -dqX -qdS -wEx -dqX -lJn -hzd -mAY -hIh -hIh -hIh -hIh -vlD -ulC -vba -hdn -nsd -sRS -iLi -sRS -brD -fbh -mQB -wxK -kCj -mNb -qVA -fDC -kCj -hbc -vix -pLD -ooi -bVG -sWO -xjr -ijH -ijH -ijH -vfn -ijH -vfn -eRh -rUo -jdO -pXb -iOt -tLU -iOt -mdB -gSZ -gSZ -dtY -lqE -uxC -hbT -abz -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -78360,7 +80605,7 @@ nZT nZT nZT "} -(169,1,1) = {" +(177,1,1) = {" nZT nZT nZT @@ -78436,109 +80681,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB -hvg -hMg -njy -ctR -pyZ -dlB -pGn -gBC -jPM -wsl -hWF -hIh -qyc -waX +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aKK +aKK +aKK +aDf +fDP +fDP +fDP +fDP +fXN +imE +fDP +mUo +fDP +fDP +fDP +fDP hIh -umH -wsy -ybT -qqk -xxV -sRS -jYl -sRS -xSx -moF -rEp -rMn -bVM -iWD -ipb -wSk -mfS -qTY -pKe -scs -gcr -bVG -sWO +uhs +xem +wBL +wBL +cul +epQ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +hbT xjr -use -use -use -rcm -use -rcm -rqS -eGm -suy -rfB +xjr +ouM +beV +gKC +gKC +gKC +iRW +gKC +mSq iOt -qSy +uvI +tPA +uvI +uvI +uvI +uvI +uvI +uvI iOt -gSZ -gSZ -gSZ -gSZ -sET -mZR -fMW -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +xMP +xMP +xMP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -78617,7 +80862,7 @@ nZT nZT nZT "} -(170,1,1) = {" +(178,1,1) = {" nZT nZT nZT @@ -78693,109 +80938,109 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -aan -awB +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +amF hbT aKK -bru -qaL -dvP -uep -wnz -lZd -lZd -wpv -fcK -pIP -fKd -fKd -tAS -bWz -wzq -vhN -sCc -nKU -sRS -uBw -sRS -jCe -sRS -uQi -dXt -oEO -oEO -wFq -oEO -oEO -fhB -vix -bVG -bVG -bVG -sWO +aQt +kJD +cGU +kJD +cII +hfr +aKK +aKK +aKK +aKK +hjY +aKK +aKK +hIh +vEs +wBL +wBL +eET +lPV +hIh +nZT +nZT +nZT +nZT +nZT +sdP +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sdP +sdP xjr -jqA -use -use -nug -use -nug -rqS -mRd -suy -iQE -iOt -qSy +hrl +iRE +mvf +fLH +mvf +jMR +wrq +dAf iOt -lIn +uvI +tPA +uvI +uvI +uvI +uvI +uvI uvI uvI -tVt -wlJ xMP -hbT -awB -rCi -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -78874,7 +81119,28 @@ nZT nZT nZT "} -(171,1,1) = {" +(179,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -78950,109 +81216,66 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aan -awB hbT aKK -brY -qqd -hWF -dnp -oqH -wsl -ccH -ddg -hWF -hIh -ssn -rRR +bbt +aKK +aKK +aKK +aKK +ciQ +iDh +iDh +iDh +gag +pwi +qBT +sUy hIh -iNc -bpU -vba +vGa wBL -cvP -sRS -weG -ujZ -xAz -nkV -uXQ -vWs -fCk -tiy -rVi -tiy -oae -eqJ -qbg -bVG -wSu -sWO -sWO +wBL +qxs +hIh +hIh +fQo +fQo +fQo +fQo +fQo +sIz +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +sdP xjr -jWS -use -use -use -use -use -rqS -lDF -use -iOt -iOt -njf -iOt -iOt -iOt -iOt -iOt -xlb +wrq +aLD +wrq +bYY +wrq +aIC +wrq +wrq +dDP +eTM +sZC +eTM +otX +uhY +uhY +mOS +mOS +mZR xMP -hbT -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -79130,8 +81353,6 @@ nZT nZT nZT nZT -"} -(172,1,1) = {" nZT nZT nZT @@ -79154,6 +81375,11 @@ nZT nZT nZT nZT +"} +(180,1,1) = {" +nZT +nZT +nZT nZT nZT nZT @@ -79207,109 +81433,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -alV -awB -hbT -aKK -bsy -uMv -lZd -dpb -fjA -hgV -dvP -jJt -hXJ -hIh -hIh -hIh -hIh -tND -dyW -kgC -nXi -oss -sRS -oVJ -qaB -gQz -bVG -bVG -euE -euE -euE -bVG -euE -euE -euE -bVG -bVG -sWO -xjr -xjr -xjr -wPt -rjY -pae -pae -mhk -pae -bqr -pqF -vKN -iOt -uvI -njf -bMG -ahF -eRl -eRz -uvI -gju -xMP -hbT -awB -rCi -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -79351,6 +81474,33 @@ nZT nZT nZT nZT +agZ +bvn +hbT +hbT +sdP +aKK +bbt +aKK +aKK +aKK +ovU +pwR +vnw +vnw +hIh +vRT +wBL +wBL +wBL +meQ +hbT +nZT +nZT +nZT +nZT +nZT +sdP nZT nZT nZT @@ -79362,6 +81512,27 @@ nZT nZT nZT nZT +hbT +xjr +wrq +wrq +wrq +wrq +wrq +wrq +wrq +seW +iyw +xMP +uxC +uxC +dkt +xMP +sdP +hbT +hbT +agZ +bvn nZT nZT nZT @@ -79387,8 +81558,6 @@ nZT nZT nZT nZT -"} -(173,1,1) = {" nZT nZT nZT @@ -79463,110 +81632,9 @@ nZT nZT nZT nZT +"} +(181,1,1) = {" nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aKK -aKK -aKK -aKK -eUI -eKz -nZt -dgj -gdL -rxx -mNk -mNk -mNk -pqG -ozk -gJD -hIh -skI -dJc -cgr -skI -skI -sRS -oWg -rEj -jEE -bVG -sWO -sWO -sWO -sWO -sWO -sWO -sWO -sWO -sWO -sWO -sWO -xjr -pXb -xjr -hit -hit -hit -hit -hit -hit -xxz -hit -hit -iOt -uvI -njf -uvI -uvI -uvI -uvI -uvI -nNN -xMP -xMP -xMP -xMP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -79644,8 +81712,6 @@ nZT nZT nZT nZT -"} -(174,1,1) = {" nZT nZT nZT @@ -79665,9 +81731,27 @@ nZT nZT nZT nZT +agZ +agZ nZT nZT nZT +agZ +bvn +hbT +hbT +mXo +bbt +bbt +aKK +aKK +hIh +fyA +xDN +sUF +ijE +meQ +hbT nZT nZT nZT @@ -79685,9 +81769,27 @@ nZT nZT nZT nZT +hbT +xjr +xjr +xjr +xjr +xjr +xjr +xjr +xjr +wmx +dkt +fIU +hbT +hbT +agZ +bvn nZT nZT nZT +agZ +agZ nZT nZT nZT @@ -79721,109 +81823,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aKK -vnw -aKK -aAA -fDP -cFY -ecq -fmj -fQY -tbQ -oec -jaM -fDP -fDP -fDP -hza -hIh -eSn -wEG -wBL -bnm -oGs -bVG -bVG -spx -lRX -bVG -bVG -euE -euE -euE -bVG -euE -euE -euE -bVG -bVG -bVG -xjr -xjr -xjr -gWQ -pWI -fmN -use -oRv -ezO -rqS -vAS -oBb -iOt -uvI -uUk -uvI -uvI -tRS -uvI -uvI -gju -iOt -xls -msr -xMP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -79890,6 +81889,8 @@ nZT nZT nZT nZT +"} +(182,1,1) = {" nZT nZT nZT @@ -79901,8 +81902,6 @@ nZT nZT nZT nZT -"} -(175,1,1) = {" nZT nZT nZT @@ -79978,109 +81977,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aKK -vnw -aKK -aKh -cmO -fzt -edT -fzt -fTa -fzt -otL -fzt -ezt -fDP -wow -fDP -hIh -tWA -wMe -wBL -wBL -sLR -hIh -agZ -agZ -mLZ -agZ -agZ -hbT -hbT -hbT -rhw -hbT -hbT -hbT -sdP -agZ -agZ -agZ -sdP -xjr -dLq -jdt -gIG -use -coQ -lHj -gNy -hqX -use -rDV -uvI -vtr -uvI -uvI -kiM -uvI -uvI -mGS -aoe -hbl -lnm -jao -nSj -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -80097,9 +81993,22 @@ nZT nZT nZT nZT +agZ +agZ nZT nZT nZT +oIn +oIn +hbT +hbT +dKR +hIh +xLV +xLV +bxC +hIh +sdP nZT nZT nZT @@ -80117,9 +82026,22 @@ nZT nZT nZT nZT +sdP +sdP +hbT +hbT +hbT +sdP +sdP +hbT +hbT +oIn +oIn nZT nZT nZT +agZ +agZ nZT nZT nZT @@ -80158,8 +82080,6 @@ nZT nZT nZT nZT -"} -(176,1,1) = {" nZT nZT nZT @@ -80226,6 +82146,8 @@ nZT nZT nZT nZT +"} +(183,1,1) = {" nZT nZT nZT @@ -80235,109 +82157,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aKK -vnw -aKK -aMY -bvR -fDP -cVB -fDP -gRQ -fDP -kui -fDP -bnc -fDP -fDP -fDP -hIh -tXU -xdB -wBL -uJt -gxD -epQ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -hbT -xjr -qNm -jdt -gIG -use -use -use -jhp -cRp -shx -iOt -uvI -vzQ -uvI -uvI -mnf -uvI -uvI -uvI -lPa -yeG -hAI -xMP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -80415,8 +82234,6 @@ nZT nZT nZT nZT -"} -(177,1,1) = {" nZT nZT nZT @@ -80443,6 +82260,13 @@ nZT nZT nZT nZT +sdP +hbT +hbT +hbT +sdP +nZT +nZT nZT nZT nZT @@ -80492,109 +82316,16 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -aKK -aKK -aKK -aDf -fDP -fDP -fDP -fDP -fXN -imE -fDP -mUo -fDP -fDP -fDP -fDP -hIh -uhs -xem -wBL -wBL -cul -epQ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -hbT -xjr -xjr -ouM -beV -gKC -gKC -gKC -iRW -gKC -mSq -iOt -uvI -tPA -uvI -uvI -uvI -uvI -uvI -uvI -iOt -xMP -xMP -xMP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +aEe +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -80673,7 +82404,7 @@ nZT nZT nZT "} -(178,1,1) = {" +(184,1,1) = {" nZT nZT nZT @@ -80749,109 +82480,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -amF -hbT -aKK -aQt -kJD -cGU -kJD -cII -hfr -aKK -aKK -aKK -aKK -hjY -aKK -aKK -hIh -vEs -wBL -wBL -eET -lPV -hIh -agZ -agZ -agZ -agZ -agZ -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -sdP -xjr -hrl -iRE -mvf -fLH -mvf -jMR -wrq -dAf -iOt -uvI -tPA -uvI -uvI -uvI -uvI -uvI -uvI -uvI -xMP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -80929,8 +82557,6 @@ nZT nZT nZT nZT -"} -(179,1,1) = {" nZT nZT nZT @@ -81006,109 +82632,81 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -hbT -aKK -bbt -aKK -aKK -aKK -aKK -ciQ -iDh -iDh -iDh -gag -pwi -qBT -sUy -hIh -vGa -wBL -wBL -qxs -hIh -hIh -fQo -fQo -fQo -fQo -fQo -sIz -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -xjr -wrq -aLD -wrq -bYY -wrq -aIC -wrq -wrq -dDP -eTM -sZC -eTM -otX -uhY -uhY -mOS -mOS -mZR -xMP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(185,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -81186,8 +82784,6 @@ nZT nZT nZT nZT -"} -(180,1,1) = {" nZT nZT nZT @@ -81263,109 +82859,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -bvn -hbT -hbT -sdP -aKK -bbt -aKK -aKK -aKK -ovU -pwR -vnw -vnw -hIh -vRT -wBL -wBL -wBL -meQ -hbT -agZ -agZ -agZ -agZ -agZ -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -hbT -xjr -wrq -wrq -wrq -wrq -wrq -wrq -wrq -seW -iyw -xMP -uxC -uxC -dkt -xMP -sdP -hbT -hbT -agZ -bvn -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -81424,6 +82917,8 @@ nZT nZT nZT nZT +"} +(186,1,1) = {" nZT nZT nZT @@ -81443,8 +82938,6 @@ nZT nZT nZT nZT -"} -(181,1,1) = {" nZT nZT nZT @@ -81520,109 +83013,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -bvn -hbT -hbT -mXo -bbt -bbt -aKK -aKK -hIh -fyA -xDN -sUF -ijE -meQ -hbT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -hbT -xjr -xjr -xjr -xjr -xjr -xjr -xjr -xjr -wmx -dkt -fIU -hbT -hbT -agZ -bvn -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -81700,8 +83090,6 @@ nZT nZT nZT nZT -"} -(182,1,1) = {" nZT nZT nZT @@ -81777,109 +83165,43 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -oIn -oIn -hbT -hbT -dKR -hIh -xLV -xLV -bxC -hIh -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -sdP -hbT -hbT -hbT -sdP -sdP -hbT -hbT -oIn -oIn -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(187,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -81957,8 +83279,6 @@ nZT nZT nZT nZT -"} -(183,1,1) = {" nZT nZT nZT @@ -82034,109 +83354,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -sdP -hbT -hbT -hbT -sdP -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -alT -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -82215,7 +83432,60 @@ nZT nZT nZT "} -(184,1,1) = {" +(188,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -82291,109 +83561,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -82471,8 +83638,6 @@ nZT nZT nZT nZT -"} -(185,1,1) = {" nZT nZT nZT @@ -82523,6 +83688,9 @@ nZT nZT nZT nZT +"} +(189,1,1) = {" +nZT nZT nZT nZT @@ -82548,109 +83716,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -82728,8 +83793,6 @@ nZT nZT nZT nZT -"} -(186,1,1) = {" nZT nZT nZT @@ -82805,109 +83868,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -82986,7 +83946,7 @@ nZT nZT nZT "} -(187,1,1) = {" +(190,1,1) = {" nZT nZT nZT @@ -83062,109 +84022,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -83242,8 +84099,6 @@ nZT nZT nZT nZT -"} -(188,1,1) = {" nZT nZT nZT @@ -83319,109 +84174,95 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(191,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -83499,8 +84340,6 @@ nZT nZT nZT nZT -"} -(189,1,1) = {" nZT nZT nZT @@ -83576,109 +84415,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -83723,6 +84459,8 @@ nZT nZT nZT nZT +"} +(192,1,1) = {" nZT nZT nZT @@ -83756,8 +84494,76 @@ nZT nZT nZT nZT -"} -(190,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +aEe +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -83833,109 +84639,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -84014,7 +84717,27 @@ nZT nZT nZT "} -(191,1,1) = {" +(193,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -84090,109 +84813,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -84270,8 +84890,6 @@ nZT nZT nZT nZT -"} -(192,1,1) = {" nZT nZT nZT @@ -84347,109 +84965,42 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -alT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(194,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -84527,8 +85078,6 @@ nZT nZT nZT nZT -"} -(193,1,1) = {" nZT nZT nZT @@ -84604,109 +85153,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -84785,7 +85231,7 @@ nZT nZT nZT "} -(194,1,1) = {" +(195,1,1) = {" nZT nZT nZT @@ -84861,109 +85307,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT @@ -85014,6 +85357,7 @@ nZT nZT nZT nZT +aEe nZT nZT nZT @@ -85041,8 +85385,6 @@ nZT nZT nZT nZT -"} -(195,1,1) = {" nZT nZT nZT @@ -85118,109 +85460,61 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -alT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +"} +(196,1,1) = {" +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT +nZT nZT nZT nZT @@ -85298,8 +85592,6 @@ nZT nZT nZT nZT -"} -(196,1,1) = {" nZT nZT nZT @@ -85375,109 +85667,6 @@ nZT nZT nZT nZT -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ -agZ nZT nZT nZT diff --git a/_maps/map_files/Atlas/atlas.dmm b/_maps/map_files/Atlas/atlas.dmm index 03b83e70323..efd857ea4cc 100644 --- a/_maps/map_files/Atlas/atlas.dmm +++ b/_maps/map_files/Atlas/atlas.dmm @@ -31,16 +31,20 @@ /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump/layer4{ - name = "N20 to remix" +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + name = "Nitrogen to Air Mix"; + target_pressure = 2000 }, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 4 +/obj/machinery/atmospherics/components/binary/pump/layer4{ + name = "O2 to mix" }, /turf/open/floor/plating, /area/engine/atmos) "af" = ( -/turf/open/floor/plasteel/chapel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/carpet/royalblack, /area/chapel/main) "ag" = ( /obj/structure/table, @@ -116,9 +120,13 @@ /obj/machinery/door/firedoor/border_only{ dir = 8 }, -/turf/open/floor/plasteel/chapel{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/wood, /area/chapel/main) "aq" = ( /obj/machinery/door/airlock/ship/maintenance, @@ -130,14 +138,17 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "ar" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "au" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, @@ -161,8 +172,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "ax" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 @@ -196,24 +209,9 @@ /turf/open/floor/plasteel/techmaint, /area/science) "aB" = ( -/obj/structure/table/reinforced, -/obj/item/ship_weapon/parts/missile/propulsion_system, -/obj/item/ship_weapon/parts/missile/propulsion_system, -/obj/item/ship_weapon/parts/missile/guidance_system, -/obj/item/ship_weapon/parts/missile/guidance_system, -/obj/item/ship_weapon/parts/missile/guidance_system, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/ship_weapon/parts/missile/propulsion_system, -/obj/item/ship_weapon/parts/missile/warhead, -/obj/item/ship_weapon/parts/missile/warhead, -/obj/item/ship_weapon/parts/missile/warhead, -/obj/item/ship_weapon/parts/missile/iff_card, -/obj/item/ship_weapon/parts/missile/iff_card, -/obj/item/ship_weapon/parts/missile/iff_card, -/turf/open/floor/carpet/red, -/area/nsv/weapons) +/obj/effect/spawner/room/threexthree, +/turf/template_noop, +/area/maintenance/nsv/deck2/port) "aC" = ( /obj/structure/cable{ icon_state = "1-2" @@ -281,14 +279,8 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "aT" = ( -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 6 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/atmospherics/components/trinary/mixer/layer4{ - dir = 8 +/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer4{ + dir = 4 }, /turf/open/floor/plating, /area/engine/atmos) @@ -356,6 +348,15 @@ }, /turf/open/floor/monotile/steel, /area/nsv/weapons) +"be" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/steel/airless, +/area/nsv/hanger/mining) "bf" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -364,6 +365,12 @@ /obj/effect/landmark/start/shaft_miner, /turf/open/floor/engine, /area/quartermaster/storage) +"bg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/hallway/secondary/exit/departure_lounge) "bh" = ( /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) @@ -546,9 +553,10 @@ /area/maintenance/nsv/deck2/starboard) "bK" = ( /obj/machinery/airalarm/directional/west, -/turf/open/floor/plasteel/chapel{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 }, +/turf/open/floor/wood, /area/chapel/main) "bN" = ( /obj/machinery/disposal/deliveryChute{ @@ -560,9 +568,6 @@ }, /turf/open/floor/engine, /area/nsv/weapons) -"bO" = ( -/turf/open/floor/plating, -/area/maintenance/department/engine/atmos) "bW" = ( /obj/structure/cable{ icon_state = "4-8" @@ -579,6 +584,10 @@ }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) +"bX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "bY" = ( /obj/machinery/atmospherics/miner/toxins, /obj/machinery/air_sensor/atmos/toxin_tank, @@ -646,10 +655,10 @@ dir = 4 }, /obj/machinery/camera/autoname, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 4 - }, /obj/structure/closet/secure_closet/atmospherics, +/obj/structure/fireaxecabinet{ + pixel_y = 32 + }, /turf/open/floor/plating, /area/engine/atmos) "ct" = ( @@ -670,7 +679,13 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/durasteel/lino, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/carpet/royalblack, /area/chapel/main) "cw" = ( /obj/structure/cable{ @@ -808,7 +823,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/firealarm/directional/west, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "cT" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -835,15 +850,12 @@ /turf/open/floor/monotile/steel, /area/quartermaster/storage) "cY" = ( -/obj/effect/landmark/start/shaft_miner, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/machinery/light{ + dir = 8 }, +/obj/machinery/suit_storage_unit/mining/eva, /turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/area/quartermaster/miningoffice) "cZ" = ( /obj/structure/table/reinforced, /obj/item/clothing/gloves/color/yellow, @@ -854,15 +866,24 @@ /turf/open/floor/carpet/orange, /area/engine/engine_room) "dd" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) +"df" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/gauss/battery/deck2/port) "dh" = ( /obj/machinery/power/terminal{ dir = 4 @@ -876,11 +897,12 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/starboard) "dj" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/techmaint{ - initial_gas_mix = "TEMP=2.7" +/obj/structure/sign/directions/evac, +/obj/structure/sign/directions/engineering{ + pixel_y = -6 }, -/area/nsv/hanger/notkmcstupidhanger) +/turf/closed/wall/r_wall, +/area/hallway/nsv/deck2/primary) "dk" = ( /obj/machinery/suit_storage_unit/pilot, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -935,7 +957,6 @@ /area/hallway/nsv/deck2/primary) "dq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/camera/autoname{ dir = 8 @@ -943,6 +964,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/atmos) "ds" = ( @@ -1047,7 +1069,6 @@ /obj/item/poster/random_contraband, /obj/structure/closet/secure_closet/genpop, /obj/effect/turf_decal/ship/delivery/yellow, -/obj/machinery/light, /obj/item/clothing/under/rank/prisoner, /turf/open/floor/monotile/steel, /area/security/brig) @@ -1144,11 +1165,13 @@ /area/science) "dW" = ( /obj/structure/cable{ - icon_state = "4-16" + icon_state = "1-4" }, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "4-16" }, +/obj/effect/turf_decal/ship/shutoff, +/obj/effect/turf_decal/box, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "dX" = ( @@ -1205,23 +1228,19 @@ /turf/open/floor/monotile/steel, /area/security/brig) "ei" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "em" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "en" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1240,6 +1259,24 @@ /obj/machinery/light_switch/east, /turf/open/floor/monotile/dark, /area/science) +"eo" = ( +/obj/effect/turf_decal/tile/ship/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/ship/green{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Deck 2 Primary Hallway"; + departmentType = 2; + name = "Deck 2 Primary Hallway RC"; + pixel_y = 26 + }, +/turf/open/floor/durasteel/alt, +/area/hallway/nsv/deck2/primary) "ep" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1273,9 +1310,6 @@ /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 4 - }, /obj/machinery/airalarm/directional/north, /obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/plating, @@ -1327,10 +1361,6 @@ /area/maintenance/nsv/deck2/port/fore) "eB" = ( /obj/machinery/airalarm/directional/north, -/obj/machinery/light/small{ - brightness = 3; - dir = 1 - }, /obj/structure/table/reinforced, /obj/item/storage/box/lights/mixed, /obj/item/stack/cable_coil/red, @@ -1349,9 +1379,8 @@ }, /area/maintenance/department/engine/atmos) "eF" = ( -/obj/item/beacon, -/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer4{ - dir = 4 +/obj/machinery/atmospherics/components/trinary/mixer/layer4{ + dir = 8 }, /turf/open/floor/plating, /area/engine/atmos) @@ -1407,13 +1436,6 @@ }, /turf/open/floor/plasteel/airless/solarpanel, /area/space/nearstation) -"eQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) "eR" = ( /obj/item/trash/chips, /turf/open/floor/plating, @@ -1431,12 +1453,12 @@ /turf/open/floor/monotile/steel, /area/security/brig) "eX" = ( -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 10 - }, /obj/machinery/atmospherics/components/trinary/mixer/layer4{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ + dir = 10 + }, /turf/open/floor/plating, /area/engine/atmos) "eY" = ( @@ -1523,9 +1545,7 @@ dir = 10 }, /obj/item/radio/intercom/directional/south, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "fo" = ( /obj/machinery/door/airlock/highsecurity/ship{ @@ -1706,12 +1726,15 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss/battery/deck2/port) "fN" = ( @@ -1726,7 +1749,7 @@ dir = 4 }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "fP" = ( /obj/effect/turf_decal/pool, /obj/machinery/suit_storage_unit/engine, @@ -1746,7 +1769,7 @@ icon_state = "0-4" }, /turf/open/floor/plating, -/area/hallway/nsv/deck2/primary) +/area/security/brig) "fV" = ( /obj/effect/turf_decal/tile/ship/half/red{ dir = 4 @@ -1802,12 +1825,13 @@ /turf/open/floor/monotile/steel, /area/science) "ga" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" +/obj/structure/railing{ + dir = 4 }, -/area/nsv/hanger/mining) +/obj/structure/table, +/obj/effect/spawner/lootdrop/glowstick/lit, +/turf/open/floor/durasteel/techfloor, +/area/maintenance/nsv/deck2/port) "gb" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, @@ -1841,6 +1865,7 @@ /obj/effect/turf_decal/tile/ship/blue{ dir = 1 }, +/obj/machinery/space_heater, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "ge" = ( @@ -1904,12 +1929,8 @@ /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "gn" = ( -/obj/machinery/atmospherics/components/binary/pump/on/layer2{ - name = "Oxygen to Air Mix"; - target_pressure = 2000 - }, -/obj/machinery/atmospherics/components/binary/pump/layer4{ - name = "Oxygen to mixtape" +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ + dir = 8 }, /turf/open/floor/plating, /area/engine/atmos) @@ -1933,9 +1954,6 @@ /turf/open/floor/monotile/dark, /area/engine/engine_room) "gq" = ( -/obj/machinery/light{ - dir = 1 - }, /obj/machinery/advanced_airlock_controller/directional/north, /turf/open/floor/monotile/steel, /area/nsv/weapons) @@ -2032,14 +2050,14 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "gH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "gI" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/eastleft{ @@ -2137,7 +2155,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "ha" = ( /obj/effect/turf_decal/tile/orange{ dir = 8 @@ -2268,6 +2286,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, /area/security/brig) "hr" = ( @@ -2367,7 +2386,17 @@ /turf/closed/wall/r_wall, /area/maintenance/nsv/deck2/port) "hH" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/computer/atmos_control/tank/air_tank{ + dir = 4; + input_tag = "sdmix_in"; + name = "Reactor Mix Control"; + output_tag = "sdmix_out"; + sensors = list("sdmix_sensor"="Reactor Mix Tank") + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plating, /area/engine/atmos) "hI" = ( @@ -2386,9 +2415,7 @@ /obj/machinery/camera/autoname{ dir = 1 }, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "hK" = ( /obj/machinery/door/firedoor/border_only{ @@ -2410,7 +2437,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/monotile/dark, /area/ai_monitored/security/armory) "hL" = ( /turf/closed/wall/steel, @@ -2535,6 +2562,13 @@ /obj/item/extinguisher/advanced/hull_repair_juice, /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) +"ip" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/vendor/mining, +/turf/open/floor/monotile/steel, +/area/quartermaster/miningoffice) "ir" = ( /turf/open/floor/durasteel/techfloor, /area/maintenance/nsv/deck2/port) @@ -2610,6 +2644,7 @@ /area/nsv/weapons) "iF" = ( /obj/machinery/light_switch/south, +/obj/structure/ladder, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "iH" = ( @@ -2777,7 +2812,7 @@ /turf/open/floor/monotile/steel, /area/maintenance/nsv/deck2/starboard) "jh" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden, +/obj/machinery/atmospherics/pipe/simple/green/hidden, /turf/closed/wall/r_wall, /area/engine/atmos) "jl" = ( @@ -2812,8 +2847,6 @@ }, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; location = "QM #2" }, /mob/living/simple_animal/bot/mulebot{ @@ -2874,7 +2907,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "jt" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 1 @@ -2900,7 +2933,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "jx" = ( /turf/closed/wall/r_wall, /area/nsv/hanger/notkmcstupidhanger) @@ -2973,19 +3006,12 @@ /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck2/primary) "jG" = ( -/obj/machinery/requests_console{ - department = "Mining Hangar"; - departmentType = 2; - name = "Mining Hangar RC"; - pixel_y = 26 - }, -/obj/structure/closet/secure_closet/miner, -/obj/item/stack/sheet/mineral/wood/fifty, -/obj/item/encryptionkey/pilot, -/obj/item/encryptionkey/pilot, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" +/obj/machinery/camera/autoname{ + c_tag = "Atmos - Airlock #2"; + dir = 6 }, +/obj/structure/reagent_dispensers/fueltank/cryogenic_fuel, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "jI" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input, @@ -3019,10 +3045,10 @@ /turf/open/floor/monotile/dark, /area/ai_monitored/security/armory) "jP" = ( -/obj/machinery/portable_atmospherics/canister/toxins, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output{ dir = 1 }, +/obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/engine/plasma, /area/engine/atmos) "jQ" = ( @@ -3124,9 +3150,11 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/item/radio/intercom/directional/east, +/obj/machinery/light{ + dir = 4 + }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "kk" = ( /obj/structure/chair/stool, /obj/machinery/firealarm/directional/east, @@ -3192,9 +3220,6 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) -"kr" = ( -/turf/closed/wall/steel, -/area/chapel/main) "ks" = ( /obj/machinery/door/airlock/ship/maintenance/defaultaccess{ name = "Smoking lounge access"; @@ -3237,7 +3262,18 @@ pixel_y = 24 }, /turf/open/floor/monotile/dark, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) +"kx" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/machinery/camera/autoname{ + c_tag = "Atmos - Airlock #2"; + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "ky" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3255,16 +3291,16 @@ /area/hallway/nsv/deck2/primary) "kz" = ( /obj/structure/table/wood, -/obj/machinery/door/poddoor/shutters/ship{ - id = "sermon_shutters"; - name = "sermon shutters" - }, /obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ dir = 1 }, /obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/monotile/dark, +/obj/machinery/door/poddoor/shutters/ship{ + id = "sermon_shutters"; + name = "sermon shutters" + }, +/turf/open/floor/wood, /area/chapel/main) "kA" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, @@ -3453,7 +3489,7 @@ }, /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "kY" = ( /obj/structure/chair{ dir = 8 @@ -3461,8 +3497,9 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/machinery/airalarm/directional/east, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "kZ" = ( /obj/structure/reagent_dispensers/fueltank/cryogenic_fuel, /obj/machinery/airalarm/server{ @@ -3520,6 +3557,18 @@ }, /turf/open/floor/monotile/dark, /area/nsv/weapons) +"lg" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "lh" = ( /obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plating{ @@ -3595,15 +3644,8 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "ls" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/closet/secure_closet/miner, -/obj/item/encryptionkey/pilot, -/obj/item/encryptionkey/pilot, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, +/obj/structure/reagent_dispensers/fueltank/cryogenic_fuel, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "lt" = ( /obj/machinery/computer/ams{ @@ -3700,8 +3742,10 @@ /turf/open/floor/monotile/steel, /area/science) "lC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "lD" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input{ dir = 1 @@ -3748,11 +3792,8 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "lN" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -3796,19 +3837,24 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/effect/turf_decal/ship/shutoff, +/obj/effect/turf_decal/box, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) "lX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/structure/cable{ icon_state = "0-2" }, /obj/machinery/power/apc/auto_name/east, /obj/structure/disposalpipe/trunk, /obj/machinery/disposal/bin, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/atmos) "lY" = ( @@ -3883,6 +3929,9 @@ "mr" = ( /obj/structure/extinguisher_cabinet/east, /obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/engine/atmos) "ms" = ( @@ -3901,6 +3950,17 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) +"mv" = ( +/obj/effect/turf_decal/tile/ship/green, +/obj/effect/turf_decal/tile/ship/green{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/durasteel/alt, +/area/hallway/nsv/deck2/primary) "mx" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -4037,20 +4097,20 @@ /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 10 - }, -/obj/machinery/computer/atmos_control/tank/nitrous_tank, +/obj/machinery/computer/atmos_control/tank/oxygen_tank, /turf/open/floor/plating, /area/engine/atmos) "mX" = ( /turf/open/floor/carpet/orange, /area/engine/engine_room) "mY" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ - dir = 10 - }, /obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4, +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse{ + dir = 8; + node1_concentration = 0.79; + node2_concentration = 0.21; + piping_layer = 2 + }, /turf/open/floor/plating, /area/engine/atmos) "mZ" = ( @@ -4123,6 +4183,11 @@ }, /turf/open/floor/monotile/dark, /area/nsv/weapons) +"no" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light, +/turf/open/floor/monotile/steel/airless, +/area/nsv/hanger/mining) "np" = ( /obj/machinery/computer/ship/viewscreen, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ @@ -4139,7 +4204,7 @@ dir = 1; pixel_y = -6 }, -/turf/closed/wall/steel, +/turf/closed/wall/r_wall, /area/hallway/nsv/deck2/primary) "nr" = ( /obj/machinery/button/door{ @@ -4203,6 +4268,10 @@ }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) +"nz" = ( +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plating, +/area/engine/atmos) "nA" = ( /obj/structure/particle_accelerator/particle_emitter/center{ dir = 8 @@ -4257,12 +4326,12 @@ /area/nsv/weapons) "nG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/stripes/line, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/atmos) "nH" = ( @@ -4324,25 +4393,16 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/starboard) "nM" = ( -/obj/machinery/atmospherics/components/binary/pump/on/layer2{ - name = "Air to distro"; - target_pressure = 2000 - }, -/obj/machinery/atmospherics/components/trinary/mixer/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ + dir = 9 }, /turf/open/floor/plating, /area/engine/atmos) "nN" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2, -/obj/machinery/atmospherics/components/binary/magnetic_constrictor{ - dir = 8; - piping_layer = 2 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plating, /area/engine/atmos) "nO" = ( @@ -4367,11 +4427,9 @@ /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck2/primary) "nT" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ - dir = 9 - }, -/obj/machinery/meter/atmos{ - target_layer = 4 +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + name = "Air to distro"; + target_pressure = 2000 }, /turf/open/floor/plating, /area/engine/atmos) @@ -4388,18 +4446,17 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) "nZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plating, +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input, +/obj/machinery/camera/autoname, +/turf/open/floor/engine/co2, /area/engine/atmos) "ob" = ( -/turf/closed/wall/steel, -/area/maintenance/nsv/deck2/starboard) +/turf/closed/wall/r_wall, +/area/nsv/weapons/gauss/battery/deck2/starboard) "oc" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/inverse{ - dir = 8; - piping_layer = 2 +/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4, /turf/open/floor/plating, /area/engine/atmos) "oe" = ( @@ -4430,9 +4487,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "oj" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -4480,6 +4535,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/open/floor/plasteel/techmaint, /area/science) "op" = ( @@ -4492,12 +4550,8 @@ name = "Abandoned Bar" }) "or" = ( -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ - dir = 9 - }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4, +/obj/machinery/atmospherics/pipe/manifold/purple/visible/layer2, /turf/open/floor/plating, /area/engine/atmos) "os" = ( @@ -4515,11 +4569,10 @@ /turf/open/floor/plasteel/techmaint, /area/security/brig) "ot" = ( -/obj/structure/reagent_dispensers/fueltank/cryogenic_fuel, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/nsv/hanger/mining) +/obj/machinery/firealarm/directional/west, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/monotile/steel, +/area/quartermaster/miningoffice) "ov" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4573,8 +4626,11 @@ dir = 5 }, /obj/machinery/status_display/evac/west, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "oD" = ( /turf/template_noop, /area/maintenance/nsv/deck2/port) @@ -4666,6 +4722,9 @@ /area/crew_quarters/abandoned_gambling_den{ name = "Abandoned Bar" }) +"oU" = ( +/turf/closed/wall/steel, +/area/hallway/secondary/exit/departure_lounge) "oV" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 4 @@ -4827,14 +4886,11 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) "pm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "pn" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4864,7 +4920,7 @@ /obj/item/reagent_containers/food/snacks/grown/harebell, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/east, -/turf/open/floor/monotile/dark, +/turf/open/floor/durasteel/techfloor, /area/chapel/main) "pp" = ( /obj/structure/chair/office, @@ -4937,6 +4993,13 @@ }, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck2/primary) +"pA" = ( +/obj/structure/closet/secure_closet/miner, +/obj/item/stack/sheet/mineral/wood/five, +/obj/item/encryptionkey/pilot, +/obj/item/encryptionkey/pilot, +/turf/open/floor/monotile/steel, +/area/quartermaster/miningoffice) "pC" = ( /obj/machinery/door/airlock/highsecurity/ship{ name = "Weapons Bay"; @@ -5049,6 +5112,9 @@ dir = 8 }, /obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/light/small{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "pU" = ( @@ -5075,6 +5141,9 @@ pixel_y = 32; req_one_access_txt = "69" }, +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/plasteel/techmaint{ initial_gas_mix = "TEMP=2.7" }, @@ -5194,9 +5263,7 @@ /obj/machinery/airalarm/server{ pixel_y = 23 }, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "ql" = ( /obj/effect/turf_decal/tile/ship/green, @@ -5251,13 +5318,6 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/monotile/steel, /area/security/brig) -"qw" = ( -/obj/machinery/camera{ - c_tag = "Atmospherics Tank - Mix"; - dir = 8 - }, -/turf/open/floor/engine/vacuum, -/area/engine/atmos) "qx" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5366,14 +5426,9 @@ /area/hallway/nsv/deck2/primary) "qY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - dir = 8 + dir = 1 }, +/turf/open/floor/carpet/royalblack, /area/chapel/main) "ra" = ( /obj/structure/table/wood/poker, @@ -5408,8 +5463,9 @@ /obj/structure/chair{ dir = 8 }, +/obj/structure/extinguisher_cabinet/east, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "rf" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 4 @@ -5421,7 +5477,7 @@ /area/hallway/nsv/deck2/primary) "rh" = ( /obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output, +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input, /turf/open/floor/engine/o2, /area/engine/atmos) "ri" = ( @@ -5486,8 +5542,8 @@ dir = 8 }, /obj/machinery/airalarm/directional/west, -/obj/machinery/suit_storage_unit/captain, /obj/item/radio/intercom/directional/north, +/obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "ru" = ( @@ -5514,14 +5570,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ - dir = 4 - }, /turf/open/floor/plating, /area/engine/atmos) "ry" = ( /obj/structure/closet/radiation, /obj/item/geiger_counter, +/obj/machinery/firealarm/directional/east, /turf/open/floor/monotile/dark, /area/engine/engine_room) "rz" = ( @@ -5571,8 +5625,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss/battery/deck2/port) @@ -5615,7 +5669,7 @@ id = "riot_storage"; name = "Riot Armoury Shutters" }, -/turf/open/floor/plating, +/turf/open/floor/monotile/dark, /area/ai_monitored/security/armory) "rL" = ( /obj/effect/turf_decal/stripes/line{ @@ -5709,8 +5763,8 @@ /area/hallway/nsv/deck2/primary) "rW" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss/battery/deck2/starboard) @@ -5769,14 +5823,6 @@ /obj/machinery/computer/ship/viewscreen, /turf/open/floor/plasteel/techmaint, /area/science) -"sg" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/curtain/obscuring/grey, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/chapel/main) "sh" = ( /turf/open/floor/plating, /area/maintenance/nsv/deck2/port/fore) @@ -5823,33 +5869,50 @@ dir = 1 }, /obj/effect/turf_decal/tile/yellow, -/obj/machinery/light, /obj/structure/rack, /obj/item/stack/sheet/duranium/twenty, /obj/item/stack/sheet/duranium/twenty, /obj/item/stack/sheet/mineral/titanium/fifty, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) +"sq" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/grid/steel, +/area/hallway/secondary/exit/departure_lounge) "sx" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/nsv/hanger/notkmcstupidhanger) +"sy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plasteel/grid/steel, +/area/hallway/secondary/exit/departure_lounge) "sz" = ( /obj/machinery/shieldgen, /turf/open/floor/plating, /area/maintenance/nsv/deck2/port/fore) "sA" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-4" }, /obj/effect/landmark/start/shaft_miner, -/obj/machinery/atmospherics/pipe/layer_manifold{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "sC" = ( /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss/battery/deck2/starboard) "sE" = ( @@ -5859,22 +5922,27 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) +"sF" = ( +/obj/machinery/light/floor, +/turf/open/floor/plasteel/techmaint{ + initial_gas_mix = "TEMP=2.7" + }, +/area/nsv/hanger/notkmcstupidhanger) "sG" = ( /obj/effect/turf_decal/tile/ship/half/green, /obj/machinery/camera/autoname, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "sH" = ( -/turf/open/floor/plasteel/techmaint{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/plasteel/techmaint, /area/nsv/hanger/mining) "sI" = ( -/obj/machinery/light{ +/obj/effect/turf_decal/tile/ship/half/red{ dir = 1 }, -/turf/open/floor/monotile/dark, -/area/science) +/obj/effect/turf_decal/tile/ship/red, +/turf/open/floor/monotile/steel, +/area/security/brig) "sJ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -5959,10 +6027,8 @@ /turf/template_noop, /area/maintenance/nsv/deck2/starboard) "sV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, /obj/structure/closet/firecloset, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "sY" = ( @@ -5991,11 +6057,11 @@ /turf/open/floor/monotile/dark, /area/science) "tg" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ - dir = 8 +/obj/machinery/atmospherics/components/binary/pump/layer4{ + name = "CO2 to mix" }, -/obj/machinery/atmospherics/pipe/manifold/purple/visible/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 }, /turf/open/floor/plating, /area/engine/atmos) @@ -6011,7 +6077,7 @@ dir = 8 }, /turf/open/floor/durasteel/alt, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "ti" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -6140,16 +6206,17 @@ }, /obj/effect/landmark/zebra_interlock_point, /obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/quartermaster/storage) "tw" = ( -/obj/structure/chair/fancy/bench/pew/left{ - dir = 1 - }, -/obj/machinery/camera/autoname{ +/obj/structure/chair/fancy/bench/pew/right{ dir = 1 }, -/turf/open/floor/plasteel/chapel, +/obj/machinery/light, +/turf/open/floor/carpet/royalblack, /area/chapel/main) "tx" = ( /obj/structure/disposalpipe/segment{ @@ -6157,17 +6224,26 @@ }, /turf/open/floor/monotile/dark, /area/science) +"ty" = ( +/obj/effect/turf_decal/tile/ship/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/ship/red{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/grid/steel, +/area/hallway/secondary/exit/departure_lounge) "tz" = ( /obj/machinery/seed_extractor, /turf/open/floor/plasteel/techmaint, /area/security/prison) "tA" = ( -/obj/machinery/computer/atmos_control/tank/oxygen_tank, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 6 - }, +/obj/machinery/computer/atmos_control/tank/carbon_tank, /obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 + dir = 4 }, /turf/open/floor/plating, /area/engine/atmos) @@ -6187,6 +6263,14 @@ }, /turf/open/floor/engine, /area/engine/engine_room) +"tE" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/light, +/turf/open/space/basic, +/area/nsv/hanger/notkmcstupidhanger) "tG" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -6195,6 +6279,9 @@ icon_state = "4-8" }, /obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss/battery/deck2/port) "tJ" = ( @@ -6243,8 +6330,9 @@ "tT" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/light_switch/east, +/obj/machinery/firealarm/directional/south, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "tX" = ( /obj/machinery/ship_weapon/torpedo_launcher/east, /obj/machinery/computer/ship/munitions_computer/west{ @@ -6282,6 +6370,13 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) +"uc" = ( +/obj/structure/closet/secure_closet/engineering_welding{ + req_access = null; + req_one_access_txt = "48" + }, +/turf/open/floor/monotile/steel/airless, +/area/nsv/hanger/mining) "ud" = ( /obj/structure/cable{ icon_state = "4-8" @@ -6300,6 +6395,12 @@ /obj/machinery/door/firedoor/border_only{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/chapel/main) "ue" = ( @@ -6440,6 +6541,24 @@ }, /turf/open/floor/monotile/steel, /area/security/brig) +"uv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/hallway/secondary/exit/departure_lounge) "uw" = ( /obj/effect/turf_decal/ship/techfloor{ dir = 8 @@ -6475,15 +6594,16 @@ dir = 6 }, /obj/structure/window/reinforced, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/engine, /area/quartermaster/storage) "uz" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/item/clothing/suit/radiation, /obj/item/clothing/head/radiation, -/obj/machinery/light/small{ - brightness = 3 - }, +/obj/machinery/light, /turf/open/floor/monotile/dark, /area/engine/engine_room) "uA" = ( @@ -6494,9 +6614,7 @@ dir = 4; id = "atlas_mining_hangar" }, -/turf/open/floor/plasteel/techmaint{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "uC" = ( /obj/machinery/light/small{ @@ -6559,9 +6677,6 @@ /obj/machinery/atmospherics/pipe/manifold/purple/visible/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ - dir = 6 - }, /turf/open/floor/plating, /area/engine/atmos) "uL" = ( @@ -6578,15 +6693,10 @@ /turf/open/floor/monotile/dark, /area/science) "uM" = ( -/obj/structure/chair/fancy/bench/pew/right{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ +/obj/structure/chair/fancy/bench/pew/left{ dir = 1 }, +/turf/open/floor/carpet/royalblack, /area/chapel/main) "uP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, @@ -6724,6 +6834,8 @@ /area/hallway/nsv/deck2/primary) "vo" = ( /obj/machinery/door/airlock/ship/maintenance, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, /turf/open/floor/plating, /area/maintenance/nsv/deck2/port/fore) "vq" = ( @@ -6742,7 +6854,7 @@ dir = 4; pixel_y = -6 }, -/turf/closed/wall/steel, +/turf/closed/wall/r_wall, /area/hallway/nsv/deck2/primary) "vu" = ( /obj/structure/disposalpipe/segment{ @@ -6877,8 +6989,10 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "vT" = ( /obj/effect/turf_decal/ship/delivery/yellow, /obj/machinery/door/firedoor/border_only{ @@ -6888,6 +7002,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/light{ + dir = 4 + }, /turf/open/floor/monotile/steel, /area/science) "vU" = ( @@ -6970,28 +7087,24 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "wk" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 }, -/turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "wl" = ( /turf/closed/wall/r_wall, /area/security/prison) "wn" = ( -/obj/structure/closet/secure_closet/miner, -/obj/item/stack/sheet/mineral/wood/fifty, -/obj/item/encryptionkey/pilot, -/obj/item/encryptionkey/pilot, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/nsv/hanger/mining) +/obj/machinery/airalarm/directional/north, +/turf/open/floor/monotile/steel, +/area/quartermaster/miningoffice) "wq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -7008,21 +7121,17 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) "wr" = ( -/obj/machinery/door/airlock/ship/external{ - name = "Mining Shuttle Airlock"; - req_one_access_txt = "31;48" - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/item/radio/intercom/directional/east, +/obj/machinery/camera/autoname{ + c_tag = "Atmos - Airlock #2"; + dir = 8 }, /turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/area/quartermaster/miningoffice) "wt" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/obj/effect/landmark/start/shaft_miner, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "wu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -7046,9 +7155,6 @@ "wy" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/curtain/obscuring/grey, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, /turf/open/floor/plating, /area/chapel/main) "wA" = ( @@ -7082,6 +7188,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/sign/warning/enginesafety{ + pixel_y = 26 + }, /turf/open/floor/plasteel/techmaint, /area/nsv/weapons) "wG" = ( @@ -7106,6 +7215,7 @@ "wK" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/structure/rack, +/obj/item/gps/science, /turf/open/floor/plating, /area/maintenance/department/science) "wL" = ( @@ -7232,11 +7342,13 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port/fore) "xd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide{ - valve_open = 1 +/obj/structure/extinguisher_cabinet/west, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/camera/autoname{ + dir = 4 }, -/turf/open/floor/engine/n2o, +/obj/machinery/space_heater, +/turf/open/floor/plating, /area/engine/atmos) "xg" = ( /obj/effect/spawner/lootdrop/minor/bowler_or_that, @@ -7313,21 +7425,18 @@ /obj/machinery/door/firedoor/border_only{ dir = 8 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/durasteel/alt, -/area/hallway/nsv/deck2/primary) +/area/security/brig) "xs" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/machinery/button/door{ - id = "atlas_mining_hangar"; - name = "Pod Bay Doors"; - pixel_y = 32; - req_one_access_txt = "48" - }, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" +/obj/machinery/power/apc/auto_name/north, +/obj/structure/cable{ + icon_state = "0-2" }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "xt" = ( /obj/structure/cable/yellow{ @@ -7389,7 +7498,7 @@ id = "gaussgang_atlas"; name = "Public Gauss Access" }, -/turf/open/floor/plating, +/turf/open/floor/monotile/dark, /area/nsv/weapons/gauss/battery/deck2/starboard) "xH" = ( /obj/effect/turf_decal/tile/ship/half/red{ @@ -7470,7 +7579,8 @@ pixel_y = 26; req_access_txt = "22" }, -/turf/open/floor/durasteel/lino, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/wood, /area/chapel/main) "xS" = ( /obj/machinery/light/small{ @@ -7498,6 +7608,23 @@ }, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck2/primary) +"xW" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow, +/obj/machinery/power/solar{ + id = "starboardsolar"; + name = "Starboard Solar Array" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/plasteel/airless/solarpanel, +/area/space/nearstation) "xX" = ( /obj/structure/reagent_dispensers/fueltank/cryogenic_fuel, /obj/item/radio/intercom/directional/north, @@ -7520,33 +7647,37 @@ /area/nsv/weapons) "ya" = ( /obj/machinery/light, -/obj/machinery/suit_storage_unit/mining/eva, +/obj/effect/landmark/start/shaft_miner, /turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/area/quartermaster/miningoffice) "ye" = ( /obj/effect/turf_decal/stripes/line, /obj/item/kirbyplants{ icon_state = "plant-10" }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "yg" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/nsv/hanger/mining) +/obj/structure/closet/secure_closet/miner, +/obj/item/stack/sheet/mineral/wood/five, +/obj/item/stack/sheet/mineral/wood/five, +/obj/item/encryptionkey/pilot, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/monotile/steel, +/area/quartermaster/miningoffice) "yk" = ( -/obj/structure/chair/fancy/bench/pew/right{ - dir = 1 - }, /obj/machinery/light_switch{ pixel_x = 6; pixel_y = -25 }, -/turf/open/floor/plasteel/chapel{ - dir = 8 +/obj/structure/chair/fancy/bench/pew/left{ + dir = 1 }, +/obj/structure/extinguisher_cabinet/east, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/carpet/royalblack, /area/chapel/main) "ym" = ( /obj/machinery/turnstile, @@ -7624,6 +7755,12 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/carpet/red, /area/nsv/weapons) +"yB" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/techmaint{ + initial_gas_mix = "TEMP=2.7" + }, +/area/nsv/hanger/notkmcstupidhanger) "yC" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -7768,20 +7905,15 @@ dir = 1 }, /turf/closed/wall/steel, -/area/janitor) +/area/nsv/weapons/gauss/battery/deck2/starboard) "yY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "yZ" = ( /obj/machinery/atmospherics/miner/oxygen, /obj/machinery/light/small{ @@ -7794,6 +7926,15 @@ "za" = ( /turf/open/floor/monotile/steel, /area/ai_monitored/security/armory) +"zc" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "ze" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -7928,14 +8069,15 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/starboard) "zA" = ( -/obj/machinery/firealarm{ - pixel_y = 24 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/power/apc/auto_name/north, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "zB" = ( /obj/item/storage/box/beakers{ pixel_x = 2; @@ -7981,15 +8123,11 @@ /turf/closed/wall/r_wall, /area/maintenance/department/engine/atmos) "zJ" = ( -/obj/effect/landmark/start/shaft_miner, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "zL" = ( /obj/effect/turf_decal/ship/outline, /obj/machinery/missile_builder/assembler{ @@ -8118,11 +8256,11 @@ /turf/open/floor/monotile/dark, /area/science) "Ae" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 }, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Aj" = ( /obj/structure/railing, /obj/effect/turf_decal/ship/delivery/yellow, @@ -8177,11 +8315,15 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port/fore) "Au" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Ax" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -8212,24 +8354,17 @@ /obj/machinery/door/airlock/ship/maintenance/defaultaccess, /turf/open/floor/monotile/steel, /area/maintenance/nsv/deck2/port/fore) -"AG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) "AI" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/security/prison) "AL" = ( -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 5 - }, -/obj/structure/extinguisher_cabinet/west, -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ - dir = 6 +/obj/machinery/atmospherics/miner/carbon_dioxide, +/obj/machinery/air_sensor/atmos/carbon_tank, +/obj/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/engine/co2, /area/engine/atmos) "AR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -8248,10 +8383,16 @@ dir = 4 }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "AT" = ( /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/cargo_technician, @@ -8321,8 +8462,21 @@ dir = 8 }, /obj/effect/turf_decal/tile/yellow, +/obj/machinery/light{ + dir = 4 + }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) +"Bi" = ( +/obj/effect/turf_decal/tile/ship/red, +/obj/effect/turf_decal/tile/ship/red{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/grid/steel, +/area/hallway/secondary/exit/departure_lounge) "Bj" = ( /turf/open/floor/monotile/dark, /area/science) @@ -8333,6 +8487,10 @@ }, /turf/open/indestructible/sound/pool/spentfuel/wall, /area/engine/engine_room) +"Br" = ( +/obj/machinery/light, +/turf/open/floor/monotile/steel/airless, +/area/nsv/hanger/mining) "Bs" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -8384,35 +8542,25 @@ /turf/open/floor/monotile/steel, /area/engine/engine_room) "BC" = ( -/obj/machinery/computer/atmos_control/tank/nitrogen_tank, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 4 - }, +/obj/machinery/computer/atmos_control/tank/nitrogen_tank, /turf/open/floor/plating, /area/engine/atmos) "BD" = ( /obj/machinery/biogenerator, -/obj/machinery/light/small{ - brightness = 3; +/obj/machinery/light{ dir = 8 }, /turf/open/floor/plasteel/techmaint, /area/security/prison) "BF" = ( /obj/effect/turf_decal/stripes/line, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "BG" = ( -/obj/machinery/atmospherics/components/binary/pump/layer4{ - dir = 1; - name = "Co2 to MEGAmix" - }, -/obj/machinery/camera/autoname{ +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ dir = 4 }, /turf/open/floor/plating, @@ -8496,23 +8644,14 @@ name = "Abandoned Bar" }) "BR" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input{ +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output{ dir = 1 }, -/obj/machinery/camera/autoname{ - dir = 1 +/obj/machinery/portable_atmospherics/canister/nitrous_oxide{ + valve_open = 1 }, -/turf/open/floor/engine/co2, +/turf/open/floor/engine/n2o, /area/engine/atmos) -"BS" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) "BU" = ( /turf/closed/wall/r_wall{ layer = 2.91 @@ -8551,12 +8690,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/monotile/dark, /area/science) -"Cc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) "Ce" = ( /obj/structure/table/reinforced, /obj/item/ship_weapon/parts/missile/propulsion_system, @@ -8695,18 +8828,25 @@ "Cz" = ( /obj/machinery/light, /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/light_switch/south, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "CA" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/monotile/dark, /area/nsv/weapons) "CC" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "CD" = ( /obj/machinery/door/airlock/ship/public{ name = "Custodial Garage"; @@ -8760,8 +8900,11 @@ /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/small{ + dir = 4 + }, /turf/open/floor/monotile/dark, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "CS" = ( /obj/effect/turf_decal/pool{ dir = 4 @@ -8805,22 +8948,10 @@ }, /turf/open/floor/carpet/ship, /area/nsv/hanger/notkmcstupidhanger) -"Dd" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input, -/obj/machinery/camera/autoname, -/turf/open/floor/engine/n2o, -/area/engine/atmos) "De" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/camera/autoname{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/suit_storage_unit/mining/eva, /turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/area/quartermaster/miningoffice) "Dh" = ( /obj/item/radio/intercom/directional/west, /turf/open/floor/carpet/orange, @@ -8862,17 +8993,11 @@ /obj/structure/disposalpipe/segment, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Munitions" + location = "Munitions"; + name = "navigation beacon (Munitions Delivery)" }, /turf/open/floor/monotile/steel, /area/nsv/weapons) -"Dn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) "Dp" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -8916,7 +9041,7 @@ name = "leftover decoration budget" }, /obj/item/paper{ - info = "WARNING! Do not order more than 6 crates at once. We had to cut a lot of corners to get a supply shuttle dock onto this thing and the crates will not fit if you order more than 6. Good luck, RSWJ."; + default_raw_text = "WARNING! Do not order more than 6 crates at once. We had to cut a lot of corners to get a supply shuttle dock onto this thing and the crates will not fit if you order more than 6. Good luck, RSWJ."; name = "Note from Speedwagon" }, /turf/open/floor/monotile/steel, @@ -8970,13 +9095,8 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/starboard) "DH" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/nsv/hanger/mining) +/turf/closed/wall/r_wall, +/area/quartermaster/miningoffice) "DM" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9015,6 +9135,13 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/monotile/steel, /area/nsv/weapons) +"DX" = ( +/obj/structure/overmap/small_craft/combat/light, +/obj/machinery/light, +/turf/open/floor/plasteel/techmaint{ + initial_gas_mix = "TEMP=2.7" + }, +/area/nsv/hanger/notkmcstupidhanger) "DZ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -9039,12 +9166,21 @@ /turf/open/floor/carpet/red, /area/security/brig) "Eb" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/west, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "31; 48"; + name = "Mining Hangar Access" }, -/area/nsv/hanger/mining) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "Ec" = ( /obj/machinery/light{ dir = 8 @@ -9175,15 +9311,15 @@ /area/maintenance/nsv/deck2/port/fore) "EG" = ( /obj/structure/table/reinforced, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = 6; pixel_y = 5 }, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = -4; pixel_y = 7 }, -/obj/item/cartridge/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster, /obj/item/paper_bin, /obj/item/stamp/quartermaster, /obj/item/clothing/mask/cigarette/cigar, @@ -9233,9 +9369,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/turf/open/floor/plasteel/chapel{ - dir = 1 - }, +/turf/open/floor/wood, /area/chapel/main) "EY" = ( /obj/machinery/door/poddoor/ship{ @@ -9255,18 +9389,18 @@ /obj/machinery/camera/autoname{ dir = 8 }, -/turf/open/floor/durasteel/lino, +/turf/open/floor/wood, /area/chapel/main) "Fg" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ +/obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/obj/machinery/light/small{ - brightness = 3; - dir = 1 +/obj/machinery/atmospherics/components/binary/pump/layer4{ + name = "N2 to mix" + }, +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + name = "Nitrogen to Air Mix"; + target_pressure = 2000 }, /turf/open/floor/plating, /area/engine/atmos) @@ -9290,10 +9424,10 @@ /obj/effect/turf_decal/tile/ship/half/red{ dir = 8 }, -/obj/machinery/light/small{ +/obj/item/storage/box/boardingpins, +/obj/machinery/light{ dir = 4 }, -/obj/item/storage/box/boardingpins, /turf/open/floor/monotile/dark, /area/ai_monitored/security/armory) "Fi" = ( @@ -9312,7 +9446,7 @@ icon_state = "2-8" }, /turf/open/space/basic, -/area/space/nearstation) +/area/nsv/hanger/notkmcstupidhanger) "Fm" = ( /obj/machinery/camera{ c_tag = "Xenobiology Lab - Pen #4"; @@ -9322,9 +9456,6 @@ /turf/open/floor/engine, /area/science) "Fo" = ( -/obj/machinery/light{ - dir = 1 - }, /obj/item/ship_weapon/ammunition/missile, /obj/item/ship_weapon/ammunition/missile{ pixel_y = 4 @@ -9353,6 +9484,11 @@ /obj/machinery/light{ dir = 8 }, +/obj/machinery/fax{ + fax_name = "Engineering"; + name = "Engineerings Fax Machine" + }, +/obj/structure/table/reinforced, /turf/open/floor/monotile/steel, /area/engine/engine_room) "Fv" = ( @@ -9395,10 +9531,10 @@ /turf/open/floor/monotile/steel, /area/nsv/weapons) "FB" = ( -/obj/machinery/meter/atmos/distro_loop{ - target_layer = 2 +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/plating, /area/engine/atmos) "FE" = ( @@ -9547,6 +9683,9 @@ name = "old sink"; pixel_y = 28 }, +/obj/machinery/light{ + dir = 4 + }, /turf/open/floor/monotile/steel, /area/science) "Ge" = ( @@ -9585,6 +9724,9 @@ /obj/item/multitool{ pixel_x = 3 }, +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/plasteel/techmaint, /area/science) "Gi" = ( @@ -9701,10 +9843,10 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "GB" = ( +/obj/machinery/light/small, /obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ dir = 4 }, -/obj/machinery/light/small, /turf/open/floor/plating, /area/engine/atmos) "GC" = ( @@ -9844,6 +9986,16 @@ }, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck2/primary) +"Hb" = ( +/obj/machinery/camera/autoname{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/west, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/monotile/steel, +/area/quartermaster/miningoffice) "Hc" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance/three, @@ -9853,9 +10005,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "He" = ( /obj/machinery/light_switch/west, @@ -9910,12 +10060,15 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "Ho" = ( -/obj/machinery/light_switch/west, -/obj/machinery/vendor/mining, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/area/nsv/hanger/mining) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/miningoffice) "Hr" = ( /obj/machinery/modular_fabricator/autolathe, /obj/machinery/power/apc/auto_name/east, @@ -9960,9 +10113,13 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/chapel{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, +/turf/open/floor/carpet/royalblack, /area/chapel/main) "HA" = ( /obj/effect/turf_decal/stripes/line{ @@ -9979,7 +10136,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "HC" = ( /obj/structure/guncase/shotgun{ gun_category = /obj/item/gun/ballistic/shotgun/riot; @@ -10096,10 +10253,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" +/obj/machinery/light{ + dir = 1 }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "HQ" = ( /obj/structure/grille, @@ -10180,17 +10337,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, +/obj/machinery/meter/atmos{ + target_layer = 4; + name = "Scrubber loop gas flow meter" + }, /turf/open/floor/plating, /area/engine/atmos) "In" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, /obj/structure/chair{ dir = 4 }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Ir" = ( /obj/effect/turf_decal/ship/techfloor{ dir = 4 @@ -10228,6 +10386,7 @@ /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ dir = 4 }, +/obj/machinery/light, /turf/open/floor/plasteel/techmaint, /area/nsv/weapons) "IE" = ( @@ -10311,9 +10470,8 @@ /turf/open/floor/monotile/steel, /area/maintenance/department/science) "Ja" = ( -/obj/machinery/suit_storage_unit/mining/eva, /turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/area/quartermaster/miningoffice) "Jb" = ( /obj/structure/sign/ship/securearea{ dir = 4 @@ -10398,7 +10556,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/airalarm/directional/north, /turf/open/floor/durasteel/alt, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "Jm" = ( /obj/structure/girder, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -10431,7 +10589,7 @@ "Jq" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/nsv/hanger/mining) +/area/quartermaster/miningoffice) "Jr" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -10466,9 +10624,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "Jw" = ( /obj/machinery/gauss_dispenser, @@ -10568,8 +10724,8 @@ /turf/open/floor/plasteel/techmaint, /area/nsv/weapons) "JK" = ( -/obj/structure/sign/warning/enginesafety{ - pixel_y = 26 +/obj/machinery/light{ + dir = 1 }, /turf/open/floor/plasteel/techmaint{ initial_gas_mix = "TEMP=2.7" @@ -10590,6 +10746,7 @@ name = "Brig RC"; pixel_y = -32 }, +/obj/machinery/light, /turf/open/floor/monotile/steel, /area/security/brig) "JN" = ( @@ -10608,6 +10765,21 @@ }, /turf/open/floor/monotile/steel, /area/nsv/weapons) +"JO" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/turf_decal/ship/delivery/yellow, +/obj/effect/landmark/zebra_interlock_point, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/monotile/steel, +/area/hallway/nsv/deck2/primary) "JP" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/camera/autoname{ @@ -10615,6 +10787,11 @@ }, /turf/open/floor/monotile/steel, /area/nsv/weapons) +"JR" = ( +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/light/floor, +/turf/open/floor/monotile/steel, +/area/nsv/weapons) "JS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -10622,11 +10799,14 @@ }, /turf/open/floor/plating, /area/security/brig) +"JT" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) "JU" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2, /turf/open/floor/plating, /area/engine/atmos) "JW" = ( @@ -10727,6 +10907,11 @@ /area/crew_quarters/abandoned_gambling_den{ name = "Abandoned Bar" }) +"Kh" = ( +/obj/structure/ladder, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/port) "Ki" = ( /obj/machinery/rnd/production/protolathe/department/science, /turf/open/floor/plasteel/techmaint, @@ -10820,8 +11005,9 @@ /obj/machinery/camera/autoname{ dir = 8 }, +/obj/item/radio/intercom/directional/east, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "KB" = ( /obj/structure/ladder, /turf/open/floor/plating, @@ -10855,14 +11041,21 @@ /turf/open/floor/engine/vacuum, /area/engine/atmos) "KG" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input, /obj/machinery/camera/autoname, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output, /turf/open/floor/engine/o2, /area/engine/atmos) "KH" = ( /obj/structure/girder, /turf/open/floor/plating, /area/maintenance/nsv/deck2/port/fore) +"KJ" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4, +/turf/open/floor/plating, +/area/engine/atmos) "KK" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -10912,7 +11105,7 @@ dir = 4 }, /turf/open/floor/durasteel/alt, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "KT" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/missile_builder{ @@ -10995,6 +11188,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/machinery/light, /turf/open/floor/carpet/orange, /area/engine/engine_room) "La" = ( @@ -11002,6 +11196,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/engine/atmos) "Lb" = ( @@ -11009,6 +11206,9 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, +/obj/machinery/light/small{ + dir = 4 + }, /turf/open/floor/monotile/steel, /area/nsv/weapons) "Lc" = ( @@ -11031,11 +11231,11 @@ /turf/open/floor/monotile/steel, /area/engine/engine_room) "Le" = ( -/obj/machinery/computer/atmos_control/tank/carbon_tank{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 5 + dir = 4 + }, +/obj/machinery/computer/atmos_control/tank/nitrous_tank{ + dir = 1 }, /turf/open/floor/plating, /area/engine/atmos) @@ -11046,6 +11246,9 @@ dir = 1 }, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/light/small{ + dir = 4 + }, /turf/open/floor/monotile/steel, /area/maintenance/nsv/deck2/port) "Lj" = ( @@ -11081,7 +11284,7 @@ }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Lq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -11096,9 +11299,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/chapel{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, +/turf/open/floor/carpet/royalblack, /area/chapel/main) "Ls" = ( /obj/structure/cable/yellow{ @@ -11127,6 +11331,17 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) +"Lu" = ( +/obj/structure/closet/crate, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/maintenance/four, +/obj/machinery/light/small/broken{ + dir = 4 + }, +/turf/open/floor/durasteel/techfloor, +/area/maintenance/nsv/deck2/port) "Lw" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/minor/bowler_or_that, @@ -11148,12 +11363,6 @@ /obj/effect/turf_decal/tile/ship/half/yellow{ dir = 1 }, -/obj/machinery/requests_console{ - department = "Deck 2 Primary Hallway"; - departmentType = 2; - name = "Deck 2 Primary Hallway RC"; - pixel_y = 26 - }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) "LC" = ( @@ -11206,6 +11415,21 @@ }, /turf/open/floor/circuit/telecomms, /area/science) +"LH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/carpet/royalblack, +/area/chapel/main) "LJ" = ( /obj/machinery/mineral/stacking_unit_console{ machinedir = 4; @@ -11255,10 +11479,32 @@ }, /turf/open/floor/carpet/orange, /area/engine/engine_room) +"LU" = ( +/turf/open/floor/durasteel/techfloor_grid, +/area/maintenance/nsv/deck2/port) "LV" = ( -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" +/turf/open/floor/monotile/steel/airless, +/area/nsv/hanger/mining) +"LW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/machinery/button/door{ + id = "atlas_mining_hangar"; + name = "Pod Bay Doors"; + pixel_y = 32; + req_one_access_txt = "48" + }, +/turf/open/floor/monotile/steel/airless, +/area/nsv/hanger/mining) +"LX" = ( +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/gps/mining, +/obj/item/gps/mining, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "LY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -11371,12 +11617,10 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "Mm" = ( -/obj/structure/chair/fancy/bench/pew/left{ +/obj/structure/chair/fancy/bench/pew/right{ dir = 1 }, -/turf/open/floor/plasteel/chapel{ - dir = 4 - }, +/turf/open/floor/carpet/royalblack, /area/chapel/main) "Mn" = ( /obj/structure/table, @@ -11408,6 +11652,18 @@ /obj/item/ship_weapon/parts/missile/iff_card, /turf/open/floor/engine, /area/nsv/weapons) +"Mq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/quartermaster/miningoffice) "Ms" = ( /obj/structure/cable{ icon_state = "1-16" @@ -11417,8 +11673,9 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "Mt" = ( -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 4 +/obj/machinery/atmospherics/components/binary/magnetic_constrictor{ + dir = 8; + piping_layer = 2 }, /turf/open/floor/plating, /area/engine/atmos) @@ -11450,6 +11707,9 @@ /obj/effect/turf_decal/tile/ship/half/green{ dir = 8 }, +/obj/machinery/light/small{ + dir = 4 + }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) "My" = ( @@ -11477,6 +11737,14 @@ /area/crew_quarters/abandoned_gambling_den{ name = "Abandoned Bar" }) +"MA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/gauss/battery/deck2/starboard) "MB" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/light/small{ @@ -11568,11 +11836,14 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "MW" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2, -/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/meter/atmos/distro_loop{ + target_layer = 2; + name = "Distribution loop gas flow meter" + }, /turf/open/floor/plating, /area/engine/atmos) "MX" = ( @@ -11588,12 +11859,15 @@ dir = 1 }, /obj/machinery/door/firedoor/border_only/directional/south, -/turf/open/floor/durasteel/lino, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, /area/chapel/main) "MZ" = ( /obj/structure/sign/ship/nosmoking, /turf/closed/wall/r_wall, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "Na" = ( /obj/machinery/recharge_station, /turf/open/floor/plating, @@ -11649,6 +11923,16 @@ "Nh" = ( /turf/open/space/basic, /area/space) +"Ni" = ( +/turf/closed/wall/r_wall, +/area/hallway/secondary/exit/departure_lounge) +"Nk" = ( +/obj/structure/closet/secure_closet/combat_pilot, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/nsv/weapons) "Nl" = ( /obj/structure/sign/ship/deck/two, /turf/closed/wall/r_wall, @@ -11666,7 +11950,9 @@ name = "Abandoned Bar" }) "Nn" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 10 + }, /turf/open/floor/plating, /area/engine/atmos) "Nr" = ( @@ -11708,15 +11994,12 @@ /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck2/primary) "ND" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=hsouth2"; location = "dep" }, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "NE" = ( /obj/effect/turf_decal/delivery, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -11727,7 +12010,7 @@ }, /obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/floor/monotile/dark, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "NH" = ( /obj/structure/stairs{ dir = 8 @@ -11746,14 +12029,17 @@ /turf/open/floor/monotile/dark, /area/engine/engine_room) "NN" = ( -/obj/effect/turf_decal/stripes/corner, -/obj/structure/tank_dispenser/oxygen, -/obj/machinery/newscaster/directional/north, -/obj/machinery/atmospherics/pipe/layer_manifold{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "NO" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -11828,10 +12114,12 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "Ob" = ( -/obj/machinery/atmospherics/miner/carbon_dioxide, -/obj/machinery/air_sensor/atmos/carbon_tank, -/obj/machinery/light/small, -/turf/open/floor/engine/co2, +/obj/machinery/air_sensor/atmos/nitrous_tank, +/obj/machinery/atmospherics/miner/n2o, +/obj/machinery/light/small{ + brightness = 3 + }, +/turf/open/floor/engine/n2o, /area/engine/atmos) "Oc" = ( /obj/structure/disposalpipe/segment{ @@ -12017,7 +12305,11 @@ /turf/open/floor/monotile/steel, /area/quartermaster/storage) "Oy" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ +/obj/machinery/atmospherics/components/binary/pump/layer4{ + dir = 1; + name = "N20 to mix" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, /turf/open/floor/plating, @@ -12108,10 +12400,10 @@ /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/obj/machinery/meter/atmos/atmos_waste_loop, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, +/obj/item/radio/intercom/directional/north, /turf/open/floor/plating, /area/engine/atmos) "OO" = ( @@ -12122,6 +12414,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss/battery/deck2/starboard) "OQ" = ( @@ -12143,6 +12438,13 @@ }, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck2/primary) +"OT" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/cigbutt/cigarbutt, +/turf/open/floor/wood, +/area/crew_quarters/abandoned_gambling_den{ + name = "Abandoned Bar" + }) "OV" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ @@ -12169,17 +12471,13 @@ name = "Abandoned Bar" }) "OY" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump/layer4{ - dir = 1; - name = "Plasma to radiomix" - }, /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 1; name = "Plasma to constrictornator5000" }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, /turf/open/floor/plating, /area/engine/atmos) "Pc" = ( @@ -12241,6 +12539,7 @@ /obj/machinery/door/firedoor/border_only{ dir = 4 }, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/dark, /area/maintenance/nsv/deck2/port) "Pl" = ( @@ -12365,9 +12664,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel/techmaint{ - initial_gas_mix = "TEMP=2.7" +/obj/structure/cable{ + icon_state = "1-8" }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "PL" = ( /obj/machinery/airalarm/directional/north, @@ -12377,6 +12677,12 @@ /obj/machinery/atmospherics/pipe/multiz/layer4, /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) +"PM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/grid/steel, +/area/hallway/secondary/exit/departure_lounge) "PO" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/monotile/steel, @@ -12453,6 +12759,18 @@ }, /turf/open/floor/monotile/steel, /area/nsv/weapons) +"PZ" = ( +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/hallway/nsv/deck2/primary) "Qa" = ( /obj/structure/window/reinforced/spawner, /obj/machinery/computer/cargo/request{ @@ -12483,7 +12801,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/monotile/dark, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Qf" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -12510,7 +12828,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/durasteel/lino, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/turf/open/floor/carpet/royalblack, /area/chapel/main) "Qk" = ( /obj/effect/turf_decal/tile/ship/half/orange{ @@ -12519,9 +12840,6 @@ /obj/effect/turf_decal/tile/ship/orange{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, /turf/open/floor/monotile/steel, /area/nsv/weapons/gauss/battery/deck2/starboard) "Ql" = ( @@ -12551,21 +12869,20 @@ }, /area/nsv/hanger/notkmcstupidhanger) "Qs" = ( -/obj/machinery/advanced_airlock_controller/directional/east{ - pixel_y = 24 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/item/radio/intercom/directional/north, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-8" }, /turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/area/quartermaster/miningoffice) "Qu" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, @@ -12600,13 +12917,11 @@ /turf/open/floor/carpet/red, /area/security/brig) "Qx" = ( -/obj/machinery/air_sensor/atmos/nitrous_tank, -/obj/machinery/atmospherics/miner/n2o, -/obj/machinery/light/small{ - brightness = 3; - dir = 1 +/obj/item/beacon, +/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ + dir = 4 }, -/turf/open/floor/engine/n2o, +/turf/open/floor/plating, /area/engine/atmos) "Qy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -12713,15 +13028,12 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port/fore) "QO" = ( -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 5 - }, /obj/machinery/atmospherics/components/trinary/mixer/flipped/layer4{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ + dir = 6 + }, /turf/open/floor/plating, /area/engine/atmos) "QP" = ( @@ -12747,16 +13059,12 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port/fore) "QS" = ( -/obj/effect/turf_decal/tile/ship/green, -/obj/effect/turf_decal/tile/ship/green{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 +/obj/machinery/recharge_station, +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/durasteel/alt, -/area/hallway/nsv/deck2/primary) +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/port) "QT" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -12852,19 +13160,10 @@ /turf/open/floor/monotile/dark, /area/science) "Rk" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ +/obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4, -/obj/machinery/computer/atmos_control/tank/air_tank{ - density = 0; - dir = 4; - input_tag = "sdmix_in"; - name = "Reactor Mix Control"; - output_tag = "sdmix_out"; - pixel_x = -9; - sensors = list("sdmix_sensor"="Reactor Mix Tank") - }, +/obj/machinery/space_heater, /turf/open/floor/plating, /area/engine/atmos) "Rl" = ( @@ -12878,11 +13177,9 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons) "Rm" = ( -/obj/structure/sign/ship/deck/two{ - dir = 4 - }, -/turf/closed/wall/steel, -/area/hallway/nsv/deck2/primary) +/obj/structure/sign/departments/evac, +/turf/closed/wall/r_wall, +/area/hallway/secondary/exit/departure_lounge) "Rp" = ( /obj/effect/turf_decal/pool/corner{ dir = 1 @@ -12921,7 +13218,7 @@ /turf/open/floor/monotile/steel, /area/engine/engine_room) "Rs" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ dir = 8 }, /turf/open/floor/plating, @@ -12934,6 +13231,9 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/engine/atmos) "Rv" = ( @@ -12958,10 +13258,6 @@ /turf/open/floor/monotile/steel, /area/quartermaster/storage) "Ry" = ( -/obj/machinery/door/airlock/ship/external{ - name = "Mining Shuttle Airlock"; - req_one_access_txt = "31;48" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, @@ -12971,8 +13267,19 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/door/airlock/ship{ + name = "Mining Ready Room"; + req_one_access_txt = "31; 48" + }, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, /turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/area/quartermaster/miningoffice) "Rz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -12987,9 +13294,7 @@ dir = 4; pixel_x = -24 }, -/turf/open/floor/plasteel/chapel{ - dir = 1 - }, +/turf/open/floor/wood, /area/chapel/main) "RF" = ( /obj/structure/cable{ @@ -13014,7 +13319,10 @@ name = "50cal Bay" }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) +"RG" = ( +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "RH" = ( /obj/structure/cable{ icon_state = "4-8" @@ -13034,6 +13342,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/tile/ship/half/yellow, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) "RL" = ( @@ -13050,9 +13361,8 @@ /area/engine/atmos) "RP" = ( /obj/machinery/computer/ship/fighter_controller, -/obj/machinery/light/small{ - brightness = 3; - dir = 1 +/obj/machinery/light{ + dir = 4 }, /turf/open/floor/carpet/ship, /area/nsv/weapons) @@ -13117,6 +13427,9 @@ pixel_x = 32; req_one_access_txt = "3" }, +/obj/effect/turf_decal/tile/ship/half/red{ + dir = 4 + }, /turf/open/floor/monotile/steel, /area/security/brig) "RZ" = ( @@ -13253,7 +13566,7 @@ }, /obj/machinery/newscaster/directional/east, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Sz" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 4 @@ -13282,7 +13595,7 @@ /obj/effect/turf_decal/stripes/line, /obj/machinery/status_display/ai/south, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "SH" = ( /obj/machinery/computer/ship/ordnance, /turf/open/floor/carpet/ship, @@ -13322,14 +13635,18 @@ /turf/open/floor/monotile/steel, /area/science) "SP" = ( -/obj/structure/closet/secure_closet/engineering_welding{ - req_access = null; - req_one_access_txt = "48" +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 }, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" +/obj/structure/cable{ + icon_state = "4-8" }, -/area/nsv/hanger/mining) +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "31; 48"; + name = "Mining Hangar Access" + }, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "SR" = ( /obj/machinery/recharge_station, /turf/open/floor/plating, @@ -13361,6 +13678,11 @@ /turf/open/floor/circuit/telecomms, /area/science) "SW" = ( +/obj/machinery/fax{ + fax_name = "Wardens Office"; + name = "Wardens Office Fax Machine" + }, +/obj/structure/table/reinforced, /turf/open/floor/monotile/steel, /area/security/brig) "SX" = ( @@ -13374,15 +13696,14 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) "Ta" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Tb" = ( /obj/machinery/rnd/destructive_analyzer, /obj/machinery/light_switch/west, @@ -13400,6 +13721,7 @@ pixel_y = 14 }, /obj/item/stack/cable_coil/cut/red, +/obj/machinery/light/small, /turf/open/floor/plating, /area/security/detectives_office) "Td" = ( @@ -13529,7 +13851,7 @@ /obj/structure/chair, /obj/machinery/computer/ship/viewscreen, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Tw" = ( /obj/structure/cable{ icon_state = "1-2" @@ -13557,7 +13879,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel/alt, -/area/hallway/nsv/deck2/primary) +/area/nsv/weapons/gauss/battery/deck2/port) "Ty" = ( /obj/item/ship_weapon/ammunition/torpedo/hellfire/antonio{ name = "Giorno" @@ -13599,7 +13921,8 @@ departmentType = 2; pixel_y = 26 }, -/turf/open/floor/durasteel/lino, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/wood, /area/chapel/main) "TE" = ( /obj/structure/lattice/catwalk, @@ -13678,6 +14001,16 @@ }, /turf/open/floor/monotile/dark, /area/security/brig) +"TS" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/space/basic, +/area/space/nearstation) "TT" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -13708,6 +14041,15 @@ /obj/machinery/light, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck2/primary) +"TV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/monotile/steel, +/area/quartermaster/miningoffice) "TX" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -13747,16 +14089,16 @@ /area/ai_monitored/security/armory) "Ua" = ( /obj/machinery/telecomms/relay/preset/station, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, /turf/open/floor/plasteel/tech/grid, /area/engine/engine_room) "Ub" = ( -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ +/obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plating, /area/engine/atmos) "Uc" = ( @@ -13778,7 +14120,6 @@ }) "Ug" = ( /obj/structure/bed, -/obj/effect/landmark/nuclear_waste_spawner, /obj/machinery/airalarm/directional/north, /turf/open/floor/monotile/dark, /area/security/brig) @@ -13819,7 +14160,7 @@ dir = 1 }, /obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/monotile/dark, +/turf/open/floor/wood, /area/chapel/main) "Uq" = ( /obj/structure/cable/yellow{ @@ -13852,10 +14193,12 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "Uy" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/monotile/steel{ - initial_gas_mix = "TEMP=2.7" - }, +/obj/item/radio, +/obj/item/radio, +/obj/item/radio, +/obj/item/radio, +/obj/structure/rack, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "Uz" = ( /obj/structure/disposalpipe/segment{ @@ -13868,11 +14211,15 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/starboard) "UA" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/light{ + dir = 1 + }, /obj/item/kirbyplants{ - icon_state = "plant-32" + icon_state = "plant-33" }, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "UB" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/monotile/dark/airless, @@ -13996,6 +14343,9 @@ }, /obj/machinery/vending/wardrobe/science_wardrobe, /obj/machinery/status_display/ai/north, +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/science) "US" = ( @@ -14011,11 +14361,13 @@ }, /area/maintenance/department/science) "UZ" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output{ +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input{ dir = 1 }, -/turf/open/floor/engine/co2, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/engine/n2o, /area/engine/atmos) "Va" = ( /obj/structure/cable/yellow{ @@ -14051,9 +14403,7 @@ /area/nsv/hanger/notkmcstupidhanger) "Vg" = ( /obj/structure/overmap/small_craft/transport/sabre/mining, -/turf/open/floor/plasteel/techmaint{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/plasteel/techmaint, /area/nsv/hanger/mining) "Vh" = ( /obj/structure/cable/yellow{ @@ -14077,12 +14427,8 @@ /turf/open/floor/monotile/dark, /area/engine/engine_room) "Vj" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Vk" = ( /obj/structure/closet/cardboard, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -14167,6 +14513,22 @@ /area/crew_quarters/abandoned_gambling_den{ name = "Abandoned Bar" }) +"Vy" = ( +/obj/machinery/advanced_airlock_controller/directional/east{ + pixel_y = 24 + }, +/obj/item/radio/intercom/directional/north, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/quartermaster/miningoffice) "Vz" = ( /obj/machinery/conveyor{ dir = 8; @@ -14180,10 +14542,9 @@ /area/maintenance/nsv/deck2/starboard) "VA" = ( /obj/structure/chair, -/obj/machinery/airalarm/directional/north, /obj/machinery/camera/autoname, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "VC" = ( /obj/effect/turf_decal/ship/delivery/yellow, /obj/machinery/door/firedoor/border_only, @@ -14274,9 +14635,7 @@ dir = 4; id = "atlas_mining_hangar" }, -/turf/open/floor/plasteel/techmaint{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/monotile/steel/airless, /area/nsv/hanger/mining) "VQ" = ( /obj/structure/particle_accelerator/end_cap{ @@ -14442,6 +14801,7 @@ /obj/structure/table/optable{ name = "Robotics Operating Table" }, +/obj/machinery/light, /turf/open/floor/plasteel/techmaint, /area/science) "Ws" = ( @@ -14520,6 +14880,9 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 4 }, +/obj/machinery/camera/autoname{ + dir = 4 + }, /turf/open/space/basic, /area/engine/engine_room) "WM" = ( @@ -14564,6 +14927,10 @@ /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 1 }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/atmos) "WY" = ( @@ -14607,7 +14974,7 @@ }, /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Xe" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -14617,15 +14984,6 @@ }, /turf/open/floor/monotile/dark, /area/nsv/weapons) -"Xg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ - dir = 9 - }, -/turf/open/floor/plating, -/area/engine/atmos) "Xl" = ( /obj/structure/sign/ship/armoury{ name = "Munitions Department" @@ -14638,6 +14996,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/light{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss/battery/deck2/starboard) "Xo" = ( @@ -14675,8 +15036,23 @@ dir = 1 }, /obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, /area/engine/atmos) +"Xv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/gauss/battery/deck2/port) "Xx" = ( /obj/structure/cable{ icon_state = "4-8" @@ -14786,14 +15162,12 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons) "XU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss/battery/deck2/starboard) "XV" = ( @@ -14885,12 +15259,10 @@ /turf/open/floor/monotile/steel, /area/security/brig) "Yh" = ( -/obj/structure/grille, -/obj/effect/turf_decal/tile/ship/blue{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/department/engine/atmos) +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output, +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/open/floor/engine/co2, +/area/engine/atmos) "Yi" = ( /obj/structure/cable/yellow{ icon_state = "0-4" @@ -14936,18 +15308,8 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port) "Ys" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump/on/layer2{ - name = "Nitrogen to Air Mix"; - target_pressure = 2000 - }, -/obj/machinery/atmospherics/components/binary/pump/layer4{ - name = "Nitrogen to mix" - }, -/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ - dir = 4 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ + dir = 8 }, /turf/open/floor/plating, /area/engine/atmos) @@ -14970,8 +15332,14 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Yy" = ( /obj/machinery/computer/ship/reactor_control_computer{ dir = 1; @@ -15020,9 +15388,6 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/port/fore) "YI" = ( -/obj/machinery/light{ - dir = 1 - }, /obj/machinery/light_switch/north, /obj/machinery/rnd/production/techfab/department/munitions, /turf/open/floor/carpet/red, @@ -15176,15 +15541,14 @@ /turf/open/floor/engine, /area/quartermaster/storage) "Zl" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, /turf/open/floor/plasteel/grid/steel, -/area/hallway/nsv/deck2/primary) +/area/hallway/secondary/exit/departure_lounge) "Zm" = ( /obj/structure/tank_dispenser/oxygen, /obj/effect/turf_decal/tile/ship/half/blue{ @@ -15228,9 +15592,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/floor/plasteel/techmaint{ - initial_gas_mix = "TEMP=2.7" - }, +/turf/open/floor/plasteel/techmaint, /area/nsv/hanger/mining) "Zu" = ( /obj/effect/turf_decal/tile/ship/half/green{ @@ -39688,11 +40050,11 @@ gS gS vD Ge -kD -kD -kD -kD -kD +MO +MO +MO +MO +MO Ge le Ge @@ -42768,7 +43130,7 @@ AU jN jN Jo -oF +MO cB lK mH @@ -42779,7 +43141,7 @@ ul mp Um Vi -oF +MO NP DG ho @@ -43022,10 +43384,10 @@ kH kH nD Jh -wd -wd +kH +kH yI -qI +YQ fP lK mH @@ -43036,11 +43398,11 @@ ul By RJ NI -oF -qI +MO +YQ pk -qI -qI +YQ +YQ HQ UC mL @@ -43279,7 +43641,7 @@ Sf kH SC aI -qI +dj rR qK qI @@ -43297,7 +43659,7 @@ oF qI xA Zu -qI +YQ Oh Ie Gp @@ -43554,10 +43916,10 @@ zP NH qG Pl -qI +YQ dx SR -ob +mL vX Ie Ie @@ -43789,10 +44151,10 @@ CE CE Ml vi -wd -qI -qI -qI +kH +YQ +YQ +YQ vs sG dQ @@ -43811,11 +44173,11 @@ Tl Vr Mh NZ -qI -qI -qI -qI -qI +YQ +YQ +YQ +YQ +YQ kC ca vJ @@ -44046,7 +44408,7 @@ Ol kH Na vi -wd +kH pZ pT aP @@ -44072,7 +44434,7 @@ qI rr rJ qU -qI +YQ tJ sP zq @@ -44570,14 +44932,14 @@ rQ nO Tg kL -kL +mv am ps tm -QS kL -uq kL +uq +mv YZ bD un @@ -44586,7 +44948,7 @@ qI Zm oB dp -qI +YQ XL Ie LJ @@ -44843,9 +45205,9 @@ qI qI Eg qI -qI -qI -qI +YQ +YQ +YQ Ie Oc mL @@ -45098,11 +45460,11 @@ dE bB qI wb -Ir +PZ Ir Bc CU -qI +YQ Ie nI mL @@ -45616,7 +45978,7 @@ CF Mj wx sp -qI +YQ Ie Uz mL @@ -45873,7 +46235,7 @@ wx wx wx PA -qI +YQ wR jf mL @@ -46111,11 +46473,11 @@ rf un aM zI -bO +KB hv RN -SK cf +QB SK RN MR @@ -46130,7 +46492,7 @@ ub uw Bh sE -qI +YQ Ie zy yC @@ -46368,15 +46730,15 @@ QG lx TU zI -KB -hv +zI +zI +RN +BU +Cv RN -qw -QB -SK RN -Yh -KB +zI +zI zI Bw un @@ -46384,10 +46746,10 @@ ql qI qI qI -qI -qI -qI -qI +YQ +YQ +YQ +YQ cp vr mE @@ -46627,11 +46989,11 @@ BP RN RN RN -RN -BU -Cv -RN -RN +FB +hH +nN +xd +Rk RN RN Nl @@ -46882,14 +47244,14 @@ jY VJ ny RN -rh -pH +nZ +jh gn -Rk +mj aT -AL +JU BG -pH +jh UZ RN oY @@ -46898,10 +47260,10 @@ qo qi hP rL -qT -qT -qT -qT +ob +ob +ob +ob ob JE dy @@ -47129,7 +47491,7 @@ iH tQ dC eM -Rb +Xv Om hL in @@ -47139,11 +47501,11 @@ Sz SX Ef RN -yZ +AL YT tA -MW -nN +mj +OJ Ub Le YT @@ -47380,13 +47742,13 @@ gS cQ Of eO -Dp +xW kH iC Hi dC uW -Rb +df gW hL Oo @@ -47396,14 +47758,14 @@ OR un Ef RN -KG -jh +Yh +pH tg JU QO or Oy -jh +pH BR RN xU @@ -47416,8 +47778,8 @@ qT Jw sC RS -kr -kr +ob +oI DZ oI oI @@ -47656,14 +48018,14 @@ RN RN RN ev -ZB +OJ VG Mt xq RN RN RN -Jz +eo un KY qT @@ -47671,9 +48033,9 @@ qT HD qT Op -sC +rW DU -kr +ob xR Qh MX @@ -47903,15 +48265,15 @@ eM fM xY hL -ir +QS ir wd ef un Ef RN -ZF -pH +jI +jh Ys oc eX @@ -47930,9 +48292,9 @@ Eo Qk rW lG -kr +ob TB -Qh +LH kz Lr af @@ -48170,7 +48532,7 @@ RN gu YT BC -ZB +mj iu rx UQ @@ -48181,13 +48543,13 @@ FI wq TG xE -Xn +MA Xn xE XU OO vC -kr +ob Ff cv Uo @@ -48412,24 +48774,24 @@ Nb kH iC DM -YQ -YQ +dC +dC RF kX -YQ -YQ -YQ +dC +dC +dC MZ Ao un Ef RN -jI -jh +ZF +pH Fg -ZB +KJ eF -Xg +HW GB jh lD @@ -48438,18 +48800,18 @@ Tn un ql yX -IW -IW -IW -IW qT qT -kr -kr +qT +qT +qT +ob +ob +oI ud oI ap -sg +wy wy oI oI @@ -48669,7 +49031,7 @@ kH kH fz EA -YQ +dC HB fN gY @@ -48685,7 +49047,7 @@ RN RN cs ZB -OJ +Qx HW LE RN @@ -48699,17 +49061,17 @@ IW cj Jt uX -qI +oU UA -Jk -ew -qG +ty +JT +uv oC AS -BS +In In ye -ew +JT Od Nh Nh @@ -48926,7 +49288,7 @@ bh Li iC lb -YQ +dC Jl KP Tx @@ -48938,12 +49300,12 @@ zX tk Ef RN -xd +KG pH ad mY nM -FB +HW Ym pH KF @@ -48956,17 +49318,17 @@ CD rU kT RR -qI +oU Tv -Jk +sy vS Yw aw -Yw +sq ND -Cc +Vj Lm -ew +JT Od Nh Nh @@ -49183,24 +49545,24 @@ wl WN bA WN -YQ +WN xr fU fU -YQ -YQ -YQ -YQ +WN +WN +WN +WN Wk SX Yv RN -Qx +yZ YT mV Nn nT -HW +MW vH YT SK @@ -49213,20 +49575,20 @@ IW wN JW Sn -qI +oU VA -Jk -ew -Yw +Bi +JT +PM em ei Ae -Cc +Vj SF -YQ -YQ -YQ -YQ +Ni +Ni +Ni +Ni Nh Nh Nh @@ -49452,12 +49814,12 @@ uP tk Ss RN -Dd +rh jh Rs mZ -nZ -hH +mj +HW Se pH EB @@ -49470,14 +49832,14 @@ IW IW IW IW -qI -ew +oU +JT Rm -qI +Ni zA dd Zl -eQ +Vj Vj CC Qe @@ -49686,9 +50048,9 @@ Nh Nh Nh kD -kD -bh -bh +kH +ga +LU wl fG vO @@ -49715,7 +50077,7 @@ OK Im mj HW -mj +nz RN RN fS @@ -49730,17 +50092,17 @@ ft rH sQ Zw -ew -Mh +JT +bg pm gH lC lC Cz -YQ -YQ -YQ -YQ +Ni +Ni +Ni +Ni Nh Nh Nh @@ -49943,9 +50305,9 @@ Nh Nh Nh kD -kD -bh -bh +kH +Kh +LU wl kB aC @@ -49991,8 +50353,8 @@ Xd lM yY Ta -AG -Dn +Vj +Vj Au Qe kv @@ -50200,9 +50562,9 @@ Nh Nh Nh kD -kD -bh -bh +kH +Lu +LU wl kM Kw @@ -50244,17 +50606,17 @@ OW jF yq BX -ew +JT kY kj Ky rd Su tT -YQ -YQ -YQ -YQ +Ni +Ni +Ni +Ni Nh Nh Nh @@ -50457,7 +50819,7 @@ Nh Nh Nh kD -kD +kH kH eq wl @@ -50500,7 +50862,7 @@ rq eY pc vh -pc +JO tP yR tP @@ -50511,7 +50873,7 @@ Wl tP tP tP -Nh +Od Nh Nh Nh @@ -50714,10 +51076,10 @@ Nh Nh Nh kD -kD -bh -bh -bh +kH +oD +oD +aB wl wl wl @@ -50768,7 +51130,7 @@ Lj gs FM tP -Nh +Od Nh Nh Nh @@ -50971,10 +51333,10 @@ Nh Nh Nh kD -kD -bh -bh -bh +kH +oD +oD +oD kH WN Ug @@ -51025,7 +51387,7 @@ Aj qm qm tP -Nh +Od Nh Nh Nh @@ -51228,10 +51590,10 @@ Nh Nh Nh kD -kD -bh -bh -bh +kH +oD +oD +oD kH WN GC @@ -51282,7 +51644,7 @@ qj Xt qm tP -Nh +Od Nh Nh Nh @@ -51485,7 +51847,7 @@ Nh Nh Nh kD -kD +kH iV iV vo @@ -51495,7 +51857,7 @@ WN Eh WN cO -Rg +sI RY WN WN @@ -51539,7 +51901,7 @@ if qm qm tP -Nh +Od Nh Nh Nh @@ -51796,7 +52158,7 @@ RZ Rv ug tP -Nh +Od Nh Nh Nh @@ -52053,7 +52415,7 @@ NW Du UH tP -Nh +Od Nh Nh Nh @@ -52310,7 +52672,7 @@ Yl mC mC tP -Nh +kD Nh Nh Nh @@ -52540,7 +52902,7 @@ Dk NO hI HR -Te +JR NO hI HR @@ -52549,25 +52911,25 @@ mP mP Bd eY -Mi -Mi -Mi -Mi -Mi +eY +Dy +Dy +Dy +Dy sn fc oo -Mi -Mi -Mi tP tP +DH +DH +DH Ry -tP -tP -tP -tP -Nh +Jq +DH +DH +DH +Od Nh Nh Nh @@ -52806,7 +53168,7 @@ Te Te xT eY -Mi +eY Qg Fm tp @@ -52816,15 +53178,15 @@ kg Rh Tb QI -Mi +DH ot -Pm +Hb Qs De cY -Ja -tR -Nh +De +Jq +Od Nh Nh Nh @@ -53047,7 +53409,7 @@ dv dv wu AR -aB +Ce eY MG dH @@ -53063,7 +53425,7 @@ mP mP ff eY -Mi +eY xh jS tp @@ -53073,15 +53435,15 @@ kg Gy td VM -Mi -wn -Pm +DH +ip +RG ar wt zJ ya -tR -Nh +Jq +Od Nh Nh Nh @@ -53317,10 +53679,10 @@ mP mP tZ xN -Mi -Mi -Mi -Mi +eY +eY +eY +eY cA ZN sm @@ -53330,15 +53692,15 @@ bo ti Ki xp -Mi +DH wn -Pm +bX NN wk sA Ja -tR -Nh +Jq +Od Nh Nh Nh @@ -53574,7 +53936,7 @@ kQ mP ct mP -Mi +eY tp tp pX @@ -53587,15 +53949,15 @@ Oq ti HA Yc -Mi +DH yg -Pm -tP +pA +pA wr -tP -tP -tP -Nh +Mq +TV +DH +Od Nh Nh Nh @@ -53810,10 +54172,10 @@ QN sh iV iV -iV -iV -iV -iV +eY +eY +eY +eY eY GF fj @@ -53831,7 +54193,7 @@ qq mP ct Md -Mi +eY OE jS Nf @@ -53844,15 +54206,15 @@ qf Be wU Wa -Mi -SP -LV -Uy +DH +DH +Jq +Jq DH Eb Ho -Pm -Nh +DH +Od Nh Nh Nh @@ -54088,7 +54450,7 @@ qq mP ct Gm -Mi +eY oM LF OD @@ -54101,15 +54463,15 @@ te nm Bj ez -Mi +Pm ls -sH -sH -sH -sH LV +Uy +DH +Vy +zc Jq -Nh +Od Nh Nh Nh @@ -54345,7 +54707,7 @@ iA mP ct tX -Mi +eY pX Lq vG @@ -54353,20 +54715,20 @@ Mi si kV sn -sI +Bj lU tx Cb ZZ -Mi +Pm jG sH -sH -sH -sH -LV +LX +DH +lg +kx Jq -Nh +Od Nh Nh Nh @@ -54602,7 +54964,7 @@ Te mP ct mP -Mi +eY LZ SV Ji @@ -54615,15 +54977,15 @@ lB yN sn Mi -Mi -ot -LV -sH -sH -sH -LV Pm -Nh +uc +LV +Br +DH +SP +DH +DH +kD Nh Nh Nh @@ -54859,7 +55221,7 @@ JP Te ct mP -Mi +eY LG Th Xc @@ -54872,11 +55234,11 @@ Wo Cm ax fy -Mi -Mi +Pm +Pm xs -PJ -PJ +be +be PJ fn Pm @@ -55130,12 +55492,12 @@ vT oH lj Ci -Mi +Pm qk sH sH -Vg -hJ +sH +BF Pm Nh Nh @@ -55387,11 +55749,11 @@ Mi av lj WM -Mi -Ju -sH +Pm +LW sH sH +Vg BF Pm Nh @@ -55644,12 +56006,12 @@ lS QV lj jK -Mi +Pm HP sH sH sH -BF +hJ Pm Nh Nh @@ -55886,7 +56248,7 @@ ge eY dk MF -Nd +Nk eY km LZ @@ -55901,12 +56263,12 @@ Rj bj lj Wr -Mi +Pm Ju sH sH -Vg -ga +sH +no Pm Nh Nh @@ -56158,11 +56520,11 @@ Ab QV lj ZK -Mi +Pm Ju sH sH -sH +Vg BF Pm Nh @@ -56415,7 +56777,7 @@ mb LY KU Mi -Mi +Pm Ju sH sH @@ -56673,11 +57035,11 @@ Ya Mi Mi Pm -oi -Zs -Zs -Zs -Hd +Ju +sH +sH +sH +BF Pm Nh Nh @@ -56903,7 +57265,7 @@ iV iV YH iV -jx +iV eY RV eY @@ -56915,7 +57277,7 @@ eY eY NR eY -jx +fI fI OI fI @@ -56930,11 +57292,11 @@ Vk HF fI Pm -Pm -VO -VO -VO -uA +oi +Zs +Zs +Zs +Hd Pm Nh Nh @@ -57187,12 +57549,12 @@ Lt UM fI Pm -TE -Nh -Nh -Nh -Nh -Nh +Pm +VO +VO +VO +uA +Pm Nh Nh Nh @@ -57443,8 +57805,8 @@ Jm fI fI fI -kD -pK +Pm +TE Nh Nh Nh @@ -57686,7 +58048,7 @@ BN US BN Jc -Jc +yB jx QD QD @@ -57701,7 +58063,7 @@ fI kD kD kD -pK +TS Nh Nh Nh @@ -57943,12 +58305,12 @@ BN US BN Jc -dj +Jc jx QD uF uE -tL +OT oS HO QD @@ -58194,7 +58556,7 @@ wX UB ja Jc -Jc +sF Jc hy US @@ -58971,7 +59333,7 @@ BN US BN Jc -UK +DX jx QD Ko @@ -60254,7 +60616,7 @@ It It It It -IK +tE jx jx jx diff --git a/_maps/map_files/Atlas/atlas2.dmm b/_maps/map_files/Atlas/atlas2.dmm index cd2a1c0086e..99ddd01f70e 100644 --- a/_maps/map_files/Atlas/atlas2.dmm +++ b/_maps/map_files/Atlas/atlas2.dmm @@ -143,10 +143,11 @@ /turf/open/floor/monotile/light, /area/crew_quarters/kitchen) "aD" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable{ icon_state = "4-32" }, +/obj/effect/turf_decal/ship/shutoff, +/obj/effect/turf_decal/box, /turf/open/floor/plating, /area/maintenance/nsv/deck1/central) "aE" = ( @@ -197,6 +198,8 @@ name = "Gravity Generator RC"; pixel_x = 32 }, +/obj/structure/closet/crate/engineering, +/obj/item/hand_tele, /turf/open/floor/durasteel/techfloor, /area/engine/gravity_generator) "aP" = ( @@ -214,6 +217,7 @@ /obj/structure/railing/corner{ dir = 8 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "aT" = ( @@ -564,9 +568,8 @@ /obj/structure/disposalpipe/segment, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Service" + location = "Service"; + name = "navigation beacon (Service Delivery)" }, /turf/open/floor/monotile/steel, /area/crew_quarters/bar/mess_hall) @@ -747,7 +750,10 @@ "dy" = ( /obj/structure/table/reinforced, /obj/structure/railing, -/obj/item/paper_bin, +/obj/machinery/fax{ + name = "Bridge Fax Machine"; + fax_name = "Bridge" + }, /turf/open/floor/carpet/royalblack, /area/bridge/cic) "dz" = ( @@ -802,7 +808,6 @@ /area/hallway/nsv/deck1/hallway) "dF" = ( /obj/structure/lattice/catwalk/over/ship, -/obj/structure/ladder, /turf/open/floor/plating, /area/maintenance/nsv/deck1/central) "dH" = ( @@ -891,7 +896,6 @@ /turf/open/floor/circuit/telecomms/server, /area/tcommsat/server) "eg" = ( -/obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, @@ -899,6 +903,9 @@ dir = 4 }, /obj/effect/landmark/start/assistant, +/obj/structure/chair/stool{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "ei" = ( @@ -982,6 +989,12 @@ /obj/structure/extinguisher_cabinet/north, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) +"eA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/space/nearstation) "eC" = ( /obj/structure/cable{ icon_state = "1-4" @@ -1027,10 +1040,9 @@ icon_state = "1-2" }, /obj/machinery/ai_slipper, -/turf/open/floor/monotile/dark, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "eK" = ( -/obj/structure/chair/stool, /obj/structure/cable{ icon_state = "4-8" }, @@ -1039,6 +1051,9 @@ dir = 4; sortType = 18 }, +/obj/structure/chair/stool{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "eL" = ( @@ -1054,6 +1069,7 @@ /obj/effect/turf_decal/tile/ship/red{ dir = 1 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) "eN" = ( @@ -1090,6 +1106,16 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar/mess_hall) +"eZ" = ( +/obj/machinery/computer/robotics{ + dir = 1 + }, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/east, +/turf/open/floor/carpet/ship/beige_carpet, +/area/crew_quarters/heads/hor) "fa" = ( /turf/open/floor/plasteel/stairs{ dir = 8 @@ -1252,7 +1278,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "2-4" }, @@ -1265,6 +1290,7 @@ codes_txt = "patrol;next_patrol=right"; location = "down" }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "fF" = ( @@ -1283,7 +1309,6 @@ /turf/open/floor/monotile/dark, /area/bridge/cic) "fH" = ( -/obj/structure/chair/stool, /obj/structure/cable{ icon_state = "4-8" }, @@ -1293,6 +1318,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/chair/stool{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "fL" = ( @@ -1321,6 +1349,12 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/stamp/research_director, /turf/open/floor/carpet/ship/beige_carpet, /area/crew_quarters/heads/hor) "fS" = ( @@ -1428,8 +1462,7 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "gD" = ( -/obj/structure/lattice/catwalk/over/ship, -/turf/open/floor/engine, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "gE" = ( /obj/structure/table/wood, @@ -1466,6 +1499,8 @@ /obj/structure/railing{ dir = 1 }, +/obj/item/paper_bin, +/obj/item/pen, /turf/open/floor/carpet/royalblack, /area/bridge/cic) "gQ" = ( @@ -1510,6 +1545,12 @@ dir = 4 }, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/chief) "gW" = ( @@ -1567,8 +1608,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/lattice/catwalk/over/ship, -/turf/open/floor/engine, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "hk" = ( /obj/structure/sign/ship/deck, @@ -1617,6 +1657,8 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) "hz" = ( @@ -1796,15 +1838,13 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) "iw" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/light_switch/south, -/turf/open/floor/engine, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "iy" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/ship/blue{ dir = 8 }, @@ -1892,15 +1932,16 @@ /obj/effect/turf_decal/tile/ship/green{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/structure/disposalpipe/sorting/mail{ + sortType = 10; + dir = 8 + }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "iJ" = ( @@ -2000,6 +2041,7 @@ c_tag = "AI Upload"; dir = 10 }, +/obj/item/aiModule/core/full/custom, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai_upload) "jb" = ( @@ -2050,6 +2092,9 @@ }, /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) +"jj" = ( +/turf/open/floor/durasteel/techfloor, +/area/space/nearstation) "jk" = ( /obj/structure/railing{ dir = 1 @@ -2155,13 +2200,23 @@ /turf/open/floor/monotile/steel, /area/maintenance/nsv/deck1/port) "jQ" = ( -/obj/structure/fluff/bleepypanel{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/closed/wall/r_wall, -/area/maintenance/nsv/deck1/port) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/monotile/steel, +/area/hallway/nsv/deck1/hallway) "jR" = ( /obj/machinery/light_switch/south, +/obj/structure/table/reinforced, +/obj/item/gps, +/obj/item/gps, /turf/open/floor/durasteel/techfloor, /area/engine/gravity_generator) "jV" = ( @@ -2225,6 +2280,16 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/bridge/cic) +"kc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/landmark/latejoin, +/turf/open/floor/monotile/steel, +/area/hallway/nsv/deck1/hallway) "ke" = ( /obj/effect/turf_decal/tile/ship/brown{ dir = 1 @@ -2262,6 +2327,19 @@ /obj/structure/displaycase/captain, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/captain) +"kk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/airlock/ship/maintenance{ + name = "Engineering wing maintenance"; + req_one_access_txt = "10;24" + }, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/central) "km" = ( /obj/machinery/vending/clothing, /turf/open/floor/monotile/steel, @@ -2328,7 +2406,6 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/camera/autoname, /obj/item/wrench/medical, /turf/open/floor/durasteel/lino, /area/medical/medbay) @@ -2685,8 +2762,14 @@ /obj/effect/turf_decal/tile/ship/half/yellow{ dir = 8 }, -/obj/structure/disposalpipe/sorting/mail{ - sortType = 5 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) @@ -2714,6 +2797,9 @@ /obj/machinery/firealarm/directional/west{ pixel_y = 12 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/chief) "ml" = ( @@ -2723,10 +2809,10 @@ /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) "mm" = ( -/obj/machinery/light/small, /obj/machinery/computer/card/minor/rd{ dir = 1 }, +/obj/machinery/light, /turf/open/floor/carpet/ship/beige_carpet, /area/crew_quarters/heads/hor) "mr" = ( @@ -2754,6 +2840,9 @@ /obj/machinery/firealarm/directional/west{ pixel_y = 12 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) "mt" = ( @@ -2767,8 +2856,10 @@ /turf/open/floor/carpet/blue, /area/crew_quarters/heads/xo) "my" = ( -/obj/structure/chair/stool, /obj/effect/landmark/start/assistant, +/obj/structure/chair/stool{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "mz" = ( @@ -2838,9 +2929,8 @@ }, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Medbay" + location = "Medbay"; + name = "navigation beacon (Medbay Delivery)" }, /turf/open/floor/durasteel/alt, /area/medical/medbay) @@ -2862,6 +2952,17 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/monotile/dark, /area/hydroponics) +"mX" = ( +/obj/item/wallframe/apc, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/durasteel/techfloor, +/area/space/nearstation) +"mY" = ( +/obj/item/trash/pistachios, +/turf/open/floor/durasteel/techfloor, +/area/space/nearstation) "na" = ( /obj/machinery/door/airlock/ship/external/glass{ req_one_access_txt = "24" @@ -2919,6 +3020,18 @@ }, /turf/closed/wall/r_wall, /area/bridge/cic) +"nt" = ( +/obj/effect/spawner/lootdrop/glowstick/lit, +/turf/open/floor/durasteel/techfloor, +/area/space/nearstation) +"nu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/four, +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) "nD" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -3044,14 +3157,13 @@ /turf/closed/wall/r_wall, /area/hallway/nsv/deck1/hallway) "oe" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/ship/half/purple, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "of" = ( @@ -3087,7 +3199,6 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "om" = ( -/obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, @@ -3095,6 +3206,9 @@ dir = 4 }, /obj/effect/landmark/start/assistant, +/obj/structure/chair/stool{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "oo" = ( @@ -3168,6 +3282,10 @@ /obj/machinery/status_display/ai/west, /turf/open/floor/monotile/light, /area/crew_quarters/bar/mess_hall) +"oy" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) "oA" = ( /obj/machinery/telecomms/hub/preset, /obj/machinery/camera/autoname, @@ -3217,12 +3335,6 @@ /turf/closed/wall/r_wall, /area/crew_quarters/heads/chief) "oX" = ( -/obj/machinery/computer/robotics{ - dir = 8 - }, -/obj/machinery/camera/autoname{ - dir = 1 - }, /obj/machinery/light_switch/east, /turf/open/floor/carpet/ship/beige_carpet, /area/crew_quarters/heads/hor) @@ -3255,6 +3367,9 @@ /obj/machinery/firealarm/directional/west{ pixel_y = 12 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) "pe" = ( @@ -3313,6 +3428,10 @@ /obj/effect/spawner/room/fivexfour, /turf/template_noop, /area/maintenance/nsv/deck1/starboard) +"pu" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/durasteel/techfloor, +/area/space/nearstation) "pw" = ( /turf/open/floor/carpet/blue, /area/bridge/cic) @@ -3392,7 +3511,6 @@ dir = 1 }, /obj/machinery/firealarm/directional/west, -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/ship/blue{ dir = 8 }, @@ -3413,18 +3531,6 @@ "pT" = ( /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) -"pU" = ( -/obj/docking_port/stationary{ - dir = 4; - dwidth = 3; - height = 15; - id = "arrivals_stationary"; - name = "Atlas Arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/atlas; - width = 7 - }, -/turf/open/floor/engine/airless, -/area/space/nearstation) "pW" = ( /turf/open/floor/plating/airless, /area/space/nearstation) @@ -3460,12 +3566,20 @@ /turf/open/floor/durasteel/lino, /area/tcommsat/server) "qh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) "qi" = ( -/obj/structure/chair/stool, /obj/effect/landmark/start/assistant, /obj/structure/disposalpipe/segment, +/obj/structure/chair/stool{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "qk" = ( @@ -3499,13 +3613,13 @@ /obj/structure/railing/corner{ dir = 8 }, -/obj/structure/disposalpipe/sorting/mail{ - dir = 4; - sortType = "5;10" - }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, +/obj/structure/disposalpipe/sorting/mail{ + sortType = 5; + dir = 4 + }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "qo" = ( @@ -3529,9 +3643,6 @@ /area/crew_quarters/kitchen) "qx" = ( /obj/machinery/suit_storage_unit/cmo, -/obj/machinery/light/small{ - dir = 4 - }, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/cmo) "qz" = ( @@ -3672,6 +3783,10 @@ /area/hallway/nsv/deck1/hallway) "rj" = ( /obj/structure/extinguisher_cabinet/east, +/mob/living/simple_animal/hostile/retaliate/bat/sgt_araneus, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) "rk" = ( @@ -3704,8 +3819,6 @@ /turf/open/floor/monotile/dark, /area/bridge/cic) "rs" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, /obj/machinery/requests_console{ announcementConsole = 1; department = "Research Director's Desk"; @@ -3717,7 +3830,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/item/stamp/research_director, +/obj/machinery/disposal/bin, /turf/open/floor/carpet/ship/beige_carpet, /area/crew_quarters/heads/hor) "rt" = ( @@ -3733,14 +3846,13 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable{ icon_state = "1-2" }, /obj/effect/landmark/nuclear_waste_spawner, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/engine, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "ry" = ( /obj/machinery/recharge_station, @@ -3846,6 +3958,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/ship/green, +/obj/effect/landmark/latejoin, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) "sd" = ( @@ -3922,6 +4035,9 @@ }, /obj/structure/disposalpipe/trunk, /obj/machinery/disposal/bin, +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/chief) "ss" = ( @@ -4012,7 +4128,6 @@ /turf/open/indestructible/sound/pool, /area/crew_quarters/bar/mess_hall) "sL" = ( -/obj/structure/chair/stool, /obj/structure/cable{ icon_state = "4-8" }, @@ -4026,6 +4141,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/chair/stool{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "sN" = ( @@ -4336,14 +4454,13 @@ /turf/open/floor/engine/airless, /area/space/nearstation) "ui" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/turf/open/floor/engine, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "uj" = ( /turf/closed/wall/r_wall, @@ -4433,15 +4550,15 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck1/hallway) "uR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/monotile/steel, /area/ai_monitored/turret_protected/ai_upload) "uS" = ( @@ -4483,6 +4600,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/ai_monitored/turret_protected/ai_upload) "uZ" = ( @@ -4532,6 +4652,7 @@ /obj/machinery/airalarm/directional/south, /obj/item/storage/firstaid/regular, /obj/item/reagent_containers/glass/beaker/cryoxadone, +/obj/machinery/light, /turf/open/floor/durasteel/lino, /area/medical/medbay) "vj" = ( @@ -4547,7 +4668,6 @@ /obj/effect/turf_decal/tile/ship/green{ dir = 8 }, -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/ship/yellow{ dir = 1 }, @@ -4674,9 +4794,11 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) "vQ" = ( -/obj/structure/chair/stool, /obj/effect/landmark/start/librarian, /obj/structure/disposalpipe/segment, +/obj/structure/chair/stool{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "vR" = ( @@ -4842,6 +4964,13 @@ }, /turf/open/floor/plasteel/airless/solarpanel, /area/space/nearstation) +"wT" = ( +/obj/structure/hull_plate, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/crew_quarters/bar/mess_hall) "wU" = ( /obj/structure/cable{ icon_state = "1-4" @@ -4927,7 +5056,7 @@ name = "Executive requests console"; pixel_y = -32 }, -/obj/machinery/vending/cart{ +/obj/machinery/vending/job_disk{ density = 0; pixel_x = 23 }, @@ -4966,6 +5095,13 @@ }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) +"xo" = ( +/obj/structure/table/reinforced, +/obj/item/radio{ + icon_state = "radio" + }, +/turf/open/floor/durasteel/techfloor, +/area/engine/gravity_generator) "xp" = ( /obj/structure/table/reinforced, /obj/machinery/reagentgrinder, @@ -5000,9 +5136,6 @@ pixel_y = 6 }, /obj/machinery/airalarm/directional/north, -/obj/machinery/light/small{ - dir = 4 - }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/chief) "xr" = ( @@ -5065,6 +5198,10 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/durasteel/lino, /area/ai_monitored/turret_protected/aisat) +"xG" = ( +/obj/item/banner/cargo, +/turf/open/floor/durasteel/techfloor, +/area/space/nearstation) "xI" = ( /obj/structure/cable{ icon_state = "4-8" @@ -5087,6 +5224,7 @@ dir = 8 }, /obj/machinery/newscaster/directional/south, +/obj/machinery/light, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) "xS" = ( @@ -5104,6 +5242,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/camera/autoname, /turf/open/floor/durasteel/lino, /area/medical/medbay) "xU" = ( @@ -5207,6 +5346,7 @@ pixel_y = 26 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/green, /area/hallway/nsv/deck1/hallway) "ys" = ( @@ -5226,6 +5366,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/structure/ladder, /turf/open/floor/plating, /area/maintenance/nsv/deck1/central) "yv" = ( @@ -5266,6 +5407,7 @@ /obj/structure/chair/fancy/sofa/old/left{ dir = 1 }, +/obj/machinery/light, /turf/open/floor/wood, /area/crew_quarters/bar/mess_hall) "yE" = ( @@ -5346,6 +5488,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) +"zg" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/three, +/turf/open/floor/plating, +/area/space/nearstation) +"zh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/ladder, +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) "zn" = ( /obj/machinery/light{ dir = 4 @@ -5375,6 +5529,12 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) "zA" = ( @@ -5562,6 +5722,15 @@ }, /turf/open/floor/monotile/dark, /area/engine/gravity_generator) +"Ai" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/closet/crate/trashcart, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/trash/can, +/turf/open/floor/plating, +/area/space/nearstation) "Aj" = ( /obj/structure/lattice/catwalk, /obj/structure/cable/yellow{ @@ -5672,6 +5841,9 @@ "AT" = ( /obj/machinery/hydroponics/constructable, /obj/effect/turf_decal/tile/ship/half/green, +/obj/machinery/light{ + dir = 4 + }, /turf/open/floor/monotile/steel, /area/hydroponics) "AU" = ( @@ -5683,6 +5855,11 @@ }, /turf/open/floor/monotile/steel, /area/bridge/cic) +"AX" = ( +/obj/item/stack/spacecash/c20, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) "AY" = ( /obj/effect/turf_decal/loading_area{ dir = 8 @@ -5696,12 +5873,15 @@ /turf/open/floor/monotile/dark, /area/medical/medbay) "Bc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, /turf/open/floor/monotile/dark, /area/ai_monitored/turret_protected/ai_upload) "Bh" = ( @@ -5730,6 +5910,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/ship/green, +/obj/effect/landmark/latejoin, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) "Bl" = ( @@ -5773,6 +5954,8 @@ name = "Engineering wing maintenance"; req_one_access_txt = "10;24" }, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, /turf/open/floor/plating, /area/maintenance/nsv/deck1/central) "By" = ( @@ -5795,10 +5978,12 @@ /turf/open/floor/durasteel/lino, /area/medical/medbay) "BE" = ( -/obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/landmark/start/assistant, +/obj/structure/chair/stool{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "BF" = ( @@ -5871,8 +6056,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/turf/open/floor/engine, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) +"BQ" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/space/nearstation) "BS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -5894,6 +6083,21 @@ /obj/effect/turf_decal/tile/ship/green, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) +"Cb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/hallway/nsv/deck1/hallway) "Ce" = ( /obj/machinery/holopad, /turf/open/floor/monotile/dark, @@ -5937,6 +6141,12 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/chief) "Ct" = ( @@ -6006,6 +6216,7 @@ "CJ" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/light/small, +/obj/structure/ladder, /turf/open/floor/plating, /area/maintenance/nsv/deck1/central) "CN" = ( @@ -6045,6 +6256,8 @@ }, /obj/structure/disposalpipe/segment, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/hos) "CP" = ( @@ -6130,6 +6343,15 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/medical/chemistry) +"Dl" = ( +/obj/structure/table/reinforced, +/obj/item/toy/cards/deck, +/obj/item/clothing/head/soft/grey{ + pixel_x = -2; + pixel_y = 3 + }, +/turf/open/floor/monotile/dark, +/area/crew_quarters/bar/mess_hall) "Dp" = ( /obj/machinery/door/airlock/ship/public/glass{ name = "Briefing Room" @@ -6357,12 +6579,6 @@ /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) "Ea" = ( -/obj/structure/table/reinforced, -/obj/item/toy/cards/deck, -/obj/item/clothing/head/soft/grey{ - pixel_x = -2; - pixel_y = 3 - }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, @@ -6375,6 +6591,10 @@ /obj/structure/railing, /turf/open/openspace, /area/maintenance/nsv/deck1/starboard) +"Ee" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) "Ei" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -6598,6 +6818,13 @@ }, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/xo) +"Fd" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) "Fg" = ( /obj/machinery/chem_master, /obj/machinery/firealarm/directional/east, @@ -6672,6 +6899,7 @@ /area/space/nearstation) "Fu" = ( /obj/machinery/ai_slipper, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/monotile/dark, /area/ai_monitored/turret_protected/ai_upload) "Fw" = ( @@ -6760,6 +6988,9 @@ dir = 4 }, /obj/machinery/camera/autoname, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/carpet/blue, /area/crew_quarters/bar/mess_hall) "FP" = ( @@ -6770,6 +7001,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/machinery/light/small, /turf/open/floor/monotile/dark, /area/bridge/cic) "FR" = ( @@ -6805,7 +7037,6 @@ /turf/closed/wall/steel, /area/crew_quarters/kitchen) "Ga" = ( -/obj/structure/chair/stool, /obj/structure/cable{ icon_state = "4-8" }, @@ -6816,6 +7047,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/chair/stool{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "Ge" = ( @@ -6838,6 +7072,12 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/chief) "Gm" = ( @@ -6862,12 +7102,16 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) "Gp" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/camera/autoname{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/medical/medbay) "Gu" = ( @@ -6931,6 +7175,14 @@ /obj/structure/fluff/bleepypanel, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat) +"GX" = ( +/obj/item/soap, +/obj/structure/rack, +/obj/structure/grille/broken, +/obj/item/storage/pill_bottle/floorpill/full, +/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, +/turf/open/floor/durasteel/techfloor, +/area/space/nearstation) "GY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -6967,6 +7219,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "Hh" = ( @@ -7046,6 +7299,8 @@ icon_state = "1-2" }, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "Hq" = ( @@ -7177,6 +7432,10 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) +"HW" = ( +/obj/structure/grille, +/turf/open/floor/durasteel/techfloor, +/area/space/nearstation) "HX" = ( /obj/machinery/door/firedoor/border_only{ dir = 4 @@ -7267,6 +7526,10 @@ /obj/structure/closet/secure_closet/freezer/fridge, /turf/open/floor/monotile/light, /area/crew_quarters/kitchen) +"Iq" = ( +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plating, +/area/space/nearstation) "Ir" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -7281,6 +7544,9 @@ /obj/effect/turf_decal/tile/ship/purple{ dir = 8 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) "Iw" = ( @@ -7299,6 +7565,13 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, /area/hydroponics) +"Ix" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plating, +/area/space/nearstation) "Iy" = ( /turf/closed/wall/steel, /area/crew_quarters/dorms) @@ -7387,14 +7660,26 @@ dir = 4 }, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/cmo) "IU" = ( /obj/effect/turf_decal/tile/ship/half/blue{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 10 }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) @@ -7483,6 +7768,7 @@ /obj/effect/turf_decal/tile/ship/half/green{ dir = 1 }, +/obj/machinery/light, /turf/open/floor/monotile/steel, /area/hydroponics) "Jn" = ( @@ -7521,6 +7807,9 @@ }, /obj/structure/closet/secure_closet/RD, /obj/item/bedsheet/rd, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, /turf/open/floor/carpet/ship/beige_carpet, /area/crew_quarters/heads/hor) "Jv" = ( @@ -7558,6 +7847,10 @@ }, /obj/item/bedsheet/cmo, /mob/living/simple_animal/pet/cat/Runtime, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/light, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) "JG" = ( @@ -7774,9 +8067,6 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, @@ -7791,6 +8081,7 @@ codes_txt = "patrol;next_patrol=down"; location = "left" }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "Ks" = ( @@ -7858,10 +8149,10 @@ /area/bridge/cic) "KI" = ( /obj/machinery/chem_dispenser, -/obj/machinery/light/small{ +/obj/structure/extinguisher_cabinet/south, +/obj/machinery/light{ dir = 4 }, -/obj/structure/extinguisher_cabinet/south, /turf/open/floor/durasteel/lino, /area/medical/chemistry) "KK" = ( @@ -8026,6 +8317,18 @@ }, /turf/open/floor/monotile/dark, /area/ai_monitored/turret_protected/aisat) +"Lz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/monotile/steel, +/area/hallway/nsv/deck1/hallway) "LG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -8167,7 +8470,6 @@ /obj/machinery/computer/mecha{ dir = 1 }, -/obj/structure/extinguisher_cabinet/east, /obj/item/radio/intercom/directional/south, /turf/open/floor/carpet/ship/beige_carpet, /area/crew_quarters/heads/hor) @@ -8293,7 +8595,7 @@ name = "Mission Critical Systems"; req_one_access_txt = "61;65;16" }, -/turf/open/floor/engine, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "MJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -8308,7 +8610,7 @@ /obj/machinery/ai_slipper, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/monotile/dark, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "MO" = ( /obj/effect/turf_decal/tile/ship/half/green{ @@ -8338,6 +8640,9 @@ "MS" = ( /turf/closed/wall/r_wall, /area/maintenance/nsv/deck1/starboard) +"MT" = ( +/turf/open/floor/plating, +/area/space/nearstation) "MU" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 4 @@ -8383,6 +8688,10 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) +"Ne" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/space/nearstation) "Nf" = ( /obj/structure/cable{ icon_state = "4-8" @@ -8401,6 +8710,11 @@ /obj/machinery/space_heater, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) +"Nh" = ( +/obj/structure/table_frame/wood, +/obj/item/toy/talking/AI, +/turf/open/floor/durasteel/techfloor, +/area/space/nearstation) "Nj" = ( /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -8456,6 +8770,12 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) +"Nr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/ai_monitored/turret_protected/ai_upload) "Ns" = ( /obj/structure/grille, /turf/open/space/basic, @@ -8465,6 +8785,18 @@ /obj/machinery/vending/hydronutrients, /turf/open/floor/monotile/steel, /area/hydroponics) +"Nu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/ship/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/ship/yellow{ + dir = 8 + }, +/turf/open/floor/durasteel/alt, +/area/hallway/nsv/deck1/hallway) "Nv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 @@ -8474,6 +8806,10 @@ }, /turf/template_noop, /area/maintenance/nsv/deck1/port) +"Nw" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/space/nearstation) "Ny" = ( /obj/structure/cable{ icon_state = "4-8" @@ -8678,9 +9014,20 @@ }, /turf/open/floor/durasteel/alt, /area/medical/medbay) +"Og" = ( +/obj/structure/hull_plate, +/obj/machinery/light, +/turf/open/floor/engine/airless, +/area/hallway/nsv/deck1/hallway) "Oj" = ( /turf/closed/wall/r_wall, /area/crew_quarters/bar/mess_hall) +"Ok" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) "Om" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -8934,6 +9281,12 @@ /obj/machinery/telecomms/bus/preset_two, /turf/open/floor/circuit/telecomms/server, /area/tcommsat/server) +"PA" = ( +/obj/structure/chair/stool{ + dir = 4 + }, +/turf/open/floor/plating, +/area/space/nearstation) "PC" = ( /obj/machinery/biogenerator, /obj/effect/turf_decal/tile/ship/half/green, @@ -8999,11 +9352,30 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) +"PN" = ( +/obj/effect/landmark/start/assistant, +/obj/structure/chair/stool{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/crew_quarters/bar/mess_hall) "PO" = ( /turf/open/floor/plating{ icon_state = "panelscorched" }, /area/maintenance/nsv/deck1/port) +"PP" = ( +/obj/machinery/door/airlock/ship/maintenance, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/space/nearstation) +"PQ" = ( +/obj/structure/table/reinforced, +/obj/item/storage/pill_bottle/dice, +/turf/open/floor/monotile/dark, +/area/crew_quarters/bar/mess_hall) "PR" = ( /obj/machinery/status_display/ai/east, /turf/closed/wall/r_wall, @@ -9070,9 +9442,6 @@ /turf/open/floor/plating, /area/bridge/cic) "Qi" = ( -/obj/machinery/light/small{ - dir = 4 - }, /obj/structure/chair/fancy/sofa/old/right{ dir = 8 }, @@ -9171,9 +9540,8 @@ /turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "QG" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/extinguisher_cabinet/south, -/turf/open/floor/engine, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "QI" = ( /obj/structure/sign/directions/engineering, @@ -9207,6 +9575,9 @@ /obj/machinery/status_display/evac/south, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) +"QP" = ( +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) "QR" = ( /obj/effect/turf_decal/tile/ship/green, /obj/effect/turf_decal/tile/ship/green{ @@ -9303,13 +9674,16 @@ }, /turf/open/floor/carpet/royalblack, /area/bridge/cic) +"Ro" = ( +/obj/item/tank/internals/plasmaman/empty, +/turf/open/floor/durasteel/techfloor, +/area/space/nearstation) "Rp" = ( /obj/machinery/computer/card/minor/hos, /obj/machinery/airalarm/directional/north, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) "Rt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/tile/ship/half/red{ dir = 1 }, @@ -9317,6 +9691,8 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "Rw" = ( @@ -9324,6 +9700,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "RC" = ( @@ -9597,7 +9974,6 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) "Tg" = ( -/obj/structure/chair/stool, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, @@ -9609,6 +9985,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/chair/stool{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar/mess_hall) "Th" = ( @@ -9756,8 +10135,8 @@ pixel_y = 3 }, /obj/item/storage/firstaid/toxin, -/obj/machinery/light{ - dir = 4 +/obj/machinery/camera/autoname{ + dir = 8 }, /turf/open/floor/durasteel/lino, /area/medical/medbay) @@ -9852,6 +10231,9 @@ /obj/structure/closet/secure_closet/engineering_chief, /obj/item/book/manual/wiki/rbmk, /obj/item/bedsheet/ce, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/chief) "Ui" = ( @@ -9868,6 +10250,9 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/machinery/light/small{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/bridge/cic) "Ul" = ( @@ -9930,6 +10315,12 @@ /turf/open/floor/plating, /area/crew_quarters/heads/captain) "Uy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) "UA" = ( @@ -10075,6 +10466,12 @@ "Ve" = ( /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/dorms) +"Vf" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) "Vg" = ( /turf/open/floor/monotile/steel, /area/bridge/cic) @@ -10159,7 +10556,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/obj/machinery/camera/autoname, /turf/open/floor/monotile/dark, /area/medical/medbay) "VH" = ( @@ -10191,6 +10587,9 @@ /obj/structure/chair/office, /obj/effect/landmark/start/medical_doctor, /obj/machinery/newscaster/directional/west, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/durasteel/alt, /area/medical/medbay) "VP" = ( @@ -10203,6 +10602,13 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) +"VT" = ( +/obj/item/trash/raisins, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) "VV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -10213,9 +10619,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/light{ - dir = 1 - }, /obj/effect/landmark/zebra_interlock_point, /obj/machinery/door/airlock/ship/command{ name = "Bridge"; @@ -10372,6 +10775,7 @@ /area/hallway/nsv/deck1/hallway) "Xf" = ( /obj/structure/closet/secure_closet/CMO, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/cmo) "Xg" = ( @@ -10430,11 +10834,15 @@ }, /area/maintenance/nsv/deck1/port) "Xn" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable{ icon_state = "4-32" }, /obj/machinery/power/apc/auto_name/west, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/ship/shutoff, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/central) "Xp" = ( @@ -10519,6 +10927,18 @@ }, /obj/structure/table/reinforced, /obj/structure/railing, +/obj/item/folder/yellow{ + pixel_x = -7 + }, +/obj/item/folder/white{ + pixel_x = -2 + }, +/obj/item/folder/red{ + pixel_x = 3 + }, +/obj/item/folder/blue{ + pixel_x = 8 + }, /turf/open/floor/carpet/royalblack, /area/bridge/cic) "XK" = ( @@ -10593,11 +11013,18 @@ /obj/structure/ladder, /turf/open/floor/monotile/steel, /area/medical/medbay) +"Yd" = ( +/obj/structure/inflatable, +/turf/open/floor/durasteel/techfloor_grid, +/area/space/nearstation) +"Yf" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/space/nearstation) "Yj" = ( /turf/open/floor/monotile/dark, /area/hydroponics) "Yk" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable{ icon_state = "4-8" }, @@ -10607,7 +11034,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/turf/open/floor/engine, +/turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat) "Yl" = ( /obj/machinery/blackbox_recorder, @@ -10646,8 +11073,6 @@ /turf/open/indestructible/sound/pool, /area/crew_quarters/bar/mess_hall) "Ys" = ( -/obj/structure/table/reinforced, -/obj/item/storage/pill_bottle/dice, /obj/structure/cable{ icon_state = "4-8" }, @@ -10679,6 +11104,12 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, /turf/open/floor/carpet/ship/beige_carpet, /area/crew_quarters/heads/hor) "YB" = ( @@ -10734,7 +11165,6 @@ /obj/effect/turf_decal/tile/ship/half/green{ dir = 8 }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, @@ -10744,7 +11174,6 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) "YP" = ( -/obj/machinery/light, /obj/machinery/hydroponics/constructable, /obj/effect/turf_decal/tile/ship/half/green{ dir = 1 @@ -10797,6 +11226,9 @@ "Zb" = ( /obj/machinery/iv_drip/saline, /obj/effect/turf_decal/box, +/obj/machinery/camera/autoname{ + dir = 1 + }, /turf/open/floor/durasteel/lino, /area/medical/medbay) "Zd" = ( @@ -10860,6 +11292,7 @@ pixel_y = 12 }, /mob/living/simple_animal/parrot/Poly, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/chief) "ZA" = ( @@ -10903,6 +11336,7 @@ /obj/effect/turf_decal/tile/ship/blue{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/durasteel/alt, /area/hallway/nsv/deck1/hallway) "ZN" = ( @@ -37298,7 +37732,7 @@ CV CV yE aO -aj +xo jR yE GW @@ -37553,20 +37987,20 @@ HI yE yE yE -HI -HI -jQ -jQ -HI -HI +yE +yE +CV +CV +yE +tp tp BN tp -MS -MS -MS -MS -MS +tp +tp +tp +tp +tp MS HU xY @@ -39614,7 +40048,7 @@ ob Sx dE lZ -dE +Nu vl YL pK @@ -39870,13 +40304,13 @@ Kr Bs Nb Xv -Bs +Lz Xv Ql Uf Bs Xv -Bs +Lz Xv Nb tx @@ -40123,7 +40557,7 @@ rj gQ bR eM -wu +jQ Fw NL Mv @@ -40137,7 +40571,7 @@ Zr kp NL gR -wu +Cb It TB fR @@ -40399,7 +40833,7 @@ cD Am rs oX -Cx +eZ Cx MS LU @@ -41416,11 +41850,11 @@ uj kK Bc Fu -TU +Nr ja uj CI -Bv +kk wg zL Sc @@ -41666,7 +42100,7 @@ HG VA MQ wu -Sc +vs gq yu uj @@ -41680,7 +42114,7 @@ CJ gq MQ wu -Sc +vs Am Am NN @@ -44216,7 +44650,7 @@ cL lx lx lx -pW +Iq lx HI Vv @@ -44471,9 +44905,9 @@ cL cL cL lx -pW -pW -pW +xG +MT +Ok lx qO qO @@ -44728,9 +45162,9 @@ cL cL cL lx -pW -pW -pW +zg +jj +nu lx qO qO @@ -44986,8 +45420,8 @@ cL cL lx lx -pW -pW +jj +Ai lx qO qO @@ -45243,8 +45677,8 @@ cL cL cL lx -pW -pW +Ne +Fd lx qO qO @@ -45500,8 +45934,8 @@ cL cL cL lx -pW -pW +MT +zh lx qO qO @@ -45757,8 +46191,8 @@ cL cL cL lx -pW -pW +mX +Ix lx HI Vv @@ -46014,8 +46448,8 @@ cL cL cL lx -pW -pW +jj +Ok lx HI tb @@ -46271,8 +46705,8 @@ cL cL cL lx -pW -pW +BQ +Ee lx HI LL @@ -46528,8 +46962,8 @@ cL cL cL lx -pW -pW +mY +QP lx HI pM @@ -46785,8 +47219,8 @@ cL cL cL lx -pW -pW +pu +eA lx HI HI @@ -47043,7 +47477,7 @@ cL cL lx lx -pW +PP lx lx lx @@ -47300,10 +47734,10 @@ cL cL cL lx -pW -pW -pW -lx +Ok +HW +oy +Nw HI ud LL @@ -47557,10 +47991,10 @@ cL cL cL lx -pW -pW -pW -lx +Iq +pu +oy +Nw HI CW LL @@ -47571,8 +48005,8 @@ KS KS Zs Pf -aT -td +hJ +hJ FC LG Ea @@ -47814,10 +48248,10 @@ cL cL cL lx -pW -pW -pW -lx +Ok +pu +AX +Nw HI qf PO @@ -47828,8 +48262,8 @@ sJ ox WD cW -my -my +PN +PN hJ hJ eg @@ -48071,9 +48505,9 @@ cL cL cL lx -pW -pW -pW +Ok +HW +Vf lx HI ok @@ -48085,8 +48519,8 @@ sJ mC fs cW -aT -td +Dl +PQ hJ hJ rN @@ -48101,10 +48535,10 @@ mK mK mK mK -lx +Am Am PT -ST +kc sc cH xT @@ -48328,9 +48762,9 @@ cL cL cL lx -pW -pW -pW +VT +Yd +Yd lx HI AP @@ -48358,7 +48792,7 @@ mK mK we mK -lx +Am Am Am sg @@ -48585,9 +49019,9 @@ cL cL cL lx -pW -pW -pW +nt +Yf +Ro lx HI cM @@ -48608,14 +49042,14 @@ is iU Oj Oj +wT mK mK mK mK mK -mK -mK -lx +Og +Am Am Am ST @@ -48843,8 +49277,8 @@ cL cL lx lx -pW -pW +GX +PA lx HI qz @@ -49100,8 +49534,8 @@ cL cL cL lx -pW -pW +HW +Nh lx HI PX @@ -50164,7 +50598,7 @@ KN cx cx cx -pU +cx cx cx cx diff --git a/_maps/map_files/Atlas/job_changes.dm b/_maps/map_files/Atlas/job_changes.dm index 73e4556579a..8d8ff455326 100644 --- a/_maps/map_files/Atlas/job_changes.dm +++ b/_maps/map_files/Atlas/job_changes.dm @@ -50,14 +50,8 @@ MAP_REMOVE_JOB(brig_phys) /datum/job/pilot/New() ..() MAP_JOB_CHECK - total_positions = 1 - spawn_positions = 1 - -/datum/job/detective/New() - ..() - MAP_JOB_CHECK - total_positions = 1 - spawn_positions = 1 + total_positions = 2 + spawn_positions = 2 /datum/job/bartender/New() ..() diff --git a/_maps/map_files/Eclipse/Eclipse1.dmm b/_maps/map_files/Eclipse/Eclipse1.dmm index d1fab581abc..5864a40a510 100644 --- a/_maps/map_files/Eclipse/Eclipse1.dmm +++ b/_maps/map_files/Eclipse/Eclipse1.dmm @@ -153,6 +153,7 @@ /obj/structure/cable{ icon_state = "0-8" }, +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel/dark/side{ dir = 4 }, @@ -261,7 +262,7 @@ "bp" = ( /obj/structure/closet/crate/large, /obj/effect/spawner/lootdrop/maintenance/four, -/obj/item/robot_module/borgi, +/obj/item/borg/upgrade/transform/borgi, /turf/open/floor/plasteel/dark/side, /area/construction) "br" = ( @@ -1366,6 +1367,7 @@ /obj/machinery/camera/autoname{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel/dark/side{ dir = 8 }, @@ -2166,6 +2168,7 @@ /area/maintenance/aft) "jh" = ( /obj/machinery/firealarm/directional/west, +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel/dark/side{ dir = 8 }, @@ -3498,6 +3501,7 @@ /turf/open/floor/monotile/dark, /area/hallway/primary/fore) "of" = ( +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel/dark/side{ dir = 8 }, @@ -3857,18 +3861,6 @@ }, /turf/open/floor/monotile/dark, /area/hallway/primary/fore) -"pB" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 15; - id = "arrivals_stationary"; - name = "arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/box; - width = 7 - }, -/turf/open/space/basic, -/area/space/nearstation) "pC" = ( /obj/machinery/door/airlock/ship/hatch, /obj/machinery/door/firedoor/border_only/directional/south, @@ -3965,6 +3957,7 @@ pixel_y = -22; req_one_access = null }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/dark, /area/crew_quarters/cryopods) "qa" = ( @@ -4469,12 +4462,6 @@ "sx" = ( /turf/open/floor/plasteel/dark/side, /area/construction) -"sy" = ( -/obj/effect/turf_decal/stripes/full, -/obj/structure/window/spawner, -/obj/structure/window/spawner/north, -/turf/open/floor/plating, -/area/space/nearstation) "sz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ @@ -5118,7 +5105,7 @@ req_one_access_txt = "0" }, /obj/item/paper{ - info = "

NOTE: There are no miners on this vessel, you are ALL miners. Use the mining dradis to see asteroids, move towards them, and then coordinate with your team on the mining rig (whoever you so choose to assign), and they can draw in the asteroid. This is the only way to acquire materials steadily outside of doing xenobio. -JT

"; + default_raw_text = "

NOTE: There are no miners on this vessel, you are ALL miners. Use the mining dradis to see asteroids, move towards them, and then coordinate with your team on the mining rig (whoever you so choose to assign), and they can draw in the asteroid. This is the only way to acquire materials steadily outside of doing xenobio. -JT

"; name = "READ ME." }, /turf/open/floor/monotile/steel, @@ -5663,6 +5650,7 @@ /obj/machinery/light{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel/dark/side{ dir = 4 }, @@ -6389,6 +6377,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel/dark/side{ dir = 8 }, @@ -7439,6 +7428,7 @@ /obj/structure/cable{ icon_state = "1-8" }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/dark, /area/crew_quarters/cryopods) "EY" = ( @@ -7472,7 +7462,7 @@ anchored = 1 }, /obj/item/paper{ - info = "

Reminder: Pacman generators can be interacted with to boost their power output, can be upgraded with stock parts to increase cooling and power production even further, and can fully power this ship. Conserve your usage of the Mrs. Pacmans for combat where you need to power the armor pumps. -JT

"; + default_raw_text = "

Reminder: Pacman generators can be interacted with to boost their power output, can be upgraded with stock parts to increase cooling and power production even further, and can fully power this ship. Conserve your usage of the Mrs. Pacmans for combat where you need to power the armor pumps. -JT

"; name = "READ ME." }, /turf/open/floor/plasteel/dark/side, @@ -9046,6 +9036,7 @@ /turf/open/floor/monotile/steel, /area/engine/gravity_generator) "LK" = ( +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel/dark/side{ dir = 4 }, @@ -9258,6 +9249,14 @@ /obj/machinery/stasis, /turf/open/floor/plasteel/tiled/light, /area/medical/surgery) +"Mv" = ( +/obj/machinery/fax{ + name = "Bridge Fax Machine"; + fax_name = "Bridge" + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel, +/area/bridge) "Mw" = ( /obj/machinery/airalarm/directional/north, /turf/open/floor/plasteel/dark/side{ @@ -10105,6 +10104,7 @@ }, /area/hallway/primary/fore) "PK" = ( +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/dark, /area/crew_quarters/cryopods) "PN" = ( @@ -10606,7 +10606,7 @@ /turf/open/floor/monotile/dark, /area/hallway/primary/fore) "RW" = ( -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /turf/open/floor/plasteel/dark/side{ dir = 4 }, @@ -11097,6 +11097,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/dark, /area/crew_quarters/cryopods) "TI" = ( @@ -36399,16 +36400,16 @@ gX gX gX gX -le -Ti -Ti -Ti -Ti -Ti -Ti -Ti -Ti -Ti +gX +gX +gX +gX +gX +gX +gX +gX +gX +gX rK kU Ea @@ -36656,16 +36657,16 @@ gX gX gX gX -kw -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +gX +gX +gX +gX +gX +gX VY VY KA @@ -36913,16 +36914,16 @@ gX gX gX gX -le -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +gX +gX +gX +gX +gX +gX VY Pi jp @@ -37170,16 +37171,16 @@ gX gX gX gX -le -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +mj +gX +gX +gX +gX +gX VY mL jp @@ -37427,16 +37428,16 @@ gX gX gX gX -kw -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +gX +gX +gX +gX +gX VY Pi jp @@ -37684,14 +37685,14 @@ gX gX gX gX -sy -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +gX +gX +gX VY VY VY @@ -37941,14 +37942,14 @@ gX gX gX gX -sy -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +gX +gX +gX Ug vr bC @@ -38198,14 +38199,14 @@ gX gX gX gX -sy -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +Gs +Gs +Gs VY VY VY @@ -38455,16 +38456,16 @@ gX gX gX gX -kw -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +gX +gX +gX +gX +gX jr VB ob @@ -38712,16 +38713,16 @@ gX gX gX gX -le -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +gX +gX +gX +gX +gX jr Pi jp @@ -38969,16 +38970,16 @@ gX gX gX gX -le -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +mj +gX +gX +gX +gX +gX jr Pi Qr @@ -39226,16 +39227,16 @@ gX gX gX gX -kw -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +gX +gX +gX +gX +gX jr Pi jp @@ -39483,14 +39484,14 @@ gX gX gX gX -sy -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +gX +gX +gX VY VY VY @@ -39740,14 +39741,14 @@ gX gX gX gX -sy -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +Gs +Gs +Gs Ug vr bC @@ -39997,14 +39998,14 @@ gX gX gX gX -sy -Lm -Lm -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +gX +gX +gX VY VY VY @@ -40254,16 +40255,16 @@ gX gX gX gX -kw -Lm -Lm -Lm -pB -Lm -Lm -Lm -Lm -Lm +gX +gX +gX +gX +zZ +gX +gX +gX +gX +gX VY Pi jp @@ -40511,16 +40512,16 @@ gX gX gX gX -le -Ti -Ti -Ti -Ti -Ti -Ti -Ti -Ti -Ti +gX +gX +gX +gX +mj +gX +gX +gX +gX +gX VY wN jp @@ -47992,7 +47993,7 @@ Fh Uo fk Ie -IN +Mv DT wT Kg diff --git a/_maps/map_files/Galactica/Galactica1.dmm b/_maps/map_files/Galactica/Galactica1.dmm index d642660b97d..94d5f56ec5b 100644 --- a/_maps/map_files/Galactica/Galactica1.dmm +++ b/_maps/map_files/Galactica/Galactica1.dmm @@ -57,8 +57,15 @@ /turf/open/openspace, /area/medical/medbay/zone2) "aj" = ( -/obj/machinery/atmospherics/pipe/multiz/layer2, -/obj/machinery/atmospherics/pipe/multiz/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/aft) "ak" = ( @@ -95,6 +102,18 @@ /obj/effect/decal/remains/human, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard/aft) +"ap" = ( +/obj/machinery/camera/autoname{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "ar" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -128,6 +147,16 @@ }, /turf/open/floor/monotile/dark, /area/security/brig) +"aw" = ( +/obj/structure/peacekeeper_barricade/metal{ + dir = 4 + }, +/obj/structure/target_stake, +/obj/item/target/syndicate{ + name = "stupid marine" + }, +/turf/open/floor/engine, +/area/maintenance/nsv/deck1/port) "ax" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -214,6 +243,21 @@ }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck1/frame1/central) +"aE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/ship/half/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "aF" = ( /obj/machinery/light, /obj/machinery/ntnet_relay, @@ -281,6 +325,15 @@ }, /turf/open/floor/durasteel/lino, /area/ai_monitored/nuke_storage) +"aN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "aO" = ( /obj/structure/sign/ship/securearea{ name = "CAUTION: LANDING ZONE"; @@ -322,12 +375,14 @@ /turf/open/floor/engine/airless, /area/ai_monitored/turret_protected/AIsatextAP) "aT" = ( -/obj/effect/turf_decal/tile/ship/half/neutral{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/structure/weightmachine/stacklifter, /turf/open/floor/monotile/steel, -/area/crew_quarters/dorms) +/area/maintenance/nsv/deck1/port) "aU" = ( /obj/structure/cable{ icon_state = "2-4" @@ -458,11 +513,11 @@ /turf/open/floor/plating, /area/maintenance/nsv/hangar) "bl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/monotile/dark, -/area/crew_quarters/dorms) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "bm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -503,6 +558,11 @@ /obj/machinery/telecomms/bus/preset_four, /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) +"bu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "bv" = ( /obj/machinery/computer/secure_data{ dir = 8 @@ -622,6 +682,21 @@ }, /turf/open/floor/monotile/steel, /area/medical/morgue) +"bJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/ship/half/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "bK" = ( /turf/open/floor/plating{ icon_state = "platingdmg1" @@ -683,6 +758,19 @@ /obj/machinery/light/small, /turf/open/floor/plasteel/freezer, /area/medical/virology) +"bR" = ( +/obj/structure/peacekeeper_barricade/metal{ + dir = 1 + }, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) +"bS" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "bT" = ( /obj/structure/cable{ icon_state = "0-4" @@ -792,6 +880,16 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/nsv/deck1/central) +"ci" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) +"cj" = ( +/obj/structure/frame/computer, +/turf/open/floor/mineral/plastitanium, +/area/maintenance/nsv/deck1/port) "ck" = ( /obj/structure/cable{ icon_state = "4-8" @@ -912,6 +1010,21 @@ }, /turf/open/floor/monotile/light, /area/medical/virology) +"cC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/tile/ship/half/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "cD" = ( /obj/machinery/ai_slipper, /obj/structure/cable{ @@ -922,11 +1035,8 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "cE" = ( -/obj/machinery/power/solar_control{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" +/obj/structure/chair/office{ + dir = 8 }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) @@ -1032,7 +1142,7 @@ "cT" = ( /obj/structure/table/glass, /obj/item/paper_bin, -/obj/item/cartridge/chemistry{ +/obj/item/computer_hardware/hard_drive/role/chemistry{ pixel_y = 2 }, /obj/item/clothing/glasses/hud/health, @@ -1259,6 +1369,11 @@ "dx" = ( /turf/closed/wall/steel, /area/crew_quarters/dorms) +"dy" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/ship/half/neutral, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "dz" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/bot{ @@ -1299,6 +1414,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/monotile/steel, /area/medical/medbay/zone2) +"dI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/monotile/dark, +/area/crew_quarters/dorms) "dJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -1360,14 +1484,9 @@ /turf/open/floor/durasteel, /area/storage/tech) "dS" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/machinery/light, +/turf/open/floor/engine, +/area/maintenance/nsv/deck1/port) "dT" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 4 @@ -1394,9 +1513,9 @@ /area/nsv/hanger/notkmcstupidhanger) "dW" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "2-8" }, -/turf/template_noop, +/turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) "dX" = ( /obj/structure/railing/corner{ @@ -1769,6 +1888,15 @@ }, /turf/open/floor/monotile/dark/airless, /area/space/nearstation) +"eZ" = ( +/obj/effect/turf_decal/ship/delivery{ + color = "#8B0000" + }, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "fa" = ( /obj/structure/table/glass, /obj/item/statuebust/hippocratic{ @@ -1776,6 +1904,10 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) +"fb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "fc" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 @@ -1885,6 +2017,19 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/fore) +"fr" = ( +/obj/effect/turf_decal/loading_area, +/obj/structure/fluff/support_beam{ + color = "#787878" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/nuclear_waste_spawner, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "fs" = ( /obj/structure/railing{ dir = 1 @@ -1913,6 +2058,16 @@ }, /turf/open/floor/monotile/dark/airless, /area/space/nearstation) +"fw" = ( +/obj/effect/turf_decal/ship/nt_floor_logo{ + icon_state = "2,0" + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "fy" = ( /obj/machinery/computer/prisoner, /turf/open/floor/carpet/red, @@ -1961,6 +2116,22 @@ }, /turf/open/floor/engine/airless, /area/ai_monitored/turret_protected/AIsatextAP) +"fF" = ( +/obj/structure/closet{ + name = "red team closet" + }, +/obj/item/clothing/suit/redtag, +/obj/item/clothing/head/helmet/redtaghelm, +/obj/item/gun/energy/laser/redtag{ + desc = "A laser tag gun modelled after the sidearm of choice for security forces. It fires a harmless beam of energy at the target, and is intended to train new recruits."; + icon = 'nsv13/icons/obj/guns/projectile.dmi'; + icon_state = "secglock"; + item_state = "glock"; + name = "M13 'Intar' training glock" + }, +/obj/machinery/light, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "fG" = ( /obj/machinery/door/poddoor/ship/preopen{ dir = 4; @@ -2035,6 +2206,12 @@ }, /turf/open/floor/durasteel, /area/engine/break_room) +"fS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "fT" = ( /obj/effect/turf_decal/tile/ship/half/green{ dir = 1 @@ -2163,14 +2340,12 @@ /turf/open/floor/engine/airless, /area/space/nearstation) "gi" = ( -/obj/effect/turf_decal/ship/nt_floor_logo{ - icon_state = "2,2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/target_stake, +/obj/item/target/syndicate{ + name = "stupid marine" }, -/turf/open/floor/monotile/dark/airless, -/area/space/nearstation) +/turf/open/floor/engine, +/area/maintenance/nsv/deck1/port) "gk" = ( /turf/closed/wall/r_wall, /area/shuttle/turbolift/secondary) @@ -2242,6 +2417,7 @@ /obj/effect/turf_decal/tile/ship/half/green{ dir = 1 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) "gv" = ( @@ -2287,6 +2463,11 @@ }, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai_upload) +"gz" = ( +/obj/effect/turf_decal/tile/ship/half/neutral, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "gA" = ( /obj/effect/turf_decal/tile/ship/red{ dir = 1 @@ -2418,6 +2599,16 @@ }, /turf/open/floor/engine, /area/construction) +"gR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/effect/spawner/lootdrop/maintenance/three, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "gS" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -2446,13 +2637,24 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/aft) "gW" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/ship/neutral{ dir = 1 }, -/obj/structure/weightmachine/stacklifter, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/monotile/steel, -/area/crew_quarters/dorms) +/obj/effect/turf_decal/tile/ship/neutral, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) +"gX" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "gY" = ( /obj/effect/turf_decal/tile/ship/half/green{ dir = 4 @@ -2498,17 +2700,40 @@ }, /turf/open/floor/monotile/steel, /area/quartermaster/office) +"hd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "he" = ( /obj/structure/table, /obj/item/stack/spacecash/c10, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard/fore) +"hf" = ( +/obj/machinery/computer{ + desc = "A computer which models the IFF console found on all vessels."; + icon_screen = "iff"; + name = "dummy IFF console" + }, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "hh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/monotile/dark, /area/ai_monitored/turret_protected/ai_upload) +"hi" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/space/nearstation) "hj" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, @@ -2582,6 +2807,12 @@ }, /turf/open/floor/monotile/steel, /area/science/robotics) +"hu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "hv" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -2926,6 +3157,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/monotile/dark, /area/engine/break_room) "ik" = ( @@ -3251,12 +3485,24 @@ /turf/open/floor/monotile/dark, /area/crew_quarters/dorms) "jb" = ( -/obj/effect/turf_decal/tile/ship/half/neutral{ - dir = 1 - }, /obj/item/radio/intercom/directional/south, -/turf/open/floor/monotile/steel, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/crew_quarters/dorms) +"jc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ + dir = 1 + }, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "jd" = ( /obj/structure/table, /obj/item/stack/cable_coil/red, @@ -3320,6 +3566,10 @@ }, /turf/open/floor/plating, /area/science/xenobiology) +"jj" = ( +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "jk" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3449,6 +3699,12 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) +"jE" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "jF" = ( /obj/effect/spawner/room/fivexthree, /turf/template_noop, @@ -3515,19 +3771,23 @@ }, /turf/open/floor/plating, /area/construction) -"jQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ +"jP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/door/airlock/ship/external/glass{ - req_one_access_txt = "13" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) +"jQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ - icon_state = "2-5" + icon_state = "1-2" }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) @@ -3653,6 +3913,12 @@ }, /turf/open/floor/durasteel/lino, /area/ai_monitored/turret_protected/AIsatextAP) +"kj" = ( +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "kk" = ( /obj/structure/extinguisher_cabinet/east, /turf/open/floor/monotile/steel, @@ -3913,6 +4179,16 @@ /obj/item/ammo_box/magazine/m45, /turf/open/floor/monotile/steel, /area/ai_monitored/security/armory) +"kQ" = ( +/obj/item/target/syndicate{ + name = "stupid marine" + }, +/obj/structure/target_stake, +/obj/structure/peacekeeper_barricade/metal{ + dir = 1 + }, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "kR" = ( /obj/structure/railing/corner{ dir = 8; @@ -3980,6 +4256,7 @@ /obj/effect/turf_decal/tile/ship/green{ dir = 8 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) "kZ" = ( @@ -4007,6 +4284,12 @@ }, /turf/open/floor/plasteel/airless/solarpanel, /area/ai_monitored/turret_protected/AIsatextAP) +"ld" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/maintenance/nsv/deck1/port) "le" = ( /mob/living/simple_animal/bot/secbot/armsky, /turf/open/floor/monotile/steel, @@ -4143,9 +4426,11 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard/fore) "lw" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/construction) +/obj/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor/engine, +/area/maintenance/nsv/deck1/port) "lx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -4172,6 +4457,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/dark, /area/security/brig) +"lA" = ( +/obj/effect/turf_decal/tile/ship/half/neutral{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "lB" = ( /obj/machinery/power/smes/engineering, /obj/structure/cable, @@ -4232,6 +4523,14 @@ }, /turf/open/floor/monotile/dark, /area/maintenance/nsv/deck1/starboard/aft) +"lK" = ( +/obj/machinery/door/airlock/ship/maintenance{ + name = "Marine Containment Maintenance"; + req_one_access_txt = "12"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "lL" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 @@ -4403,6 +4702,17 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) +"mg" = ( +/obj/machinery/light/small{ + dir = 4; + pixel_y = 10 + }, +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "mh" = ( /turf/open/floor/carpet/red, /area/engine/break_room) @@ -4872,12 +5182,10 @@ /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, /obj/structure/mirror{ pixel_y = -32 }, +/obj/structure/weightmachine/stacklifter, /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) "np" = ( @@ -4953,6 +5261,22 @@ "ny" = ( /turf/open/openspace, /area/quartermaster/storage) +"nz" = ( +/obj/structure/closet{ + name = "blue team closet" + }, +/obj/item/clothing/suit/bluetag, +/obj/item/clothing/head/helmet/bluetaghelm, +/obj/item/gun/energy/laser/bluetag{ + desc = "A laser tag gun modelled after the sidearm of choice for security forces. It fires a harmless beam of energy at the target, and is intended to train new recruits."; + icon = 'nsv13/icons/obj/guns/projectile.dmi'; + icon_state = "commandglock"; + item_state = "glock"; + name = "M13 'Intar' training glock" + }, +/obj/machinery/computer/ship/viewscreen, +/turf/open/floor/circuit, +/area/maintenance/nsv/deck1/port) "nA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -5004,11 +5328,12 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/fore) "nG" = ( -/obj/structure/sign/ship/securearea{ - name = "Firing Range Access" +/obj/effect/turf_decal/tile/ship/neutral, +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 4 }, -/turf/closed/wall/r_wall, -/area/crew_quarters/dorms) +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "nH" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -5078,10 +5403,35 @@ "nT" = ( /turf/template_noop, /area/space/nearstation) +"nV" = ( +/obj/structure/closet{ + name = "red team closet" + }, +/obj/item/clothing/suit/redtag, +/obj/item/clothing/head/helmet/redtaghelm, +/obj/item/gun/energy/laser/redtag{ + desc = "A laser tag gun modelled after the sidearm of choice for security forces. It fires a harmless beam of energy at the target, and is intended to train new recruits."; + icon = 'nsv13/icons/obj/guns/projectile.dmi'; + icon_state = "secglock"; + item_state = "glock"; + name = "M13 'Intar' training glock" + }, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "nW" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/blue, /area/medical/medbay/zone2) +"nX" = ( +/obj/structure/fluff/support_beam{ + color = "#787878" + }, +/obj/effect/turf_decal/loading_area, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "nY" = ( /turf/open/floor/monotile/dark, /area/medical/genetics) @@ -5185,6 +5535,15 @@ /obj/machinery/computer/ship/viewscreen, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) +"oo" = ( +/obj/structure/peacekeeper_barricade/metal/plasteel/deployable{ + anchored = 1; + dir = 4 + }, +/obj/effect/turf_decal/ship/delivery/yellow, +/obj/structure/extinguisher_cabinet/south, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "op" = ( /obj/machinery/vending/cigarette, /turf/open/floor/plating, @@ -5272,6 +5631,14 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/monotile/dark, /area/medical/surgery) +"oD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/ship/half/neutral, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "oE" = ( /obj/machinery/power/rtg, /obj/structure/cable/yellow{ @@ -5283,6 +5650,20 @@ /obj/machinery/light/small, /turf/open/floor/engine/airless, /area/ai_monitored/turret_protected/AIsatextAP) +"oG" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/turf_decal/tile/ship/neutral, +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "oH" = ( /turf/closed/wall/r_wall, /area/hallway/nsv/deck1/frame1/central) @@ -5312,15 +5693,16 @@ "oK" = ( /turf/closed/wall/r_wall, /area/maintenance/nsv/deck1/starboard/aft) +"oL" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "oM" = ( /obj/machinery/door/airlock/ship/maintenance{ req_access_txt = "12" }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) @@ -5448,11 +5830,14 @@ /turf/open/floor/monotile/dark, /area/ai_monitored/security/armory) "pe" = ( -/obj/structure/glowshroom/single, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/obj/effect/turf_decal/tile/ship/half/yellow{ + dir = 1 }, -/area/maintenance/nsv/deck1/starboard) +/obj/structure/sign/ship/pods{ + pixel_y = -28 + }, +/turf/open/floor/monotile/dark, +/area/engine/break_room) "pf" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -5554,10 +5939,9 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck1/central) "pp" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/sign/ship/pods/west{ + pixel_y = 29 }, -/obj/machinery/light/small, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) "pr" = ( @@ -5851,6 +6235,12 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/aft) "qg" = ( @@ -5952,6 +6342,34 @@ }, /turf/open/floor/engine, /area/science/xenobiology) +"qt" = ( +/obj/structure/table/reinforced, +/obj/item/ammo_box/foambox{ + name = "ammo box (5.56 Foam Darts)" + }, +/obj/item/ammo_box/foambox{ + name = "ammo box (5.56 Foam Darts)"; + pixel_y = 8 + }, +/obj/item/ammo_box/magazine/toy/smg, +/obj/item/ammo_box/magazine/toy/smg, +/obj/item/ammo_box/magazine/toy/smg, +/obj/item/ammo_box/magazine/toy/smg, +/obj/item/ammo_box/magazine/toy/smg, +/obj/item/ammo_box/magazine/toy/smg, +/obj/item/ammo_box/magazine/toy/smg, +/obj/item/ammo_box/magazine/toy/smg, +/obj/item/ammo_box/magazine/toy/smg, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/vending/wallmed{ + name = "\improper MarineMed"; + pixel_y = 26; + products = list(/obj/item/storage/crayons=3) + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "qu" = ( /obj/structure/window/reinforced{ dir = 1 @@ -6083,6 +6501,10 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, /area/bridge/cic) +"qM" = ( +/obj/machinery/camera/autoname, +/turf/open/floor/engine, +/area/maintenance/nsv/deck1/port) "qN" = ( /obj/machinery/computer/ship/viewscreen, /turf/open/floor/plating, @@ -6130,6 +6552,10 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/cable{ + icon_state = "2-8"; + tag = "" + }, /turf/open/floor/durasteel, /area/engine/break_room) "qT" = ( @@ -6160,6 +6586,7 @@ /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 4 }, +/obj/machinery/firealarm/directional/west, /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) "qX" = ( @@ -6186,6 +6613,9 @@ "ra" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/aft) "rb" = ( @@ -6252,9 +6682,8 @@ /obj/structure/lattice/catwalk/over/ship, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 4; - freq = 1400; - location = "Engineering Lobby" + location = "Engineering Lobby"; + name = "navigation beacon (Engineering Lobby Delivery)" }, /turf/open/floor/engine, /area/hallway/nsv/deck1/frame1/central) @@ -6315,6 +6744,16 @@ /obj/effect/turf_decal/tile/ship/half/red, /turf/open/floor/monotile/dark, /area/ai_monitored/security/armory) +"rp" = ( +/obj/machinery/computer{ + desc = "A computer used in training strike teams"; + dir = 4; + icon_keyboard = "helm_key"; + icon_screen = "helm"; + name = "dummy helm computer" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "rq" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -6464,6 +6903,11 @@ }, /turf/open/floor/monotile/steel, /area/science/xenobiology) +"rK" = ( +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/openspace, +/area/science/xenobiology) "rL" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/rack, @@ -6616,11 +7060,10 @@ /turf/closed/wall/r_wall, /area/shuttle/turbolift/quaternary) "sj" = ( -/obj/effect/turf_decal/ship/delivery/yellow, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/plating, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/engine, /area/maintenance/nsv/deck1/port) "sk" = ( /obj/structure/rack, @@ -6688,6 +7131,14 @@ /obj/effect/landmark/start/geneticist, /turf/open/floor/monotile/dark, /area/medical/genetics) +"ss" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "st" = ( /obj/machinery/door/airlock/ship/maintenance{ req_access_txt = "12" @@ -6774,8 +7225,8 @@ dir = 8 }, /obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 }, /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) @@ -6804,25 +7255,6 @@ /obj/structure/railing, /turf/open/openspace, /area/quartermaster/storage) -"sJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/lattice/catwalk/over/ship, -/turf/open/floor/monotile/dark, -/area/hallway/nsv/deck1/frame1/central) "sK" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -7064,8 +7496,14 @@ dir = 1 }, /obj/effect/turf_decal/tile/ship/half/green, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) +"tk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/glass/bottle/clownstears, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/starboard/aft) "tl" = ( /obj/machinery/camera{ c_tag = "Xenobiology Lab - Pen #3"; @@ -7114,6 +7552,12 @@ /obj/machinery/telecomms/processor/preset_two, /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) +"tt" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/space/nearstation) "tu" = ( /obj/structure/cable{ icon_state = "1-8" @@ -7208,6 +7652,10 @@ /obj/machinery/light{ dir = 4 }, +/obj/machinery/fax{ + name = "Bridge Fax Machine"; + fax_name = "Bridge" + }, /turf/open/floor/monotile/steel, /area/bridge/cic) "tE" = ( @@ -7719,6 +8167,11 @@ /obj/machinery/power/apc/auto_name/south, /turf/open/floor/monotile/steel, /area/medical/morgue) +"uU" = ( +/obj/effect/turf_decal/tile/ship/half/neutral, +/obj/structure/weightmachine/stacklifter, +/turf/open/floor/monotile/steel, +/area/crew_quarters/dorms) "uV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -7777,9 +8230,10 @@ /turf/open/floor/plating, /area/quartermaster/storage) "ve" = ( -/obj/effect/turf_decal/ship/delivery/yellow, -/obj/machinery/light/small, -/turf/open/floor/plating/airless, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, /area/space/nearstation) "vg" = ( /obj/effect/spawner/structure/window/reinforced, @@ -7821,6 +8275,15 @@ }, /turf/open/openspace/airless, /area/nsv/hanger/notkmcstupidhanger) +"vl" = ( +/obj/effect/turf_decal/tile/ship/half/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "vm" = ( /obj/effect/landmark/event_spawn, /obj/structure/reagent_dispensers/fueltank, @@ -7850,6 +8313,12 @@ }, /turf/closed/wall/r_wall, /area/maintenance/nsv/deck1/port) +"vs" = ( +/obj/effect/turf_decal/tile/ship/half/neutral{ + dir = 8 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "vt" = ( /obj/machinery/camera/autoname{ dir = 4 @@ -7872,6 +8341,10 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/durasteel, /area/maintenance/nsv/deck1/port/aft) +"vw" = ( +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "vx" = ( /obj/structure/table, /turf/open/floor/carpet/red, @@ -7890,6 +8363,13 @@ }, /turf/open/floor/monotile/dark, /area/medical/medbay/zone2) +"vA" = ( +/obj/item/banner, +/obj/structure/peacekeeper_barricade/metal{ + dir = 1 + }, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "vB" = ( /obj/effect/turf_decal/ship/nt_floor_logo{ icon_state = "1,2" @@ -7905,6 +8385,13 @@ /obj/structure/lattice, /turf/open/space/basic, /area/ai_monitored/turret_protected/AIsatextAP) +"vE" = ( +/obj/structure/target_stake, +/obj/item/target/syndicate{ + name = "stupid marine" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "vF" = ( /obj/machinery/telecomms/server/presets/service, /turf/open/floor/circuit/telecomms/mainframe, @@ -8032,6 +8519,15 @@ }, /turf/open/floor/carpet/red, /area/maintenance/nsv/deck1/port/fore) +"wa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "wc" = ( /obj/machinery/camera/autoname, /turf/open/floor/monotile/dark, @@ -8064,8 +8560,7 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/fore) "wh" = ( -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/plating, +/turf/open/floor/circuit/red/anim, /area/maintenance/nsv/deck1/port) "wi" = ( /obj/machinery/light{ @@ -8104,6 +8599,10 @@ /obj/machinery/camera/autoname, /turf/open/floor/monotile/dark, /area/engine/break_room) +"wn" = ( +/obj/structure/extinguisher_cabinet/north, +/turf/open/floor/mineral/plastitanium, +/area/maintenance/nsv/deck1/port) "wo" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 @@ -8124,6 +8623,15 @@ }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck1/frame1/central) +"wr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "ws" = ( /turf/closed/wall/r_wall, /area/medical/genetics) @@ -8318,9 +8826,23 @@ /obj/structure/closet/secure_closet/atc, /turf/open/floor/monotile/dark, /area/nsv/hanger/notkmcstupidhanger) +"wZ" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/turf/open/floor/mineral/plastitanium, +/area/maintenance/nsv/deck1/port) "xa" = ( /turf/open/floor/monotile/dark, /area/ai_monitored/turret_protected/ai_upload) +"xb" = ( +/obj/structure/peacekeeper_barricade/metal{ + dir = 1 + }, +/obj/structure/peacekeeper_barricade/metal{ + dir = 4 + }, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "xd" = ( /obj/structure/hull_plate, /turf/open/floor/engine/airless, @@ -8416,9 +8938,7 @@ /turf/open/floor/plasteel/grid/steel, /area/ai_monitored/security/armory) "xq" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/beakers, -/obj/item/storage/box/syringes, +/obj/machinery/smartfridge/extract/preloaded, /turf/open/floor/carpet/purple, /area/science/xenobiology) "xs" = ( @@ -8570,6 +9090,12 @@ }, /turf/open/floor/carpet/green, /area/ai_monitored/turret_protected/aisat/foyer) +"xK" = ( +/obj/structure/frame/computer{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/maintenance/nsv/deck1/port) "xL" = ( /obj/structure/lattice/catwalk/over/ship, /obj/structure/cable{ @@ -8586,6 +9112,11 @@ }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) +"xN" = ( +/obj/machinery/computer/ship/viewscreen, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "xO" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -8645,6 +9176,10 @@ }, /turf/open/floor/engine/airless, /area/space/nearstation) +"xY" = ( +/obj/effect/turf_decal/tile/ship/half/neutral, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "xZ" = ( /obj/structure/table/glass, /obj/item/toy/sword, @@ -8786,6 +9321,12 @@ }, /turf/open/floor/monotile/steel, /area/medical/morgue) +"yr" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/space/nearstation) "ys" = ( /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 1 @@ -9130,6 +9671,18 @@ /obj/effect/landmark/nuclear_waste_spawner, /turf/open/floor/monotile/steel, /area/medical/virology) +"zk" = ( +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "zl" = ( /obj/structure/railing/corner{ dir = 4 @@ -9163,6 +9716,12 @@ }, /turf/open/floor/plating, /area/mine/laborcamp/security) +"zo" = ( +/obj/machinery/camera/autoname{ + dir = 8 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "zp" = ( /obj/structure/rack, /obj/item/gun/ballistic/automatic/peacekeeper, @@ -9333,6 +9892,14 @@ /obj/item/storage/pill_bottle/dice, /turf/open/floor/wood, /area/space/nearstation) +"zH" = ( +/obj/item/stack/barbed_wire/five, +/obj/effect/turf_decal/ship/delivery/yellow, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "zI" = ( /obj/machinery/advanced_airlock_controller/directional/south, /turf/open/floor/plating, @@ -9660,11 +10227,10 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck1/frame1/central) "Av" = ( -/obj/structure/cable{ - icon_state = "0-2" +/obj/structure/sign/ship/securearea{ + name = "CAUTION: Firing Excercises" }, -/obj/machinery/power/apc/auto_name/east, -/turf/open/floor/plating, +/turf/closed/wall/r_wall, /area/maintenance/nsv/deck1/port) "Ax" = ( /obj/machinery/vending/coffee, @@ -9701,6 +10267,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/carpet/green, /area/maintenance/nsv/deck1/port/aft) +"AD" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "AE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 @@ -9716,6 +10291,16 @@ }, /turf/open/floor/monotile/dark, /area/medical/medbay/zone2) +"AF" = ( +/obj/machinery/light/small, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/starboard) "AG" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -9741,10 +10326,11 @@ /turf/open/floor/monotile/dark, /area/ai_monitored/security/armory) "AL" = ( -/obj/machinery/light/small{ - dir = 1 +/obj/structure/frame/machine/ship_weapon, +/obj/machinery/camera/autoname{ + dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/mineral/plastitanium, /area/maintenance/nsv/deck1/port) "AM" = ( /obj/effect/turf_decal/stripes/line, @@ -9823,6 +10409,13 @@ /obj/item/clothing/head/helmet/ship/squad, /turf/open/floor/monotile/dark, /area/ai_monitored/security/armory) +"AX" = ( +/obj/structure/peacekeeper_barricade/metal{ + dir = 8 + }, +/obj/structure/peacekeeper_barricade/metal, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "AZ" = ( /obj/structure/grille, /turf/open/floor/plating, @@ -10006,6 +10599,16 @@ "Bw" = ( /turf/closed/wall/r_wall, /area/maintenance/nsv/deck1/port/fore) +"Bx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "By" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -10093,12 +10696,10 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) "BJ" = ( -/obj/effect/turf_decal/ship/delivery/yellow, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "BK" = ( /obj/machinery/power/solar, /obj/structure/cable/yellow{ @@ -10188,6 +10789,13 @@ }, /turf/open/floor/monotile/dark, /area/medical/medbay/zone2) +"BX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "BY" = ( /obj/machinery/door/airlock/ship/engineering/glass{ name = "Engineering Projects"; @@ -10276,6 +10884,22 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/red, /area/security/warden) +"Cj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "13" + }, +/obj/structure/cable{ + icon_state = "2-5" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "Ck" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -10394,6 +11018,14 @@ }, /turf/open/floor/monotile/dark, /area/bridge/cic) +"CB" = ( +/obj/structure/table/reinforced, +/obj/item/pen/fountain, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "CC" = ( /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 8 @@ -10556,6 +11188,11 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/construction) +"CY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "CZ" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 8 @@ -10577,6 +11214,22 @@ /obj/machinery/computer/ship/viewscreen, /turf/open/floor/carpet/ship, /area/crew_quarters/heads/hor) +"Db" = ( +/obj/structure/closet{ + name = "red team closet" + }, +/obj/item/clothing/suit/redtag, +/obj/item/clothing/head/helmet/redtaghelm, +/obj/item/gun/energy/laser/redtag{ + desc = "A laser tag gun modelled after the sidearm of choice for security forces. It fires a harmless beam of energy at the target, and is intended to train new recruits."; + icon = 'nsv13/icons/obj/guns/projectile.dmi'; + icon_state = "secglock"; + item_state = "glock"; + name = "M13 'Intar' training glock" + }, +/obj/structure/extinguisher_cabinet/south, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "Dc" = ( /obj/machinery/telecomms/bus/preset_one, /turf/open/floor/circuit/green/telecomms/mainframe, @@ -10670,6 +11323,15 @@ }, /turf/open/floor/monotile/dark, /area/science) +"Ds" = ( +/obj/structure/peacekeeper_barricade/metal{ + dir = 1 + }, +/obj/structure/peacekeeper_barricade/metal{ + dir = 8 + }, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "Dt" = ( /obj/effect/turf_decal/tile/ship/half/red, /obj/machinery/computer/ship/viewscreen, @@ -10740,6 +11402,15 @@ }, /turf/open/floor/engine, /area/science/xenobiology) +"DC" = ( +/obj/machinery/door/airlock/highsecurity/ship{ + name = "dummy IFF vault" + }, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/engine, +/area/maintenance/nsv/deck1/port) "DD" = ( /obj/item/radio/intercom/directional/east, /turf/open/floor/durasteel, @@ -10773,6 +11444,15 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/hangar) +"DI" = ( +/obj/machinery/atmospherics/pipe/multiz/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/multiz/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "DJ" = ( /obj/structure/fluff/paper/stack{ dir = 8 @@ -10862,6 +11542,11 @@ }, /turf/open/floor/engine/airless, /area/ai_monitored/turret_protected/AIsatextAP) +"DT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "DU" = ( /obj/structure/cable{ icon_state = "2-4" @@ -10906,10 +11591,12 @@ /turf/open/floor/monotile/steel, /area/quartermaster/office) "DY" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor/heavy, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/plating, +/obj/structure/peacekeeper_barricade/metal/plasteel/deployable{ + anchored = 1; + dir = 4 + }, +/obj/effect/turf_decal/ship/delivery/yellow, +/turf/open/floor/monotile/dark, /area/maintenance/nsv/deck1/port) "DZ" = ( /turf/closed/wall/steel, @@ -11233,6 +11920,9 @@ /turf/open/floor/plating, /area/mine/laborcamp/security) "EN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plating{ icon_state = "platingdmg1" }, @@ -11275,6 +11965,14 @@ }, /turf/open/floor/engine/airless, /area/maintenance/nsv/deck1/starboard/aft) +"EU" = ( +/obj/machinery/computer/ship/viewscreen, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) +"EV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "EW" = ( /obj/structure/rack, /obj/item/storage/box/teargas, @@ -11319,6 +12017,13 @@ }, /turf/open/floor/monotile/steel, /area/bridge/cic) +"Fd" = ( +/obj/effect/turf_decal/tile/ship/half/neutral{ + dir = 4 + }, +/obj/effect/landmark/latejoin, +/turf/open/floor/monotile/steel, +/area/crew_quarters/dorms) "Fe" = ( /obj/machinery/door/airlock/ship/maintenance{ req_access_txt = "12" @@ -11623,6 +12328,15 @@ /obj/effect/turf_decal/box/corners, /turf/open/floor/monotile/dark, /area/storage/tech) +"FT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "FU" = ( /obj/structure/railing{ dir = 1 @@ -11828,8 +12542,9 @@ color = "#787878"; dir = 1 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 4 }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) @@ -11909,6 +12624,14 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/service) +"GD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/ship/half/neutral, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "GE" = ( /obj/effect/turf_decal/ship/delivery/yellow, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -11961,6 +12684,12 @@ }, /turf/open/floor/carpet/green, /area/maintenance/nsv/deck1/port/aft) +"GJ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "GK" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 4 @@ -11974,14 +12703,15 @@ /turf/open/floor/durasteel, /area/hallway/nsv/deck1/frame1/central) "GL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "0-2" +/obj/machinery/door/airlock/ship/security{ + name = "Marine Assault Course"; + dir = 4 }, -/obj/machinery/power/apc/auto_name/west, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) @@ -12068,9 +12798,6 @@ /turf/open/floor/monotile/dark/airless, /area/space/nearstation) "GY" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/door/airlock/ship/public/glass{ name = "Chimp Storage"; req_one_access_txt = "9" @@ -12119,12 +12846,12 @@ /turf/open/floor/plating, /area/crew_quarters/dorms) "He" = ( +/obj/machinery/power/apc/auto_name/south, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/power/apc/auto_name/south, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "0-4" }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) @@ -12473,6 +13200,16 @@ /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck1/frame1/central) +"HU" = ( +/obj/effect/turf_decal/ship/delivery/yellow, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/starboard) "HV" = ( /obj/machinery/door/airlock/ship/hatch{ name = "Network Administration"; @@ -12838,6 +13575,13 @@ "IQ" = ( /turf/open/floor/engine/airless, /area/maintenance/nsv/hangar) +"IR" = ( +/obj/machinery/advanced_airlock_controller/directional/east, +/obj/structure/cable{ + icon_state = "1-10" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "IS" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ @@ -12891,6 +13635,14 @@ }, /turf/open/floor/monotile/light, /area/medical/virology) +"IZ" = ( +/obj/effect/turf_decal/tile/ship/half/neutral, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/computer/ship/viewscreen, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "Ja" = ( /obj/effect/turf_decal/box/red/corners{ dir = 4 @@ -13166,6 +13918,11 @@ }, /turf/open/floor/plating, /area/construction) +"JG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "JH" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -13198,6 +13955,15 @@ }, /turf/open/floor/plasteel/freezer, /area/medical/virology) +"JM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "JN" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -13212,6 +13978,7 @@ /obj/effect/turf_decal/tile/ship/green{ dir = 1 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) "JP" = ( @@ -13366,13 +14133,10 @@ /turf/open/floor/monotile/steel, /area/medical/virology) "Kg" = ( -/obj/machinery/door/airlock/ship/maintenance{ - req_access_txt = "12" - }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/door/airlock/ship/maintenance{ + req_access_txt = "12" }, /turf/open/floor/plating{ icon_state = "panelscorched" @@ -13441,6 +14205,16 @@ }, /turf/open/floor/monotile/steel, /area/medical/surgery) +"Kr" = ( +/obj/effect/turf_decal/ship/nt_floor_logo{ + icon_state = "1,0" + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "Ks" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/ship/half/red, @@ -13464,6 +14238,22 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/durasteel/lino, /area/maintenance/nsv/deck1/starboard/aft) +"Kv" = ( +/obj/machinery/door/airlock/ship/security{ + name = "Marine Assault Course"; + dir = 4 + }, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "Kw" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 @@ -13628,12 +14418,9 @@ /turf/open/floor/plating, /area/mine/laborcamp/security) "KR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/turf/open/floor/monotile/dark, -/area/crew_quarters/dorms) +/obj/structure/peacekeeper_barricade/metal, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "KS" = ( /obj/structure/lattice, /obj/structure/railing{ @@ -13651,16 +14438,11 @@ /turf/open/floor/monotile/dark, /area/engine/break_room) "KU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ - dir = 1 - }, -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/structure/cable/yellow, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/power/apc/auto_name/west, +/obj/structure/cable{ + icon_state = "0-2" }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) @@ -14036,6 +14818,19 @@ }, /turf/open/floor/monotile/dark, /area/engine/break_room) +"LM" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "13" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "LN" = ( /turf/closed/wall/r_wall, /area/engine/storage_shared) @@ -14177,6 +14972,10 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/durasteel, /area/storage/tech) +"Mi" = ( +/obj/effect/landmark/latejoin, +/turf/open/floor/monotile/steel, +/area/crew_quarters/dorms) "Mj" = ( /obj/effect/turf_decal/tile/ship/yellow{ dir = 4 @@ -14281,6 +15080,9 @@ /obj/structure/bot_elevator, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard/fore) +"Mz" = ( +/turf/closed/wall/steel, +/area/maintenance/nsv/deck1/port) "MA" = ( /obj/structure/fluff/support_beam{ color = "#787878" @@ -14305,6 +15107,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/item/storage/box/syringes, +/obj/item/storage/box/beakers, /turf/open/floor/carpet/purple, /area/science/xenobiology) "MD" = ( @@ -14350,6 +15154,19 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/dark, /area/crew_quarters/dorms) +"ML" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/monotile/dark, +/area/crew_quarters/dorms) +"MM" = ( +/obj/machinery/light/small, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "MN" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/power/port_gen/pacman, @@ -14504,6 +15321,13 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/aft) +"Nl" = ( +/obj/structure/fluff/support_beam{ + color = "#787878" + }, +/obj/effect/turf_decal/ship/delivery/yellow, +/turf/open/floor/mineral/plastitanium, +/area/maintenance/nsv/deck1/port) "Nm" = ( /obj/machinery/telecomms/hub/preset, /turf/open/floor/monotile/dark/airless{ @@ -14560,6 +15384,18 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/ai) +"Nr" = ( +/obj/structure/peacekeeper_barricade/metal{ + dir = 4 + }, +/obj/effect/turf_decal/ship/delivery{ + color = "#8B0000" + }, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "Ns" = ( /obj/structure/cable{ icon_state = "1-2" @@ -14609,6 +15445,15 @@ "Ny" = ( /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard/aft) +"NA" = ( +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "NB" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/item/clothing/suit/radiation, @@ -14629,6 +15474,28 @@ /obj/effect/turf_decal/bot, /turf/open/floor/monotile/dark, /area/ai_monitored/security/armory) +"ND" = ( +/obj/effect/turf_decal/ship/delivery/yellow, +/obj/structure/table/reinforced, +/obj/item/gun/ballistic/automatic/peacekeeper{ + desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; + mag_type = /obj/item/ammo_box/magazine/toy/smg; + name = "'LV624' training pulse rifle" + }, +/obj/item/gun/ballistic/automatic/peacekeeper{ + desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; + mag_type = /obj/item/ammo_box/magazine/toy/smg; + name = "'LV624' training pulse rifle"; + pixel_y = 4 + }, +/obj/item/gun/ballistic/automatic/peacekeeper{ + desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; + mag_type = /obj/item/ammo_box/magazine/toy/smg; + name = "'LV624' training pulse rifle"; + pixel_y = 8 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "NF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -14801,6 +15668,15 @@ }, /turf/open/floor/monotile/dark, /area/science/xenobiology) +"Oe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "Og" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -14836,6 +15712,19 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard/aft) +"Ol" = ( +/obj/effect/turf_decal/ship/nt_floor_logo{ + icon_state = "0,0" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "Om" = ( /turf/open/floor/engine, /area/medical/genetics) @@ -15052,6 +15941,9 @@ /obj/effect/turf_decal/tile/ship/yellow, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/dark, /area/engine/break_room) "OR" = ( @@ -15115,6 +16007,28 @@ /obj/effect/spawner/room/threexthree, /turf/template_noop, /area/maintenance/nsv/hangar) +"OY" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/ship/viewscreen, +/obj/item/gun/ballistic/automatic/peacekeeper{ + desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; + mag_type = /obj/item/ammo_box/magazine/toy/smg; + name = "'LV624' training pulse rifle" + }, +/obj/item/gun/ballistic/automatic/peacekeeper{ + desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; + mag_type = /obj/item/ammo_box/magazine/toy/smg; + name = "'LV624' training pulse rifle"; + pixel_y = 4 + }, +/obj/item/gun/ballistic/automatic/peacekeeper{ + desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; + mag_type = /obj/item/ammo_box/magazine/toy/smg; + name = "'LV624' training pulse rifle"; + pixel_y = 8 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "OZ" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -15204,9 +16118,6 @@ /obj/effect/turf_decal/tile/ship/half/yellow{ dir = 1 }, -/obj/structure/chair{ - dir = 1 - }, /obj/structure/cable{ icon_state = "1-2" }, @@ -15275,12 +16186,17 @@ /turf/open/floor/monotile/dark, /area/ai_monitored/turret_protected/AIsatextAP) "Pp" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/ladder, +/obj/effect/turf_decal/tile/ship/neutral, +/obj/effect/turf_decal/tile/ship/neutral{ dir = 8 }, -/obj/structure/ladder, -/turf/open/floor/monotile/steel, -/area/crew_quarters/dorms) +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "Pq" = ( /obj/structure/ladder, /obj/effect/turf_decal/tile/ship/half/green{ @@ -15382,6 +16298,13 @@ icon_state = "platingdmg2" }, /area/maintenance/nsv/hangar) +"PF" = ( +/obj/structure/frame/machine/ship_weapon, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/maintenance/nsv/deck1/port) "PG" = ( /obj/machinery/door/airlock/ship/hatch{ name = "Intelligence Core Access"; @@ -15416,6 +16339,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) "PM" = ( @@ -15671,10 +16595,7 @@ /turf/open/floor/monotile/steel, /area/medical/virology) "Qu" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, +/turf/open/floor/engine, /area/maintenance/nsv/deck1/port) "Qw" = ( /obj/effect/decal/cleanable/dirt, @@ -15720,6 +16641,21 @@ /obj/structure/grille, /turf/open/floor/plating, /area/security/brig) +"QC" = ( +/obj/structure/closet{ + name = "blue team closet" + }, +/obj/item/clothing/suit/bluetag, +/obj/item/clothing/head/helmet/bluetaghelm, +/obj/item/gun/energy/laser/bluetag{ + desc = "A laser tag gun modelled after the sidearm of choice for security forces. It fires a harmless beam of energy at the target, and is intended to train new recruits."; + icon = 'nsv13/icons/obj/guns/projectile.dmi'; + icon_state = "commandglock"; + item_state = "glock"; + name = "M13 'Intar' training glock" + }, +/turf/open/floor/circuit, +/area/maintenance/nsv/deck1/port) "QD" = ( /obj/structure/table/glass, /obj/item/storage/backpack/duffelbag/med/surgery, @@ -15780,6 +16716,13 @@ /obj/machinery/computer/ship/viewscreen, /turf/open/floor/monotile/dark, /area/ai_monitored/security/armory) +"QM" = ( +/obj/structure/glowshroom/single, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/starboard) "QN" = ( /turf/open/space/basic, /area/space/nearstation) @@ -15826,12 +16769,7 @@ /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) "QT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/plating, +/turf/open/floor/mineral/plastitanium, /area/maintenance/nsv/deck1/port) "QU" = ( /obj/structure/cable/yellow{ @@ -15882,6 +16820,18 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plasteel/tech/grid, /area/shuttle/turbolift/tertiary) +"QZ" = ( +/obj/effect/turf_decal/tile/ship/half/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "Ra" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ @@ -16009,6 +16959,15 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/carpet/ship, /area/quartermaster/qm) +"Rr" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "Rs" = ( /obj/structure/grille, /obj/structure/cable{ @@ -16062,6 +17021,9 @@ /obj/effect/turf_decal/tile/ship/half/blue, /turf/open/floor/monotile/dark, /area/bridge/cic) +"Rz" = ( +/turf/open/floor/monotile/steel, +/area/maintenance/nsv/deck1/port) "RA" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 @@ -16129,10 +17091,6 @@ "RI" = ( /turf/closed/wall/r_wall, /area/crew_quarters/heads/hos) -"RJ" = ( -/obj/machinery/smartfridge/extract/preloaded, -/turf/closed/wall/r_wall, -/area/science/xenobiology) "RK" = ( /obj/structure/cable{ icon_state = "0-8" @@ -16214,7 +17172,12 @@ /turf/open/floor/durasteel/lino, /area/tcommsat/server) "RU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, /turf/open/floor/monotile/dark, /area/crew_quarters/dorms) "RW" = ( @@ -16457,6 +17420,16 @@ }, /turf/open/floor/durasteel/lino, /area/maintenance/nsv/deck1/starboard/aft) +"SC" = ( +/obj/machinery/computer{ + desc = "A computer used in training strike teams"; + dir = 4; + icon_keyboard = "helm_key"; + icon_screen = "tactical"; + name = "dummy helm computer" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "SD" = ( /obj/structure/grille, /turf/open/space/basic, @@ -16494,6 +17467,16 @@ }, /turf/open/floor/carpet/blue, /area/medical/medbay/zone2) +"SK" = ( +/obj/machinery/door/airlock/ship/maintenance{ + name = "Marine Containment Maintenance"; + req_one_access_txt = "12" + }, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "SL" = ( /obj/machinery/telecomms/processor/preset_one, /obj/machinery/camera{ @@ -16619,6 +17602,10 @@ dir = 1 }, /obj/structure/table/reinforced, +/obj/machinery/fax{ + fax_name = "Wardens Office"; + name = "Wardens Office Fax Machine" + }, /turf/open/floor/monotile/dark, /area/security/warden) "Td" = ( @@ -16658,11 +17645,21 @@ /turf/open/floor/monotile/dark, /area/ai_monitored/turret_protected/aisat/foyer) "Th" = ( -/obj/effect/turf_decal/ship/nt_floor_logo{ - icon_state = "2,1" +/obj/structure/chair/office{ + dir = 1 }, -/turf/open/floor/monotile/dark/airless, -/area/space/nearstation) +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "Ti" = ( /obj/structure/lattice/catwalk, /turf/open/floor/plating, @@ -16699,6 +17696,12 @@ /obj/structure/closet/toolcloset, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard/fore) +"Tq" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "Tr" = ( /obj/machinery/door/poddoor/ship/preopen{ dir = 4; @@ -16717,6 +17720,9 @@ "Ts" = ( /turf/open/openspace, /area/hallway/nsv/deck1/frame1/central) +"Tt" = ( +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "Tu" = ( /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) @@ -16787,6 +17793,15 @@ }, /turf/open/floor/plating, /area/mine/laborcamp/security) +"TD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/maintenance/nsv/deck1/port) "TE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -16893,11 +17908,14 @@ /turf/open/floor/monotile/dark, /area/crew_quarters/dorms) "TX" = ( -/obj/effect/turf_decal/tile/ship/half/yellow{ - dir = 1 +/obj/structure/fluff/support_beam{ + color = "#787878" }, -/turf/open/floor/monotile/dark, -/area/engine/break_room) +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/starboard) "TY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -17226,6 +18244,32 @@ "UQ" = ( /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) +"UR" = ( +/obj/machinery/door/airlock/ship/public/glass{ + name = "Assault Course"; + dir = 8 + }, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) +"US" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/porta_turret/lasertag/red, +/turf/open/floor/circuit/red/anim, +/area/maintenance/nsv/deck1/port) "UT" = ( /obj/docking_port/stationary{ dwidth = 4; @@ -17503,6 +18547,12 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/monotile/steel, /area/medical/morgue) +"Vz" = ( +/obj/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/maintenance/nsv/deck1/port) "VA" = ( /obj/effect/turf_decal/tile/ship/half/red{ dir = 1 @@ -17538,17 +18588,8 @@ /turf/open/floor/carpet/green, /area/medical/virology) "VF" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/door/airlock/ship/external/glass{ - req_one_access_txt = "13" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, +/obj/structure/grille, +/turf/open/floor/mineral/plastitanium, /area/maintenance/nsv/deck1/port) "VG" = ( /obj/structure/chair/fancy/sofa/old/corner/concave{ @@ -17557,11 +18598,11 @@ /turf/open/floor/carpet/red, /area/crew_quarters/dorms) "VH" = ( -/obj/machinery/advanced_airlock_controller/directional/east, -/obj/structure/cable{ - icon_state = "1-10" +/obj/item/banner/security/mundane{ + desc = "A dummy banner used for training excercises"; + name = "syndicate flag" }, -/turf/open/floor/plating, +/turf/open/floor/circuit/red/anim, /area/maintenance/nsv/deck1/port) "VI" = ( /obj/machinery/door/airlock/ship/maintenance{ @@ -17594,13 +18635,11 @@ /turf/open/floor/plating, /area/bridge/cic) "VK" = ( -/obj/machinery/light/small{ - dir = 4; - pixel_y = 10 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, -/obj/machinery/power/smes/engineering, -/obj/structure/cable{ - icon_state = "0-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) @@ -17611,9 +18650,12 @@ /turf/open/floor/durasteel, /area/engine/storage_shared) "VM" = ( -/obj/structure/fluff/support_beam{ - color = "#787878"; - dir = 4 +/obj/docking_port/stationary{ + dir = 2; + dwidth = 1; + height = 4; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) @@ -17910,6 +18952,15 @@ }, /turf/open/floor/engine/airless, /area/space/nearstation) +"Ws" = ( +/obj/machinery/power/solar_control{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "Wt" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 8 @@ -18101,9 +19152,9 @@ pixel_y = -8 }, /obj/structure/closet/secure_closet/quartermaster, -/obj/item/cartridge/quartermaster, -/obj/item/cartridge/quartermaster, -/obj/item/cartridge/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster, /obj/structure/disposalpipe/segment, /obj/item/clothing/head/beret/supply, /turf/open/floor/carpet/ship, @@ -18278,6 +19329,13 @@ "Xp" = ( /turf/open/openspace, /area/science/robotics) +"Xq" = ( +/obj/effect/turf_decal/ship/delivery/yellow, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "Xr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -18380,11 +19438,17 @@ /turf/open/openspace, /area/shuttle/turbolift/tertiary) "XD" = ( -/obj/effect/turf_decal/ship/nt_floor_logo{ - icon_state = "2,0" +/obj/machinery/camera/autoname{ + dir = 8 }, -/turf/open/floor/monotile/dark/airless, -/area/space/nearstation) +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "XE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/ship/preopen{ @@ -18413,14 +19477,14 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile, /area/ai_monitored/nuke_storage) +"XG" = ( +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "XH" = ( -/obj/machinery/door/airlock/ship/maintenance{ - req_access_txt = "12" - }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/door/airlock/ship/maintenance{ + req_access_txt = "12" }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) @@ -18593,7 +19657,10 @@ /turf/open/floor/engine, /area/science/xenobiology) "Yi" = ( -/turf/closed/indestructible/cordon, +/obj/effect/decal/remains/human, +/obj/item/clothing/suit/space/hardsuit/clown, +/obj/item/reagent_containers/glass/bottle/clownstears, +/turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard/aft) "Yj" = ( /obj/effect/turf_decal/tile/ship/half/yellow{ @@ -18739,17 +19806,9 @@ /turf/open/floor/plating, /area/space/nearstation) "YG" = ( -/obj/effect/turf_decal/tile/ship/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/ship/green{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel, -/area/hallway/nsv/deck1/frame1/central) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port) "YH" = ( /turf/closed/wall/r_wall, /area/shuttle/turbolift/quaternary) @@ -19015,6 +20074,9 @@ /obj/effect/landmark/zebra_interlock_point, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/aft) "Zp" = ( @@ -19091,6 +20153,12 @@ }, /turf/open/floor/monotile/steel, /area/security/brig) +"ZA" = ( +/obj/effect/turf_decal/tile/ship/half/neutral{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) "ZB" = ( /obj/structure/sign/ship/securearea, /turf/closed/wall/r_wall, @@ -19140,6 +20208,19 @@ }, /turf/open/floor/durasteel/techfloor, /area/ai_monitored/turret_protected/aisat/foyer) +"ZH" = ( +/obj/machinery/door/airlock/ship/public/glass{ + name = "Assault Course"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/maintenance/nsv/deck1/port) "ZI" = ( /turf/open/floor/durasteel/techfloor, /area/tcommsat/server) @@ -19260,6 +20341,16 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/medical/surgery) +"ZZ" = ( +/obj/effect/turf_decal/tile/ship/neutral, +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/ship/neutral{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/deck1/port) (1,1,1) = {" Sw @@ -38620,9 +39711,9 @@ Sw Sw Sw Sw -Sw -Sw -Sw +ho +ho +ho Zg Zg Zg @@ -38876,19 +39967,19 @@ Sw Sw Sw Sw -Sw -Sw -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ho +ho +Rb +HN +xf Zg +Rb +HN +xf Zg +Rb +HN +xf Zg Zg Zg @@ -39133,19 +40224,19 @@ Sw Sw Sw Sw -Sw -Sw -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ho +ho +Rb +GW +xf Zg +Rb +GW +xf Zg +Rb +GW +xf Zg Zg Zg @@ -39391,18 +40482,18 @@ Sw Sw Sw Sw -Sw -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ho +Rb +GW +xf Zg +Rb +GW +xf Zg +Rb +GW +xf Zg Zg Zg @@ -39648,18 +40739,18 @@ Sw Sw Sw Sw -Sw -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ho +Rb +GW +xf Zg +Rb +GW +xf Zg +Rb +GW +xf Zg Zg Zg @@ -39905,18 +40996,18 @@ Sw Sw Sw Sw -Sw -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ho +Rb +GW +xf Zg +Rb +GW +xf Zg +Rb +GW +xf Zg Zg Zg @@ -40162,18 +41253,18 @@ Sw Sw Sw Sw -Sw -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ho +Rb +GW +xf Zg +Rb +GW +xf Zg +Rb +GW +xf Zg Zg Zg @@ -40419,18 +41510,18 @@ Sw Sw Sw Sw -Sw -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ho +Rb +GW +xf Zg +Rb +GW +xf +Cq +Rb +GW +xf Zg Zg Zg @@ -40676,18 +41767,18 @@ Sw Sw Sw Sw -Sw -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ho +Rb +GW +xf Zg +Rb +GW +xf Zg +Rb +GW +xf Zg Zg Zg @@ -40933,18 +42024,18 @@ Sw Sw Sw Sw +xT +Rb +GW +xf Zg +Rb +GW +xf Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +Rb +GW +xf Zg Zg Zg @@ -41190,18 +42281,18 @@ Sw Sw Sw Sw +xT +Rb +GW +xf Zg +Rb +GW +xf Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +Rb +GW +xf Zg Zg Zg @@ -41245,7 +42336,7 @@ Ny Ny MA Ny -Qw +tk Ny HI oK @@ -41447,18 +42538,18 @@ Sw Sw Sw Sw +xT +Rb +GW +xf Zg +Rb +GW +xf Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +Rb +GW +xf Zg Zg Zg @@ -41704,18 +42795,18 @@ Sw Sw Sw Sw +xT +Rb +GW +xf Zg +Rb +GW +xf Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +Rb +GW +xf Zg Zg Zg @@ -41732,7 +42823,7 @@ Zg Zg Co FG -FG +DI LN OZ ik @@ -41961,20 +43052,18 @@ Sw Sw Sw Sw -Zg -Zg -Zg -Zg -Zg -Zg xT -xT -Zg -Zg -Zg -Zg +Rb +GW +xf Zg +Rb +GW +xf Zg +Rb +GW +xf Zg Zg Zg @@ -41984,12 +43073,14 @@ Zg Zg Zg Zg -xT Zg Zg Co +Co +Co +Co FG -FG +FT LN sW lP @@ -42218,16 +43309,18 @@ Sw Sw Sw Sw -Zg -Zg -Zg -Zg -Zg -Zg -xT xT +Rb +GW +xf Zg +Rb +GW +xf Zg +Rb +GW +xf Zg Zg Zg @@ -42239,11 +43332,9 @@ Zg Zg Zg Zg -Zg -Zg -xT -Zg -Zg +Co +jj +Ws Co Co qf @@ -42475,34 +43566,34 @@ Sw Sw Sw Sw -Zg -Zg -Zg -Zg -Zg -Zg xT +Rb +GW +xf Zg +Rb +GW +xf Zg +Rb +GW +xf Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -xT -Zg -Zg -Co -FG +hi +ve +ve +ve +ve +ve +ve +ve +LM +jc +ss +Cj +Tq aj ra ra @@ -42521,7 +43612,7 @@ sf xQ xQ xQ -TX +YV ca ox sZ @@ -42731,33 +43822,33 @@ Sw Sw Sw Sw -Sw -Zg -Zg -Zg -Zg -Zg -xT +ho xT -Zg -Zg Rb -HN +GW xf Zg Rb -HN +GW xf Zg Rb -HN +GW xf Zg +Zg +Zg +tt +Zg +Zg +Zg +Zg +Zg rF rF -rF -rF -rF +Co +mg +IR Co FG FG @@ -42783,10 +43874,10 @@ Po ki tx VZ +lV gU gU gU -lV gU gU gU @@ -42988,16 +44079,8 @@ Sw Sw Sw Sw -Sw -Zg -Zg -Zg -Zg -Zg -xT +ho xT -Zg -Zg Rb GW xf @@ -43010,11 +44093,19 @@ Rb GW xf Zg +Zg +Zg +tt +Zg +Zg +Zg +Zg +Zg rF oP -oP -oP -oP +Co +Co +Co Co Co gZ @@ -43040,10 +44131,10 @@ ca Ms Bk GM +PT kx kx kx -PT kx kx kx @@ -43246,15 +44337,7 @@ Sw Sw Sw Sw -Zg -Zg -Zg -Zg -Cq -Zg xT -Zg -Zg Rb GW xf @@ -43267,6 +44350,14 @@ Rb GW xf Zg +Zg +Zg +tt +Zg +Zg +Zg +Zg +Zg rF jN jN @@ -43292,7 +44383,7 @@ YB xQ xQ zO -YV +pe ca ca ca @@ -43302,7 +44393,7 @@ TV mI mI mI -TV +mI kx Zg Zg @@ -43503,15 +44594,7 @@ Sw Sw Sw Zg -Zg -Zg -Zg -Zg -Zg -Zg xT -Zg -Zg Rb GW xf @@ -43524,6 +44607,14 @@ Rb GW xf Zg +Zg +Zg +tt +Zg +Zg +Zg +Zg +Zg rF jN jN @@ -43554,11 +44645,11 @@ Ba es es es -es -Gr -es -es cN +Gr +VM +mI +mI mI kx Zg @@ -43760,26 +44851,26 @@ Sw Sw Sw Zg +xT +xT +rh +tX +tX +tX +lQ +tX +tX +tX +CM Zg Zg Zg Zg +tt Zg Zg -xT -Zg -Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf Zg rF jN @@ -43811,11 +44902,11 @@ tZ TV TV mI -mI -VM -UA -pe Wm +TV +mI +mI +mI mI kx Zg @@ -44023,20 +45114,20 @@ Zg Zg Zg Zg -xT +mS +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +tt Zg Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf Zg rF jN @@ -44066,13 +45157,13 @@ tg bW MO MO -Tw -mI -oy TV -mI -UA -Wm +PT +HU +TV +TV +TV +TV TV kx Zg @@ -44280,20 +45371,20 @@ Zg Zg Zg Zg -xT +XA +ve +ve +ve +ve +ve +ve +ve +ve +yr +Zg Zg Zg -Rb -GW -xf Zg -Rb -GW -xf -Cq -Rb -GW -xf Zg rF jN @@ -44323,13 +45414,13 @@ ni Sg zz MO -TV -PT -PT -TV -TV +Tw mI -pp +Wm +mI +mI +mI +oy TV kx Zg @@ -44537,20 +45628,20 @@ Zg Zg Zg Zg -xT +mS +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg Zg Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf Zg rF qN @@ -44582,8 +45673,8 @@ NB MO tr mI -mI -AZ +Wm +oy TV TV XH @@ -44794,20 +45885,20 @@ Zg Zg Zg Zg -xT -Zg +Hs Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf +ql +ql +ql +ql +ql +ql +ql +ql +ql +ql Zg rF jN @@ -44839,11 +45930,11 @@ NB MO tr mI -mI +Wm jm TV Mr -dW +Mr bw kx Zg @@ -45051,20 +46142,20 @@ Zg Zg Zg Zg -xT Zg Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf +ql +wh +wh +jE +wh +Nl +Vz +Tt +QT +ql Zg rF jN @@ -45096,11 +46187,11 @@ rU MO kV mI -mI +Wm Ld TV Mr -dW +Mr Mr kx Zg @@ -45308,20 +46399,20 @@ Zg Zg Zg Zg -xT Zg Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf +ql +EU +ql +US +ql +ql +Tt +Tt +MM +ql Zg rF jN @@ -45357,7 +46448,7 @@ EN cJ TV Mr -dW +Mr Mr kx Zg @@ -45565,20 +46656,20 @@ Zg Zg Zg Zg -xT Zg Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf +ql +wh +wh +wh +wh +ql +cj +vE +QT +ql Zg rF jN @@ -45610,7 +46701,7 @@ HA MO OJ mI -mI +Wm AZ TV TV @@ -45822,20 +46913,20 @@ Zg Zg Zg Zg -xT Zg Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf +ql +VF +VF +Xq +Xq +ql +wZ +QT +QT +ql Zg rF jN @@ -45867,7 +46958,7 @@ Ac MO TV mI -mI +Wm TV TV mI @@ -46079,25 +47170,25 @@ Zg Zg Zg Zg -xT -Zg Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -rF -jN -jN -jN +ql +XG +zo +XG +XG +ql +CB +eZ +Nr +ql +ql +ql +ql +ql +ql jN jN jO @@ -46124,7 +47215,7 @@ Xd MO TV mI -mI +QM TV AZ UA @@ -46336,25 +47427,25 @@ Zg Zg Zg Zg -xT -Zg Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -rF +ql +ld +ql +zH +ql +ql +wn +QT +QT +bR +ql +hf lw -jN -jN +ql +ql jN JF zs @@ -46381,7 +47472,7 @@ MO MO TV mI -mI +Wm TV pI mI @@ -46593,25 +47684,25 @@ Zg Zg Zg Zg -xT Zg Zg -Rb -GW -xf Zg -Rb -GW -xf -Zg -Rb -GW -xf Zg -rF -jN -jN -jN +ql +aw +ql +ZA +ZA +YG +QT +QT +QT +kQ +ql +ql +DC +ql +ql jN jN jO @@ -46638,7 +47729,7 @@ MO TV JI mI -oy +Oo TV hj UA @@ -46850,25 +47941,25 @@ Zg Zg Zg Zg -xT Zg Zg -Rb -GW -xf -Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -rF -jN -jN -jN +ql +xY +ap +CY +CY +fr +JG +TD +QT +xb +YG +SC +xv +rp +ql jN jN jO @@ -46895,7 +47986,7 @@ MO TV Gk mI -mI +Wm TV jC UA @@ -47106,26 +48197,26 @@ Zg Zg Zg Zg -xT -xT Zg Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -rF -jN -jN -jN +ql +gz +AD +QZ +vs +xv +QT +hu +QT +QT +YG +cE +xv +cE +ql jN jN Eb @@ -47151,8 +48242,8 @@ Ya MO TV TV -mI -mI +pp +Wm TV AZ mI @@ -47363,26 +48454,26 @@ Zg Zg Zg Zg -xT -xT Zg Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -Rb -GW -xf Zg -rF -rF -rF -rF +ql +IZ +wa +lA +XG +ql +QT +hu +QT +QT +YG +xv +wh +kj +ql rF rF rF @@ -47409,7 +48500,7 @@ MO TV TV PT -PT +HU TV TV mI @@ -47621,25 +48712,25 @@ Zg Zg Zg Zg -xT -Zg Zg Zg -rh -tX -tX -tX -lQ -tX -tX -tX -CM Zg Zg -ql -xv -xv -xv +Av +xY +gX +vl +Ds +Av +QT +fS +Tt +Tt +nX +wh +VH +wh +SK xF xv un @@ -47666,7 +48757,7 @@ eQ AZ TV mI -mI +Wm TV mI mI @@ -47878,25 +48969,25 @@ Zg Zg Zg Zg -xT -xT -Zg -Zg -Zg -Zg -Cq -Zg -mS Zg Zg Zg Zg ql +xY +wa +lA +vA ql -ql -ql +xK +PF AL +cj +ql +xN +GJ xv +ql xF xv un @@ -47923,11 +49014,11 @@ mI mI HS mI -mI -HS -mI -mI -Oo +dW +TX +es +es +AF TV kx Zg @@ -48135,25 +49226,25 @@ Zg Zg Zg Zg -xT -xT -Zg -Zg -Zg Zg Zg Zg -mS -Zg Zg -Zg -ve ql -wh -cE +xY +wa +lA +bR +ql +ql +ql +ql +ql +ql +ql +lK +ql ql -sj -DY ql ql ql @@ -48396,23 +49487,23 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -dS -tX -tX -tX +ql +YG +Kv +YG +ql +ql +gR +bl +BJ BJ -VF KU -QT +jQ jQ CD CD CD -GL +CD CD Hd uh @@ -48653,19 +49744,19 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Hs -Zg -Zg -Zg -ve ql -VK -VH +QC +aE +dy +nV ql +Bx +XB +xv +xv +xv +xv +xv xv jL xv @@ -48910,19 +50001,19 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -ql ql +QC +bJ +oD +fF ql +VK +xv +xv +xF +oL ql +Mz dx dx dx @@ -49167,17 +50258,17 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -xT -Zg +ql +nz +cC +GD +Db +ql +VK +xv +xF +xF +XB dB dx DV @@ -49188,8 +50279,8 @@ Uu QS dx YI -Tu -Tu +Mi +Mi IW dx Mu @@ -49211,7 +50302,7 @@ Mr Mr Mr TV -mI +pp Wm lE kx @@ -49424,17 +50515,17 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -xT -Zg +ql +QC +aE +dy +nV +ql +VK +xv +vw +xF +XB dB dx lG @@ -49445,8 +50536,8 @@ Tu tV dx gu -Tu -Tu +Mi +Mi tj dx MD @@ -49681,14 +50772,14 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ql +YG +UR +YG +ql +ql +ZH +ql dB dB dB @@ -49702,8 +50793,8 @@ Tu BC dx xB -Tu -Tu +Mi +Mi zP kc MD @@ -49938,15 +51029,15 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -jp +ql +qt +jP +hd +Rr +ci +aN jp +Tu nR NM qW @@ -49960,7 +51051,7 @@ Tf dx JO PK -aZ +Fd kY jp MD @@ -50195,18 +51286,18 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ql +OY +wr +bu +BX +DT +JM jp yR gF RU -KR +la EC la la @@ -50452,18 +51543,18 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +Av +ND +DY +DY +DY +oo +Ol jp yR eK +dI KH -bl TW KH KH @@ -50709,17 +51800,17 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ql +qM +Qu +Qu +Qu +Qu +Kr jp yR eK -KH +ML sE jp Wa @@ -50966,17 +52057,17 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg +ql +Qu +Qu +Qu +Qu +Qu +fw jp tK -eK -KH +uU +dI no dx DV @@ -51128,288 +52219,31 @@ Sw Sw Sw Sw -"} -(125,1,1) = {" -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -jp -jp -eK -KH -jb -dx -bG -Tu -Tu -eK -Tu -nh -dx -dx -hN -dx -FX -dx -nc -Hp -Su -Pk -TV -TV -IA -Ti -dL -tv -tv -kx -kx -Hz -Hz -YX -Hz -Hz -jn -jn -gf -jn -jn -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Zg -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -"} -(126,1,1) = {" -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw +"} +(125,1,1) = {" +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw Sw Sw Sw @@ -51480,52 +52314,52 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -FD -XZ -CI -nG -Pp -aT -gW +ql +sj +Qu +Qu +gi +dS +bS +dB +dB +jp +GL +jb dx -DV -DV -DV -Qz -Uu -GA +bG +Tu +Tu +eK +Tu +nh dx -NV -gG dx -BN +hN dx -dN +FX +dx +nc Hp Su Pk -rc -Pk -Pk -KB -Pk -YH -YH -YH -YH +TV +TV +IA +Ti +dL +tv +tv +kx +kx Hz -pH -cH -fe Hz -yh -ex -qb +YX +Hz +Hz +jn +jn +gf jn jn Zg @@ -51643,7 +52477,7 @@ Sw Sw Sw "} -(127,1,1) = {" +(126,1,1) = {" Sw Sw Sw @@ -51737,52 +52571,52 @@ Zg Zg Zg Zg -Zg -Zg -Zg -Zg -Zg -GX -IO -eY -dB -dB -dB -dB -dx -dx -dx -dx -dx -FF -dx -dx -dx +ql +gi +Qu +Qu +Qu +Qu +oG +nG +nG +Pp +aT +gW dx +DV +DV +DV +Qz +Uu +GA dx +NV +gG dx +BN dx -Mu +dN Hp -DE -VD -ZC -Ix -yS -qF -DE -si -Hu -Hu +Su +Pk +rc +Pk +Pk +KB +Pk +YH +YH +YH YH Hz -Nw -jW -Xe +pH +cH +fe Hz -ZD -Qj -QP +yh +ex +qb jn jn Zg @@ -51810,7 +52644,7 @@ Zg Zg Zg Zg -Cq +Zg Zg Zg Zg @@ -51900,15 +52734,7 @@ Sw Sw Sw "} -(128,1,1) = {" -Sw -Sw -Sw -Sw -Sw -Sw -Sw -Sw +(127,1,1) = {" Sw Sw Sw @@ -51999,47 +52825,55 @@ Zg Zg Zg Zg -gi -Th -XD -iB -iB -iB -iB +Zg +Zg +Zg ql -pi -BI -XB -xv -xv -xv -Gh -Av +AX Qu Qu Qu -oM -YG -sJ -Su -JB +Qu +bS +fb +EV +EV +Oe +Rz +dx +dx +dx +dx +dx +FF +dx +dx +dx +dx +dx +dx +dx +Mu +Hp +DE +VD ZC -tN -MD -ip -Su -vN +Ix +yS +qF +DE +si Hu Hu YH -XW -XW -qg -XW Hz -hR -AO -LX +Nw +jW +Xe +Hz +ZD +Qj +QP jn jn Zg @@ -52067,6 +52901,15 @@ Zg Zg Zg Zg +Cq +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg Zg Zg Sw @@ -52147,6 +52990,8 @@ Sw Sw Sw Sw +"} +(128,1,1) = {" Sw Sw Sw @@ -52156,9 +53001,6 @@ Sw Sw Sw Sw -"} -(129,1,1) = {" -Sw Sw Sw Sw @@ -52243,18 +53085,267 @@ Zg Zg Zg Zg +ql +KR +Qu +gi +Qu +gi +Th +XD +NA +ZZ +Rz +zk +ql +pi +BI +XB +xv +xv +xv +Gh +xv +xv +xv +xv +oM +MD +Hp +Su +JB +ZC +tN +MD +ip +Su +vN +Hu +Hu +YH +XW +XW +qg +XW +Hz +hR +AO +LX +jn +jn +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Zg +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +"} +(129,1,1) = {" +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Sw +Zg +Zg +Zg +Zg +Zg +Zg +Zg Zg -Cq Zg Zg Zg Zg +Cq Zg Zg Zg Zg Zg Zg +ql +ql +ql +ql nv nv nv @@ -52262,7 +53353,7 @@ nv nv nv nv -iB +ql ql ql ql @@ -52519,7 +53610,7 @@ nv kK nO nv -iB +ql oH Pq Pq @@ -52776,7 +53867,7 @@ nv JL bQ nv -iB +ql oH xW QW @@ -53033,7 +54124,7 @@ nv Go hT nv -iB +ql PB pt pt @@ -59987,7 +61078,7 @@ UB Oc kt Cl -RJ +AI AI AI AI @@ -61275,7 +62366,7 @@ mW dJ sa vQ -bA +rK AI Dz Oy @@ -61532,7 +62623,7 @@ Oc qX XU RM -RM +rK Jz GK Hp diff --git a/_maps/map_files/Galactica/Galactica2.dmm b/_maps/map_files/Galactica/Galactica2.dmm index baa625599b4..8233820604d 100644 --- a/_maps/map_files/Galactica/Galactica2.dmm +++ b/_maps/map_files/Galactica/Galactica2.dmm @@ -12,14 +12,11 @@ /turf/open/floor/engine, /area/engine/engineering/ftl_room) "aao" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/camera/autoname, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "aaM" = ( @@ -31,6 +28,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plating, /area/security/detectives_office) "aaQ" = ( @@ -45,7 +45,6 @@ name = "Night Club" }) "aaX" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/light{ dir = 8 }, @@ -55,6 +54,7 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 5 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "abe" = ( @@ -97,6 +97,13 @@ }, /turf/open/floor/monotile/steel, /area/security/prison) +"abI" = ( +/obj/effect/turf_decal/tile/ship/half/red, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/steel, +/area/security/prison) "abK" = ( /obj/structure/table, /obj/item/toy/cards/deck, @@ -200,11 +207,6 @@ }) "afy" = ( /obj/effect/turf_decal/ship/techfloor, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1; - filter_types = list("nucleium"); - name = "Nucleium Scrubber" - }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "afP" = ( @@ -235,6 +237,15 @@ }, /turf/open/floor/plating, /area/mine/laborcamp) +"afR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/ship/pods{ + pixel_y = -28 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) "afV" = ( /obj/effect/turf_decal/ship/techfloor/grid{ dir = 8 @@ -242,9 +253,6 @@ /obj/effect/turf_decal/ship/techfloor/corner{ dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "agk" = ( @@ -369,15 +377,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, /obj/structure/cable{ icon_state = "2-8"; tag = "" }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "ajK" = ( /obj/machinery/light/runway, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ @@ -393,7 +401,7 @@ input_tag = "extra_2_input"; name = "Custom Tank 2 Control"; output_tag = "extra_2_output"; - sensors = list("extra_2_sensor"="Custom Tank 2") + sensors = list("extra_2_sensor"="Custom Tank 2") }, /turf/open/floor/engine, /area/engine/atmos) @@ -434,19 +442,17 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/door/airlock/ship/maintenance{ - name = "Atmospherics maintenance"; - req_one_access_txt = "24" - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer4, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/effect/landmark/zebra_interlock_point, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "anC" = ( /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 8 @@ -471,7 +477,8 @@ /obj/machinery/atmospherics/pipe/layer_manifold/visible{ dir = 4 }, -/turf/closed/wall/r_wall, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/engineering/reactor_core) "aog" = ( /obj/effect/turf_decal/tile/ship/half/red, @@ -479,7 +486,6 @@ /turf/open/floor/monotile/steel, /area/security/brig) "aoj" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -492,9 +498,6 @@ /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /obj/effect/landmark/zebra_interlock_point, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "aom" = ( @@ -508,15 +511,9 @@ /area/security/detectives_office) "aoo" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 9 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "aoQ" = ( @@ -536,9 +533,9 @@ /turf/open/floor/plasteel/techmaint, /area/quartermaster/warehouse) "aoR" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "apj" = ( @@ -547,6 +544,9 @@ name = "detective's office shutters" }, /obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, /turf/open/floor/plating, /area/security/detectives_office) "apo" = ( @@ -572,27 +572,6 @@ }, /turf/open/floor/monotile/dark, /area/nsv/weapons) -"apR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - filter_types = list("nucleium"); - name = "Nucleium Scrubber" - }, -/turf/open/floor/durasteel/techfloor_grid, -/area/engine/engineering/reactor_core) -"apW" = ( -/turf/open/floor/engine/airless, -/area/engine/atmospherics_engine) -"aqf" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/engine/atmos) "aqu" = ( /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 1 @@ -673,11 +652,10 @@ name = "APNP Maintenance"; req_one_access_txt = "10" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "asM" = ( @@ -784,8 +762,11 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "avD" = ( +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /obj/structure/lattice/catwalk/over/ship, -/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "awh" = ( @@ -992,6 +973,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/monotile/dark, /area/security/brig) "aCa" = ( @@ -1258,8 +1242,14 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame5/port) +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 5 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "aII" = ( /obj/effect/turf_decal/ship/techfloor{ dir = 9 @@ -1294,15 +1284,10 @@ /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) "aJz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - filter_types = list("nucleium"); - name = "Nucleium Scrubber" - }, -/turf/open/floor/durasteel/techfloor_grid, -/area/engine/engineering/reactor_core) +/obj/machinery/door/airlock/ship/maintenance/defaultaccess, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame5/port) "aJP" = ( /obj/structure/table, /obj/item/paicard, @@ -1353,11 +1338,16 @@ /turf/open/floor/monotile/dark, /area/nsv/briefingroom) "aKp" = ( -/obj/effect/turf_decal/ship/techfloor{ - dir = 8 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/techmaint, -/area/engine/armour_pump) +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/engineering/reactor_core) "aKt" = ( /obj/effect/turf_decal/ship/techfloor{ dir = 5 @@ -1368,6 +1358,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/monotile/dark, /area/security/prison) "aKI" = ( @@ -1443,7 +1436,6 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 5 }, -/obj/machinery/atmospherics/pipe/manifold4w/green/visible, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "aNT" = ( @@ -1468,11 +1460,12 @@ /turf/open/floor/durasteel/lino, /area/chapel/main) "aOA" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2{ - dir = 1 - }, /obj/effect/turf_decal/stripes/line, /obj/item/radio/intercom/directional/north, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "aOB" = ( @@ -1566,12 +1559,11 @@ /turf/open/floor/monotile/light, /area/security/prison) "aRs" = ( -/obj/structure/fluff/support_beam{ - color = "#787878" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, -/obj/effect/turf_decal/ship/delivery/yellow, -/turf/open/floor/mineral/plastitanium, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "aRx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -1607,6 +1599,9 @@ pixel_y = 32 }, /obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/monotile/dark, /area/maintenance/nsv/bunker) "aRG" = ( @@ -1619,10 +1614,11 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, +/obj/machinery/firealarm/directional/north, /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ dir = 4 }, -/obj/machinery/firealarm/directional/north, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "aSg" = ( @@ -1767,13 +1763,16 @@ /turf/open/floor/engine, /area/medical/medbay) "aUI" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "aUP" = ( @@ -1809,11 +1808,7 @@ /obj/structure/cable/cyan{ icon_state = "4-8" }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/plasteel/ridged/steel, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/engine_smes) "aWh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, @@ -1858,6 +1853,9 @@ id = "arrivals"; next_id = "janitor" }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "aWR" = ( @@ -1892,9 +1890,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 10 - }, /turf/open/floor/plating, /area/engine/atmos) "aXv" = ( @@ -1913,7 +1908,6 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "aYb" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/violet/visible/layer4{ dir = 4 }, @@ -1925,6 +1919,10 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "aYi" = ( @@ -2005,15 +2003,21 @@ name = "Night Club" }) "aYZ" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plasteel/freezer, /area/security/prison) "aZf" = ( -/obj/machinery/power/apc/auto_name/west, -/obj/structure/cable{ - icon_state = "0-4" +/obj/machinery/door/airlock/ship/maintenance{ + name = "Engineering maintenance"; + req_access_txt = "10; 24" }, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/area/engine/atmos) "aZq" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -2139,13 +2143,27 @@ name = "Night Club" }) "bcm" = ( -/obj/structure/peacekeeper_barricade/metal/plasteel/deployable{ - anchored = 1; - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/effect/turf_decal/ship/delivery/yellow, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/door/airlock/ship/maintenance{ + name = "Atmospherics maintenance"; + req_one_access_txt = "24" + }, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/atmos) "bcP" = ( /turf/closed/wall/r_wall, /area/nsv/weapons/gauss/battery) @@ -2163,9 +2181,11 @@ /turf/open/floor/monotile/dark, /area/nsv/briefingroom) "bdb" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/crew_quarters/heads/chief) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engine_smes) "bde" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -2188,6 +2208,7 @@ /obj/structure/window/plasma/reinforced/spawner/north, /obj/machinery/power/smes, /obj/machinery/door/firedoor/border_only/directional/north, +/obj/structure/cable, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore{ name = "Artillery Bay" @@ -2209,7 +2230,7 @@ /obj/machinery/armour_plating_nanorepair_pump/forward_port{ apnw_id = "pegasusmain" }, -/turf/open/floor/plasteel/techmaint, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "beV" = ( /obj/structure/cable{ @@ -2221,38 +2242,18 @@ /turf/open/floor/monotile/dark, /area/mine/laborcamp) "beZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "bfu" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) -"bfA" = ( -/obj/structure/table/reinforced, -/obj/machinery/computer/ship/viewscreen, -/obj/item/gun/ballistic/automatic/peacekeeper{ - desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; - mag_type = /obj/item/ammo_box/magazine/toy/smg; - name = "'LV624' training pulse rifle" - }, -/obj/item/gun/ballistic/automatic/peacekeeper{ - desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; - mag_type = /obj/item/ammo_box/magazine/toy/smg; - name = "'LV624' training pulse rifle"; - pixel_y = 4 - }, -/obj/item/gun/ballistic/automatic/peacekeeper{ - desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; - mag_type = /obj/item/ammo_box/magazine/toy/smg; - name = "'LV624' training pulse rifle"; - pixel_y = 8 +/obj/structure/cable/cyan{ + icon_state = "2-4" }, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/lino, +/area/engine/engineering/reactor_control) "bfE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/highsecurity/ship{ @@ -2270,12 +2271,13 @@ /turf/open/floor/monotile/steel, /area/nsv/magazine/port) "bfQ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/turf/open/floor/durasteel, -/area/maintenance/nsv/deck2/frame5/port) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "bgg" = ( /obj/machinery/computer/ship/munitions_computer/west{ dir = 4 @@ -2283,17 +2285,11 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons) "bgo" = ( -/obj/effect/turf_decal/loading_area, -/obj/structure/fluff/support_beam{ - color = "#787878" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/effect/landmark/nuclear_waste_spawner, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/components/unary/portables_connector/layer2, +/obj/item/wrench, +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "bgp" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/ship/delivery/yellow, @@ -2318,19 +2314,19 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/structure/cable/orange{ - icon_state = "0-4" - }, /obj/effect/landmark/zebra_interlock_point, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame3/central) "bgU" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, -/turf/open/floor/plasteel/techmaint, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "bhs" = ( /obj/machinery/computer/console_placholder/end{ @@ -2361,7 +2357,11 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "bhQ" = ( -/turf/open/floor/mineral/plastitanium, +/obj/machinery/light/small{ + dir = 8; + pixel_y = 10 + }, +/turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "bhV" = ( /obj/structure/cable/cyan{ @@ -2388,16 +2388,12 @@ /turf/open/floor/monotile/steel, /area/quartermaster/lobby) "big" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 8 }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "bii" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -2406,6 +2402,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/dark, /area/security/brig) "bil" = ( @@ -2417,12 +2416,8 @@ /turf/open/indestructible/sound/pool/spentfuel/wall, /area/engine/engineering/reactor_core) "bio" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/firealarm/directional/west, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/starboard) "biq" = ( @@ -2464,7 +2459,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /turf/open/floor/durasteel/techfloor_grid, @@ -2531,6 +2526,10 @@ dir = 9 }, /obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "2-8"; + tag = "" + }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "bjV" = ( @@ -2540,31 +2539,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/machinery/power/apc/auto_name/north, /obj/structure/cable{ icon_state = "0-4" }, -/obj/structure/cable{ - icon_state = "2-4" - }, /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/port) -"bke" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/closet/secure_closet/atmospherics, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/atmos) "bkl" = ( /obj/machinery/lazylift/master/advanced, /turf/open/floor/carpet/ship/blue, @@ -2582,6 +2562,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/hidden/layer2{ dir = 4 }, +/obj/item/stack/cable_coil/random, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering) "blK" = ( @@ -2685,14 +2666,13 @@ /turf/open/floor/plating, /area/engine/atmos) "bnI" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/item/stack/sheet/iron/fifty, /obj/item/stack/sheet/iron/fifty, /obj/structure/table, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "bnO" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/item/grenade/chem_grenade/smart_metal_foam{ pixel_x = 3; pixel_y = 3 @@ -2704,6 +2684,7 @@ /obj/item/grenade/chem_grenade/smart_metal_foam, /obj/item/grenade/chem_grenade/smart_metal_foam, /obj/structure/table, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "boP" = ( @@ -2720,10 +2701,6 @@ /area/crew_quarters/bar{ name = "Night Club" }) -"bpl" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible, -/turf/closed/wall/r_wall, -/area/engine/atmos) "bpK" = ( /obj/structure/table/wood, /obj/effect/spawner/lootdrop/maintenance, @@ -2751,17 +2728,17 @@ /turf/open/floor/plating, /area/engine/atmos) "brf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, /obj/structure/cable/cyan{ icon_state = "1-4" }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable/cyan{ + icon_state = "1-2" }, -/obj/structure/extinguisher_cabinet/south, -/turf/open/floor/plasteel/ridged/steel, +/obj/effect/turf_decal/ship/techfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/engine_smes) "brj" = ( /obj/structure/girder/reinforced, @@ -2820,22 +2797,14 @@ /area/maintenance/nsv/deck2/frame3/central) "bun" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer4, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "buC" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 4 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "buX" = ( @@ -2903,26 +2872,23 @@ /turf/open/floor/monotile/dark, /area/maintenance/nsv/bunker) "bxY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/cyan{ icon_state = "4-8" }, -/obj/structure/cable/yellow{ - icon_state = "2-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "byk" = ( /obj/effect/turf_decal/stripes/end{ dir = 8 }, -/obj/structure/cable/orange{ +/obj/structure/cable/yellow{ icon_state = "4-8" }, /turf/open/floor/durasteel/techfloor, @@ -2945,15 +2911,15 @@ pixel_y = 28; req_access_txt = "2" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/advanced_airlock_controller/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/monotile/dark, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "byR" = ( /obj/effect/turf_decal/tile/ship/half/orange{ dir = 1 @@ -3051,16 +3017,16 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/dark, /area/medical/medbay) -"bBf" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, -/obj/machinery/meter/atmos{ - target_layer = 1 +"bBs" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/ship/preopen{ + id = "briglockdown" }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 1 +/obj/structure/cable{ + icon_state = "0-8" }, -/turf/open/floor/durasteel/techfloor_grid, -/area/engine/atmos) +/turf/open/floor/plating, +/area/security/prison) "bBx" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 @@ -3252,13 +3218,13 @@ /turf/open/floor/monotile/dark, /area/nsv/briefingroom) "bHE" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/violet/visible/layer4{ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 6 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "bHF" = ( @@ -3301,14 +3267,16 @@ /turf/open/floor/monotile/light, /area/medical/medbay) "bJm" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 5 +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, -/area/maintenance/nsv/deck2/frame5/starboard) +/area/maintenance/nsv/deck2/frame3/central) "bJH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -3355,7 +3323,6 @@ /turf/open/floor/plasteel/grid/steel, /area/quartermaster/storage) "bKv" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "1-4" }, @@ -3368,6 +3335,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "bKI" = ( @@ -3375,10 +3343,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 4 - }, /obj/structure/lattice/catwalk/over/ship, +/obj/machinery/atmospherics/components/binary/pump/layer4{ + dir = 8; + name = "FTL Fuel to Storage" + }, /turf/open/floor/engine, /area/engine/engineering/ftl_room) "bLc" = ( @@ -3510,11 +3479,11 @@ /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame4/starboard) "bOH" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/turf/open/floor/monotile/steel/airless, -/area/maintenance/nsv/deck2/frame4/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "bOQ" = ( /obj/structure/chair/fancy{ dir = 4 @@ -3524,10 +3493,11 @@ "bPe" = ( /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 8; - name = "o2 to AGR#2" + name = "O2 to Utility Reactor" }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 8 + dir = 8; + name = "O2 to Defensive Reactor" }, /obj/machinery/light{ dir = 4 @@ -3620,10 +3590,15 @@ /turf/open/floor/monotile/steel, /area/science/nsv/astronomy) "bRd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/monotile/steel, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/light{ + brightness = 3; + bulb_vacuum_brightness = 2; + dir = 4; + nightshift_brightness = 1 + }, +/turf/open/floor/plating, +/area/engine/atmos) "bRf" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -3741,9 +3716,10 @@ name = "Dropship Bay" }) "bTM" = ( -/obj/structure/frame/computer, -/turf/open/floor/mineral/plastitanium, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/components/unary/outlet_injector/on, +/turf/open/space/basic, +/area/engine/atmos) "bTQ" = ( /obj/effect/turf_decal/bot, /obj/structure/table/reinforced, @@ -3766,8 +3742,11 @@ /area/crew_quarters/heads/captain) "bUk" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame5/port) +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "bVb" = ( /obj/structure/lattice/catwalk/over/ship, /obj/structure/disposalpipe/segment, @@ -3893,8 +3872,11 @@ /turf/open/floor/monotile/dark/airless, /area/space/nearstation) "bZz" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/extinguisher_cabinet/east, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "bZE" = ( @@ -3942,8 +3924,13 @@ /turf/closed/wall/r_wall, /area/space) "cbq" = ( -/turf/open/floor/monotile/dark/airless, -/area/maintenance/nsv/deck2/frame4/port) +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/atmos) "cbA" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/ship/preopen{ @@ -3961,9 +3948,10 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "ccb" = ( @@ -3982,14 +3970,9 @@ /turf/open/floor/monotile/steel, /area/nsv/weapons) "cch" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/durasteel, -/area/maintenance/nsv/deck2/frame5/starboard) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "cco" = ( /turf/open/floor/durasteel/lino, /area/maintenance/nsv/deck2/frame5/starboard) @@ -3999,13 +3982,20 @@ name = "prisoner processing blast door" }, /obj/machinery/door/airlock/ship/external/glass{ - name = "Labour Camp Shuttle Dock" + name = "Labour Camp Shuttle Dock"; + req_one_access_txt = "2" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, /turf/open/floor/monotile/dark, /area/security/processing) "ccJ" = ( @@ -4058,12 +4048,6 @@ /obj/structure/cable/yellow{ icon_state = "1-4" }, -/obj/structure/cable{ - icon_state = "5-6" - }, -/obj/structure/cable{ - icon_state = "5-10" - }, /turf/open/floor/monotile/dark, /area/nsv/weapons) "cef" = ( @@ -4118,12 +4102,11 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "cfS" = ( -/obj/machinery/door/airlock/ship/maintenance{ - name = "Marine Containment Maintenance"; - req_one_access_txt = "12" - }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/airlock/ship/maintenance/defaultaccess{ + dir = 8 + }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "cgx" = ( @@ -4261,12 +4244,6 @@ /turf/open/floor/monotile/steel, /area/quartermaster/sorting) "cjQ" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/door/firedoor, /obj/effect/turf_decal/ship/delivery/yellow, /turf/open/floor/plating, @@ -4325,7 +4302,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer4, +/obj/machinery/camera/autoname{ + dir = 8 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "clr" = ( @@ -4356,21 +4335,12 @@ /turf/open/floor/monotile/dark, /area/medical/medbay/lobby) "cmv" = ( -/obj/structure/closet{ - name = "red team closet" - }, -/obj/item/clothing/suit/redtag, -/obj/item/clothing/head/helmet/redtaghelm, -/obj/item/gun/energy/laser/redtag{ - desc = "A laser tag gun modelled after the sidearm of choice for security forces. It fires a harmless beam of energy at the target, and is intended to train new recruits."; - icon = 'nsv13/icons/obj/guns/projectile.dmi'; - icon_state = "secglock"; - item_state = "glock"; - name = "M13 'Intar' training glock" - }, /obj/machinery/light, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/maintenance/nsv/deck2/frame4/port) "cmR" = ( /obj/structure/sign/nanotrasen{ pixel_y = 26 @@ -4400,12 +4370,6 @@ /obj/machinery/atmospherics/pipe/simple/general/hidden/layer2, /turf/open/floor/durasteel/lino, /area/maintenance/nsv/deck2/frame5/starboard) -"cnJ" = ( -/obj/effect/turf_decal/tile/ship/half/neutral{ - dir = 4 - }, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) "cnP" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/camera/autoname{ @@ -4457,8 +4421,8 @@ /turf/open/floor/monotile/steel, /area/storage/primary) "cpE" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/firealarm/directional/north, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "cpI" = ( @@ -4520,6 +4484,13 @@ name = "Brig Infirmary"; req_one_access_txt = list(2,34) }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/monotile/dark, /area/security/prison) "crW" = ( @@ -4586,15 +4557,8 @@ /turf/open/floor/monotile, /area/crew_quarters/heads/chief) "cti" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/binary/pump/on/layer2{ - dir = 8; - name = "coolant to reactor"; - target_pressure = 4500 - }, -/turf/open/floor/plating, +/obj/structure/closet/secure_closet/atmospherics, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "ctT" = ( /obj/structure/sign/ship/deck/two{ @@ -4610,12 +4574,15 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "cun" = ( -/obj/structure/peacekeeper_barricade/metal{ - dir = 8 +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/structure/peacekeeper_barricade/metal, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/dark, +/area/maintenance/nsv/bunker) "cuu" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/firealarm/directional/east, @@ -4718,17 +4685,6 @@ /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/engine, /area/engine/engineering/ftl_room) -"cyb" = ( -/obj/effect/turf_decal/tile/ship/half/orange{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/monotile/steel, -/area/nsv/weapons) "cyd" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/orange{ @@ -4799,10 +4755,6 @@ /obj/item/ammo_casing/c45, /turf/open/floor/durasteel/padded, /area/maintenance/nsv/deck2/frame5/starboard) -"cAl" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/engineering/reactor_core) "cAB" = ( /obj/machinery/status_display/evac, /turf/closed/wall/steel, @@ -4838,6 +4790,9 @@ /obj/effect/turf_decal/tile/ship/half/red, /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, /area/security/brig) "cBR" = ( @@ -4869,19 +4824,6 @@ }, /turf/open/floor/monotile/dark, /area/science/lab) -"cCh" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering/reactor_core) "cCm" = ( /obj/machinery/light{ dir = 1 @@ -4985,16 +4927,14 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "cFi" = ( -/obj/machinery/atmospherics/components/unary/heat_exchanger/layer2{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/dark/visible, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "cFt" = ( @@ -5045,10 +4985,11 @@ /turf/open/floor/monotile/dark, /area/nsv/briefingroom) "cGW" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/suit_storage_unit/atmos, +/obj/machinery/light{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "cGY" = ( /obj/effect/turf_decal/box, @@ -5251,7 +5192,6 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) "cNG" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, @@ -5259,6 +5199,7 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "cNS" = ( @@ -5281,10 +5222,10 @@ /obj/machinery/computer/monitor{ dir = 8 }, +/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "0-8" }, -/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/armour_pump) "cNX" = ( @@ -5388,6 +5329,7 @@ /obj/structure/cable/orange{ icon_state = "2-8" }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) "cPZ" = ( @@ -5406,11 +5348,17 @@ /turf/open/floor/plasteel/grid/steel, /area/janitor) "cQg" = ( -/obj/structure/chair/office{ - dir = 8 +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "cQl" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, @@ -5540,12 +5488,11 @@ req_one_access_txt = "10;24" }, /obj/structure/lattice/catwalk/over/ship, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/engine/atmos) "cUk" = ( @@ -5623,12 +5570,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/ship/letter{ - icon_state = "1" +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + dir = 8; + name = "coolant to reactor"; + target_pressure = 4500 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "cVo" = ( @@ -5729,8 +5676,14 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons) "cYa" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer2, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "cYp" = ( @@ -5774,7 +5727,7 @@ /obj/machinery/armour_plating_nanorepair_pump/aft_port{ apnw_id = "pegasusmain" }, -/turf/open/floor/plasteel/techmaint, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "daj" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -5801,7 +5754,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /turf/open/floor/durasteel, @@ -5861,18 +5814,17 @@ /turf/open/floor/plasteel/techmaint, /area/quartermaster/warehouse) "dbj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/door/airlock/ship/maintenance{ - req_access_txt = "10" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/plating, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/table, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "dbp" = ( /obj/structure/closet/emcloset, @@ -5884,21 +5836,6 @@ /obj/structure/fans/tiny, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) -"dbv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/lattice/catwalk/over/ship, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/techfloor_grid, -/area/engine/atmos) "dbI" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 4 @@ -5911,27 +5848,15 @@ }, /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame3/central) -"dcz" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/meter/atmos, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering/reactor_core) "dcQ" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/ladder, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "dcY" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/light{ dir = 4 }, @@ -5943,6 +5868,8 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "ddf" = ( @@ -5968,8 +5895,11 @@ /turf/open/floor/monotile/steel, /area/hydroponics) "ddl" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "ddw" = ( @@ -6003,14 +5933,14 @@ /turf/open/floor/monotile/steel, /area/nsv/briefingroom) "deu" = ( -/obj/machinery/door/airlock/highsecurity/ship{ - name = "dummy IFF vault" +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/engine, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "deD" = ( /obj/effect/turf_decal/tile/ship/half/brown, /obj/machinery/computer/cargo, @@ -6018,19 +5948,14 @@ /turf/open/floor/monotile/steel, /area/quartermaster/lobby) "deE" = ( -/obj/effect/turf_decal/ship/techfloor{ - dir = 4 - }, -/obj/machinery/power/terminal{ +/obj/effect/turf_decal/ship/techfloor/corner{ dir = 1 }, -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" +/obj/effect/turf_decal/ship/techfloor/corner, +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 }, -/turf/open/floor/plasteel/techmaint, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "deG" = ( /obj/effect/spawner/room/tenxten, @@ -6096,26 +6021,20 @@ /turf/open/floor/plating, /area/maintenance/disposal) "dgK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/lattice/catwalk/over/ship, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/camera/autoname{ - dir = 4 - }, /turf/open/floor/plating, /area/engine/atmos) "dhx" = ( /obj/effect/turf_decal/ship/techfloor{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8; - filter_types = list("nucleium"); - name = "Nucleium Scrubber" +/obj/machinery/light/small{ + dir = 4 }, /turf/open/floor/plasteel/ridged/steel, -/area/engine/engineering/reactor_core) +/area/engine/atmos) "dhE" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/light{ @@ -6193,14 +6112,18 @@ /obj/machinery/camera/autoname{ dir = 4 }, -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engineering/reactor_core) "dko" = ( -/obj/machinery/camera/autoname{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 }, +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/area/engine/atmos) "dku" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 @@ -6264,17 +6187,14 @@ /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/ftl_room) "dmB" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/dark/visible/layer4, /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "dmF" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "dne" = ( @@ -6332,6 +6252,16 @@ /obj/structure/closet/secure_closet/transport_pilot, /turf/open/floor/monotile/dark, /area/nsv/hanger/notkmcstupidhanger) +"doG" = ( +/obj/effect/turf_decal/tile/ship/half/red{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/security/brig) "dpD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -6354,9 +6284,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, @@ -6370,6 +6297,17 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/disposal) +"dra" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 2; + height = 5; + id = "laborcamp_away"; + name = "labor camp"; + width = 9 + }, +/turf/open/space/basic, +/area/mine/laborcamp) "drf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 @@ -6411,7 +6349,7 @@ dir = 4 }, /obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /turf/open/floor/durasteel/techfloor_grid, @@ -6463,9 +6401,6 @@ /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame2/central) "dtG" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/effect/landmark/zebra_interlock_point, /obj/machinery/door/airlock/ship/command{ name = "Decontamination Shower"; @@ -6500,6 +6435,12 @@ /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, /obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/open/floor/monotile/dark, /area/security/brig) "dul" = ( @@ -6527,6 +6468,9 @@ /obj/machinery/camera/autoname{ dir = 8 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/carpet/red, /area/security/detectives_office) "duu" = ( @@ -6550,7 +6494,7 @@ /obj/machinery/atmospherics/components/binary/pump/rbmk_output{ dir = 4; id = "rbmk2_output"; - name = "AGCNR Coolant Outlet" + name = "s Outlet" }, /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ dir = 4 @@ -6596,7 +6540,7 @@ /obj/machinery/air_sensor/atmos{ id_tag = "nuclear_mix_sensor_3" }, -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engineering/reactor_core) "dwn" = ( /obj/machinery/door/airlock/turbolift/ship{ @@ -6630,12 +6574,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 8 - }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "dxb" = ( @@ -6663,39 +6602,25 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) +"dxF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/security/processing) "dxH" = ( /turf/closed/wall/r_wall, /area/chapel/office) "dyl" = ( -/obj/structure/table/reinforced, -/obj/item/ammo_box/foambox{ - name = "ammo box (5.56 Foam Darts)" - }, -/obj/item/ammo_box/foambox{ - name = "ammo box (5.56 Foam Darts)"; - pixel_y = 8 - }, -/obj/item/ammo_box/magazine/toy/smg, -/obj/item/ammo_box/magazine/toy/smg, -/obj/item/ammo_box/magazine/toy/smg, -/obj/item/ammo_box/magazine/toy/smg, -/obj/item/ammo_box/magazine/toy/smg, -/obj/item/ammo_box/magazine/toy/smg, -/obj/item/ammo_box/magazine/toy/smg, -/obj/item/ammo_box/magazine/toy/smg, -/obj/item/ammo_box/magazine/toy/smg, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/vending/wallmed{ - name = "\improper MarineMed"; - pixel_y = 26; - products = list(/obj/item/storage/crayons=3) - }, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering/ftl_room) "dyo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/dark, /area/security/brig) "dys" = ( @@ -6753,10 +6678,13 @@ /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/starboard) "dzw" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 4 }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "dzF" = ( @@ -6796,8 +6724,27 @@ /obj/structure/cable/cyan{ icon_state = "4-8" }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible, /turf/open/floor/plating, /area/engine/atmos) +"dAn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/monotile/dark, +/area/security/brig) "dAr" = ( /obj/structure/reagent_dispensers/foamtank/hull_repair_juice, /turf/open/floor/monotile/dark/airless, @@ -6839,6 +6786,12 @@ /area/mine/laborcamp) "dBQ" = ( /obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plating, /area/security/processing) "dCb" = ( @@ -6936,6 +6889,9 @@ dir = 10 }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "dDQ" = ( @@ -6979,12 +6935,19 @@ /turf/open/floor/plasteel/tech/grid, /area/medical/medbay) "dGN" = ( -/obj/effect/turf_decal/tile/ship/half/neutral, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/door/airlock/ship/maintenance/defaultaccess, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/turf/open/floor/plating, +/area/engine/engineering/reactor_core) "dGV" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/open/floor/plating, /area/security/brig) "dHv" = ( @@ -7019,11 +6982,12 @@ /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/ftl_room) "dJj" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2{ - dir = 1 - }, /obj/effect/turf_decal/stripes/line, /obj/machinery/camera/autoname, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "dJk" = ( @@ -7123,11 +7087,12 @@ "dOf" = ( /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 8; - name = "AGR #2 Moderator Line" + name = "Utility Reactor Moderator Line" }, /obj/structure/cable/cyan{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "dOJ" = ( @@ -7150,7 +7115,6 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/central) "dPy" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "1-4" }, @@ -7161,6 +7125,7 @@ dir = 5 }, /obj/machinery/airalarm/directional/west, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "dPz" = ( @@ -7196,13 +7161,7 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) "dQh" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/structure/extinguisher_cabinet/south, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/starboard) "dQi" = ( @@ -7252,6 +7211,9 @@ /obj/structure/sign/nanotrasen{ pixel_y = 26 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/steel, /area/security/processing) "dRU" = ( @@ -7295,6 +7257,9 @@ /obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 1 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/dark, /area/security/processing) "dTy" = ( @@ -7319,27 +7284,18 @@ /area/nsv/briefingroom) "dTP" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "dTZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/machinery/camera/autoname{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) +/turf/closed/wall/r_wall, +/area/nsv/weapons) "dUH" = ( /obj/machinery/air_sensor/atmos{ id_tag = "FTLsensor" @@ -7410,15 +7366,10 @@ /turf/open/floor/monotile/steel, /area/quartermaster/storage) "dWd" = ( -/obj/effect/turf_decal/ship/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/engineering/reactor_core) +/obj/machinery/door/airlock/ship/maintenance/defaultaccess, +/obj/machinery/door/firedoor/border_only/directional/south, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/port) "dWH" = ( /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/port) @@ -7431,12 +7382,6 @@ /obj/item/dest_tagger, /turf/open/floor/monotile/steel, /area/quartermaster/sorting) -"dXs" = ( -/obj/structure/frame/computer{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/maintenance/nsv/deck2/frame3/port) "dXy" = ( /obj/structure/cable{ icon_state = "4-8" @@ -7545,13 +7490,12 @@ /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) "ebm" = ( -/obj/item/stack/barbed_wire/five, -/obj/effect/turf_decal/ship/delivery/yellow, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/atmos) "ebn" = ( /obj/structure/grille/broken, /turf/open/floor/plating, @@ -7570,13 +7514,9 @@ /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "ebG" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/engine, /area/engine/engineering/reactor_core) "ebL" = ( @@ -7604,6 +7544,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/sign/ship/pods/east{ + pixel_y = -29 + }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/starboard) "ebZ" = ( @@ -7666,6 +7609,9 @@ dir = 1; name = "Stormdrive Reactor Station" }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, /turf/open/floor/carpet/green, /area/engine/engineering/reactor_control) "edm" = ( @@ -7675,9 +7621,8 @@ /obj/structure/disposalpipe/segment, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 4; - freq = 1400; - location = "Prison" + location = "Prison"; + name = "navigation beacon (Prison Delivery)" }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) @@ -7708,11 +7653,11 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/armour_pump) "eeT" = ( @@ -7750,7 +7695,6 @@ /turf/open/floor/monotile/dark, /area/quartermaster/storage) "egb" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible, /obj/machinery/power/terminal{ dir = 4 }, @@ -7810,21 +7754,15 @@ /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "ehl" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/door/airlock/ship/external/glass{ - name = "Labour Camp Shuttle Dock" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/layer_manifold{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/monotile/dark, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "ehz" = ( -/obj/machinery/power/terminal{ - dir = 4 - }, /obj/effect/turf_decal/ship/techfloor{ dir = 4 }, @@ -7835,7 +7773,7 @@ icon_state = "2-8" }, /obj/structure/cable/yellow{ - icon_state = "0-8" + icon_state = "4-8" }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) @@ -7868,8 +7806,10 @@ pixel_y = -32; req_one_access_txt = "69" }, -/obj/effect/landmark/start/munitions_tech, -/turf/open/floor/carpet/orange, +/obj/machinery/camera/autoname{ + dir = 10 + }, +/turf/open/floor/monotile/dark, /area/nsv/weapons) "eig" = ( /obj/machinery/light{ @@ -7946,14 +7886,11 @@ /turf/open/floor/plasteel/grid/steel, /area/janitor) "ekP" = ( -/obj/structure/sign/ship/radiation{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/turf/closed/wall/r_wall, -/area/engine/engineering/ftl_room) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "ekQ" = ( /obj/structure/grille, /turf/open/floor/plating{ @@ -7961,7 +7898,6 @@ }, /area/maintenance/nsv/deck2/frame2/starboard) "eli" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "4-8" }, @@ -7969,6 +7905,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "elB" = ( @@ -7992,20 +7929,20 @@ /turf/open/floor/monotile/dark, /area/maintenance/nsv/bunker) "emm" = ( -/obj/machinery/power/terminal{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "0-8" +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/cable/orange{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 8 }, -/turf/open/floor/durasteel/techfloor, -/area/engine/armour_pump) +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/port) "emx" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -8068,9 +8005,17 @@ /turf/open/floor/monotile/dark, /area/medical/medbay) "enz" = ( -/obj/effect/landmark/carpspawn, -/turf/open/space/basic, -/area/maintenance/nsv/deck2/frame4/starboard) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/central) "eoa" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 4 @@ -8094,9 +8039,6 @@ /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, /obj/effect/landmark/zebra_interlock_point, -/obj/structure/cable{ - icon_state = "6-10" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) "eoH" = ( @@ -8120,11 +8062,9 @@ name = "Executive officer's Office" }) "epx" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/durasteel/techfloor, -/area/engine/gravity_generator) +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/durasteel, +/area/maintenance/nsv/deck2/frame5/starboard) "epL" = ( /obj/structure/munitions_trolley, /obj/item/ammo_box/magazine/nsv/light_cannon, @@ -8168,7 +8108,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/effect/landmark/zebra_interlock_point, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/nsv/weapons) @@ -8287,13 +8226,13 @@ /turf/open/floor/monotile/dark, /area/hydroponics) "etC" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/violet/visible/layer4{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 4 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "euy" = ( @@ -8335,8 +8274,12 @@ name = "Artillery Bay" }) "euK" = ( -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1 + }, +/turf/open/space/basic, +/area/engine/atmos) "euT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -8371,6 +8314,30 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) +"evE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/turnstile{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/monotile/steel, +/area/security/prison) "evG" = ( /obj/machinery/door/airlock/ship/public/glass{ name = "Medical Storage"; @@ -8411,6 +8378,12 @@ name = "detective's office shutters" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/security/detectives_office) "ewI" = ( @@ -8479,7 +8452,7 @@ /obj/structure/table/reinforced, /obj/machinery/computer/reactor/stats{ id = "default_reactor_for_lazy_mappers2"; - name = "Reactor 2 Statistics Console" + name = "Utility Reactor Statistics Console" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -8494,6 +8467,7 @@ "eAl" = ( /obj/effect/turf_decal/ship/techfloor, /obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/atmospherics/pipe/simple/violet/hidden/layer4, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "eAp" = ( @@ -8527,12 +8501,19 @@ /turf/open/floor/plating, /area/engine/atmos) "eBy" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/grid/steel, -/area/engine/atmos) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/engineering/reactor_core) "eCa" = ( /obj/effect/turf_decal/tile/ship/half/blue{ dir = 4 @@ -8615,12 +8596,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 - }, -/obj/machinery/atmospherics/components/binary/valve/digital/on/layer4{ - dir = 8; - name = "To Fueltank" +/obj/machinery/atmospherics/components/binary/volume_pump/layer4{ + dir = 4; + name = "Nucleium Tank To FTL" }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) @@ -8648,17 +8626,13 @@ /turf/closed/wall/steel, /area/shuttle/turbolift/quaternary) "eFs" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/cable/yellow{ + icon_state = "4-8" }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) @@ -8866,9 +8840,6 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) "eMk" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, @@ -8878,6 +8849,9 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/dark, /area/nsv/weapons) "eMl" = ( @@ -8911,9 +8885,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 1 - }, /turf/open/floor/plating, /area/engine/atmos) "eMT" = ( @@ -8971,15 +8942,15 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 5 }, /obj/effect/turf_decal/arrows{ dir = 4 }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "eOk" = ( @@ -9029,16 +9000,15 @@ /turf/open/floor/plating, /area/nsv/weapons) "eQb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/ship/techfloor{ - dir = 1 +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/airlock/ship/maintenance{ + name = "Engineering maintenance"; + req_access_txt = "10; 24" }, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/atmos) +/turf/open/floor/plating, +/area/engine/engineering/ftl_room) "eQq" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -9075,6 +9045,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/carpet, /area/nsv/weapons) +"eRF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/security/prison) "eRH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/structure/cable{ @@ -9139,7 +9115,7 @@ "eTh" = ( /obj/structure/table/reinforced, /obj/machinery/computer/reactor/fuel_rods{ - name = "Reactor 1 Fuel Management Console" + name = "Defensive Reactor Fuel Management Console" }, /obj/machinery/light, /obj/structure/extinguisher_cabinet/south, @@ -9190,6 +9166,13 @@ /obj/machinery/gulag_teleporter, /turf/open/floor/durasteel/lino, /area/security/processing) +"eUE" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/processing) "eUS" = ( /obj/structure/fans/tiny, /turf/open/floor/plating{ @@ -9281,17 +9264,9 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/engine, /area/engine/engineering/reactor_core) -"eWR" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/monotile/steel, -/area/maintenance/nsv/deck2/frame3/port) "eWT" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 @@ -9374,9 +9349,17 @@ /turf/open/floor/plating, /area/maintenance/disposal) "eYt" = ( -/obj/item/chair, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, /turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/central) +/area/maintenance/nsv/deck2/frame5/port) "eYv" = ( /obj/structure/closet/crate/hydroponics, /obj/item/shovel/spade, @@ -9423,6 +9406,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/carpet/ship, /area/security/detectives_office) "eZK" = ( @@ -9461,12 +9450,11 @@ /turf/open/floor/engine, /area/crew_quarters/kitchen) "faR" = ( -/obj/item/banner/security/mundane{ - desc = "A dummy banner used for training excercises"; - name = "syndicate flag" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "faX" = ( /obj/effect/turf_decal/tile/ship/half/neutral, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, @@ -9734,6 +9722,9 @@ "fho" = ( /obj/structure/table, /obj/structure/bedsheetbin, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/freezer, /area/security/prison) "fhs" = ( @@ -9763,12 +9754,15 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame4/port) "fif" = ( -/obj/effect/turf_decal/tile/ship/half/neutral{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/atmos) "fii" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -9934,15 +9928,6 @@ /obj/effect/decal/cleanable/food/egg_smudge, /turf/open/floor/plasteel/showroomfloor, /area/maintenance/nsv/deck2/frame5/starboard) -"fmo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/durasteel/techfloor_grid, -/area/engine/atmos) "fmp" = ( /obj/effect/turf_decal/tile/ship/half/brown, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -10006,22 +9991,21 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ dir = 4 }, -/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "fpi" = ( -/obj/machinery/defence_screen_relay{ - density = 0; - pixel_y = 30 - }, -/obj/effect/turf_decal/ship/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/machinery/door/airlock/ship/maintenance{ + name = "Marine Containment Maintenance"; + req_one_access_txt = "12" }, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/atmos) +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/port) "fps" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/item/tape/random, @@ -10085,7 +10069,7 @@ dir = 8 }, /obj/machinery/airalarm/directional/north, -/obj/structure/cable/orange{ +/obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/durasteel, @@ -10157,11 +10141,11 @@ /turf/open/floor/monotile/steel, /area/nsv/weapons/gauss/battery) "ftU" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, /obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer2{ dir = 4 }, -/turf/open/floor/plating, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "ftW" = ( /obj/structure/disposalpipe/segment, @@ -10178,12 +10162,10 @@ /turf/open/floor/monotile/steel, /area/nsv/briefingroom) "fuJ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ - dir = 4 - }, +/obj/machinery/door/airlock/ship/maintenance/defaultaccess, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plating, -/area/engine/atmos) +/area/maintenance/nsv/deck2/frame5/starboard) "fuK" = ( /turf/closed/wall/r_wall, /area/crew_quarters/kitchen/coldroom) @@ -10215,12 +10197,21 @@ /obj/machinery/camera/autoname{ dir = 4 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/dark, /area/security/prison) "fwj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/monotile/steel, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/door/airlock/highsecurity/ship{ + name = "Shield Relay Room"; + req_one_access_txt = "10" + }, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/atmos) "fwG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -10264,6 +10255,7 @@ dir = 1 }, /obj/structure/extinguisher_cabinet/south, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "fxy" = ( @@ -10290,15 +10282,15 @@ dir = 8 }, /obj/structure/lattice/catwalk/over/ship, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "fyd" = ( /obj/effect/turf_decal/ship/techfloor{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "fye" = ( @@ -10311,10 +10303,6 @@ /obj/item/tank/internals/oxygen/yellow, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame4/starboard) -"fyg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) "fyS" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -10334,11 +10322,16 @@ /turf/open/floor/monotile/dark, /area/security/brig) "fzC" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/machinery/atmospherics/components/binary/temperature_gate{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, /area/engine/atmos) "fzN" = ( /obj/effect/turf_decal/box, @@ -10395,34 +10388,27 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "fBb" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "fBe" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/air_sensor/atmos/incinerator_tank, -/turf/open/floor/engine/airless, -/area/engine/atmospherics_engine) -"fBn" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 +/obj/machinery/power/terminal{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 9 +/obj/structure/cable/yellow{ + icon_state = "0-2" }, -/turf/open/space/basic, -/area/maintenance/nsv/deck2/frame4/starboard) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/nsv/weapons/fore{ + name = "Artillery Bay" + }) "fBH" = ( /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 8 @@ -10465,7 +10451,6 @@ /turf/open/floor/durasteel/techfloor_grid, /area/maintenance/nsv/deck2/frame3/central) "fBU" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible, /obj/machinery/power/terminal{ dir = 4 }, @@ -10526,13 +10511,10 @@ /turf/open/floor/plating, /area/engine/armour_pump) "fCX" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "fCY" = ( @@ -10576,9 +10558,6 @@ /turf/open/floor/monotile/steel, /area/nsv/weapons) "fDn" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 6 }, @@ -10588,9 +10567,6 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "fDu" = ( @@ -10675,10 +10651,10 @@ name = "Artillery Bay" }) "fFp" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 10 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "fGr" = ( @@ -10731,13 +10707,16 @@ /turf/open/floor/plating, /area/engine/armour_pump) "fHr" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/button/door{ id = "galactica_nuclear_vent"; name = "Toggle Nucleium Chamber Purge"; pixel_x = 6; pixel_y = 26 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "fHA" = ( @@ -10782,21 +10761,21 @@ /area/nsv/hanger/notkmcstupidhanger) "fIR" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 6 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "fJc" = ( -/obj/machinery/light, -/turf/open/floor/engine, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "fJk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -10838,10 +10817,12 @@ /area/engine/atmos) "fKp" = ( /obj/structure/cable{ - icon_state = "1-10" + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame1/starboard) +/area/maintenance/nsv/deck2/frame3/port) "fKz" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -10889,6 +10870,9 @@ /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, /obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, /turf/open/floor/plating, /area/nsv/weapons/fore{ name = "Artillery Bay" @@ -10901,6 +10885,9 @@ /obj/effect/landmark/zebra_interlock_point, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/port) "fLA" = ( @@ -10911,9 +10898,6 @@ /obj/machinery/door/airlock/ship/maintenance{ req_access_txt = "12" }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /obj/effect/landmark/zebra_interlock_point, @@ -10946,9 +10930,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ icon_state = "4-8" @@ -10983,13 +10964,13 @@ /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "fNQ" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ - dir = 4 - }, /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 8 + }, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "fOe" = ( @@ -11043,9 +11024,6 @@ /turf/open/floor/monotile/steel, /area/nsv/weapons/gauss/battery) "fPf" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 @@ -11053,29 +11031,17 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 1 }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "fPi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) -"fPu" = ( -/obj/machinery/atmospherics/pipe/manifold4w/green/visible, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/engineering/reactor_core) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "fPG" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 @@ -11124,14 +11090,14 @@ /turf/open/floor/monotile/steel, /area/security/prison) "fQu" = ( -/obj/structure/peacekeeper_barricade/metal{ - dir = 1 - }, -/obj/structure/peacekeeper_barricade/metal{ - dir = 4 +/obj/structure/lattice/catwalk/over/ship, +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/central) "fQA" = ( /obj/machinery/light{ dir = 4 @@ -11143,12 +11109,12 @@ /turf/open/floor/eighties, /area/crew_quarters/theatre) "fQB" = ( -/obj/structure/cable{ - icon_state = "2-8"; - tag = "" +/obj/machinery/door/airlock/ship/maintenance/defaultaccess{ + name = "Medbay Central"; + req_one_access_txt = "5;28" }, -/turf/open/floor/carpet/green, -/area/engine/engineering/reactor_control) +/turf/open/floor/plating, +/area/medical/medbay) "fQH" = ( /obj/structure/chair/fancy/shuttle{ dir = 4 @@ -11179,7 +11145,7 @@ input_tag = "extra_5_input"; name = "Custom Tank 5 Control"; output_tag = "extra_5_output"; - sensors = list("extra_5_sensor"="Custom Tank 5") + sensors = list("extra_5_sensor"="Custom Tank 5") }, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -11204,19 +11170,9 @@ name = "Night Club" }) "fSI" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible, -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/effect/turf_decal/ship/shutoff, -/obj/structure/cable/cyan{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/engine_smes) +/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/port) "fTi" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -11276,7 +11232,7 @@ "fVd" = ( /obj/structure/table/reinforced, /obj/machinery/computer/reactor/pump/rbmk_moderator{ - name = "Reactor 1 moderator valve computer" + name = "Defensive Reactor moderator valve computer" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -11289,10 +11245,6 @@ /area/nsv/hanger{ name = "Dropship Bay" }) -"fWb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) "fWq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -11365,6 +11317,9 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "fXH" = ( @@ -11484,9 +11439,6 @@ /turf/open/floor/monotile/steel, /area/hydroponics) "gbe" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/spawner/structure/window/reinforced, @@ -11666,17 +11618,12 @@ /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) "gev" = ( -/obj/structure/peacekeeper_barricade/metal{ - dir = 4 - }, -/obj/effect/turf_decal/ship/delivery{ - color = "#8B0000" +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "geM" = ( /obj/machinery/door/poddoor{ id = "labourcamp"; @@ -11704,11 +11651,12 @@ name = "Executive officer's Office" }) "gfQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ +/obj/machinery/atmospherics/components/unary/portables_connector/layer2{ dir = 1 }, -/turf/open/floor/mineral/plastitanium, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "gfX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -11752,9 +11700,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/port) @@ -11801,8 +11746,6 @@ /area/bridge/showroom/corporate) "ghH" = ( /obj/structure/table/reinforced, -/obj/item/stack/sheet/mineral/copper, -/obj/item/reagent_containers/food/drinks/beer, /obj/effect/turf_decal/stripes/white/corner{ dir = 8 }, @@ -11811,6 +11754,10 @@ dir = 1 }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/fax{ + name = "Service Fax Machine"; + fax_name = "Service" + }, /turf/open/floor/monotile/dark, /area/hallway/secondary/service) "ghJ" = ( @@ -11834,22 +11781,17 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "ghO" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 5 - }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "giI" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer4{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/closed/wall/r_wall, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "gjo" = ( /obj/machinery/computer/atmos_control/tank{ @@ -11857,7 +11799,7 @@ input_tag = "extra_1_input"; name = "Custom Tank 1 Control"; output_tag = "extra_1_output"; - sensors = list("extra_1_sensor"="Custom Tank 1") + sensors = list("extra_1_sensor"="Custom Tank 1") }, /turf/open/floor/engine, /area/engine/atmos) @@ -11877,6 +11819,9 @@ /area/nsv/hanger/notkmcstupidhanger) "gkD" = ( /obj/effect/turf_decal/stripes/line, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "glu" = ( @@ -11888,6 +11833,12 @@ "glJ" = ( /turf/closed/mineral/random/labormineral/volcanic, /area/mine/laborcamp) +"gmx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) "gmy" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -11934,7 +11885,7 @@ input_tag = "FTLinput"; name = "Fuel Monitoring"; output_tag = "FTLoutput"; - sensors = list("FTLsensor"="FTL Fuel Tank") + sensors = list("FTLsensor"="FTL Fuel Tank") }, /turf/open/floor/engine, /area/engine/engineering/ftl_room) @@ -11958,17 +11909,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/door/airlock/ship/maintenance{ - req_access_txt = "12" - }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "gnC" = ( @@ -12076,18 +12022,18 @@ /obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 4; - freq = 1400; - location = "Hydroponics" + location = "Hydroponics"; + name = "navigation beacon (Hydroponics Delivery)" }, /turf/open/floor/plating, /area/hydroponics) "gqq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 8 }, -/turf/open/floor/mineral/plastitanium, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "gqt" = ( /obj/machinery/conveyor/inverted{ dir = 10; @@ -12111,10 +12057,6 @@ }) "gqS" = ( /obj/effect/turf_decal/tile/ship/full/blue, -/obj/machinery/conveyor{ - dir = 4; - id = "munidelivery" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -12150,11 +12092,9 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/light/small{ + dir = 8 }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) @@ -12259,10 +12199,6 @@ /obj/machinery/light/small, /turf/open/floor/carpet/blue, /area/nsv/briefingroom) -"guc" = ( -/obj/structure/peacekeeper_barricade/metal, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) "guo" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -12298,6 +12234,9 @@ /obj/machinery/light{ dir = 4 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/engine/atmos) "guN" = ( @@ -12315,12 +12254,14 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "guV" = ( -/obj/structure/fluff/support_beam{ - color = "#787878" - }, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) "guX" = ( @@ -12395,6 +12336,8 @@ /obj/structure/closet/crate/trashcart, /obj/effect/turf_decal/stripes/white/line, /obj/machinery/light_switch/west, +/obj/item/reagent_containers/food/drinks/beer, +/obj/item/stack/sheet/mineral/copper, /turf/open/floor/monotile/dark, /area/hallway/secondary/service) "gxD" = ( @@ -12417,16 +12360,7 @@ /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/medical/chemistry) -"gyh" = ( -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/monotile/dark/airless, -/area/space/nearstation) "gyr" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "4-8" }, @@ -12436,6 +12370,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "gyJ" = ( @@ -12524,7 +12459,6 @@ /turf/open/floor/monotile/dark, /area/maintenance/nsv/deck2/frame3/central) "gzD" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "1-8" }, @@ -12537,6 +12471,10 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "gzE" = ( @@ -12623,20 +12561,21 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 8 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "gBl" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame5/port) +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "gBq" = ( +/obj/structure/disposalpipe/segment, /obj/structure/cable{ - icon_state = "4-9" + icon_state = "1-4" }, -/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "gBE" = ( @@ -12765,17 +12704,24 @@ }, /area/maintenance/nsv/deck2/frame5/port) "gDF" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/door/airlock/ship/maintenance{ + name = "Atmospherics maintenance"; + req_one_access_txt = "24" }, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/effect/landmark/zebra_interlock_point, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame5/port) +/area/engine/atmos) "gDO" = ( /obj/structure/window/reinforced{ dir = 8 @@ -12794,9 +12740,8 @@ /turf/open/floor/carpet/blue, /area/bridge/showroom/corporate) "gDX" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "gEx" = ( @@ -12821,11 +12766,18 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "gEY" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "gFd" = ( /obj/structure/lattice/catwalk, @@ -12874,9 +12826,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ icon_state = "4-8" @@ -12889,22 +12838,10 @@ }, /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame1/port) -"gGH" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame5/starboard) "gGP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ icon_state = "4-8" @@ -12919,13 +12856,13 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/armour_pump) "gHf" = ( @@ -12968,15 +12905,6 @@ }, /turf/open/floor/monotile/steel, /area/shuttle/turbolift/secondary) -"gHI" = ( -/obj/structure/lattice, -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/space/basic, -/area/space/nearstation) "gHN" = ( /obj/effect/turf_decal/tile/ship/half/purple{ dir = 8 @@ -13021,8 +12949,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4, /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "gIX" = ( @@ -13098,15 +13026,10 @@ /turf/open/floor/monotile/dark, /area/nsv/magazine/port) "gKt" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 5 - }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "gKV" = ( @@ -13184,6 +13107,7 @@ /obj/structure/cable/cyan{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "gNN" = ( @@ -13204,25 +13128,33 @@ /turf/open/floor/noslip/dark, /area/maintenance/nsv/bunker) "gOg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/structure/cable{ + icon_state = "2-4" }, -/turf/open/floor/monotile/dark, -/area/security/brig) -"gOp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/monotile/steel, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) +"gOp" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "gOB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/closed/wall/steel, +/obj/machinery/door/airlock/ship/maintenance{ + name = "Medbay maintenance"; + req_one_access_txt = "5" + }, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "gOK" = ( /obj/structure/closet/crate, @@ -13260,6 +13192,7 @@ target_pressure = 4500 }, /obj/effect/turf_decal/stripes/line, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "gPA" = ( @@ -13378,7 +13311,8 @@ /area/maintenance/nsv/deck2/frame2/central) "gUv" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, -/turf/closed/wall/r_wall, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, /area/engine/atmos) "gUH" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional{ @@ -13423,15 +13357,20 @@ "gVp" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, /obj/effect/turf_decal/arrows, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 1 - }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "gVy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/machinery/camera/autoname{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "gVE" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -13499,7 +13438,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, -/turf/open/floor/carpet/orange, +/turf/open/floor/monotile/dark, /area/nsv/weapons) "gXm" = ( /turf/open/floor/carpet/blue, @@ -13520,10 +13459,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ +/obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 4 }, /turf/closed/wall/r_wall, @@ -13631,8 +13570,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "haQ" = ( @@ -13714,10 +13652,16 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "hcC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + layer = 2.9 }, -/turf/open/floor/carpet/orange, +/obj/structure/sign/warning/electricshock{ + pixel_y = 31 + }, +/obj/effect/turf_decal/ship/delivery/yellow, +/turf/open/floor/monotile/dark, /area/nsv/weapons) "hcE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -13835,22 +13779,13 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) -"hgH" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/durasteel, -/area/maintenance/nsv/deck2/frame5/starboard) "hgL" = ( -/obj/machinery/camera/autoname{ - dir = 4 +/obj/structure/lattice/catwalk/over/ship, +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/mineral/plastitanium, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/plating, +/area/engine/atmos) "hgQ" = ( /obj/effect/turf_decal/stripes/corner, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -13911,6 +13846,13 @@ /obj/structure/plasticflaps/opaque, /turf/open/floor/monotile/steel, /area/shuttle/turbolift/tertiary) +"hjG" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/prison) "hjN" = ( /obj/effect/turf_decal/tile/ship/half/red{ dir = 1 @@ -13933,15 +13875,13 @@ /turf/open/floor/carpet, /area/bridge/showroom/corporate) "hkE" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 10 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "hkX" = ( @@ -13970,6 +13910,7 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "hlY" = ( @@ -14090,8 +14031,11 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "hpg" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/computer/ship/viewscreen, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "hpu" = ( @@ -14104,6 +14048,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/monotile/dark, /area/security/brig) "hqa" = ( @@ -14209,8 +14156,6 @@ /area/security/detectives_office) "htH" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4, /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) @@ -14240,7 +14185,8 @@ /obj/machinery/camera/autoname{ dir = 8 }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/components/binary/pump/layer2, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "huh" = ( /obj/structure/sign/poster/official/fruit_bowl{ @@ -14289,9 +14235,8 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - filter_types = list("nucleium"); - name = "Nucleium Scrubber" +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) @@ -14313,14 +14258,13 @@ /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering) "hvU" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - dir = 4; - id = "munidelivery" - }, -/obj/structure/disposalpipe/segment{ +/obj/structure/disposaloutlet{ dir = 4 }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/plasticflaps, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) "hwb" = ( @@ -14400,16 +14344,15 @@ /turf/open/space/basic, /area/space) "hye" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 8 }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/lattice/catwalk/over/ship, -/obj/structure/cable{ - icon_state = "4-8" - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/atmos) "hyq" = ( @@ -14534,11 +14477,11 @@ name = "Dropship Bay" }) "hAt" = ( -/obj/structure/sign/ship/securearea{ - name = "CAUTION: Firing Excercises" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/turf/closed/wall/r_wall, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "hAN" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -14694,13 +14637,16 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "hGa" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/computer/atmos_control/tank/toxin_tank{ input_tag = "nuclear_mix_in_3"; name = "Nuclear Reactor Gas Tank Control"; output_tag = "nuclear_min_out_3"; - sensors = list("nuclear_mix_sensor_3"="Nuclear Reactor Gas Mix Tank 3") + sensors = list("nuclear_mix_sensor_3"="Nuclear Reactor Gas Mix Tank 3") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "hGm" = ( @@ -14742,10 +14688,7 @@ /obj/machinery/armour_plating_nanorepair_pump/forward_starboard{ apnw_id = "pegasusmain" }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/techmaint, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "hHS" = ( /obj/structure/lattice/catwalk, @@ -14765,10 +14708,10 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/cyan{ icon_state = "2-8" }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "hIo" = ( @@ -14808,6 +14751,9 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/monotile/dark, /area/security/brig) "hJZ" = ( @@ -14823,6 +14769,24 @@ }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) +"hKm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/port) "hKq" = ( /obj/structure/stairs{ dir = 1 @@ -14867,8 +14831,6 @@ "hLX" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, /obj/structure/lattice/catwalk/over/ship, -/obj/structure/closet/secure_closet/atmospherics, -/obj/machinery/firealarm/directional/north, /turf/open/floor/plating, /area/engine/atmos) "hLY" = ( @@ -14883,6 +14845,14 @@ /obj/item/storage/toolbox/electrical, /turf/open/floor/durasteel/padded, /area/maintenance/nsv/deck2/frame5/starboard) +"hMF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/security/brig) "hMS" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -14897,7 +14867,7 @@ /turf/open/floor/durasteel/techfloor_grid, /area/maintenance/disposal) "hNt" = ( -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engineering/reactor_core) "hNy" = ( /obj/machinery/door/airlock/ship/maintenance{ @@ -14940,12 +14910,19 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "hOJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/engine/engineering/ftl_room) +/obj/machinery/light, +/obj/structure/tank_dispenser, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "hOX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -14994,22 +14971,21 @@ /obj/structure/cable/yellow{ icon_state = "1-4" }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/armour_pump) "hQm" = ( -/obj/structure/target_stake, -/obj/item/target/syndicate{ - name = "stupid marine" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 }, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "hQs" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -15100,7 +15076,6 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/central) "hTP" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -15144,7 +15119,7 @@ "hUz" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, -/area/engine/engineering/ftl_room) +/area/maintenance/nsv/deck2/frame5/starboard) "hUI" = ( /obj/item/kirbyplants{ icon_state = "plant-10" @@ -15216,19 +15191,18 @@ /turf/open/floor/monotile/dark, /area/nsv/briefingroom) "hXN" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/ship/half/neutral, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/components/unary/portables_connector/layer2, +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "hXY" = ( /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 9 }, /obj/effect/turf_decal/arrows, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 8 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "hYm" = ( @@ -15270,18 +15244,21 @@ /turf/open/floor/carpet, /area/nsv/weapons) "hYW" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/green/visible{ +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "hZb" = ( @@ -15330,12 +15307,6 @@ }, /turf/open/floor/monotile/dark, /area/nsv/weapons) -"hZi" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) "hZy" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/power/apc/auto_name/north{ @@ -15344,8 +15315,7 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/structure/lattice/catwalk/over/ship, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "iaB" = ( /obj/effect/turf_decal/tile/ship/green{ @@ -15445,14 +15415,14 @@ /turf/open/floor/carpet/ship, /area/medical/medbay) "ica" = ( -/obj/structure/peacekeeper_barricade/metal{ - dir = 1 - }, -/obj/structure/peacekeeper_barricade/metal{ - dir = 8 +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "icl" = ( /obj/structure/cable{ icon_state = "2-16" @@ -15560,9 +15530,6 @@ icon_state = "0-2" }, /obj/effect/landmark/nuclear_waste_spawner/strong, -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ - dir = 4 - }, /obj/machinery/atmospherics/components/trinary/nuclear_reactor/preset{ dir = 4; name = "Advanced Gas-Cooled Nuclear Reactor Defense" @@ -15579,19 +15546,19 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/green/visible, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/dark/visible{ + dir = 8 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "igC" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "igO" = ( @@ -15615,13 +15582,10 @@ /obj/structure/cable/cyan{ icon_state = "4-8" }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/camera/autoname{ - dir = 1 +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 }, -/turf/open/floor/plasteel/ridged/steel, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/engine_smes) "ihB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -15683,9 +15647,6 @@ name = "Night Club" }) "ijw" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, @@ -15712,9 +15673,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/effect/turf_decal/ship/letter{ - icon_state = "2" - }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "ikD" = ( @@ -15798,14 +15757,16 @@ /area/janitor) "imu" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 8 }, -/obj/effect/turf_decal/tile/ship/half/neutral{ - dir = 1 +/obj/machinery/light{ + brightness = 3; + bulb_vacuum_brightness = 2; + dir = 4; + nightshift_brightness = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "imK" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/monotile/dark/airless, @@ -15815,26 +15776,16 @@ dir = 8 }, /obj/effect/turf_decal/tile/ship/orange, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ - icon_state = "9-10" + icon_state = "1-2" }, /turf/open/floor/monotile/steel, /area/nsv/weapons) "imU" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "inc" = ( @@ -15952,18 +15903,12 @@ /turf/template_noop, /area/maintenance/nsv/deck2/frame2/central) "ipT" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 5 +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/maintenance/nsv/deck2/frame4/starboard) +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/atmos) "ipU" = ( /turf/open/floor/carpet/ship, /area/nsv/weapons) @@ -16034,15 +15979,9 @@ /area/crew_quarters/heads/chief) "irI" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 4 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "irK" = ( @@ -16053,6 +15992,14 @@ /obj/effect/turf_decal/ship/delivery/yellow, /turf/open/floor/monotile/steel/airless, /area/nsv/hanger/notkmcstupidhanger) +"irV" = ( +/obj/machinery/fax{ + fax_name = "Medical"; + name = "Medical Fax Machine" + }, +/obj/structure/table/glass, +/turf/open/floor/monotile/dark, +/area/medical/medbay) "isn" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -16096,16 +16043,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/theatre) -"itW" = ( -/obj/structure/fluff/support_beam{ - color = "#787878" - }, -/obj/effect/turf_decal/loading_area, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) "iut" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -16122,14 +16059,6 @@ /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) -"iuv" = ( -/obj/structure/table/reinforced, -/obj/item/pen/fountain, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) "iuZ" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -16146,8 +16075,18 @@ name = "Artillery Bay" }) "ivi" = ( -/turf/open/floor/monotile/steel/airless, -/area/maintenance/nsv/deck2/frame4/port) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/port) "ivn" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -16207,10 +16146,13 @@ /turf/closed/wall/r_wall, /area/medical/chemistry) "iwK" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/camera/autoname{ dir = 1 }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "iwS" = ( @@ -16245,9 +16187,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ icon_state = "4-8" @@ -16283,6 +16222,11 @@ pixel_y = -6; target_layer = 2 }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "iyW" = ( @@ -16335,15 +16279,13 @@ /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) "iAF" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "iAG" = ( @@ -16360,6 +16302,12 @@ /obj/structure/cable{ icon_state = "2-8" }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/monotile/dark, /area/security/brig) "iBg" = ( @@ -16485,22 +16433,20 @@ /turf/open/floor/plasteel/tech/grid, /area/quartermaster/warehouse) "iEW" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/machinery/power/terminal{ dir = 4 }, /obj/structure/cable/yellow{ - icon_state = "0-8" + icon_state = "1-2" }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/nsv/weapons/fore{ name = "Artillery Bay" }) -"iFl" = ( -/obj/effect/turf_decal/tile/ship/half/neutral, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) "iGx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -16551,12 +16497,17 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "iHk" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/turf/open/floor/durasteel/techfloor_grid, -/area/engine/atmos) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/durasteel, +/area/maintenance/nsv/deck2/frame3/central) "iHn" = ( /obj/machinery/door/poddoor/shutters/ship{ dir = 4; @@ -16574,14 +16525,6 @@ }, /turf/open/floor/carpet/red, /area/bridge/showroom/corporate) -"iIi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/tech/grid, -/area/medical/medbay) "iII" = ( /obj/structure/closet/crate/coffin, /turf/open/floor/wood, @@ -16670,7 +16613,6 @@ /area/nsv/magazine/starboard) "iKx" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /obj/effect/landmark/zebra_interlock_point, @@ -16678,9 +16620,6 @@ name = "Engineering Maintenance"; req_one_access_txt = "56" }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "iKz" = ( @@ -16696,6 +16635,12 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) +"iLc" = ( +/obj/structure/sign/ship/pods/north{ + pixel_x = 29 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/central) "iLw" = ( /obj/effect/turf_decal/tile/ship/half/purple{ dir = 4 @@ -16722,16 +16667,7 @@ /area/quartermaster/storage) "iMC" = ( /obj/structure/ladder, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/monotile/steel, +/turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "iMK" = ( /obj/structure/munitions_trolley, @@ -16871,11 +16807,9 @@ /turf/open/floor/monotile/steel, /area/security/prison) "iTn" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/closed/wall/r_wall, -/area/engine/engineering/reactor_control) +/obj/machinery/suit_storage_unit/atmos, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "iTx" = ( /obj/item/clothing/under/misc/overalls, /obj/structure/closet{ @@ -16918,13 +16852,13 @@ /turf/open/floor/monotile/steel, /area/hallway/secondary/service) "iUT" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "iVf" = ( @@ -16932,10 +16866,10 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/central) "iVp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, /obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/ridged/steel, /area/engine/atmos) "iWd" = ( @@ -16975,11 +16909,15 @@ /turf/open/floor/plating, /area/engine/atmos) "iWE" = ( -/obj/structure/peacekeeper_barricade/metal{ +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/extinguisher_cabinet/south, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engine_smes) "iWI" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -17128,6 +17066,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/monotile/dark, /area/security/brig) "jbk" = ( @@ -17149,15 +17090,11 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) "jbQ" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ + dir = 5 }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/central) +/turf/closed/wall/r_wall, +/area/maintenance/nsv/deck2/frame4/port) "jbR" = ( /obj/structure/table/reinforced, /obj/machinery/button/door{ @@ -17316,20 +17253,21 @@ name = "Secondary Heatsink"; req_one_access_txt = "10;24" }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "jgw" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/durasteel/techfloor, -/area/engine/gravity_generator) +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/atmos) "jgE" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden/layer2{ dir = 4 @@ -17432,12 +17370,10 @@ /turf/open/floor/monotile/steel, /area/crew_quarters/heads/captain) "jiC" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, /obj/effect/landmark/nuclear_waste_spawner, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "jiD" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/cyan{ icon_state = "1-2" }, @@ -17447,6 +17383,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "jiN" = ( @@ -17465,9 +17402,10 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons) "jiZ" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, /obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/engine, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/turf/open/floor/plating, /area/engine/atmos) "jjh" = ( /obj/effect/decal/cleanable/dirt/dust, @@ -17498,23 +17436,28 @@ /turf/open/floor/monotile/steel, /area/science/robotics/mechbay) "jkf" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/effect/turf_decal/ship/shutoff, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/stripes/corner{ dir = 1 }, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/maintenance/nsv/deck2/frame3/central) +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engine_smes) "jks" = ( -/obj/effect/turf_decal/ship/techfloor{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - filter_types = list("nucleium"); - name = "Nucleium Scrubber" - }, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/engineering/reactor_core) +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "jkD" = ( /obj/structure/cable{ icon_state = "4-8" @@ -17719,6 +17662,7 @@ /obj/structure/cable/cyan{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4, /turf/open/floor/plating, /area/engine/atmos) "jnS" = ( @@ -17736,12 +17680,14 @@ /turf/open/floor/monotile/dark, /area/science/robotics/mechbay) "jod" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/camera/autoname{ - dir = 1 +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/space/basic, -/area/maintenance/nsv/deck2/frame3/central) +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/turf/open/floor/plating, +/area/engine/atmos) "jox" = ( /turf/closed/wall/steel, /area/maintenance/nsv/deck2/frame1/port) @@ -17845,20 +17791,14 @@ /turf/open/floor/monotile/steel, /area/security/prison) "jqw" = ( -/obj/effect/turf_decal/tile/ship/half/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/ship/neutral{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 }, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/engineering/reactor_core) "jqU" = ( /obj/effect/turf_decal/loading_area, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -17986,9 +17926,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/structure/cable{ icon_state = "4-8" }, @@ -18015,12 +17952,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 10 - }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "jwv" = ( @@ -18041,23 +17973,20 @@ /turf/open/floor/monotile/dark, /area/nsv/briefingroom) "jwI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/tech/grid, -/area/medical/medbay) +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "jwN" = ( /obj/machinery/rnd/production/techfab/department/service, /turf/open/floor/monotile/dark, /area/janitor) "jxx" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/portables_connector/layer2{ - dir = 1 - }, /obj/machinery/light{ dir = 1 }, -/obj/machinery/portable_atmospherics/canister/nucleium, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "jxG" = ( @@ -18074,6 +18003,16 @@ /obj/machinery/computer/shuttle_flight/labor{ dir = 4 }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8"; + tag = "" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/durasteel/lino, /area/security/processing) "jyp" = ( @@ -18116,8 +18055,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 6 }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) @@ -18212,7 +18151,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ id = "nuclear_mix_in_3" }, -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engineering/reactor_core) "jBK" = ( /obj/machinery/computer/station_alert{ @@ -18286,7 +18225,6 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/central) "jCY" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, @@ -18297,6 +18235,7 @@ dir = 4 }, /obj/structure/extinguisher_cabinet/north, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "jDy" = ( @@ -18359,6 +18298,9 @@ icon_state = "2-4" }, /obj/structure/lattice/catwalk/over/ship, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, /turf/open/floor/engine, /area/engine/engineering/ftl_room) "jFM" = ( @@ -18427,12 +18369,7 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer2{ dir = 1 }, -/obj/machinery/meter/atmos/distro_loop{ - pixel_x = -6; - pixel_y = -6; - target_layer = 2 - }, -/turf/open/floor/monotile/steel/airless, +/turf/open/floor/engine/airless, /area/maintenance/nsv/deck2/frame4/port) "jHy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -18442,9 +18379,6 @@ }) "jHB" = ( /obj/effect/landmark/start/chief_engineer, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/monotile/dark, @@ -18502,13 +18436,6 @@ /area/crew_quarters/bar{ name = "Night Club" }) -"jJv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/monotile/steel, -/area/maintenance/nsv/deck2/frame3/port) "jJy" = ( /turf/closed/wall/steel, /area/storage/primary) @@ -18620,13 +18547,6 @@ /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) -"jMd" = ( -/obj/item/banner, -/obj/structure/peacekeeper_barricade/metal{ - dir = 1 - }, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) "jMg" = ( /obj/machinery/suit_storage_unit/engine, /obj/machinery/door/window/northleft{ @@ -18715,6 +18635,9 @@ /area/medical/medbay) "jNY" = ( /mob/living/simple_animal/parrot/Poly, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, /turf/open/floor/carpet/orange, /area/crew_quarters/heads/chief) "jNZ" = ( @@ -18781,12 +18704,9 @@ /turf/open/floor/plating, /area/bridge/showroom/corporate) "jPl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/closet/secure_closet/atmospherics, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plating, -/area/engine/atmos) +/area/maintenance/nsv/deck2/frame5/port) "jPn" = ( /obj/machinery/paystand, /obj/machinery/computer/ship/viewscreen, @@ -18814,15 +18734,15 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/advanced_airlock_controller/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/monotile/dark, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "jQg" = ( /obj/effect/turf_decal/box, /obj/machinery/portable_atmospherics/canister/water_vapor, @@ -18865,14 +18785,12 @@ /turf/open/floor/noslip/dark, /area/maintenance/nsv/bunker) "jRv" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4, -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer4{ +/obj/effect/turf_decal/ship/techfloor{ dir = 4 }, -/turf/open/space/basic, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "jRM" = ( /obj/effect/turf_decal/tile/ship/yellow, @@ -18916,18 +18834,6 @@ }, /turf/open/floor/monotile/steel, /area/nsv/weapons/gauss/battery) -"jSQ" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 15; - id = "arrivals_stationary"; - name = "arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/box; - width = 7 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) "jTc" = ( /obj/structure/chair/office/light{ dir = 1 @@ -18936,19 +18842,10 @@ /area/nsv/weapons/fore{ name = "Artillery Bay" }) -"jTi" = ( -/obj/machinery/camera/autoname{ - dir = 4 - }, -/turf/open/floor/engine, -/area/maintenance/nsv/deck2/frame3/port) "jTW" = ( /obj/effect/turf_decal/stripes/end{ dir = 1 }, -/obj/structure/cable/orange{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, @@ -18991,22 +18888,12 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "jUI" = ( -/obj/structure/cable/orange, -/obj/structure/cable/orange{ - icon_state = "5-8" - }, -/obj/structure/cable/orange{ - icon_state = "4-9" - }, -/obj/structure/cable/orange{ - icon_state = "1-4" - }, -/obj/structure/cable/orange{ - icon_state = "1-8" - }, /obj/machinery/armour_plating_nanorepair_well{ apnw_id = "pegasusmain" }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, /turf/open/floor/durasteel/techfloor, /area/engine/armour_pump) "jUY" = ( @@ -19031,6 +18918,13 @@ /obj/item/stack/rods, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) +"jWe" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/dark, +/area/security/processing) "jWg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -19182,6 +19076,9 @@ /obj/effect/turf_decal/tile/ship/half/red{ dir = 1 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, /area/security/prison) "kbe" = ( @@ -19379,12 +19276,11 @@ /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame1/port) "khz" = ( -/obj/machinery/suit_storage_unit/radsuit, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel/lino, -/area/engine/engineering/reactor_control) +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, +/obj/effect/turf_decal/stripes/line, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/atmos) "khM" = ( /obj/structure/table/reinforced, /obj/item/switchblade/kitchen, @@ -19484,12 +19380,11 @@ /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) "kkm" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/turf/open/space/basic, -/area/engine/atmospherics_engine) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "kks" = ( /obj/machinery/door/poddoor/ship{ dir = 4; @@ -19613,7 +19508,9 @@ /area/science/nsv/astronomy) "kmw" = ( /obj/effect/landmark/nuclear_waste_spawner, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "kmx" = ( @@ -19657,6 +19554,16 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) +"knD" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/security/processing) "knF" = ( /obj/effect/spawner/room/fivexfour, /turf/template_noop, @@ -19674,9 +19581,6 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 6 }, -/obj/structure/cable/orange{ - icon_state = "1-6" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, @@ -19804,11 +19708,14 @@ /turf/open/floor/engine/airless, /area/nsv/magazine/starboard) "krk" = ( -/obj/machinery/light{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "krJ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -19821,12 +19728,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 10 - }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "krP" = ( @@ -19834,6 +19736,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/dark, /area/security/brig) "ksb" = ( @@ -19842,9 +19750,6 @@ /area/bridge/showroom/corporate) "kse" = ( /obj/machinery/atmospherics/pipe/simple/general/visible/layer2, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 5 }, @@ -19924,12 +19829,6 @@ }, /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) -"kuG" = ( -/obj/machinery/camera/autoname{ - dir = 8 - }, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) "kuI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 @@ -19966,8 +19865,7 @@ /area/nsv/briefingroom) "kwp" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "kwF" = ( @@ -20039,6 +19937,12 @@ req_one_access_txt = "4" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/dark, /area/security/detectives_office) "kyv" = ( @@ -20068,24 +19972,17 @@ /obj/structure/railing{ dir = 4 }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "kzN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, +/obj/effect/turf_decal/stripes/line, /obj/structure/lattice/catwalk/over/ship, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/monotile/dark, -/area/hallway/nsv/deck2/primary) +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/plating, +/area/engine/atmos) "kzV" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -20125,18 +20022,8 @@ /turf/open/floor/monotile/steel, /area/hydroponics) "kAU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/ship/maintenance{ - req_access_txt = "10" - }, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/plating, +/obj/machinery/pipedispenser/disposal, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "kBi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -20233,17 +20120,13 @@ /turf/open/floor/monotile/dark, /area/maintenance/nsv/bunker) "kDW" = ( -/obj/effect/turf_decal/tile/ship/green{ +/obj/machinery/atmospherics/components/unary/portables_connector/layer2{ dir = 1 }, -/obj/effect/turf_decal/tile/ship/green{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel, -/area/hallway/nsv/deck2/primary) +/obj/item/wrench, +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "kEG" = ( /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame4/starboard) @@ -20269,18 +20152,18 @@ /obj/item/clothing/head/hardhat{ pixel_y = 8 }, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/cyan, +/obj/item/inducer, /turf/open/floor/carpet/green, /area/engine/engineering/reactor_control) "kEZ" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 9 - }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "kFf" = ( @@ -20355,8 +20238,11 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/turnstile{ - dir = 4 +/obj/machinery/door/airlock/ship/security/glass{ + req_one_access_txt = "2" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 }, /turf/open/floor/monotile/steel, /area/security/prison) @@ -20406,15 +20292,14 @@ /turf/open/floor/monotile/steel, /area/quartermaster/lobby) "kIx" = ( -/obj/machinery/computer{ - desc = "A computer used in training strike teams"; - dir = 4; - icon_keyboard = "helm_key"; - icon_screen = "helm"; - name = "dummy helm computer" +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "kIJ" = ( /obj/effect/turf_decal/tile/ship/half/red, /obj/machinery/camera/autoname, @@ -20462,16 +20347,6 @@ /obj/effect/landmark/start/pilot, /turf/open/floor/monotile/steel, /area/nsv/hanger/notkmcstupidhanger) -"kLg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/atmos) "kLj" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, /obj/machinery/light/small{ @@ -20516,6 +20391,9 @@ dir = 8 }, /obj/structure/extinguisher_cabinet/south, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/carpet/ship, /area/security/detectives_office) "kLL" = ( @@ -20527,6 +20405,12 @@ }, /turf/open/floor/monotile/light, /area/medical/medbay) +"kLX" = ( +/obj/structure/sign/ship/nosmoking{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering/reactor_control) "kLY" = ( /obj/structure/table, /obj/item/circuitboard/machine/pacman, @@ -20596,6 +20480,9 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 4 }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "kOn" = ( @@ -20631,9 +20518,6 @@ }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) "kOO" = ( @@ -20659,9 +20543,6 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/grille/broken, /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance/three, @@ -20750,6 +20631,16 @@ /obj/machinery/light, /turf/open/floor/plasteel/grid/techfloor/grid, /area/engine/engineering/ftl_room) +"kSP" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/ship/preopen{ + id = "briglockdown" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/security/prison) "kSZ" = ( /obj/structure/sign/ship/nosmoking, /turf/closed/wall/r_wall, @@ -20761,11 +20652,10 @@ /turf/closed/wall/r_wall, /area/engine/engine_smes) "kTl" = ( -/obj/structure/frame/machine/ship_weapon, -/obj/machinery/camera/autoname{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, +/obj/machinery/door/airlock/ship/maintenance/defaultaccess, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "kUx" = ( /obj/structure/closet/radiation, @@ -20798,6 +20688,9 @@ /obj/effect/turf_decal/tile/ship/half/red{ dir = 4 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/dark, /area/security/prison) "kVD" = ( @@ -20899,11 +20792,11 @@ /turf/open/floor/monotile/steel, /area/science/nsv/astronomy) "kXb" = ( -/obj/machinery/modular_computer/console/preset/engineering{ +/obj/structure/cable/yellow, +/obj/machinery/computer/monitor{ dir = 4; - name = "reactor #1 engineering console" + name = "Defensive Reactor power monitoring console" }, -/obj/structure/cable/yellow, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) "kXY" = ( @@ -20921,12 +20814,12 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/port) "kYS" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/camera/autoname{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/meter/atmos, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "kYT" = ( @@ -20987,6 +20880,9 @@ /obj/structure/cable{ icon_state = "1-4" }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/steel, /area/security/prison) "laI" = ( @@ -21029,7 +20925,6 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 9 }, -/obj/machinery/atmospherics/pipe/manifold4w/green/visible, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "lbY" = ( @@ -21086,18 +20981,21 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/airalarm/directional/north, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 10 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "ldo" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, /obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer2{ dir = 8 }, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "ldt" = ( @@ -21202,15 +21100,15 @@ /turf/open/floor/carpet/ship, /area/shuttle/turbolift/quaternary) "lgy" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/durasteel/techfloor, /area/engine/gravity_generator) "lgJ" = ( @@ -21224,6 +21122,9 @@ "lgX" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/violet/visible/layer4, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/plating, /area/engine/atmos) "lhh" = ( @@ -21251,18 +21152,17 @@ name = "Night Club" }) "lic" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/violet/visible/layer4{ + dir = 4 }, -/obj/effect/turf_decal/ship/techfloor{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +/obj/structure/cable/cyan{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/atmos) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/engineering) "lis" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/closed/wall/r_wall, @@ -21276,7 +21176,8 @@ }, /obj/machinery/atmospherics/components/binary/pump/rbmk_input{ dir = 4; - id = "rbmk2_input" + id = "rbmk2_input"; + name = "AGCNR Coolant Input" }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) @@ -21309,16 +21210,18 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons) "liY" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/camera/autoname{ + dir = 4 }, -/turf/open/floor/durasteel, -/area/maintenance/nsv/deck2/frame5/starboard) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "liZ" = ( /obj/effect/turf_decal/ship/techfloor{ dir = 6 }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering) "ljh" = ( @@ -21350,6 +21253,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, /area/security/brig) "llu" = ( @@ -21388,15 +21294,10 @@ /obj/structure/stairs, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) -"lmn" = ( -/obj/machinery/computer/ship/viewscreen, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) "lms" = ( /obj/structure/table/reinforced, /obj/machinery/computer/reactor/stats{ - name = "Reactor 1 Statistics Console" + name = "Defensive Reactor Statistics Console" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -21614,8 +21515,8 @@ /turf/open/floor/plating, /area/maintenance/disposal) "lsg" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible, /obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "lsl" = ( @@ -21653,15 +21554,11 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) "lsV" = ( -/obj/item/target/syndicate{ - name = "stupid marine" - }, -/obj/structure/target_stake, -/obj/structure/peacekeeper_barricade/metal{ - dir = 1 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame5/port) "lsY" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/eastright{ @@ -21697,7 +21594,7 @@ "ltv" = ( /obj/structure/gulag_beacon, /turf/open/floor/plating, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "ltA" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 @@ -21756,13 +21653,13 @@ /turf/open/floor/monotile/dark, /area/medical/medbay/lobby) "luu" = ( -/obj/structure/cable{ - icon_state = "5-8" - }, /obj/structure/cable{ icon_state = "2-8"; tag = "" }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) "luy" = ( @@ -21859,29 +21756,25 @@ /turf/open/floor/monotile/steel, /area/medical/medbay) "lxA" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/engine, /area/engine/engineering/ftl_room) "lxL" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 8 }, -/turf/open/floor/engine, -/area/engine/engineering/reactor_core) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "lxR" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/machinery/meter, -/turf/open/floor/monotile/dark, -/area/engine/atmospherics_engine) +/obj/effect/turf_decal/stripes/line, +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/armour_pump) "lxT" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -21899,6 +21792,18 @@ }, /turf/open/floor/monotile/dark, /area/nsv/weapons) +"lyj" = ( +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/airlock/ship/security/glass{ + req_one_access_txt = "2" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/security/prison) "lyA" = ( /obj/effect/turf_decal/ship/techfloor{ dir = 1 @@ -21909,13 +21814,14 @@ /turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "lyH" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/light{ - dir = 1 +/obj/structure/cable/cyan{ + icon_state = "1-4" }, -/turf/open/floor/plating, -/area/engine/atmos) +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/durasteel/lino, +/area/engine/engineering/reactor_control) "lzF" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -21974,17 +21880,9 @@ name = "Night Club" }) "lBb" = ( -/obj/effect/turf_decal/tile/ship/half/neutral{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/engine/atmos) "lBi" = ( /obj/structure/closet/secure_closet/hydroponics, /turf/open/floor/wood, @@ -22028,7 +21926,6 @@ }, /area/maintenance/nsv/deck2/frame4/port) "lDc" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-4" @@ -22036,6 +21933,10 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "lDd" = ( @@ -22180,12 +22081,11 @@ /turf/closed/wall/r_wall, /area/maintenance/nsv/deck2/frame2/port) "lGf" = ( -/obj/effect/turf_decal/ship/delivery/yellow, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "lGr" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -22270,6 +22170,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, /turf/open/floor/monotile/dark, /area/maintenance/nsv/bunker) "lHY" = ( @@ -22358,16 +22261,14 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame4/starboard) "lJM" = ( -/obj/structure/fluff/support_beam{ - color = "#787878" - }, -/obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /obj/effect/landmark/zebra_interlock_point, -/obj/structure/cable/orange{ - icon_state = "0-2" +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/door_assembly/door_assembly_mai, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) "lJN" = ( @@ -22499,10 +22400,10 @@ /area/engine/engineering/reactor_core) "lNK" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/layer_manifold/visible, /obj/machinery/light{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "lNN" = ( @@ -22565,8 +22466,11 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "lOL" = ( /obj/structure/fluff/bus/dense, /turf/open/floor/plating, @@ -22575,15 +22479,22 @@ /turf/closed/wall/steel, /area/nsv/briefingroom) "lPI" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) +"lPR" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) "lPX" = ( /obj/structure/chair/fancy/sofa/old/left{ dir = 8 @@ -22641,7 +22552,6 @@ /turf/open/floor/wood, /area/maintenance/nsv/deck2/frame5/starboard) "lRf" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, @@ -22717,9 +22627,6 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/grille, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) @@ -22732,15 +22639,6 @@ }, /turf/open/floor/plasteel/tech/grid, /area/medical/medbay) -"lTM" = ( -/obj/machinery/door/airlock/ship/security{ - name = "Marine Assault Course" - }, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) "lTU" = ( /obj/item/fuel_rod, /obj/effect/overlay/poolwater, @@ -22761,6 +22659,9 @@ name = "Bunker Access Button"; pixel_x = 25 }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/maintenance/nsv/bunker) "lUd" = ( @@ -22806,6 +22707,7 @@ /obj/machinery/camera/autoname{ dir = 8 }, +/obj/machinery/recharge_station, /turf/open/floor/monotile/dark, /area/crew_quarters/bar{ name = "Night Club" @@ -22819,6 +22721,10 @@ /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, /turf/open/floor/plating, /area/engine/atmos) "lVD" = ( @@ -22836,9 +22742,13 @@ /area/nsv/weapons) "lWs" = ( /obj/machinery/door/airlock/ship/external/glass{ - name = "Labour Camp Shuttle Dock" + name = "Labour Camp Shuttle Dock"; + req_one_access_txt = "2" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable{ + icon_state = "0-2" + }, /turf/open/floor/monotile/dark, /area/security/processing) "lWv" = ( @@ -22877,8 +22787,9 @@ /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) "lWW" = ( -/obj/structure/extinguisher_cabinet/north, -/turf/open/floor/mineral/plastitanium, +/obj/machinery/power/apc/auto_name/west, +/obj/structure/cable, +/turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "lXd" = ( /obj/structure/fluff/support_beam{ @@ -22894,6 +22805,7 @@ dir = 4 }, /obj/structure/lattice/catwalk/over/ship, +/obj/machinery/light, /turf/open/floor/plating, /area/engine/engineering) "lXq" = ( @@ -22982,6 +22894,9 @@ dir = 8 }, /obj/structure/lattice/catwalk/over/ship, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "lZR" = ( @@ -23007,11 +22922,11 @@ /area/engine/engineering/ftl_room) "mbP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4, /obj/structure/cable{ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "mbU" = ( @@ -23055,9 +22970,6 @@ /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/engine, /area/engine/engineering/reactor_core) "mdA" = ( @@ -23119,31 +23031,15 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 8 - }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) -"mgF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/atmos) "mgI" = ( /turf/open/floor/carpet/ship/blue, /area/shuttle/turbolift/secondary) "mhn" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/table, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "mhv" = ( @@ -23214,6 +23110,8 @@ dir = 1 }, /obj/item/radio/intercom/directional/south, +/obj/machinery/fax, +/obj/structure/table, /turf/open/floor/monotile/steel, /area/security/brig) "mjH" = ( @@ -23410,7 +23308,7 @@ }, /obj/machinery/computer/reactor/pump/rbmk_output{ id = "rbmk2_output"; - name = "Reactor 2 output valve computer" + name = "Utility Reactor output valve computer" }, /obj/structure/cable/cyan{ icon_state = "1-2" @@ -23506,9 +23404,8 @@ /obj/effect/turf_decal/tile/ship/full/blue, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 4; - freq = 1400; - location = "Munitions" + location = "Munitions"; + name = "navigation beacon (Munitions Delivery)" }, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/primary) @@ -23539,8 +23436,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "mrz" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input, /obj/machinery/atmospherics/pipe/simple/general/visible/layer2{ @@ -23559,13 +23456,11 @@ /turf/closed/wall/steel, /area/hallway/nsv/deck2/primary) "msa" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 9 }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame5/starboard) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "msf" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/orange{ @@ -23583,7 +23478,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ - icon_state = "1-10" + icon_state = "1-2" }, /turf/open/floor/monotile/steel, /area/nsv/weapons) @@ -23681,6 +23576,9 @@ /area/maintenance/nsv/deck2/frame5/starboard) "mtQ" = ( /obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "muk" = ( @@ -23787,6 +23685,13 @@ /obj/structure/ladder, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) +"mwX" = ( +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering/reactor_core) "mxh" = ( /obj/structure/cable/orange{ icon_state = "2-8" @@ -23842,18 +23747,14 @@ /turf/open/floor/monotile/dark, /area/quartermaster/lobby) "mzz" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, /obj/effect/turf_decal/stripes/line, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "mzE" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/airlock/ship/maintenance/defaultaccess, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "mAb" = ( @@ -23980,7 +23881,7 @@ "mCa" = ( /obj/structure/table/reinforced, /obj/machinery/computer/reactor/control_rods{ - name = "Reactor 1 Control rod management computer" + name = "Defensive Reactor Control rod management computer" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -24050,7 +23951,8 @@ /turf/open/floor/plasteel/techmaint, /area/science/lab) "mDN" = ( -/turf/open/floor/circuit/red/anim, +/obj/effect/spawner/room/tenxfive, +/turf/template_noop, /area/maintenance/nsv/deck2/frame3/port) "mDR" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ @@ -24066,7 +23968,7 @@ input_tag = "extra_4_input"; name = "Custom Tank 4 Control"; output_tag = "extra_4_output"; - sensors = list("extra_4_sensor"="Custom Tank 4") + sensors = list("extra_4_sensor"="Custom Tank 4") }, /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, @@ -24100,15 +24002,6 @@ /area/nsv/hanger{ name = "Dropship Bay" }) -"mEq" = ( -/obj/effect/turf_decal/ship/delivery{ - color = "#8B0000" - }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) "mEr" = ( /obj/machinery/door/airlock/highsecurity/ship{ id_tag = "muni_inner"; @@ -24133,6 +24026,15 @@ }, /turf/open/floor/plating, /area/mine/laborcamp) +"mEA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 8 + }, +/turf/open/floor/monotile/dark, +/area/mine/laborcamp) "mEB" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -24146,12 +24048,6 @@ }, /turf/open/floor/plating, /area/mine/laborcamp) -"mFa" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) "mFn" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -24260,6 +24156,9 @@ icon_state = "4-8" }, /obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/monotile/dark, /area/security/brig) "mIh" = ( @@ -24347,15 +24246,6 @@ }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) -"mJP" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/ship/half/neutral, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) "mJU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -24554,6 +24444,9 @@ }, /obj/structure/table/reinforced, /obj/item/radio/intercom/directional/south, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, /area/security/brig) "mPq" = ( @@ -24589,13 +24482,8 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame4/starboard) "mRc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/ship/techfloor, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +/obj/effect/turf_decal/ship/techfloor{ + dir = 1 }, /turf/open/floor/plasteel/ridged/steel, /area/engine/atmos) @@ -24705,9 +24593,6 @@ /obj/effect/turf_decal/ship/techfloor/corner{ dir = 1 }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "mTG" = ( @@ -24814,19 +24699,6 @@ }, /turf/open/floor/monotile/dark, /area/chapel/main) -"mZJ" = ( -/obj/machinery/door/poddoor/shutters/ship{ - id = "anatolydyatlov"; - name = "emergency meltdown supplies" - }, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/effect/landmark/zebra_interlock_point, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering/reactor_control) "mZS" = ( /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) @@ -24926,7 +24798,7 @@ /obj/machinery/camera/autoname{ dir = 1 }, -/turf/open/floor/carpet/green, +/turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) "ndj" = ( /obj/effect/turf_decal/stripes/corner, @@ -25032,6 +24904,9 @@ dir = 8 }, /obj/effect/landmark/start/security_officer, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, /area/security/brig) "ngz" = ( @@ -25125,7 +25000,7 @@ "nhK" = ( /obj/structure/chair/office, /obj/effect/landmark/start/munitions_tech, -/turf/open/floor/carpet/orange, +/turf/open/floor/monotile/dark, /area/nsv/weapons) "nhM" = ( /turf/open/floor/plating{ @@ -25133,7 +25008,6 @@ }, /area/maintenance/nsv/deck2/frame2/starboard) "nhO" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/decal/cleanable/dirt/dust, @@ -25170,7 +25044,7 @@ /obj/structure/table/reinforced, /obj/machinery/computer/reactor/pump/rbmk_input{ id = "rbmk2_input"; - name = "Reactor 2 inlet valve computer" + name = "Utility Reactor inlet valve computer" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -25325,11 +25199,18 @@ /turf/open/floor/plating, /area/engine/atmos) "nnR" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/floor/monotile/dark/airless, -/area/maintenance/nsv/deck2/frame4/port) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/engineering/reactor_core) "noI" = ( /obj/docking_port/stationary{ dwidth = 9; @@ -25349,7 +25230,8 @@ /turf/open/floor/monotile/steel, /area/nsv/weapons) "npk" = ( -/turf/open/floor/mineral/plastitanium/red, +/obj/effect/spawner/room/fivexthree, +/turf/template_noop, /area/maintenance/nsv/deck2/frame3/port) "npP" = ( /obj/effect/turf_decal/tile/ship/green, @@ -25386,16 +25268,6 @@ }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) -"nrA" = ( -/obj/effect/turf_decal/tile/ship/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/ship/yellow{ - dir = 4 - }, -/obj/structure/closet/radiation, -/turf/open/floor/durasteel/techfloor_grid, -/area/maintenance/nsv/deck2/frame5/port) "nsk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -25439,15 +25311,15 @@ /turf/closed/wall/r_wall, /area/engine/engineering/ftl_room) "nud" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/general/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/turf/open/floor/durasteel, -/area/maintenance/nsv/deck2/frame5/starboard) +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "nup" = ( /obj/machinery/conveyor{ dir = 9; @@ -25522,6 +25394,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "nvZ" = ( @@ -25571,17 +25447,8 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons) "nyt" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/machinery/power/smes/engineering{ - input_level_max = 500000; - name = "Armour Pump Super SMES"; - output_level_max = 500000 - }, -/obj/structure/cable/orange{ - icon_state = "0-4" +/obj/structure/cable/yellow{ + icon_state = "4-8" }, /turf/open/floor/durasteel/techfloor, /area/engine/armour_pump) @@ -25642,6 +25509,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "nAp" = ( @@ -25657,9 +25525,11 @@ /turf/open/floor/durasteel/lino, /area/mine/laborcamp) "nAr" = ( -/obj/structure/closet/crate/solarpanel_small, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/central) +/obj/machinery/atmospherics/components/binary/pump/layer2{ + dir = 1 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "nAw" = ( /obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment{ @@ -25714,15 +25584,9 @@ /area/maintenance/disposal) "nBv" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 8 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "nBz" = ( @@ -25738,15 +25602,18 @@ /turf/open/floor/plating, /area/hallway/nsv/deck2/primary) "nCo" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/camera/autoname, /obj/machinery/computer/ship/viewscreen, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "nCH" = ( @@ -25772,17 +25639,12 @@ /turf/open/floor/wood, /area/maintenance/nsv/deck2/frame5/starboard) "nDu" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 +/obj/structure/cable{ + icon_state = "2-8"; + tag = "" }, /turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame5/port) +/area/maintenance/nsv/deck2/frame1/starboard) "nDx" = ( /obj/effect/turf_decal/tile/ship/half/blue{ dir = 1 @@ -25853,7 +25715,7 @@ "nFZ" = ( /obj/structure/table/reinforced, /obj/machinery/computer/reactor/pump/rbmk_input{ - name = "Reactor 1 inlet valve computer" + name = "Defensive Reactor inlet valve computer" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -25891,6 +25753,7 @@ /obj/machinery/light{ dir = 1 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "nHw" = ( @@ -25928,7 +25791,7 @@ /turf/open/floor/engine, /area/engine/engineering/ftl_room) "nIM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "nIW" = ( @@ -26353,10 +26216,8 @@ /area/maintenance/nsv/deck2/frame2/central) "nVs" = ( /obj/machinery/power/apc/auto_name/south, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/carpet/green, +/obj/structure/cable/cyan, +/turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) "nVx" = ( /turf/template_noop, @@ -26378,15 +26239,10 @@ /turf/open/floor/monotile/steel, /area/science/robotics/lab) "nWu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/lattice/catwalk/over/ship, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "nWz" = ( @@ -26419,7 +26275,7 @@ /obj/structure/table/reinforced, /obj/machinery/computer/reactor/control_rods{ id = "default_reactor_for_lazy_mappers2"; - name = "Reactor 2 Control rod management computer" + name = "Utility Reactor Control rod management computer" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -26579,16 +26435,17 @@ }, /area/mine/laborcamp) "ocx" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/ship/half/neutral, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 5 }, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/atmos) "ocD" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -26659,6 +26516,7 @@ dir = 10 }, /obj/effect/turf_decal/stripes/line, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "oeh" = ( @@ -26670,16 +26528,23 @@ /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "oep" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/carpet/orange, +/obj/machinery/door/window/brigdoor/westright{ + dir = 2; + req_one_access_txt = "69" + }, +/obj/effect/turf_decal/caution/stand_clear, +/turf/open/floor/monotile/dark, /area/nsv/weapons) "oeq" = ( -/obj/effect/turf_decal/ship/techfloor{ - dir = 10 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/engineering/reactor_core) +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/atmos) "oez" = ( /obj/effect/turf_decal/tile/ship/half/orange{ dir = 8 @@ -26700,6 +26565,14 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"oeU" = ( +/obj/structure/stairs{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/monotile/dark, +/area/science/nsv/astronomy) "oeW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -26909,6 +26782,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/durasteel/lino, /area/security/processing) "ojF" = ( @@ -26976,7 +26852,7 @@ /obj/structure/munitions_trolley, /obj/machinery/light, /obj/item/radio/intercom/directional/south, -/turf/open/floor/carpet/orange, +/turf/open/floor/monotile/dark, /area/nsv/weapons) "omb" = ( /obj/structure/lattice/catwalk/over/ship, @@ -27040,7 +26916,6 @@ /obj/structure/railing{ dir = 4 }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, @@ -27048,6 +26923,10 @@ dir = 10 }, /obj/machinery/firealarm/directional/north, +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/light{ + dir = 1 + }, /turf/open/floor/plating, /area/engine/engineering) "onW" = ( @@ -27090,9 +26969,7 @@ }) "opi" = ( /obj/machinery/power/apc/auto_name/south, -/obj/structure/cable{ - icon_state = "0-8" - }, +/obj/structure/cable/cyan, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/chief) "opl" = ( @@ -27141,10 +27018,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/extinguisher_cabinet/west, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/armour_pump) "oqG" = ( @@ -27265,20 +27142,24 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/carpet, /area/bridge/showroom/corporate) +"otB" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/brig) "otC" = ( /obj/machinery/computer/ship/viewscreen, /turf/open/floor/carpet/ship, /area/nsv/weapons) "otR" = ( -/obj/structure/window/reinforced{ +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/porta_turret/lasertag/red, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/engineering/reactor_core) "otS" = ( /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 4 @@ -27362,13 +27243,13 @@ /obj/structure/railing{ dir = 4 }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/violet/visible/layer4{ dir = 9 }, /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 9 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "ovo" = ( @@ -27387,24 +27268,19 @@ dir = 1 }, /obj/structure/cable{ - icon_state = "4-9" + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" }, /turf/open/floor/monotile/steel, /area/nsv/weapons) "ovz" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "ovX" = ( @@ -27479,6 +27355,9 @@ "oxL" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/dark, /area/security/processing) "oxS" = ( @@ -27556,18 +27435,13 @@ /turf/open/floor/carpet, /area/nsv/weapons) "ozI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/tile/ship/half/neutral{ - dir = 1 +/obj/machinery/door/airlock/ship/maintenance/defaultaccess{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) -"ozJ" = ( +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, /turf/open/floor/plating, -/area/crew_quarters/heads/chief) +/area/maintenance/nsv/deck2/frame3/port) "ozO" = ( /turf/open/floor/eighties, /area/crew_quarters/theatre) @@ -27585,7 +27459,7 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 4 }, -/turf/open/floor/plasteel/techmaint, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "oAw" = ( /obj/effect/turf_decal/tile/ship/green{ @@ -27622,9 +27496,6 @@ /obj/machinery/light/small{ brightness = 3 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) "oBh" = ( @@ -27675,15 +27546,6 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame4/starboard) -"oCV" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "5-6" - }, -/turf/open/floor/monotile/dark, -/area/nsv/weapons) "oCX" = ( /obj/structure/sign/ship/smoking{ dir = 4; @@ -27774,15 +27636,11 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ - dir = 10 - }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "2-8"; - tag = "" +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 }, /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, @@ -27865,6 +27723,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/open/floor/durasteel/techfloor, /area/engine/gravity_generator) "oGM" = ( @@ -28048,7 +27912,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /turf/open/floor/monotile/steel, @@ -28068,11 +27932,8 @@ name = "Artillery Bay" }) "oNh" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, /obj/structure/cable{ - icon_state = "6-9" + icon_state = "1-4" }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) @@ -28244,6 +28105,9 @@ /obj/structure/window/reinforced{ dir = 8 }, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/open/floor/monotile/light, /area/security/prison) "oSQ" = ( @@ -28292,15 +28156,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/door/airlock/ship/maintenance{ - name = "Atmospherics maintenance"; - req_one_access_txt = "24" +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/ship/engineering/glass{ + name = "Atmospherics Storage"; + req_one_access_txt = "10; 24" }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/area/engine/atmos) "oTH" = ( /turf/open/floor/carpet, /area/nsv/weapons) @@ -28333,11 +28197,9 @@ /turf/open/floor/plating, /area/engine/atmos) "oUu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/carpet/orange, -/area/nsv/weapons) +/obj/machinery/recharge_station, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame1/starboard) "oUy" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -28368,15 +28230,9 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 1 - }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "oVn" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ dir = 4 }, @@ -28384,8 +28240,8 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 5 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) @@ -28452,9 +28308,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "oWa" = ( /obj/structure/table/reinforced, /obj/item/storage/firstaid/fire, @@ -28479,7 +28334,7 @@ /obj/item/paper/monitorkey, /obj/item/clothing/glasses/meson, /obj/item/stamp/chief_engineer, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = 3 }, /obj/item/reagent_containers/pill/patch/silver_sulf, @@ -28534,7 +28389,17 @@ /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/airlock/ship/security/glass{ name = "Brig Infirmary"; - req_one_access_txt = list(2,34) + req_one_access_txt = "1" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "2-4" }, /turf/open/floor/monotile/dark, /area/security/prison) @@ -28545,25 +28410,6 @@ /area/nsv/weapons/fore{ name = "Artillery Bay" }) -"oYr" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/machinery/door/airlock/ship/engineering/glass{ - req_one_access_txt = "10;24" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/effect/landmark/zebra_interlock_point, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/atmos) "oYx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -28603,15 +28449,21 @@ /turf/open/floor/engine, /area/engine/engineering/reactor_core) "oZl" = ( -/obj/effect/turf_decal/ship/techfloor{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/light/small{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-8"; + tag = "" }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/atmos) +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/port) "oZB" = ( /obj/structure/chair/stool/bar, /obj/effect/landmark/start/assistant, @@ -28645,7 +28497,10 @@ name = "Reactor Control Station" }, /obj/effect/landmark/start/station_engineer, -/turf/open/floor/carpet/green, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) "pak" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -28664,15 +28519,6 @@ /obj/machinery/atmospherics/miner/oxygen, /turf/open/floor/engine/o2, /area/engine/atmos) -"pay" = ( -/obj/structure/lattice, -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/space/basic, -/area/space/nearstation) "paE" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/effect/turf_decal/tile/yellow{ @@ -28704,11 +28550,14 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/modular_computer/console/preset/engineering{ +/obj/item/radio/intercom/directional/north, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/obj/machinery/computer/monitor{ dir = 8; - name = "reactor #2 engineering console" + name = "Utility Reactor power monitoring console" }, -/obj/item/radio/intercom/directional/north, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) "pbw" = ( @@ -28905,7 +28754,10 @@ /turf/open/floor/carpet/green, /area/engine/engineering/reactor_control) "phI" = ( -/turf/open/floor/engine, +/obj/machinery/door/airlock/ship/maintenance/defaultaccess, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "pih" = ( /obj/structure/table/reinforced, @@ -28966,7 +28818,8 @@ dir = 8 }, /obj/machinery/door/airlock/ship/external/glass{ - name = "Labour Camp Shuttle Dock" + name = "Labour Camp Shuttle Dock"; + req_one_access_txt = "2" }, /obj/machinery/door/poddoor/preopen{ id = "labor"; @@ -28979,7 +28832,7 @@ dir = 8 }, /turf/open/floor/monotile/dark, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "pkt" = ( /obj/machinery/air_sensor/atmos{ id_tag = "nuclear_mix_sensor_1" @@ -29086,10 +28939,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/cyan{ icon_state = "4-8" }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "ppy" = ( @@ -29124,15 +28977,9 @@ /area/mine/laborcamp) "ppS" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 8 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "ppT" = ( @@ -29219,17 +29066,17 @@ /turf/open/floor/plating, /area/maintenance/nsv/bunker) "psA" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, /obj/machinery/firealarm/directional/north, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "psC" = ( @@ -29323,6 +29170,11 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "pui" = ( @@ -29360,9 +29212,12 @@ /turf/open/floor/monotile/steel, /area/security/prison) "puU" = ( -/obj/structure/grille, -/turf/open/floor/mineral/plastitanium, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/central) "puX" = ( /obj/machinery/conveyor{ dir = 8; @@ -29408,10 +29263,6 @@ name = "Night Club" }) "pvs" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, @@ -29459,12 +29310,12 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ - dir = 8 - }, /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "pxk" = ( @@ -29539,14 +29390,15 @@ /turf/open/floor/engine, /area/engine/atmos) "pyW" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, -/obj/structure/lattice/catwalk, /obj/machinery/camera/autoname{ dir = 4 }, -/turf/open/space/basic, +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "pzg" = ( /obj/effect/turf_decal/ship/delivery/yellow, @@ -29594,11 +29446,12 @@ }) "pCi" = ( /obj/machinery/atmospherics/components/binary/pump{ - dir = 8 + dir = 8; + name = "Custom to Utility Reactor" }, /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 8; - name = "custom to AGR#2" + name = "Custom to Defensive Reactor" }, /turf/open/floor/engine, /area/engine/atmos) @@ -29627,6 +29480,9 @@ }, /obj/structure/extinguisher_cabinet/north, /obj/machinery/vending/wardrobe/sec_wardrobe, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/steel, /area/security/brig) "pDe" = ( @@ -29727,6 +29583,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/dark, /area/security/brig) "pFB" = ( @@ -29809,11 +29668,9 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ - dir = 4 - }, /obj/machinery/atmospherics/components/binary/pump/rbmk_input{ - dir = 4 + dir = 4; + name = "AGCNR Coolant Input" }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) @@ -29832,6 +29689,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/monotile/dark, /area/security/prison) "pHK" = ( @@ -29857,6 +29717,17 @@ "pHZ" = ( /turf/closed/wall/steel, /area/quartermaster/warehouse) +"pIc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/monotile/dark, +/area/security/brig) "pIL" = ( /obj/machinery/computer/med_data{ dir = 8 @@ -29867,6 +29738,9 @@ dir = 4; nightshift_brightness = 1 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/carpet/red, /area/security/detectives_office) "pIO" = ( @@ -29923,6 +29797,13 @@ /obj/machinery/door/poddoor/shutters/ship/preopen{ id = "briglockdown" }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable, /turf/open/floor/plating, /area/security/prison) "pLC" = ( @@ -29940,17 +29821,11 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 6 - }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "pLN" = ( /obj/structure/lattice/catwalk/over/ship, -/obj/structure/closet/secure_closet/atmospherics, /obj/machinery/airalarm/directional/north, /turf/open/floor/plating, /area/engine/atmos) @@ -29972,11 +29847,8 @@ /turf/closed/wall/steel, /area/shuttle/turbolift/tertiary) "pMB" = ( -/obj/structure/frame/machine/ship_weapon, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, +/obj/effect/spawner/room/threexthree, +/turf/template_noop, /area/maintenance/nsv/deck2/frame3/port) "pNo" = ( /obj/machinery/vending/cigarette{ @@ -30038,10 +29910,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) -"pPl" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer4, -/turf/closed/wall/r_wall, -/area/engine/atmos) "pPr" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law{ @@ -30058,14 +29926,9 @@ /turf/open/floor/carpet/red, /area/quartermaster/sorting) "pPM" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "5-10" - }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame1/starboard) +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4, +/turf/open/space/basic, +/area/space/nearstation) "pQp" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/light/small{ @@ -30146,11 +30009,14 @@ /turf/open/floor/carpet/purple, /area/crew_quarters/theatre) "pRT" = ( -/obj/machinery/light/small{ - dir = 4 +/obj/structure/cable/cyan{ + icon_state = "4-8" }, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/open/floor/carpet/green, +/area/engine/engineering/reactor_control) "pRU" = ( /obj/structure/closet/crate, /obj/item/ship_weapon/parts/missile/warhead/freight, @@ -30214,17 +30080,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/monotile/dark, /area/mine/laborcamp) -"pTF" = ( -/obj/machinery/power/smes/engineering{ - input_level_max = 500000; - name = "Armour Pump Super SMES"; - output_level_max = 500000 - }, -/obj/structure/cable/orange{ - icon_state = "0-8" - }, -/turf/open/floor/durasteel/techfloor, -/area/engine/armour_pump) "pUh" = ( /obj/structure/closet/crate, /obj/item/ship_weapon/ammunition/gauss, @@ -30304,12 +30159,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 6 - }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "pWe" = ( @@ -30351,11 +30201,15 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons) "pWW" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/disposalpipe/segment, +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 1 }, -/turf/open/floor/durasteel, -/area/maintenance/nsv/deck2/frame5/port) +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/port) "pXg" = ( /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) @@ -30488,7 +30342,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 5 }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) @@ -30518,17 +30372,24 @@ /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, /turf/open/floor/carpet/green, /area/engine/engineering/reactor_control) "qbE" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, -/obj/structure/lattice/catwalk, /obj/machinery/camera/autoname{ - dir = 8 + dir = 4 }, -/turf/open/space/basic, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "qcF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -30541,7 +30402,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 10 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "qdf" = ( @@ -30560,21 +30424,24 @@ /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/port) "qdg" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2{ - dir = 1 - }, /obj/effect/turf_decal/stripes/line, /obj/structure/cable/yellow{ - icon_state = "1-4" + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "qdA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible/layer4, /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "qec" = ( @@ -30631,13 +30498,8 @@ /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "qgS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/door/airlock/highsecurity/ship{ name = "Shield Relay Room"; req_one_access_txt = "10" @@ -30689,18 +30551,20 @@ /turf/open/floor/monotile/steel, /area/nsv/magazine/port) "qhY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, -/obj/structure/cable/yellow{ +/obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/lattice/catwalk/over/ship, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/plating, -/area/engine/armour_pump) +/area/maintenance/nsv/deck2/frame3/port) "qif" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -30710,9 +30574,6 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 1 - }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "qim" = ( @@ -30761,24 +30622,23 @@ /turf/open/floor/monotile/dark/airless, /area/space/nearstation) "qjh" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "qjj" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "6-9" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame1/starboard) +/area/engine/engineering/reactor_core) "qjl" = ( /obj/effect/turf_decal/tile/ship/half/orange, /turf/open/floor/monotile/steel, @@ -30811,11 +30671,6 @@ }, /turf/open/floor/durasteel/techfloor_grid, /area/maintenance/nsv/deck2/frame2/starboard) -"qks" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/turf/open/floor/mineral/plastitanium, -/area/maintenance/nsv/deck2/frame3/port) "qkL" = ( /obj/effect/turf_decal/tile/ship/green, /obj/effect/turf_decal/tile/ship/green{ @@ -30839,7 +30694,7 @@ /obj/machinery/power/apc/auto_name/north, /obj/item/storage/toolbox/electrical, /obj/item/radio/intercom/directional/south, -/obj/structure/cable{ +/obj/structure/cable/cyan{ icon_state = "0-4" }, /turf/open/floor/durasteel/techfloor_grid, @@ -31036,11 +30891,12 @@ /turf/template_noop, /area/maintenance/nsv/deck2/frame3/starboard) "qpH" = ( -/obj/machinery/pool_filter, -/obj/item/fuel_rod, -/obj/effect/overlay/poolwater, -/turf/open/indestructible/sound/pool/spentfuel/wall, -/area/engine/engineering/reactor_core) +/obj/structure/lattice/catwalk/over/ship, +/obj/structure/sign/ship/pods/west{ + pixel_y = 29 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/central) "qpW" = ( /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/starboard) @@ -31398,11 +31254,12 @@ /turf/closed/wall/r_wall, /area/maintenance/nsv/deck2/frame3/central) "qzw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/turf/open/floor/engine, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/engineering/reactor_core) "qzJ" = ( /obj/machinery/light, /obj/structure/cable{ @@ -31619,11 +31476,11 @@ /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) "qEQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "qFc" = ( @@ -31824,7 +31681,6 @@ /turf/open/floor/engine/airless, /area/engine/engineering/ftl_room) "qKF" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 @@ -31903,6 +31759,13 @@ /obj/structure/sign/ship/deck/two, /turf/closed/wall/r_wall, /area/maintenance/nsv/deck2/frame2/starboard) +"qMt" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/security/brig) "qMF" = ( /obj/effect/turf_decal/ship/delivery/yellow, /obj/effect/landmark/zebra_interlock_point, @@ -31981,6 +31844,24 @@ }, /turf/open/floor/plasteel/freezer, /area/security/prison) +"qPg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/monotile/dark, +/area/security/prison) "qPA" = ( /turf/closed/wall/r_wall, /area/maintenance/nsv/deck2/frame3/port) @@ -32070,6 +31951,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/spawner/lootdrop/grille_or_trash, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) "qTg" = ( @@ -32190,9 +32074,6 @@ /turf/open/floor/durasteel/lino, /area/maintenance/nsv/deck2/frame5/starboard) "qXl" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/monotile/dark, @@ -32325,13 +32206,16 @@ /turf/open/floor/monotile/steel, /area/storage/primary) "rbb" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/machinery/camera/autoname{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "rbi" = ( @@ -32341,9 +32225,6 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, @@ -32354,8 +32235,8 @@ name = "PDSR"; req_one_access_txt = "56" }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 }, /turf/open/floor/engine, /area/engine/engineering/reactor_core) @@ -32365,21 +32246,24 @@ }, /turf/open/floor/monotile/dark, /area/ai_monitored/security/armory/lockup) +"rbU" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/ship/preopen{ + id = "briglockdown" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/prison) "rbV" = ( /obj/structure/frame/machine, /turf/open/floor/durasteel/padded, /area/maintenance/nsv/deck2/frame1/port) "rck" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8; - filter_types = list("nucleium"); - name = "Nucleium Scrubber" +/obj/structure/cable/cyan{ + icon_state = "1-2" }, -/turf/open/floor/durasteel/techfloor_grid, -/area/engine/engineering/reactor_core) +/turf/open/floor/carpet/orange, +/area/crew_quarters/heads/chief) "rcD" = ( /obj/effect/turf_decal/tile/ship/half/green{ dir = 8 @@ -32479,15 +32363,14 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame4/port) "rfs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/floor/durasteel/techfloor_grid, -/area/engine/atmos) +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame1/starboard) "rgo" = ( /obj/structure/chair{ dir = 4 @@ -32495,18 +32378,8 @@ /turf/open/floor/carpet/ship, /area/medical/medbay) "rgw" = ( -/obj/machinery/door/airlock/ship/engineering/glass{ - name = "Secondary Heatsink"; - req_one_access_txt = "10;24" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/plating, -/area/engine/atmos) +/turf/open/floor/durasteel/lino, +/area/engine/engineering/reactor_control) "rgD" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -32520,13 +32393,6 @@ /obj/structure/table/reinforced, /turf/open/floor/durasteel/lino, /area/chapel/main) -"rgY" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/engine/atmos) "rhh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -32567,12 +32433,6 @@ }, /turf/open/floor/plasteel/techmaint, /area/medical/medbay) -"rih" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/atmos) "riC" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -32621,6 +32481,9 @@ /area/quartermaster/warehouse) "rjY" = ( /obj/item/kirbyplants/random, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/carpet/ship, /area/security/detectives_office) "rki" = ( @@ -32629,6 +32492,13 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) +"rks" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/security/brig) "rkV" = ( /obj/effect/turf_decal/tile/ship/full/blue, /turf/open/floor/monotile/dark, @@ -32668,7 +32538,7 @@ "rnr" = ( /obj/structure/table/reinforced, /obj/machinery/computer/reactor/pump/rbmk_output{ - name = "Reactor 1 output valve computer" + name = "Defensive Reactor output valve computer" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -32677,10 +32547,8 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1; - filter_types = list("nucleium"); - name = "Nucleium Scrubber" +/obj/structure/cable/cyan{ + icon_state = "4-8" }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) @@ -32718,6 +32586,16 @@ /area/nsv/weapons/fore{ name = "Artillery Bay" }) +"rot" = ( +/obj/effect/turf_decal/ship/delivery/yellow, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/dark, +/area/security/prison) "roE" = ( /obj/machinery/conveyor/slow{ id = "torp" @@ -32816,6 +32694,9 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 4 }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "rrK" = ( @@ -32907,14 +32788,17 @@ /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/starboard) "rtE" = ( -/obj/structure/peacekeeper_barricade/metal/plasteel/deployable{ - anchored = 1; - dir = 4 +/obj/machinery/door/airlock/ship/maintenance{ + req_access_txt = "12" }, -/obj/effect/turf_decal/ship/delivery/yellow, -/obj/structure/extinguisher_cabinet/south, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/bunker) "rtH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 @@ -32965,6 +32849,9 @@ dir = 8 }, /obj/machinery/vending/wardrobe/law_wardrobe, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/steel, /area/security/brig) "ruL" = ( @@ -32980,7 +32867,6 @@ /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering) "rvl" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/violet/visible/layer4{ dir = 4 }, @@ -32988,6 +32874,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "rvq" = ( @@ -33032,9 +32919,7 @@ /area/engine/atmospherics_engine) "rwy" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w/layer4, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "rwD" = ( @@ -33082,6 +32967,16 @@ /obj/machinery/turnstile{ dir = 1 }, +/obj/structure/cable{ + icon_state = "2-8"; + tag = "" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, /turf/open/floor/monotile/dark, /area/security/brig) "rxB" = ( @@ -33135,9 +33030,8 @@ "ryx" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 4; - freq = 1400; - location = "Medbay" + location = "Medbay"; + name = "navigation beacon (Medbay Delivery)" }, /obj/structure/plasticflaps/opaque, /turf/open/floor/plating, @@ -33185,15 +33079,31 @@ /obj/item/storage/toolbox/drone, /turf/open/floor/monotile/steel, /area/security/brig) -"rAZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small{ +"rAN" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/lattice/catwalk/over/ship, +/obj/structure/sign/ship/pods/east{ + pixel_y = 31 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) +"rAZ" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/engine_smes) "rBr" = ( /obj/structure/rack, /obj/item/storage/box/minertracker, @@ -33285,14 +33195,8 @@ /turf/open/floor/monotile/dark, /area/nsv/magazine/port) "rDP" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ - dir = 5 - }, -/obj/machinery/meter/atmos{ - target_layer = 1 - }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/cable/cyan{ + icon_state = "4-8" }, /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, @@ -33364,13 +33268,6 @@ /obj/machinery/computer/shuttle_flight/labor, /turf/open/floor/monotile/dark, /area/mine/laborcamp/security) -"rGE" = ( -/obj/effect/turf_decal/arrows/white{ - dir = 8 - }, -/obj/structure/lattice/catwalk/over/ship, -/turf/open/floor/plating, -/area/engine/atmos) "rGM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -33437,7 +33334,7 @@ /turf/open/floor/monotile/steel, /area/ai_monitored/security/armory/lockup) "rIP" = ( -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /obj/machinery/light{ dir = 8 }, @@ -33565,7 +33462,7 @@ /obj/structure/chair/office{ dir = 4 }, -/turf/open/floor/carpet/green, +/turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) "rKZ" = ( /obj/machinery/door/airlock/ship/external/glass{ @@ -33677,18 +33574,24 @@ /turf/closed/wall/r_wall, /area/medical/medbay) "rOC" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, -/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, -/area/engine/engineering/reactor_core) +/area/maintenance/nsv/deck2/frame5/port) "rOG" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer4{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/dark/visible/layer4, +/obj/machinery/door/airlock/ship/maintenance{ + name = "APNP Maintenance"; + req_one_access_txt = "10" }, -/turf/closed/wall/r_wall, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/turf/open/floor/plating, /area/engine/atmos) "rOH" = ( /obj/machinery/sleeper{ @@ -33896,6 +33799,9 @@ "rUG" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/airalarm/directional/east, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/engine/atmos) "rVw" = ( @@ -33929,6 +33835,10 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 10 + }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "rWh" = ( @@ -33956,6 +33866,9 @@ name = "Detective's Room"; req_one_access_txt = "4;2" }, +/obj/structure/cable{ + icon_state = "0-2" + }, /turf/open/floor/carpet/ship, /area/security/detectives_office) "rYP" = ( @@ -34018,8 +33931,8 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, /obj/machinery/light, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "sbX" = ( @@ -34184,14 +34097,6 @@ }, /turf/open/floor/eighties, /area/crew_quarters/theatre) -"sfd" = ( -/obj/structure/lattice, -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/space/basic, -/area/space/nearstation) "sfq" = ( /turf/open/floor/wood, /area/crew_quarters/theatre) @@ -34397,11 +34302,12 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame4/port) "slh" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2{ - dir = 1 - }, /obj/effect/turf_decal/stripes/line, /obj/structure/extinguisher_cabinet/north, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "slm" = ( @@ -34466,27 +34372,18 @@ /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame4/starboard) "sma" = ( -/obj/structure/closet{ - name = "blue team closet" - }, -/obj/item/clothing/suit/bluetag, -/obj/item/clothing/head/helmet/bluetaghelm, -/obj/item/gun/energy/laser/bluetag{ - desc = "A laser tag gun modelled after the sidearm of choice for security forces. It fires a harmless beam of energy at the target, and is intended to train new recruits."; - icon = 'nsv13/icons/obj/guns/projectile.dmi'; - icon_state = "commandglock"; - item_state = "glock"; - name = "M13 'Intar' training glock" - }, -/turf/open/floor/circuit, -/area/maintenance/nsv/deck2/frame3/port) +/obj/effect/turf_decal/stripes/line, +/obj/structure/sign/warning/pods, +/turf/closed/wall/steel, +/area/maintenance/nsv/deck2/frame3/central) "smb" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "smj" = ( @@ -34694,13 +34591,10 @@ /turf/open/floor/monotile/dark, /area/nsv/magazine/port) "sqr" = ( -/obj/machinery/door/airlock/ship/maintenance{ - name = "Marine Containment Maintenance"; - req_one_access_txt = "12" +/obj/machinery/power/apc/auto_name/west, +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "sqs" = ( @@ -34713,14 +34607,8 @@ /area/science/nsv/astronomy) "sqv" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/power/smes/engineering{ - input_level_max = 500000; - name = "Armour Pump Super SMES"; - output_level_max = 500000 - }, -/obj/structure/cable/orange{ - icon_state = "0-2" - }, +/obj/effect/turf_decal/ship/techfloor/corner, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/armour_pump) "sqB" = ( @@ -34837,15 +34725,14 @@ /turf/open/floor/plasteel/grid/steel, /area/quartermaster/storage) "ssF" = ( -/obj/machinery/computer{ - desc = "A computer used in training strike teams"; - dir = 4; - icon_keyboard = "helm_key"; - icon_screen = "tactical"; - name = "dummy helm computer" +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "ssU" = ( /obj/item/clothing/head/helmet/old, /turf/open/floor/durasteel/padded, @@ -34856,19 +34743,14 @@ }, /obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2, /obj/item/radio/intercom/directional/south, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "sty" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 5 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "stD" = ( @@ -34885,7 +34767,7 @@ input_tag = "extra_3_input"; name = "Custom Tank 3 Control"; output_tag = "extra_3_output"; - sensors = list("extra_3_sensor"="Custom Tank 3") + sensors = list("extra_3_sensor"="Custom Tank 3") }, /obj/structure/lattice/catwalk/over/ship, /obj/machinery/light{ @@ -34894,9 +34776,14 @@ /turf/open/floor/plating, /area/engine/atmos) "svy" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible, -/turf/closed/wall/r_wall, -/area/engine/engine_smes) +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "svB" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible/layer4{ dir = 4 @@ -34919,6 +34806,9 @@ /obj/structure/cable{ icon_state = "1-4" }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/dark, /area/security/brig) "svO" = ( @@ -34937,14 +34827,15 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 4 }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "swH" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, /obj/structure/cable{ - icon_state = "5-10" + icon_state = "1-8" }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) @@ -34955,8 +34846,8 @@ /turf/open/floor/monotile/dark, /area/maintenance/nsv/bunker) "sxg" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, /obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, +/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "sxs" = ( @@ -34974,6 +34865,7 @@ /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 }, +/obj/machinery/meter, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "sxF" = ( @@ -35109,14 +35001,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "sBd" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, @@ -35143,10 +35033,11 @@ "sDg" = ( /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 8; - name = "custom to AGR#2" + name = "Custom to Defensive Reactor" }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 8 + dir = 8; + name = "Custom to Utility Reactor" }, /obj/machinery/light{ dir = 4 @@ -35157,9 +35048,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 5 }, @@ -35174,7 +35062,7 @@ name = "AGCNR Coolant Outlet" }, /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ - dir = 4 + dir = 5 }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) @@ -35330,16 +35218,11 @@ name = "Artillery Bay" }) "sHb" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/layer2, -/obj/item/wrench, -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/plating, -/area/engine/atmos) -"sHc" = ( /obj/effect/turf_decal/stripes/line{ - dir = 6 + dir = 1 }, -/obj/machinery/pipedispenser, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "sHe" = ( @@ -35353,11 +35236,12 @@ "sHj" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; - name = "AGCNR Moderator Tank" + name = "Defensive Reactor Moderator Tank" }, /obj/structure/cable/cyan{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "sHr" = ( @@ -35396,9 +35280,8 @@ /obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; - dir = 8; - freq = 1400; - location = "Science" + location = "Science"; + name = "navigation beacon (Science Delivery)" }, /turf/open/floor/plating, /area/science/nsv/astronomy) @@ -35475,7 +35358,7 @@ icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 8 + dir = 10 }, /turf/open/floor/plating, /area/engine/atmos) @@ -35524,7 +35407,7 @@ "sKY" = ( /obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer2, /obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, +/turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "sLl" = ( /obj/structure/lattice/catwalk/over/ship, @@ -35538,6 +35421,9 @@ /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, /obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "sLR" = ( @@ -35600,6 +35486,13 @@ /obj/machinery/computer/security/labor{ dir = 4 }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8"; + tag = "" + }, /turf/open/floor/durasteel/lino, /area/security/processing) "sNe" = ( @@ -35635,6 +35528,9 @@ /area/quartermaster/sorting) "sOe" = ( /obj/machinery/atmospherics/components/binary/pump/layer4, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 8 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "sOh" = ( @@ -35750,8 +35646,14 @@ /turf/closed/wall/r_wall, /area/nsv/weapons) "sQO" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/layer2, -/obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "sQV" = ( @@ -35831,13 +35733,13 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/armour_pump) "sTl" = ( @@ -35846,12 +35748,25 @@ /obj/machinery/computer/ship/viewscreen, /turf/open/floor/plasteel/techmaint, /area/quartermaster/warehouse) +"sTs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/ship/pods/west{ + pixel_y = 32; + pixel_x = -33 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame2/starboard) "sTz" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/light{ dir = 8 }, /obj/item/kirbyplants/random, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "sTE" = ( @@ -35908,6 +35823,9 @@ /area/security/detectives_office) "sVx" = ( /obj/structure/disposalpipe/segment, +/obj/structure/sign/ship/pods{ + pixel_x = -33 + }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "sVX" = ( @@ -35942,10 +35860,11 @@ /turf/open/floor/monotile/dark, /area/nsv/briefingroom) "sWW" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "sXd" = ( @@ -36159,7 +36078,7 @@ /obj/structure/table/reinforced, /obj/machinery/computer/reactor/pump/rbmk_moderator{ id = "rbmk2_moderator"; - name = "Reactor 2 moderator valve computer" + name = "Utility Reactor moderator valve computer" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -36366,6 +36285,9 @@ /obj/item/seeds/carrot, /obj/item/seeds/glowshroom, /obj/item/reagent_containers/glass/bottle/nutrient/ez, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, /area/security/prison) "thQ" = ( @@ -36438,16 +36360,20 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame4/port) "tiT" = ( -/obj/machinery/light/small, -/turf/open/floor/mineral/plastitanium/red, -/area/maintenance/nsv/deck2/frame3/port) -"tjn" = ( -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, -/area/maintenance/nsv/deck2/frame5/port) +/area/maintenance/nsv/deck2/frame3/central) +"tjn" = ( +/obj/effect/spawner/room/fivexfour, +/turf/template_noop, +/area/maintenance/nsv/deck2/frame3/port) "tjs" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -36543,17 +36469,19 @@ dir = 4 }, /obj/machinery/meter/atmos, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 + }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "tlt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 +/obj/structure/table, +/obj/item/storage/box/smart_metal_foam, +/obj/machinery/light{ + dir = 1 }, -/turf/open/floor/monotile/steel, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "tlA" = ( /obj/item/cigbutt, /turf/open/floor/plating, @@ -36603,14 +36531,18 @@ name = "Security Equipment"; req_one_access_txt = "63" }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/monotile/dark, /area/security/brig) "tnn" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "munidelivery" - }, -/turf/open/floor/carpet/orange, -/area/nsv/weapons) +/obj/machinery/recharge_station, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame2/port) "tnr" = ( /obj/machinery/conveyor{ dir = 8; @@ -36625,10 +36557,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ +/obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 4 }, /turf/open/floor/durasteel/techfloor_grid, @@ -36701,10 +36633,13 @@ /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "toU" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 5 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/plasteel/ridged/steel, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "toX" = ( /obj/machinery/libraryscanner, @@ -36757,10 +36692,6 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/power/apc/auto_name/east, -/obj/structure/cable{ - icon_state = "0-8" - }, /turf/open/floor/plasteel/ridged/steel, /area/engine/atmos) "tqh" = ( @@ -36856,7 +36787,7 @@ /area/nsv/weapons) "ttl" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "ttq" = ( @@ -36865,24 +36796,6 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) -"tts" = ( -/obj/effect/turf_decal/ship/techfloor{ - dir = 8 - }, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/techmaint, -/area/engine/armour_pump) "ttC" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -36902,8 +36815,6 @@ /area/quartermaster/lobby) "tuh" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold, /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) @@ -37014,14 +36925,14 @@ /turf/open/floor/plating, /area/mine/laborcamp) "txy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/obj/structure/cable/orange{ - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) @@ -37077,11 +36988,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/carpet/red, /area/security/detectives_office) -"tzt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/techmaint, -/area/medical/medbay) "tAm" = ( /turf/closed/wall/r_wall, /area/shuttle/turbolift/primary) @@ -37144,12 +37050,21 @@ /obj/machinery/computer/ship/navigation/public, /turf/open/floor/monotile/dark, /area/maintenance/nsv/bunker) +"tDP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/dark, +/area/security/prison) "tEq" = ( /obj/effect/turf_decal/tile/ship/half/red{ dir = 1 }, /obj/structure/table, /obj/machinery/computer/libraryconsole/bookmanagement, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, /area/security/prison) "tEH" = ( @@ -37184,6 +37099,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "tFN" = ( @@ -37204,10 +37120,6 @@ }, /turf/open/floor/plating, /area/medical/chemistry) -"tGv" = ( -/obj/structure/rack, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/central) "tGE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/window/reinforced{ @@ -37236,18 +37148,21 @@ "tIA" = ( /obj/structure/table/reinforced, /obj/item/rcl/pre_loaded, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = 4; pixel_y = 5 }, /turf/open/floor/carpet/orange, /area/crew_quarters/heads/chief) "tIP" = ( -/obj/structure/table/wood/fancy/red, -/obj/effect/spawner/lootdrop/costume, -/obj/effect/spawner/lootdrop/gloves, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/portable_atmospherics/canister/air, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "tJd" = ( /obj/effect/turf_decal/tile/ship/half/orange{ dir = 4 @@ -37279,7 +37194,6 @@ /turf/open/floor/monotile/steel, /area/nsv/magazine/port) "tKa" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -37288,12 +37202,14 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "tKb" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 4; name = "PDSR Hot Bridge" @@ -37304,9 +37220,6 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "tKg" = ( @@ -37436,8 +37349,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "tNf" = ( /obj/structure/table/wood/fancy/purple, /obj/item/storage/fancy/coffee_cart_rack, @@ -37596,6 +37512,9 @@ dir = 10 }, /obj/structure/lattice/catwalk/over/ship, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "tQc" = ( @@ -37619,13 +37538,14 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "tQz" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/extinguisher_cabinet/east, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "tRc" = ( @@ -37713,7 +37633,7 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engineering/reactor_core) "tTF" = ( /obj/effect/spawner/room/threexfive, @@ -37756,11 +37676,16 @@ /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame4/starboard) "tUW" = ( -/obj/structure/sign/ship/shock{ - dir = 1 +/obj/structure/cable{ + icon_state = "2-8" }, -/turf/closed/wall/r_wall, -/area/engine/engine_smes) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine/airless, +/area/nsv/weapons/fore{ + name = "Artillery Bay" + }) "tVl" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/noslip/dark, @@ -37778,26 +37703,21 @@ /area/hallway/secondary/entry/arrivals) "tVZ" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 10 }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "tWc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 1 }, -/turf/open/floor/durasteel/techfloor_grid, -/area/engine/atmos) +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/port) "tWd" = ( /obj/machinery/atmospherics/components/trinary/filter/flipped{ dir = 4 @@ -37881,11 +37801,13 @@ /turf/open/floor/durasteel/lino, /area/mine/laborcamp) "tYo" = ( -/obj/machinery/light{ - dir = 1 +/obj/structure/lattice/catwalk/over/ship, +/obj/structure/cable{ + icon_state = "1-8" }, -/turf/open/floor/engine, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/recharge_station, +/turf/open/floor/plating, +/area/engine/atmos) "tYC" = ( /obj/structure/chair/stool, /obj/structure/disposalpipe/segment, @@ -37908,6 +37830,9 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/durasteel/lino, /area/security/processing) "tYK" = ( @@ -37947,10 +37872,11 @@ "tZd" = ( /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 8; - name = "CO2 to AGR#2" + name = "CO2 to Defensive Reactor" }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 8 + dir = 8; + name = "CO2 to Utility Reactor" }, /turf/open/floor/engine, /area/engine/atmos) @@ -37966,18 +37892,11 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/captain) -"tZJ" = ( -/obj/machinery/igniter/incinerator_atmos, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/engine/airless, -/area/engine/atmospherics_engine) "uaE" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ dir = 9 }, -/turf/open/floor/monotile/steel/airless, +/turf/open/floor/engine/airless, /area/maintenance/nsv/deck2/frame4/port) "ubm" = ( /obj/effect/turf_decal/stripes/line{ @@ -38059,13 +37978,14 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/carpet/ship/beige_carpet, /area/medical/medbay) -"ucW" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, +"udo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-4" }, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/atmos) +/turf/open/floor/plating, +/area/security/prison) "udK" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -38138,7 +38058,7 @@ dir = 1 }, /obj/machinery/light, -/turf/open/floor/monotile/steel/airless, +/turf/open/floor/engine/airless, /area/maintenance/nsv/deck2/frame4/port) "ueV" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -38167,14 +38087,8 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/port) "ufZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/tile/ship/half/neutral{ - dir = 1 - }, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/plasteel/techmaint, +/area/engine/armour_pump) "ugd" = ( /obj/structure/chair/fancy/gauss/east, /obj/machinery/light{ @@ -38183,9 +38097,11 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss/battery) "ugf" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/engine, -/area/maintenance/nsv/deck2/frame3/port) +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/atmos) "ugJ" = ( /obj/effect/turf_decal/tile/ship/green{ dir = 4 @@ -38197,16 +38113,18 @@ /turf/open/floor/durasteel, /area/hallway/nsv/deck2/primary) "uhc" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp_away"; - name = "labor camp"; - width = 9 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 }, -/turf/open/space/basic, -/area/space/nearstation) +/obj/machinery/door/airlock/ship/external/glass{ + name = "Labour Camp Shuttle Dock"; + req_one_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/mine/laborcamp) "uhj" = ( /obj/item/kirbyplants{ icon_state = "plant-02" @@ -38261,9 +38179,8 @@ /obj/structure/plasticflaps/opaque, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; - dir = 8; - freq = 1400; - location = "Bar" + location = "Bar"; + name = "navigation beacon (Bar Delivery)" }, /turf/open/floor/plating, /area/crew_quarters/bar{ @@ -38276,13 +38193,13 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/armour_pump) "uiK" = ( @@ -38314,13 +38231,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/carpet/ship, /area/security/detectives_office) "uje" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "ujh" = ( @@ -38352,6 +38271,19 @@ }, /turf/open/floor/engine/airless, /area/engine/atmos) +"ukf" = ( +/obj/effect/turf_decal/tile/ship/green, +/obj/effect/turf_decal/tile/ship/green{ + dir = 8 + }, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/structure/sign/ship/pods{ + pixel_y = -28 + }, +/turf/open/floor/durasteel, +/area/hallway/nsv/deck2/primary) "ukC" = ( /obj/effect/turf_decal/tile/ship/half/blue, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -38385,9 +38317,13 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ dir = 4 }, +/obj/machinery/atmospherics/components/binary/volume_pump/layer4{ + name = "Nucleium Tank Out"; + dir = 8 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "ulz" = ( @@ -38396,6 +38332,9 @@ name = "Pipe Control Station" }, /obj/effect/landmark/start/station_engineer, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, /turf/open/floor/carpet/green, /area/engine/engineering/reactor_control) "ulH" = ( @@ -38536,7 +38475,7 @@ /obj/machinery/door/firedoor/border_only/directional/west, /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/durasteel/techfloor_grid, -/area/maintenance/nsv/deck2/frame5/port) +/area/engine/atmos) "upZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -38730,17 +38669,19 @@ /obj/structure/cable{ icon_state = "2-8" }, +/obj/machinery/fax{ + name = "Science Fax Machine"; + fax_name = "Science" + }, /turf/open/floor/fakespace, /area/science/nsv/astronomy) "uuV" = ( -/obj/machinery/door/airlock/ship/public/glass{ - name = "Assault Course" +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/cyan{ + icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/plating, +/area/crew_quarters/heads/chief) "uvd" = ( /obj/structure/chair/stool, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -38804,30 +38745,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame3/central) -"uwC" = ( -/obj/effect/turf_decal/ship/delivery/yellow, -/obj/structure/table/reinforced, -/obj/item/gun/ballistic/automatic/peacekeeper{ - desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; - mag_type = /obj/item/ammo_box/magazine/toy/smg; - name = "'LV624' training pulse rifle" - }, -/obj/item/gun/ballistic/automatic/peacekeeper{ - desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; - mag_type = /obj/item/ammo_box/magazine/toy/smg; - name = "'LV624' training pulse rifle"; - pixel_y = 4 - }, -/obj/item/gun/ballistic/automatic/peacekeeper{ - desc = "An extremely accurate replica weapon which is used for training purposes. It's stamped with the logo of 'Ragnar Arms Depot'"; - mag_type = /obj/item/ammo_box/magazine/toy/smg; - name = "'LV624' training pulse rifle"; - pixel_y = 8 - }, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) "uwJ" = ( /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/port) @@ -38836,28 +38758,24 @@ /turf/open/floor/durasteel/lino, /area/maintenance/nsv/deck2/frame5/starboard) "uxg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/camera/autoname{ + dir = 1 }, -/turf/open/floor/monotile/steel, -/area/maintenance/nsv/deck2/frame3/port) +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/engineering) "uxo" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 9 - }, /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "uxx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/mineral/plastitanium, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plasteel/grid/steel, +/area/engine/atmos) "uxA" = ( /turf/open/floor/monotile/dark, /area/nsv/weapons/fore{ @@ -38865,9 +38783,6 @@ }) "uxJ" = ( /obj/structure/closet/radiation, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) "uxT" = ( @@ -38885,6 +38800,12 @@ name = "detective's office shutters" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/security/detectives_office) "uyK" = ( @@ -38939,17 +38860,11 @@ /turf/open/floor/engine, /area/engine/engineering/ftl_room) "uzD" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/machinery/light{ brightness = 3; bulb_vacuum_brightness = 2; nightshift_brightness = 1 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/starboard) "uzG" = ( @@ -39001,24 +38916,23 @@ /turf/open/floor/durasteel/techfloor_grid, /area/maintenance/nsv/deck2/frame5/port) "uAC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/door/airlock/ship/maintenance{ - name = "Atmospherics maintenance"; - req_one_access_txt = "24" - }, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/effect/landmark/zebra_interlock_point, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame5/port) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "uAZ" = ( /obj/effect/turf_decal/tile/ship/half/brown{ dir = 8 @@ -39035,8 +38949,9 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "uBl" = ( +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/engine/engineering/ftl_room) +/area/engine/engineering/reactor_control) "uBA" = ( /obj/structure/fluff/support_beam{ color = "#787878" @@ -39045,10 +38960,11 @@ /turf/open/floor/monotile/dark, /area/nsv/magazine/starboard) "uBR" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "uBV" = ( @@ -39113,6 +39029,9 @@ dir = 4 }, /obj/effect/landmark/start/security_officer, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/durasteel/lino, /area/security/processing) "uEH" = ( @@ -39196,20 +39115,18 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "uHf" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "1-4" }, -/obj/structure/cable{ - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/pipedispenser, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "uIf" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -39250,7 +39167,7 @@ dir = 4 }, /obj/machinery/light, -/turf/open/floor/monotile/steel/airless, +/turf/open/floor/engine/airless, /area/maintenance/nsv/deck2/frame4/port) "uIG" = ( /obj/structure/chair/office, @@ -39293,10 +39210,15 @@ /obj/structure/cable{ icon_state = "5-10" }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/steel, /area/security/processing) "uJH" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/ladder, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -39304,13 +39226,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "uJO" = ( /obj/structure/reagent_dispensers/watertank, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) "uKk" = ( @@ -39325,6 +39245,9 @@ "uKy" = ( /obj/structure/table/reinforced, /obj/item/paper_bin/construction, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, /turf/open/floor/carpet/green, /area/engine/engineering/reactor_control) "uKA" = ( @@ -39408,6 +39331,13 @@ pixel_x = 14; pixel_y = 8 }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8"; + tag = "" + }, /turf/open/floor/durasteel/lino, /area/security/processing) "uLW" = ( @@ -39423,12 +39353,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/light/small, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "uNV" = ( /obj/machinery/light/small{ dir = 1 @@ -39506,6 +39435,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/open/floor/monotile/dark, /area/security/brig) "uPb" = ( @@ -39598,9 +39530,12 @@ /turf/open/floor/carpet/ship/blue, /area/shuttle/turbolift/primary) "uQP" = ( -/obj/effect/turf_decal/ship/techfloor, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/machinery/defence_screen_relay{ + density = 0; + pixel_y = 30 + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 1 }, /turf/open/floor/plasteel/ridged/steel, /area/engine/atmos) @@ -39619,11 +39554,8 @@ /area/engine/gravity_generator) "uRN" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/portables_connector/layer2{ - dir = 1 - }, -/obj/item/wrench, -/obj/machinery/portable_atmospherics/canister/nucleium, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "uTr" = ( @@ -39725,9 +39657,6 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 10 }, -/obj/structure/cable/orange{ - icon_state = "1-10" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, @@ -39793,6 +39722,8 @@ /area/maintenance/nsv/deck2/frame2/port) "uWI" = ( /obj/item/radio/intercom/directional/south, +/obj/machinery/power/smes, +/obj/structure/cable, /turf/open/floor/durasteel/techfloor, /area/engine/gravity_generator) "uWX" = ( @@ -39854,13 +39785,13 @@ /turf/open/floor/engine, /area/engine/atmos) "uXU" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "uYe" = ( @@ -39890,23 +39821,22 @@ /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "uZo" = ( -/obj/structure/closet{ - name = "blue team closet" - }, -/obj/item/clothing/suit/bluetag, -/obj/item/clothing/head/helmet/bluetaghelm, -/obj/item/gun/energy/laser/bluetag{ - desc = "A laser tag gun modelled after the sidearm of choice for security forces. It fires a harmless beam of energy at the target, and is intended to train new recruits."; - icon = 'nsv13/icons/obj/guns/projectile.dmi'; - icon_state = "commandglock"; - item_state = "glock"; - name = "M13 'Intar' training glock" +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/machinery/computer/ship/viewscreen, -/turf/open/floor/circuit, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/plating, +/area/engine/engineering/reactor_core) "uZw" = ( /obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/monotile/dark, /area/security/processing) "uZM" = ( @@ -39966,14 +39896,14 @@ name = "Artillery Bay" }) "vbr" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) @@ -39983,7 +39913,7 @@ }, /obj/machinery/door/airlock/ship/maintenance{ name = "Engineering maintenance"; - req_access_txt = "10" + req_access_txt = "10; 24" }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, @@ -40006,6 +39936,10 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/cable{ + icon_state = "2-8"; + tag = "" + }, /turf/open/floor/monotile/dark, /area/security/brig) "vcg" = ( @@ -40030,9 +39964,8 @@ }, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 4; - freq = 1400; - location = "Kitchen" + location = "Kitchen"; + name = "navigation beacon (Kitchen Delivery)" }, /turf/open/floor/monotile/dark, /area/crew_quarters/bar{ @@ -40158,7 +40091,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/lattice/catwalk/over/ship, @@ -40199,6 +40135,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/open/floor/monotile/dark, /area/security/detectives_office) "vgl" = ( @@ -40243,10 +40182,7 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "vhF" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/techmaint, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "vhM" = ( /obj/structure/chair/fancy/bench/pew/right{ @@ -40274,6 +40210,9 @@ /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, /obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/open/floor/monotile/dark, /area/security/processing) "viF" = ( @@ -40343,11 +40282,7 @@ "vlg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/meter/atmos, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "vlP" = ( @@ -40359,32 +40294,26 @@ /area/security/brig) "vlZ" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/co2, -/obj/structure/cable{ - icon_state = "0-4" - }, /turf/open/floor/engine, /area/engine/atmos) "vmb" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 10 - }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "vmf" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "vmn" = ( @@ -40441,7 +40370,7 @@ /obj/machinery/camera/autoname{ dir = 1 }, -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engineering/reactor_core) "vok" = ( /obj/machinery/light{ @@ -40507,14 +40436,10 @@ /turf/open/floor/monotile/dark, /area/hallway/secondary/entry/arrivals) "vpX" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/power/apc/auto_name/north, -/obj/structure/cable{ - icon_state = "0-4" +/obj/structure/cable/yellow{ + icon_state = "0-2" }, -/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/engine, /area/engine/engineering/ftl_room) "vqf" = ( @@ -40542,9 +40467,14 @@ /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "vrs" = ( -/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/ship/pods/east{ + pixel_y = -29 + }, /turf/open/floor/plating, -/area/engine/engineering/ftl_room) +/area/maintenance/nsv/deck2/frame3/starboard) "vry" = ( /obj/structure/closet/secure_closet/hop, /obj/item/bedsheet/hop, @@ -40563,14 +40493,20 @@ /turf/open/floor/durasteel/lino, /area/maintenance/nsv/deck2/frame5/starboard) "vrC" = ( -/obj/effect/turf_decal/ship/techfloor{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/machinery/defence_screen_relay{ - density = 0; - pixel_y = 30 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, -/turf/open/floor/plasteel/ridged/steel, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/ship/maintenance{ + name = "Atmospherics maintenance"; + req_one_access_txt = "24" + }, +/turf/open/floor/plating, /area/engine/atmos) "vrQ" = ( /turf/closed/wall/r_wall, @@ -40603,14 +40539,6 @@ dir = 4 }, /area/chapel/main) -"vuc" = ( -/obj/effect/turf_decal/tile/ship/half/neutral, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/computer/ship/viewscreen, -/turf/open/floor/monotile/dark, -/area/maintenance/nsv/deck2/frame3/port) "vut" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -40618,11 +40546,22 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/port) +"vuy" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) "vuJ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/tech/grid, -/area/medical/medbay) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "vva" = ( /turf/open/floor/monotile/steel, /area/quartermaster/storage) @@ -40665,12 +40604,8 @@ /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "vwQ" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "2-4" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "vxh" = ( @@ -40811,6 +40746,9 @@ dir = 4 }, /obj/effect/landmark/start/station_engineer, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering) "vAJ" = ( @@ -40849,15 +40787,11 @@ /turf/open/floor/monotile/dark, /area/nsv/magazine/starboard) "vBp" = ( -/obj/structure/lattice/catwalk/over/ship, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/camera/autoname{ - dir = 8 +/obj/structure/cable/cyan{ + icon_state = "1-2" }, -/turf/open/floor/plating, -/area/engine/atmos) +/turf/open/floor/durasteel/lino, +/area/engine/engineering/reactor_control) "vBC" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/ship/preopen{ @@ -40940,21 +40874,13 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "vDu" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame5/starboard) -"vDw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/igniter/incinerator_atmos, +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/effect/turf_decal/ship/techfloor, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/atmos) +/obj/machinery/air_sensor/atmos/incinerator_tank, +/turf/open/floor/engine/airless, +/area/engine/atmospherics_engine) "vDz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -41010,11 +40936,12 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "vFe" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 4 }, -/turf/open/floor/monotile/steel/airless, -/area/maintenance/nsv/deck2/frame4/port) +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/turf/open/floor/engine/airless, +/area/engine/atmos) "vFi" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 8 @@ -41067,6 +40994,9 @@ id = "rbmk2_moderator"; name = "Moderator Inlet" }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engineering/reactor_core) "vGf" = ( @@ -41123,27 +41053,19 @@ /turf/open/floor/carpet/orange, /area/nsv/weapons) "vHr" = ( -/obj/structure/closet{ - name = "red team closet" - }, -/obj/item/clothing/suit/redtag, -/obj/item/clothing/head/helmet/redtaghelm, -/obj/item/gun/energy/laser/redtag{ - desc = "A laser tag gun modelled after the sidearm of choice for security forces. It fires a harmless beam of energy at the target, and is intended to train new recruits."; - icon = 'nsv13/icons/obj/guns/projectile.dmi'; - icon_state = "secglock"; - item_state = "glock"; - name = "M13 'Intar' training glock" +/obj/machinery/light/small{ + dir = 1 }, -/turf/open/floor/circuit/red/anim, +/turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/port) "vHu" = ( /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 8; - name = "n2 to AGR#2" + name = "N2 to Defensive Reactor" }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 8 + dir = 8; + name = "N2 to Utility Reactor" }, /turf/open/floor/engine, /area/engine/atmos) @@ -41180,13 +41102,20 @@ /area/hydroponics) "vIf" = ( /obj/machinery/door/airlock/ship/external/glass{ - name = "Labour Camp Shuttle Dock" + name = "Labour Camp Shuttle Dock"; + req_one_access_txt = "2" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, /turf/open/floor/monotile/dark, /area/security/processing) "vIn" = ( @@ -41234,13 +41163,14 @@ /obj/machinery/turnstile{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/monotile/steel, /area/security/prison) "vJF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ +/obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 10 }, /turf/open/floor/durasteel/techfloor_grid, @@ -41298,6 +41228,20 @@ }, /turf/closed/wall/r_wall, /area/engine/engineering/ftl_room) +"vLq" = ( +/obj/machinery/door/airlock/ship/external/glass{ + name = "Labour Camp Shuttle Dock" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/airlock/ship/external/glass{ + name = "Labour Camp Shuttle Dock"; + req_one_access_txt = "2" + }, +/turf/open/floor/monotile/dark, +/area/security/processing) "vLx" = ( /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 8 @@ -41319,15 +41263,9 @@ }) "vLO" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ - dir = 5 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) "vMJ" = ( @@ -41350,16 +41288,13 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "vNQ" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/effect/spawner/lootdrop/grille_or_trash, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) "vNT" = ( @@ -41385,7 +41320,7 @@ /obj/structure/table/reinforced, /obj/machinery/computer/reactor/fuel_rods{ id = "default_reactor_for_lazy_mappers2"; - name = "Reactor 2 Fuel Management Console" + name = "Utility Reactor Fuel Management Console" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -41446,6 +41381,14 @@ /obj/item/clothing/shoes/sandal, /turf/open/floor/wood, /area/maintenance/nsv/deck2/frame5/port) +"vRc" = ( +/obj/machinery/fax{ + name = "Cargo Fax Machine"; + fax_name = "Cargo" + }, +/obj/structure/table/reinforced, +/turf/open/floor/monotile/dark, +/area/quartermaster/lobby) "vRh" = ( /obj/structure/table, /obj/item/reagent_containers/food/snacks/mint, @@ -41456,9 +41399,9 @@ /obj/machinery/computer/atmos_control/tank/toxin_tank{ dir = 4; input_tag = "stormdrive_mix_in"; - name = "Secondary reactor Gas Tank Control"; + name = "Defense Reactor Gas Tank Control"; output_tag = "stormdrive_mix_out"; - sensors = list("stormdrive_mix_sensor"="Stormdrive Gas Mix Tank") + sensors = list("stormdrive_mix_sensor"="Stormdrive Gas Mix Tank") }, /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, @@ -41589,15 +41532,15 @@ /obj/structure/cable{ icon_state = "1-4" }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/monotile/dark, /area/security/brig) "vVn" = ( -/obj/structure/target_stake, -/obj/item/target/syndicate{ - name = "stupid marine" - }, -/turf/open/floor/engine, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/atmospherics/components/binary/pump/layer2, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "vVp" = ( /obj/structure/table, /obj/item/clothing/gloves/color/yellow, @@ -41606,7 +41549,6 @@ /turf/open/floor/monotile/steel, /area/storage/primary) "vVq" = ( -/obj/machinery/atmospherics/pipe/manifold4w/orange/visible/layer2, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -41615,6 +41557,11 @@ pixel_y = -6; target_layer = 2 }, +/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "vVx" = ( @@ -41646,7 +41593,6 @@ /turf/open/floor/monotile/dark, /area/crew_quarters/kitchen) "vWX" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/firealarm/directional/west, @@ -41689,6 +41635,14 @@ /obj/structure/cable/yellow, /turf/open/floor/plating, /area/bridge/showroom/corporate) +"vXy" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/reactor_core) "vXL" = ( /obj/structure/cable/orange{ icon_state = "2-8" @@ -41716,6 +41670,15 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/monotile/steel, /area/quartermaster/lobby) +"vZX" = ( +/obj/effect/turf_decal/tile/ship/half/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/security/processing) "wab" = ( /obj/machinery/computer/ship/munitions_computer/west{ dir = 4 @@ -41822,9 +41785,14 @@ /turf/open/floor/monotile/steel, /area/quartermaster/sorting) "wcs" = ( -/obj/machinery/computer/ship/viewscreen, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) +/obj/effect/turf_decal/tile/ship/half/orange{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/nsv/weapons) "wcI" = ( /obj/machinery/door/airlock/ship/maintenance{ name = "Atmospherics maintenance"; @@ -41882,12 +41850,13 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons) "weD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small{ + dir = 8; + pixel_y = 10 }, -/obj/machinery/suit_storage_unit/atmos, /turf/open/floor/plating, -/area/engine/atmos) +/area/maintenance/nsv/deck2/frame3/port) "wfi" = ( /obj/machinery/conveyor_switch/oneway{ id = "atlas_standardshell2"; @@ -41965,10 +41934,11 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) "wgW" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2{ - dir = 1 - }, /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "wha" = ( @@ -42040,18 +42010,6 @@ /obj/machinery/lazylift_button, /turf/closed/wall/r_wall, /area/shuttle/turbolift/secondary) -"wjt" = ( -/obj/structure/lattice, -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/space/basic, -/area/space/nearstation) "wjA" = ( /turf/closed/wall/steel, /area/hallway/nsv/deck2/primary) @@ -42179,14 +42137,6 @@ }, /turf/open/floor/plating, /area/engine/atmos) -"wnN" = ( -/obj/machinery/computer{ - desc = "A computer which models the IFF console found on all vessels."; - icon_screen = "iff"; - name = "dummy IFF console" - }, -/turf/open/floor/circuit/red/anim, -/area/maintenance/nsv/deck2/frame3/port) "wnT" = ( /turf/closed/wall/steel, /area/crew_quarters/bar{ @@ -42202,13 +42152,13 @@ /turf/open/floor/monotile/dark, /area/mine/laborcamp) "wnY" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering) "woy" = ( @@ -42223,20 +42173,16 @@ /area/engine/atmos) "wpv" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 1 - }, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "wpw" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 8 + }, /obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible/layer2, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "wpZ" = ( @@ -42358,10 +42304,11 @@ "wtc" = ( /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 8; - name = "plasma to AGR#2" + name = "Plasma to Defensive Reactor" }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 8 + dir = 8; + name = "Plasma to Utility Reactor" }, /turf/open/floor/engine, /area/engine/atmos) @@ -42425,10 +42372,13 @@ icon_state = "4-8" }, /obj/structure/table/reinforced, -/obj/item/stack/cable_coil/random, /obj/machinery/atmospherics/pipe/simple/orange/hidden/layer2{ dir = 4 }, +/obj/machinery/fax{ + name = "Engineerings Fax Machine"; + fax_name = "Engineering" + }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering) "wuB" = ( @@ -42514,7 +42464,6 @@ /turf/open/floor/carpet, /area/bridge/showroom/corporate) "wwQ" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -42525,9 +42474,6 @@ name = "Engineering Maintenance"; req_one_access_txt = "56" }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "wwW" = ( @@ -42668,6 +42614,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ dir = 4 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "wBm" = ( @@ -42713,11 +42660,18 @@ /turf/open/floor/durasteel/techfloor_grid, /area/maintenance/nsv/deck2/frame2/starboard) "wEf" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/turf/open/floor/plasteel/ridged/steel, -/area/engine/engineering/reactor_core) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/ship/maintenance/defaultaccess, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame5/port) "wEg" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 @@ -42746,7 +42700,8 @@ /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame5/port) "wEG" = ( -/obj/machinery/atmospherics/components/unary/heat_exchanger/layer2, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/dark/visible, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "wEN" = ( @@ -42842,12 +42797,6 @@ }, /turf/open/floor/monotile/dark, /area/chapel/main) -"wHh" = ( -/obj/structure/cable{ - icon_state = "6-8" - }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame1/starboard) "wHj" = ( /obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/cyan{ @@ -42857,7 +42806,7 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 8 + dir = 9 }, /turf/open/floor/plating, /area/engine/atmos) @@ -42933,10 +42882,11 @@ "wKy" = ( /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 8; - name = "n2o to AGR#2" + name = "N2O to Defensive Reactor" }, /obj/machinery/atmospherics/components/binary/pump{ - dir = 8 + dir = 8; + name = "N2O to Utility Reactor" }, /obj/machinery/light{ dir = 4 @@ -42967,29 +42917,22 @@ /turf/open/floor/carpet/ship/blue, /area/shuttle/turbolift/secondary) "wLl" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/orange{ icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 5 }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) "wLq" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/monotile/dark, -/area/engine/atmospherics_engine) +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engine_smes) "wLz" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -43010,9 +42953,6 @@ name = "PDSR"; req_one_access_txt = "56" }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/engine, /area/engine/engineering/reactor_core) "wLD" = ( @@ -43055,17 +42995,16 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/armour_pump) "wNI" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, @@ -43073,6 +43012,7 @@ dir = 4 }, /obj/structure/lattice/catwalk/over/ship, +/obj/machinery/light, /turf/open/floor/plating, /area/engine/atmos) "wNQ" = ( @@ -43097,9 +43037,6 @@ /area/hydroponics) "wOj" = ( /obj/structure/closet/emcloset, -/obj/structure/cable{ - icon_state = "4-10" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) "wOl" = ( @@ -43132,7 +43069,7 @@ "wPd" = ( /obj/machinery/power/apc/auto_name/north, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "0-2" }, /turf/open/floor/durasteel/techfloor, /area/engine/gravity_generator) @@ -43156,19 +43093,6 @@ /obj/machinery/atmospherics/pipe/simple/general/hidden/layer2, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) -"wQe" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer4{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/engine/atmos) -"wQr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/pipedispenser/disposal, -/turf/open/floor/plating, -/area/engine/atmos) "wQu" = ( /obj/structure/displaycase/captain, /obj/machinery/vending/boozeomat/pubby_captain{ @@ -43313,22 +43237,11 @@ /obj/item/book/manual/wiki/sop/munitions, /turf/open/floor/monotile/dark, /area/nsv/magazine/starboard) -"wVi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "6-8" - }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) "wVr" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame3/port) +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/structure/window/reinforced, +/turf/open/floor/durasteel/techfloor_grid, +/area/engine/atmos) "wVx" = ( /obj/machinery/computer/ship/munitions_computer/west, /obj/structure/fluff/support_beam{ @@ -43386,17 +43299,15 @@ /turf/open/floor/monotile/steel, /area/security/brig) "wXA" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ - dir = 1 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 }, -/turf/open/space/basic, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "wXW" = ( /obj/effect/turf_decal/tile/ship/full/blue, @@ -43428,15 +43339,11 @@ name = "Night Club" }) "wZF" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/effect/turf_decal/ship/techfloor, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "wZI" = ( @@ -43504,18 +43411,9 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons) "xbZ" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, /obj/effect/turf_decal/ship/techfloor{ dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/armour_pump) "xcc" = ( @@ -43681,7 +43579,7 @@ icon_state = "1-4" }, /obj/effect/turf_decal/ship/techfloor{ - dir = 10 + dir = 8 }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/engine_smes) @@ -43702,6 +43600,9 @@ /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 9 }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 4 + }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "xgA" = ( @@ -43766,9 +43667,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer4{ - dir = 10 - }, /obj/machinery/firealarm/directional/north, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) @@ -43811,20 +43709,9 @@ /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "xjJ" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/nsv/deck2/frame5/starboard) +/obj/structure/sign/ship/pods/west, +/turf/closed/wall/steel, +/area/medical/medbay) "xkh" = ( /obj/machinery/door/morgue{ name = "Relic Closet"; @@ -43847,9 +43734,6 @@ name = "Radiation Supplies"; pixel_y = -32 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, @@ -43863,13 +43747,16 @@ /turf/open/floor/plating, /area/crew_quarters/kitchen) "xlB" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ dir = 10 }, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "xlO" = ( @@ -43880,18 +43767,19 @@ /obj/machinery/meter{ layer = 2.63 }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/atmos) "xmb" = ( -/obj/structure/peacekeeper_barricade/metal{ - dir = 4 - }, -/obj/structure/target_stake, -/obj/item/target/syndicate{ - name = "stupid marine" +/obj/effect/turf_decal/stripes/line, +/obj/docking_port/stationary{ + dwidth = 1; + height = 4; + roundstart_template = /datum/map_template/shuttle/escape_pod/default; + width = 3 }, -/turf/open/floor/engine, -/area/maintenance/nsv/deck2/frame3/port) +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame3/central) "xmk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -44000,9 +43888,6 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 10 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/starboard) "xpE" = ( @@ -44082,13 +43967,13 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/primary) "xrr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "xrw" = ( @@ -44191,7 +44076,6 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/central) "xsZ" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/mapping_helpers/airlock/cyclelink_helper, @@ -44202,9 +44086,6 @@ name = "Engineering Maintenance"; req_one_access_txt = "56" }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "xtn" = ( @@ -44287,6 +44168,9 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/chief) "xvR" = ( @@ -44328,12 +44212,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4{ - dir = 1 - }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/port) "xwZ" = ( @@ -44441,9 +44320,6 @@ /area/maintenance/nsv/deck2/frame2/central) "xzS" = ( /obj/structure/closet/firecloset, -/obj/structure/cable{ - icon_state = "6-8" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) "xzV" = ( @@ -44489,6 +44365,9 @@ /obj/machinery/computer/station_alert{ name = "ship alert console" }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, /turf/open/floor/carpet/orange, /area/crew_quarters/heads/chief) "xAP" = ( @@ -44520,6 +44399,12 @@ id = "detective_shutters"; name = "detective's office shutters" }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/plating, /area/security/detectives_office) "xBE" = ( @@ -44712,7 +44597,6 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 8 }, @@ -44862,9 +44746,14 @@ name = "Executive officer's Office" }) "xMN" = ( -/obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/power/smes/engineering{ + name = "Reactor Grid SMES" + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, /turf/open/floor/carpet/green, /area/engine/engineering/reactor_control) "xNr" = ( @@ -44886,6 +44775,19 @@ }, /turf/open/floor/monotile/dark, /area/quartermaster/lobby) +"xNH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/monotile/dark, +/area/security/processing) "xNI" = ( /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame4/starboard) @@ -44919,6 +44821,10 @@ /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable{ + icon_state = "2-8"; + tag = "" + }, /turf/open/floor/monotile/steel, /area/security/brig) "xPC" = ( @@ -45079,7 +44985,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "xTO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -45287,9 +45193,15 @@ /turf/open/floor/monotile/dark, /area/hallway/secondary/entry/arrivals) "xZC" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/layer_manifold/visible, -/turf/open/floor/engine, +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor_grid, /area/engine/atmos) "xZM" = ( /obj/effect/turf_decal/tile/ship/half/red{ @@ -45323,9 +45235,14 @@ /turf/open/floor/wood, /area/maintenance/nsv/deck2/frame5/starboard) "yaB" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/maintenance/nsv/deck2/frame3/central) +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engine_smes) "yaP" = ( /turf/closed/wall/r_wall, /area/maintenance/nsv/deck2/frame4/port) @@ -45371,9 +45288,6 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 5 - }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "yca" = ( @@ -45424,12 +45338,12 @@ /turf/open/floor/monotile/dark, /area/medical/chemistry) "ydf" = ( -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/cyan{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "ydr" = ( @@ -45463,9 +45377,6 @@ /obj/effect/turf_decal/stripes/end{ dir = 4 }, -/obj/structure/cable/orange{ - icon_state = "4-8" - }, /turf/open/floor/durasteel/techfloor, /area/engine/armour_pump) "yeK" = ( @@ -45543,17 +45454,18 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame2/starboard) "yfS" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer2{ dir = 4 }, +/obj/structure/lattice/catwalk, /turf/open/space/basic, /area/maintenance/nsv/deck2/frame4/starboard) +"ygd" = ( +/obj/structure/sign/ship/pods/west{ + pixel_y = 29 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck2/frame2/starboard) "ygt" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -45613,9 +45525,9 @@ /obj/machinery/computer/atmos_control/tank/toxin_tank{ dir = 4; input_tag = "nuclear_mix_in_1"; - name = "Primary reactor Gas Tank Control"; + name = "Utility Reactor Gas Tank Control"; output_tag = "nuclear_min_out_1"; - sensors = list("nuclear_mix_sensor_1"="Nuclear Reactor Gas Mix Tank 1") + sensors = list("nuclear_mix_sensor_1"="Nuclear Reactor Gas Mix Tank 1") }, /obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/violet/visible/layer4, @@ -45664,9 +45576,11 @@ }, /area/nsv/hanger/notkmcstupidhanger) "yiM" = ( -/obj/structure/cable/orange{ +/obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame3/central) "yiT" = ( @@ -45688,6 +45602,9 @@ /obj/effect/turf_decal/loading_area{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/engine/airless, /area/nsv/weapons/fore{ name = "Artillery Bay" @@ -45738,9 +45655,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame5/port) "ylH" = ( @@ -59255,8 +59169,8 @@ srp srp srp rlO -nDu -lup +loz +vwQ lRf vWX nhO @@ -59272,18 +59186,18 @@ imU eFs imU wZF -lxL +oTP iKx -dcz +oGU wwQ -vDu -liY -liY -liY +ayw +qpW +qpW +qpW bio -msa -vDu -bJm +umB +ayw +qpW cqk srp srp @@ -59519,7 +59433,7 @@ sEW sEW fFd seF -fAR +uVg jnL oGU vrQ @@ -59540,7 +59454,7 @@ qpW qpW ldE qpW -cch +qpW cqk srp srp @@ -59776,7 +59690,7 @@ sEW fii uwJ uwJ -fAR +uVg vrQ vrQ vrQ @@ -60027,13 +59941,13 @@ ipy srp rlO bjV -gBl -pWW -tjn -tjn -tjn -tjn -bfQ +fii +uwJ +sEW +sEW +sEW +sEW +sEW iet vrQ vrQ @@ -60283,7 +60197,7 @@ pXB pXB srp rlO -qdf +mnB sEW cYV jtK @@ -60540,7 +60454,7 @@ pXB pXB rlO rlO -qdf +mnB uVg uwJ rlO @@ -60825,7 +60739,7 @@ tdR cqk jnp bxT -cch +qpW cqk cqk cqk @@ -61065,13 +60979,13 @@ srp srp vrQ cpE -xQO +mwX oEg -rOC +xQO rDP jne jLW -smb +uZo dPy wcX pyQ @@ -61082,7 +60996,7 @@ tdR cqk pzq kkI -hgH +aTj ayw cqk wWa @@ -61311,7 +61225,7 @@ dBo dBo coB uwJ -qdf +mnB uwJ uUf rlO @@ -61322,12 +61236,12 @@ vrQ vrQ vrQ fHr -wWv +jqw ulw yfa eNW -fvv -fvv +toU +toU dDN eli wcX @@ -61339,7 +61253,7 @@ tdR cqk aKI bxT -hgH +aTj ayw cqk wWa @@ -61581,7 +61495,7 @@ oUI ddl lNy xfZ -jks +fWN pHo fWN cDL @@ -61596,7 +61510,7 @@ tdR cqk bJO jbX -wLl +iOc grd mqr wWa @@ -61825,7 +61739,7 @@ jfu rlO rlO cqe -vHX +lac uVg sEW rlO @@ -61835,12 +61749,12 @@ qSJ hNt hNt auB -xQO +qjj eEu -dWd -fPu +hvG +bSC pvs -cAl +bSC afy gkD gyr @@ -61853,7 +61767,7 @@ tdR cqk wTb bxT -hgH +aTj aTj cqk wWa @@ -62095,9 +62009,9 @@ auB hGa dqO tln -wEf +bSC igj -nQh +vXy mwQ fXE bKv @@ -62110,7 +62024,7 @@ tdR cqk fUb bxT -cch +qpW ayw cqk wWa @@ -62349,17 +62263,17 @@ qSJ hNt hNt auB -xQO +qjj dqO hvG -fPu +bSC xGS -toU +bSC tvr gkD gyr wcX -pyQ +teg tKt lTU vrQ @@ -62367,7 +62281,7 @@ tdR cqk hlY bxT -gGH +ayw emI cqk cqk @@ -62611,20 +62525,20 @@ igp rVO cbB sDA -dhx +mqa aDe gkD gyr -wcX -teg -tKt -lTU vrQ -tdR +loM +loM +loM +vrQ +cqk cqk eLY mul -nud +xhx xhx uQC xhx @@ -62853,9 +62767,9 @@ dBo dBo dBo siV -vHX -fii -sEW +wEf +rlO +rlO rlO rlO rlO @@ -62871,15 +62785,15 @@ cJw app nqX nvX -gyr -wcX -qpH -tKt -lTU -vrQ -tdR -cqk -qpW +eBy +dGN +kXY +kXY +kXY +kXY +kXY +fuJ +epx cPY wLl gAd @@ -63111,30 +63025,30 @@ dBo dBo siV gnt -rlO -rlO -rlO -rlO -rlO +jPl +aJz +jPl +jPl +jPl grD haN haN asL -smb +aKp hYW iAF tQz dcY smb tKa -smb +nnR gzD -loM -loM -loM -loM -fbp -cqk +vrQ +uBl +uBl +uBl +kLX +keN cqk cqk cqk @@ -63368,12 +63282,12 @@ dBo dBo siV qdf -sEW +fii rlO -laJ -eWl -rki -rJo +rlO +rlO +rlO +lsV tHi clO vrQ @@ -63395,7 +63309,7 @@ keN cqk cqk rKA -gGH +bEV emI umB umB @@ -63627,10 +63541,10 @@ siV vHX sEW rlO -nrA -tRc -bNj -rJo +laJ +eWl +rki +lsV tHi pXg yjH @@ -63644,15 +63558,15 @@ dzw xQO loM nFZ -qPV -qPV +bfu +vBp paa nVs keN keN keN vGO -gGH +bEV emI bvT emI @@ -63886,30 +63800,30 @@ uVg rlO cUm tRc -vqg +rki cFe kNq pXg vzn loM -cCh +vmb wWv -apR -liu fvv +liu +otR sww -xQO +qzw loM fVd ulz qPV qPV -fQB -mZJ -khz -iTn +qPV +gHA +kqh +keN uJO -xjJ +bEV emI cOt wcN @@ -64144,7 +64058,7 @@ rlO uAq tRc rki -rJo +rOC tHi pXg ayy @@ -64153,12 +64067,12 @@ vmb uje lbC eby -oeq +cDL rnw -xQO +qjj loM rnr -qPV +pRT kEQ phB qPV @@ -64166,7 +64080,7 @@ gHA kqh keN ayw -gGH +bEV emI cjR nAD @@ -64401,13 +64315,13 @@ jyr uoB gMg rki -rJo +rOC tHi pXg jRM vrQ nCo -htU +uje fyd bhV eAl @@ -64657,14 +64571,14 @@ uVg rlO pXo tRc -rki +vqg qaA gDo hhN oeh loM aUI -aJz +htU aNS wNQ ybY @@ -64672,7 +64586,7 @@ vGb lPI loM njP -qPV +pRT uKy nuG qPV @@ -64924,7 +64838,7 @@ xlB vwK sDs dvE -rck +app kOg lPI loM @@ -65186,8 +65100,8 @@ aYb jiD tPA moi -qPV -qPV +lyH +rgw rKT nda keN @@ -65430,7 +65344,7 @@ xor xor xor lKx -vrQ +rlO vrQ vrQ vrQ @@ -65661,12 +65575,12 @@ wmK uRe uRe yaP -yaP +rFC aCv pLL kEZ aCv -bOH +nEC jKt jKt jKt @@ -65705,17 +65619,17 @@ iSw iSw eAp eAp -bdb -bdb -ozJ -hOJ -uBl -uBl -uBl -vrs -vrs -uBl -uBl +aQv +aQv +ayw +umB +ayw +ayw +ayw +umB +umB +ayw +ayw hUz bEV tbr @@ -65918,12 +65832,12 @@ gbx bil yaP yaP -ivi +rFC aCv krO ghO aCv -bOH +nEC jKt jMg jKt @@ -65954,7 +65868,7 @@ wkU yiT rLj wSN -iwK +uxg eAp pXq qXe @@ -65965,8 +65879,8 @@ eAp eAp eAp eAp -ekP -mbU +sFA +eQb mbU mbU mbU @@ -66175,12 +66089,12 @@ wmK wmK wmK yaP -cbq +rFC aCv pLL kEZ aCv -nnR +nEC bca qcF nqT @@ -66432,12 +66346,12 @@ wmK wmK uRe yaP -cbq +rFC aCv krO ghO aCv -nnR +nEC jKt eIW jKt @@ -66689,12 +66603,12 @@ wmK miK uRe yaP -cbq +rFC aCv pLL kEZ aCv -nnR +nEC jKt jKt jKt @@ -66711,8 +66625,8 @@ lpM kZK rlO xor -sqv -emm +xER +ncH jTW jUI nHF @@ -66946,12 +66860,12 @@ arH yaP uRe yaP -ivi +rFC aCv krO ghO aCv -bOH +nEC jKt jKt jKt @@ -66968,12 +66882,12 @@ daI diy vhk gwk -sqv -tts +lxR +xbZ uVu yex wca -aKp +xbZ erf lfP wnY @@ -66981,11 +66895,11 @@ eJF tKS vAz liZ -hms +lic iwK -iSw +uuV xvI -cVs +rck xAO jNY opi @@ -67203,23 +67117,23 @@ wmK uRe uRe yaP -yaP +rFC aCv pLL kEZ aCv -bOH +nEC jKt mtQ -eHX +jwI eHX cVc jKt -paE -lxR -hxJ -tWd -wLq +xjH +ndG +txd +nzq +nGD cES mnB uwJ @@ -67228,7 +67142,7 @@ xor nFu hHF uRd -pTF +ncH vfg lmL erf @@ -67460,7 +67374,7 @@ wmK yaP yaP yaP -ivi +rFC aCv krO ghO @@ -67468,15 +67382,15 @@ aCv jHm sxg uRN -eHX -eHX -cti +nAr +kDW +wBf jKt -xjH -ndG -txd -nzq -nGD +cES +kWu +csQ +kWu +cES cES pqd sEW @@ -67487,8 +67401,8 @@ vhF afV xbZ mTq -bgU -qhY +ufZ +erf xor onU kzn @@ -67717,7 +67631,7 @@ uRe eEQ nxS tgE -ivi +rFC aCv pLL kEZ @@ -67725,14 +67639,14 @@ aCv ueU sxg jxx -eHX -eHX +nAr +gfQ wBf jKt cES -kWu -csQ -kWu +onr +vDu +pXm cES cES gfX @@ -67974,22 +67888,22 @@ uRe yaP yaP yaP -ivi +rFC aCv krO ghO aCv -vFe +jHm sxg -mzz -cFi -wEG +khz +bsf +qgJ stu jKt cES -onr -tZJ -pXm +cES +wfT +cES cES cES lac @@ -68017,7 +67931,7 @@ jKt jKt jKt jKt -mbU +jKt mbU mbU mbU @@ -68231,26 +68145,26 @@ tiA uRe uRe yaP -ivi +rFC aCv pLL kEZ aCv -vFe -sxg +nEC +sdG mzz -bsf -qgJ -rgY +eHX +eHX +wBf jKt cES -apW -fBe -apW +cES +xtn cES cES -lac -sEW +cES +eYt +ckv atu jKt iUd @@ -68488,23 +68402,23 @@ yaP yaP uRe yaP -ivi +rFC aCv krO ghO aCv -vFe -sxg +nEC +sdG mzz -cFi -wEG +eHX +hQm rbb jKt +suu cES +sao cES -wfT -cES -cES +suu cES wlL uwJ @@ -68745,24 +68659,24 @@ uRe uRe kCI yaP -ivi +rFC aCv pLL kEZ aCv -bOH +nEC sdG -oyO -eHX +mzz eHX +faR fxm jKt -cES -cES -xtn -cES -cES -cES +lBb +lBb +lBb +lBb +lBb +jKt wlL rnX jKt @@ -69002,26 +68916,26 @@ uRe uRe uRe yaP -ivi +rFC aCv krO ghO aCv -vFe -sxg +nEC +sdG mzz -cFi -wEG -rgY +eHX +faR +wBf +jKt +jKt +bqH +bqH +bqH +jKt jKt -kkm -cES -sao -cES -suu -cES gDF -ckv +jKt jKt rFj mUv @@ -69052,16 +68966,16 @@ mbU ntB mbU mbU -mbU -mbU -mbU +dyl +dyl +dyl mbU vKZ mbU gPo eHX eHX -cGW +ikt jKt nvu nvu @@ -69259,23 +69173,23 @@ yaP jvs yaP yaP -ivi +rFC aCv pLL kEZ -aCv +bTM vFe -sxg -mzz -bsf -qgJ +uxx +ugf +eeT +jks vVq jiZ jRv -gEY -gEY +jRv +jRv pyW -wXA +jRv xZC aIw bUk @@ -69294,31 +69208,31 @@ fCA oQy aXt eMR -bBf +qgJ gVp -iHk -iHk -iHk +qgJ +qgJ +qgJ oVm -igC +jUj qih -iHk +qgJ jyC dAl -jiZ +jod fzC -gEY +wXA gEY qbE -gEY -gEY -gEY wXA -xZC +wXA +wXA +wXA +jod iyO cFi wEG -sbR +ocx ldo lNK htH @@ -69515,27 +69429,27 @@ ltD uRe uRe yaP -cbq -ivi +rFC +rFC aCv krO ghO aCv -vFe -sxg +nEC +sdG mzz -cFi -wEG -rgY +eHX +faR +wBf jKt giI -bqH -bqH -bqH -jKt -jKt +vuJ +giI +giI +fPi +giI uAC -jKt +giI jKt pLN pJO @@ -69563,23 +69477,23 @@ igm gAG ppm jKt +oeq +vuJ +giI +giI +giI +fPi +giI +giI jKt -jKt -jKt -jKt -bqH -bqH -bqH -jKt -jKt -wgW -qgJ -bsf -qcZ +cYa +eHX +eHX +fif wpw kHT pVA -fBn +uxo kHT vfC nvu @@ -69772,8 +69686,8 @@ tJL uRe uRe yaP -cbq -ivi +rFC +rFC aCv pLL kEZ @@ -69781,20 +69695,20 @@ aCv uIE sdG nGY -eHX -eHX +bOH +beZ ptU lUZ sWW -omb -aqf -omb -omb -nnG +dko +sWW +sWW +uBR +sWW hye -vBp +omb nnG -rGE +omb aIj qEQ jeM @@ -69820,21 +69734,21 @@ qbn hXY bxY jgs -uBR -uBR -rgw +cbq +jgw +dgK +dgK dgK uBR -uBR -uBR -uBR +dgK +dgK cTN qdg -cFi -wEG +igC +hAt qcZ -wpw -kHT +big +euK jwp gKt kHT @@ -70029,28 +69943,28 @@ hGW uRe uRe yaP -cbq -ivi +rFC +rFC aCv krO ghO aCv -vFe -sxg +nEC +sdG mzz -cFi -wEG +lGf +eHX rbb jKt xil +qZH +krk +qZH ckY -ckY -ckY -ckY -pPl +qZH anj -pPl -wQe +qZH +jKt dbc qID xrr @@ -70074,26 +69988,26 @@ veh qek gHt vDM -eHX -wnb +gqq +sQO jKt -rAZ qZH -jKt qZH qZH -rAZ +ckY +imu +qZH qZH ooy jKt aRL vNr -vNr +svy nAn fNQ feI pVA -fBn +uxo kHT vfC nvu @@ -70286,18 +70200,18 @@ hGW uRe uRe yaP -cbq -ivi +rFC +rFC aCv pLL kEZ aCv -vFe -sxg +nEC +sdG mzz kmw -qgJ -rgY +eHX +wBf uRx uRx uRx @@ -70305,9 +70219,9 @@ uRx uRx nGO uRx -inc -koH -giI +bcm +jKt +jKt wnw oyO xrr @@ -70331,7 +70245,7 @@ mHx xOD qTl lvR -eHX +lxL oaS jKt jKt @@ -70344,9 +70258,9 @@ jKt bqH jKt dJj -cFi -wEG -qcZ +lGf +aRs +ikt wpw vqz jwp @@ -70543,18 +70457,18 @@ hGW aqX aqX yaP -cbq -ivi +rFC +rFC aCv krO ghO aCv -vFe -sxg +nEC +sdG mzz -cFi -wEG -rgY +lGf +eHX +wBf uRx nGO nGO @@ -70562,9 +70476,9 @@ vkK qKW xpX uRx -inc -koH -giI +hKm +lWW +jKt fKc oyO xrr @@ -70588,7 +70502,7 @@ jVw kGU cPb vDM -eHX +lxL wnb jKt fpR @@ -70596,18 +70510,18 @@ bxO awD klI hrD +bdb +wLq dYP -bxO -yaB woU wgW -qgJ -bsf +lGf +eHX sbR wpw uYe pVA -fBn +uxo kHT vfC nvu @@ -70800,18 +70714,18 @@ hGW uRe cJr yaP -cbq -ivi +rFC +rFC aCv pLL kEZ aCv -bOH +nEC sdG -oyO -eHX +mzz +lGf eHX -ptU +foS vkK qvL ksG @@ -70819,9 +70733,9 @@ wKC nCH kng uRx -inc +emm rWZ -giI +jKt iWB bPw xrr @@ -70854,13 +70768,13 @@ aPn gcR xfi brf -bxO -yaB +rAZ +iWE jKt wgW -cFi -wEG -qcZ +lGf +eHX +ikt wpw vqz jwp @@ -71057,27 +70971,27 @@ hGW uRe epZ yaP -cbq -ivi +rFC +rFC aCv krO ghO aCv -vFe -sxg +nEC +sdG mzz -cFi -wEG -rgY +lGf +eHX +wBf vkK ksG ksG aDr -epx +nCH lgy waK lDc -koH +fSI rOG dmB fGr @@ -71102,26 +71016,26 @@ gou xOD qTl lvR -eHX +lxL hAN jKt qFM bxO tMe pLS -cRt aVK -bxO +aVK +cRt yaB bqH -foS -eHX +wgW +lGf eHX -cGW -eBy +ikt +wpw vqz pVA -fBn +uxo kHT vfC nvu @@ -71314,31 +71228,31 @@ fqm uRe msV yaP -cbq -ivi +rFC +rFC aCv pLL kEZ aCv -vFe -sxg +nEC +sdG mzz -bsf -qgJ -rgY +lGf +eHX +wBf vkK jvq ksG pLF -jgw +nCH oGy uRx -inc +ivi koH jKt omb eHX -rfs +xrr jeM naF jKt @@ -71359,22 +71273,22 @@ mHx aVC qyk vDM -eHX +lxL xmk jKt jbo bxO jfM rxO -uGC ihw -bxO +ihw +uGC yaB bqH wgW -cFi -wEG -qcZ +lGf +eHX +ikt wpw vqz jwp @@ -71571,17 +71485,17 @@ mqF jDy uCz yaP -cbq -ivi +rFC +rFC aCv krO ghO aCv -vFe -sxg +nEC +sdG mzz -cFi -wEG +lGf +eHX rbb uRx sJZ @@ -71616,26 +71530,26 @@ iAG aul tdl ljh -eeT +msa wNI -bpl -jbQ -svy +jKt +jbo +bxO egb fBU fBU -fSI -svy +fBU +fBU jkf jKt aOA -qgJ +lGf jiC -qcZ +ikt wpw vqz pVA -fBn +uxo kHT vfC nvu @@ -71828,16 +71742,16 @@ brj uRe yaP yaP -cbq -ivi +rFC +rFC aCv pLL kEZ aCv -bOH +nEC sdG -oyO -eHX +mzz +kkm eHX wBf uRx @@ -71852,7 +71766,7 @@ inc jKt omb eHX -rfs +xrr jeM hbZ mLj @@ -71861,7 +71775,7 @@ pjd bKa pjd auP -ucW +pjd auP pjd auP @@ -71882,12 +71796,12 @@ hWg hWg hWg hWg -tUW -jod +hWg +hWg jKt slh -cFi -wEG +lGf +eHX sbR wpw uYe @@ -72085,18 +71999,18 @@ yaP uRe uRe yaP -cbq -ivi +rFC +rFC aCv krO ghO aCv -vFe -sxg +nEC +sdG mzz -cFi -wEG -rgY +eHX +eHX +wBf jKt qPA vSA @@ -72118,7 +72032,7 @@ qZH euy qZH qZH -fmo +qZH qZH qZH qZH @@ -72139,17 +72053,17 @@ gYk gYk gYk gYk -bxO -yaB +gYk +gYk bqH -foS -eHX +wgW +lGf eHX -cGW -eBy +ikt +wpw vqz pVA -fBn +uxo kHT vfC nvu @@ -72342,18 +72256,18 @@ uRe uRe yaP yaP -cbq -ivi +rFC +rFC aCv pLL kEZ aCv -ueU -sxg -lyH -bsf -qgJ -rgY +cmv +sdG +nGY +eHX +eHX +wBf jKt qPA vSA @@ -72366,7 +72280,7 @@ inc jKt bnO eHX -tWc +jSh lHL lcB pnl @@ -72396,13 +72310,13 @@ kTb kTb kTb kTb -bxO -yaB +kTb +kTb bqH wgW -cFi -wEG -qcZ +lGf +eHX +ikt wpw vqz jwp @@ -72599,17 +72513,17 @@ yaP uRe yaP yaP -cbq -ivi +rFC +rFC aCv krO ghO aCv -vFe +jHm sxg -mzz -cFi -wEG +khz +bsf +qgJ tFK jKt qPA @@ -72623,25 +72537,25 @@ inc jKt bnI omb -big -beZ -beZ -beZ -qID -omb -omb +jSh +eHX +eHX +eHX +eHX +ipT +hgL bZz -omb +gBl vmf dhE iwa cuu omb -omb +bRd omb svg omb -omb +bRd anC mDS oiZ @@ -72652,18 +72566,18 @@ wcI fBQ sFS vGf +sFS +sFS jWJ -qzj -yaB jKt wgW -qgJ -bsf -qcZ +lGf +eHX +ikt wpw vqz pVA -fBn +uxo kHT vfC nvu @@ -72862,7 +72776,7 @@ aCv pLL kEZ aCv -bOH +nEC jKt jKt jKt @@ -72873,23 +72787,23 @@ qPA qPA cfS qPA -qPA -qPA -qPA -inc +jKt +jKt +jKt +vrC jKt jKt omb -bke -jPl -weD -wQr -sHc -omb +jSh +eHX +eHX +eHX +eHX +ebm jKt jKt jKt -oYr +nkP jKt xbq jKt @@ -72909,14 +72823,14 @@ qzj tBV fWK bRi +fWK +fWK vfM -qzj -yaB jKt dJj -cFi -wEG -qcZ +lGf +eHX +ikt wpw vqz jwp @@ -73119,30 +73033,30 @@ aCv krO ghO aCv -bOH -qPA +nEC qPA +vSA +vSA +vSA +vSA mDN -mDN -krk -mDN -aRs -hgL -npk -bhQ qPA -koH -qPA -sAx -koH +vSA +vSA +npk +jKt +cti +eHX +oVU +iTn woU omb veU rUG guu -omb -omb -omb +hgL +hgL +tYo jKt mCW jKt @@ -73170,14 +73084,14 @@ twN twN twN jKt -fuJ -eHX +wgW +kkm eHX -cGW -eBy +ikt +wpw vqz pVA -fBn +uxo pVA ppS ppS @@ -73196,7 +73110,7 @@ ppS ppS ppS ppS -ipT +gKt nvu nvu pXB @@ -73376,22 +73290,22 @@ gDX mgD kEZ aCv -bOH -qPA -qPA -wcs -qPA -otR -qPA -qPA -npk -npk -tiT +nEC qPA -otp +vSA +vSA +vSA +vSA +vSA qPA +vSA +vSA +vSA +jKt +cti +aWh sAx -koH +iTn jKt jKt oTD @@ -73428,8 +73342,8 @@ mMj wiV jKt wgW -cFi -wEG +eHX +eHX sbR wpw uYe @@ -73633,43 +73547,43 @@ aCv krO ghO aCv -bOH -qPA -qPA -mDN -mDN -mDN -mDN -qPA -bTM -hQm -bhQ -qPA -koH +nEC qPA +vSA +vSA +vSA +vSA +vSA +dWd +vSA +vSA +vSA +jKt +cti +eHX oVU -koH -koH -mFa +eHX +liY +eHX tMY -koH -aZf -koH -ylW -nOO +kAU +jKt +aII hnS dol jKt -fCX +jKt +jKt +rAN mLj voI jKt -aII +jKt +jKt +nOO hnS dol -ylW -pfr -pfr +jKt evJ nAZ hhb @@ -73685,13 +73599,13 @@ azI euG jKt wgW -qgJ -bsf -qcZ +eHX +eHX +ikt wpw vqz pVA -fBn +uxo jwp irI irI @@ -73885,48 +73799,48 @@ yaP yaP yaP yaP -ivi +yaP aCv pLL kEZ aCv -bOH -qPA -qPA -puU -puU -lGf -lGf -qPA -qks -bhQ -bhQ +nEC qPA -koH +vSA +vSA +vSA +vSA +vSA qPA +vSA +vSA +vSA +jKt +cGW +eHX aiT mrc mrc -mrc +nud lOI uHf -fPi -mrc -kAU -lic -kLg -vDw +jKt +mRc +mLj +stD qgS -dbv -mgF +mLj +qgS +fCX +mLj nWu qgS -eQb -kLg +mLj +fwj mRc -dbj -qTD -jAA +mLj +stD +jKt vbr qTD jAA @@ -73942,9 +73856,9 @@ kVN dgH jKt oed -cFi -wEG -qcZ +qgJ +bsf +sHb sKY vqz jwp @@ -74147,44 +74061,44 @@ aCv krO ghO aCv -bOH -qPA -qPA -euK -kuG -euK -euK -qPA -iuv -mEq -gev -qPA -qPA -qPA +nEC qPA +vSA +vSA +vSA +vSA +vSA qPA -koH -koH -koH -inc -kzj -koH -ylW -fpi -rih +vSA +vSA +vSA +jKt +tlt +cch +ekP +eHX +eHX +kkm +eHX +dbj +jKt +uQP +mLj stD -ylW +jKt +jKt +jKt roI tpX voI -ylW -vrC -rih +jKt +jKt +jKt uQP -ylW -tGv -xwg -mkf +mLj +stD +jKt +iHk nAZ hhb hhb @@ -74198,14 +74112,14 @@ oeG qsZ eFD jKt -mCW -mCW -mCW +kzN +bgo +vVn sHb -cYa +sKY vqz pVA -fBn +uxo pVA ppS ppS @@ -74213,7 +74127,7 @@ ppS ppS ppS ppS -ipT +gKt nvu nvu nvu @@ -74404,44 +74318,44 @@ gDX mgD kEZ aCv -bOH -qPA -qPA -qzw -qPA -ebm -qPA +nEC qPA -lWW -bhQ -bhQ -iWE +vSA +vSA +vSA +vSA +vSA qPA -wnN -jTi qPA +ozI qPA -kzj -kzj -inc -kzj -koH -ylW -kbC -oZl +jKt +eHX +eHX +eHX +eHX +eHX +eHX +eHX +hOJ +jKt +czq +dhx dPO -ylW +jKt +jKt +jKt nkP ylW xbq -ylW -czq -oZl +jKt +jKt +jKt +kbC +dhx dPO -ylW -hru -xwg -iYw +jKt +iHk xwg xwg uoa @@ -74455,10 +74369,10 @@ oeG baF dgH jKt -mCW -mCW +kzN +hXN huf -sQO +sHb ftU fEB jwp @@ -74479,7 +74393,7 @@ kkT kkT pXB pXB -pXB +pPM pXB pXB pXB @@ -74661,43 +74575,43 @@ aCv krO ghO aCv -bOH -qPA +nEC qPA -xmb +vSA +vSA +vSA +vSA +vSA qPA -cnJ -cnJ +vSA +vSA +pMB +jKt wVr -bhQ -bhQ -bhQ -lsV -qPA -qPA +ssF deu -qPA -qPA +kIx +ica tIP -kzj +gev uNe -xwg -jCN -ylW -ylW -ylW -ylW -ylW +jKt +jKt +jKt +jKt +jKt +jKt +jKt qKL jwv eUV -ylW -ylW -ylW -ylW -ylW -nAr -xwg +jKt +jKt +jKt +jKt +jKt +jKt +jKt bgB xwg wgD @@ -74715,11 +74629,11 @@ jKt jKt jKt jKt -jKt +aZf jKt pWy pVA -fBn +uxo jwp irI irI @@ -74913,32 +74827,32 @@ yaP yaP yaP yaP -ivi +yaP aCv pLL kEZ aCv -bOH +nEC qPA +vSA +vSA +vSA +vSA +vSA qPA -dGN -dTZ -hZi -fyg -bgo -fyg -fyg -gqq -fQu +vSA +vSA +vSA +jKt wVr ssF -koH +deu kIx -qPA -hFI -kzj -inc -xwg +ica +tIP +bfQ +fJc +jKt tMb tMb cVo @@ -74953,9 +74867,9 @@ mwU xwg kaa ebn -eYt -xwg -vdR +hru +pfr +enz xwg wgD uoa @@ -75175,27 +75089,27 @@ aCv krO ghO aCv -bOH +nEC qPA +vSA +vSA +vSA +vSA +vSA qPA -iFl -gVy -jqw -fif -bfu -uxx -fWb -gfQ -bhQ +vSA +vSA +vSA +jKt wVr +ssF +gVy cQg -koH -cQg -qPA -hFI -kzj -inc -xwg +ica +tIP +gev +uNe +jKt tMb tMb tMb @@ -75233,7 +75147,7 @@ ukF don pWy pVA -fBn +uxo pVA ppS ppS @@ -75252,7 +75166,7 @@ ppS ppS ppS ppS -ipT +gKt nvu nvu pXB @@ -75432,27 +75346,27 @@ gDX mgD kEZ aCv -bOH -qPA +nEC qPA -vuc -npk -lBb -euK +vSA +vSA +vSA +vSA +vSA qPA -bhQ -npk -bhQ -bhQ -wVr -koH -mDN -dko qPA -hFI +ozI kzj -inc -xwg +jKt +jKt +jKt +jKt +jKt +jKt +jKt +jKt +vrC +jKt tMb tMb tMb @@ -75469,7 +75383,7 @@ bIg xwg tJA xwg -vdR +enz xwg wgD uoa @@ -75689,26 +75603,26 @@ aCv krO ghO aCv -bOH +nEC +qPA +qPA +ozI +qPA +qPA +qPA qPA -hAt -dGN -npk -lBb -ica -hAt bhQ -npk -npk -npk -itW -mDN -faR -mDN -sqr koH +kzj +vSA +vSA +vSA +vSA +nls +kzj +otp sqr -inc +qhY xwg xwg jCN @@ -75726,7 +75640,7 @@ pfr xwg xwg xwg -vdR +enz xwg wgD uoa @@ -75738,7 +75652,7 @@ oBn xRl keC nyD -oeG +afR uoa ukF ukF @@ -75747,7 +75661,7 @@ ukF don pWy pVA -fBn +uxo jwp irI irI @@ -75941,47 +75855,47 @@ yaP yaP yaP yaP -ivi +yaP aCv pLL kEZ aCv -bOH -qPA +nEC qPA -dGN +vSA +vSA npk -lBb -jMd -qPA -dXs -pMB -kTl -bTM -qPA -lmn -pRT -koH qPA otp -kzj -inc +hFI koH koH -pfr -pfr -pfr -pfr +kTl +vSA +vSA +vSA +vSA +vSA +fpi +otp +koH +oZl +fKp +fKp +yiM +yiM +yiM +yiM guV -qKL -pxk -eUV +bJm +fQu +tiT lJM yiM yiM yiM txy -fTn +sIs qSX uvW xwg @@ -76203,29 +76117,29 @@ aCv krO ghO aCv -bOH -qPA -qPA -dGN -npk -lBb -iWE -qPA -qPA -qPA -qPA -qPA -qPA -qPA -qPA +nEC qPA +vSA +vSA +vSA qPA +koH +hFI +koH +koH kzj +vSA +vSA +vSA +vSA +vSA kzj +koH +koH inc kzj kzj -pfr +jRa pfr pfr pqw @@ -76261,7 +76175,7 @@ fTL don pWy pVA -fBn +uxo pVA ppS ppS @@ -76269,7 +76183,7 @@ ppS ppS ppS ppS -ipT +gKt nvu nvu nvu @@ -76460,26 +76374,26 @@ gDX mgD kEZ aCv -bOH -qPA +nEC qPA -wVr -lTM +vSA +vSA +vSA mzE -qPA -qPA -qPA koH -uhy -kzj -uhy koH -uhy +koH +koH +kzj +kzj +kzj +ozI +kzj +kzj kzj -uhy koH uhy -wVi +inc koH kzj pfr @@ -76717,22 +76631,22 @@ aCv krO ghO aCv -bOH +nEC qPA +vSA +vSA +vSA qPA -sma -ufZ -ocx vHr -qPA -qPA +koH +koH koH eGq -sVx -sVx +pWW +weD pBP sDL -sDL +tWc sDL sDL sDL @@ -76742,7 +76656,7 @@ sVx iKF iKF iKF -iKF +puU ktM fWJ vej @@ -76771,11 +76685,11 @@ jwN aFJ aFJ xbS -nwu +vrs don pWy pVA -fBn +uxo jwp irI irI @@ -76969,19 +76883,19 @@ yaP yaP yaP yaP -ivi +yaP aCv pLL kEZ aCv -bOH -qPA +nEC qPA -sma -imu -mJP -cmv +vSA +vSA +vSA qPA +hFI +hFI qPA koH tOC @@ -76997,10 +76911,10 @@ vlP goY vlP vlP -pfr xwg -pfr -cLe +xwg +xwg +sma evJ wSk eUV @@ -77231,13 +77145,13 @@ aCv krO ghO aCv -bOH +nEC +qPA qPA qPA -uZo ozI -hXN -vHr +qPA +qPA qPA vlP vlP @@ -77255,8 +77169,8 @@ bFE rgo vlP pfr -xwg -jRa +pfr +pfr cLe evJ wSk @@ -77289,7 +77203,7 @@ nwu don pWy pVA -fBn +uxo pVA ppS ppS @@ -77308,7 +77222,7 @@ ppS ppS ppS ppS -ipT +gKt nvu nvu pXB @@ -77488,14 +77402,14 @@ gDX mgD kEZ aCv -bOH -qPA -qPA -sma -ufZ -ocx -vHr +nEC qPA +hFI +hFI +koH +koH +koH +koH kzj gCG tUP @@ -77512,9 +77426,9 @@ bFE djp vlP pfr -xwg pfr -cLe +pfr +xmb evJ wSk eUV @@ -77745,14 +77659,14 @@ aCv krO ghO aCv -bOH -qPA -qPA -wVr -uuV -mzE -qPA +nEC qPA +otp +koH +koH +koH +koH +hFI kzj cBH iNT @@ -77769,7 +77683,7 @@ aFA vyo vlP pfr -xwg +pfr pfr cLe evJ @@ -77803,7 +77717,7 @@ nwu don pWy pVA -fBn +uxo jwp irI irI @@ -77997,19 +77911,19 @@ yaP yaP yaP yaP -ivi +yaP aCv pLL kEZ aCv -bOH -qPA +nEC qPA -dyl -uxg +koH +koH +koH iMC -tlt -jJv +koH +koH kzj iqd iNT @@ -78025,7 +77939,7 @@ eMT tMv tMv vlP -pfr +xwg xwg xwg xwg @@ -78254,25 +78168,25 @@ nBv nBv nBv nBv -sty +jbQ aCv krO ghO aCv -bOH -qPA +nEC qPA -bfA -fwj -eWR +hFI +koH +koH gOp -bRd +gOp +koH gOB -tzt -iIi -jwI -jwI -vuJ +gCG +iNT +sNe +sNe +lTL sNe sNe sNe @@ -78317,7 +78231,7 @@ nwu don pWy pVA -fBn +uxo pVA ppS ppS @@ -78325,7 +78239,7 @@ ppS ppS ppS ppS -ipT +gKt nvu nvu nvu @@ -78516,14 +78430,14 @@ gDX mgD kEZ aCv -bOH +nEC qPA -hAt -uwC -bcm -bcm -bcm -rtE +hFI +koH +koH +gOp +gOp +koH kzj gCG tUP @@ -78585,7 +78499,7 @@ ovz tuh nvu nvu -enz +kkT nvu kkT kkT @@ -78773,14 +78687,14 @@ aCv krO ghO aCv -bOH +nEC +qPA +qPA +ozI qPA qPA -ugf -phI -phI -phI -phI +qPA +koH qPA rOl vBE @@ -78831,7 +78745,7 @@ nwu don pWy pVA -fBn +uxo jwp irI irI @@ -79025,19 +78939,19 @@ yaP yaP yaP yaP -ivi +yaP aCv pLL kEZ aCv -bOH -qPA +nEC qPA +vSA +vSA +vSA +tjn phI -phI -phI -phI -phI +koH qPA lzV oMr @@ -79287,14 +79201,14 @@ aCv krO ghO aCv -bOH +nEC qPA -mGj -tYo -phI -phI -vVn -fJc +vSA +vSA +vSA +vSA +qPA +hFI qPA xvR iPZ @@ -79345,7 +79259,7 @@ lBK don hHS pVA -fBn +uxo pVA ppS ppS @@ -79364,7 +79278,7 @@ ppS ppS ppS ppS -ipT +gKt nvu nvu pXB @@ -79544,14 +79458,14 @@ gDX mgD kEZ aCv -bOH +nEC qPA +vSA +vSA +vSA +vSA qPA -vVn -phI -phI -phI -phI +gOp qPA rxF hxp @@ -79565,7 +79479,7 @@ gCG vlP aCB jEc -jEc +irV enf mxV fcQ @@ -79803,12 +79717,12 @@ xwX lsg uaE qPA +vSA +vSA +vSA +vSA qPA -cun -phI -phI -phI -phI +otp qPA hTJ fOz @@ -79827,7 +79741,7 @@ atN dul vlP vlP -vlP +ybw pfr wSk rdt @@ -80060,12 +79974,12 @@ yaP yaP yaP qPA +vSA +vSA +vSA +vSA qPA -guc -phI -vVn -phI -vVn +otp qPA kPZ rVw @@ -80341,7 +80255,7 @@ jEc wEN jEc hCz -ybw +xjJ xZj wSk duA @@ -80598,7 +80512,7 @@ ckj vzE jEc hCz -vlP +fQB xhP oNC xnv @@ -81342,16 +81256,16 @@ dqT aCa krP mPo -xyp +eRF euA oTp gFd xyp lGu aYZ -aYZ +gmx fho -pLv +rbU lGt abe ebc @@ -81605,7 +81519,7 @@ xyp xyp xyp xyp -gMx +rot gMx xyp xyp @@ -81865,7 +81779,7 @@ kBk lax vUy sYG -pLv +kSP lGt omP aJw @@ -82111,7 +82025,7 @@ eZu bdA pwI dfu -gOg +mDU bHi xyp sbe @@ -82120,7 +82034,7 @@ xsa aEU uFG aKw -uFG +tDP tEq pLv lGt @@ -82379,7 +82293,7 @@ uFG gBE uFG aDT -pLv +bBs hnA mkb wCS @@ -82893,7 +82807,7 @@ uFG ahv uFG jqs -pLv +kSP lGt oVI aJw @@ -82927,7 +82841,7 @@ dJW vgA deD cRj -cRj +vRc daT ofC jij @@ -83148,7 +83062,7 @@ oZW xpW uFG pHy -uFG +tDP kax pLv lGt @@ -83407,7 +83321,7 @@ uFG gTX uFG fQp -pLv +bBs lGt gSy mOE @@ -83921,7 +83835,7 @@ oDU ejV uFG wVG -pLv +kSP lGt xTO sQB @@ -84173,10 +84087,10 @@ crU kVz fwg oXO -iSy -uFG -gTX -uFG +abI +tDP +qPg +tDP thi pLv lGt @@ -84225,7 +84139,7 @@ rXD rXD rXD rXD -rJV +sTs owC grI grI @@ -84365,7 +84279,7 @@ srp srp srp srp -srp +dra srp srp srp @@ -84426,7 +84340,7 @@ gxD xPk eKh cZj -xsa +hjG kmi aRn oSN @@ -84435,7 +84349,7 @@ lCs lOg eqJ uTA -pLv +bBs lGt xTO ebc @@ -84616,16 +84530,16 @@ pXB pXB pXB srp -srp -srp -srp -srp -srp -srp +dnK +dnK uhc -srp -srp -srp +dnK +dnK +dnK +uhc +dnK +wlG +wlG srp srp srp @@ -84689,7 +84603,7 @@ sYP oZW oZW oZW -kHi +evE vJq xyp xyp @@ -84873,14 +84787,14 @@ pXB pXB pXB srp -srp -wlG -ehl -wlG -wlG -wlG +dnK +dnK ehl -wlG +dnK +dnK +dnK +mEA +dnK wlG wlG pXB @@ -84940,7 +84854,7 @@ hAg xuS rvq mpx -dnq +qMt kiE wXt hAW @@ -84968,7 +84882,7 @@ jZq pGs aCe vlP -pxk +qpH pxk btQ pxk @@ -85131,13 +85045,13 @@ dnK dnK dnK dnK -wlG +dnK byw -wlG +dnK xTE -wlG +dnK jQb -wlG +dnK fXq wlG pXB @@ -85192,16 +85106,16 @@ srp gcB lWs uZw -dTm +xNH oxL ccG iAJ -rLc +pIc tmk rLc vVc ngo -xsa +udo iSi abm iSy @@ -85231,7 +85145,7 @@ szG gzC xwg pfr -pfr +iLc pfr pfr rWi @@ -85245,7 +85159,7 @@ buX erP lGt pLt -nZN +ukf wjA xuQ tKJ @@ -85388,13 +85302,13 @@ rGv rGv rGv rGv -wlG +dnK pkn -wlG +dnK ltv -wlG +dnK pkn -wlG +dnK fXq wlG pXB @@ -85449,16 +85363,16 @@ srp pXB ewI dRp -ozT +vZX ozT ewI pDa rus -dnq +otB dMH aYM cZj -xsa +hjG iSi abm iSy @@ -85705,12 +85619,12 @@ srp srp pXB ewI -dBQ -dBQ +eUE +eUE ewI ewI -dnq -dnq +otB +otB wAG rAq aYM @@ -85975,7 +85889,7 @@ xEx oZW oZW kHi -vJq +lyj xyp xyp kPZ @@ -86218,8 +86132,8 @@ srp srp srp pXB -lWs -uZw +vLq +jWe dTm oxL vIf @@ -86233,7 +86147,7 @@ vTs gUM fli eVc -dGV +hMF nSM edm iGZ @@ -86476,9 +86390,9 @@ srp srp pXB ewI -dBQ -dBQ -dBQ +dxF +lPR +dxF ewI vbG rLc @@ -86736,8 +86650,8 @@ dBQ uLL jxN sMN -dBQ -aYM +gOg +dAn qNT sQp qau @@ -86746,7 +86660,7 @@ wue dZM jdO dVG -dVG +doG dGV wuM eoa @@ -86989,11 +86903,11 @@ srp srp srp pXB -dBQ +knD nsr uEt ofI -dBQ +knD son pDe wAG @@ -87246,7 +87160,7 @@ srp srp srp pXB -dBQ +knD eUu tYJ kBi @@ -87503,14 +87417,14 @@ srp srp srp pXB -dBQ +vuy fkI ojr onW -dBQ +eUE fzA fzA -dnq +rks cBM mHM llY @@ -87793,7 +87707,7 @@ deg bso whw tcr -kmr +oeU kmr tFx rGb @@ -88050,7 +87964,7 @@ tcr pDl eyN tcr -kmr +oeU kmr mgq eit @@ -88097,7 +88011,7 @@ huS kYh huS huS -rXD +ygd iti huS dyN @@ -92651,7 +92565,7 @@ pXB ewU pXB xUX -dWH +tnn dWH bcP ugd @@ -95019,9 +94933,9 @@ huS kCL kCL kCL -kCL -kCL -qYd +krf +tuN +usq kCL kCL kCL @@ -95276,16 +95190,16 @@ huS kCL kCL kCL +udK kCL -kCL -qYd +jKD kCL kCL kCL dyN -krf -tuN -usq +dyN +dyN +dyN dyN dyN dyN @@ -95533,16 +95447,16 @@ qif kCL kCL kCL +pmN kCL -kCL -qYd -kCL +riV kCL kCL -gyh -udK kCL -jKD +dyN +dyN +dyN +dyN dyN dyN dyN @@ -95790,16 +95704,16 @@ qif kCL kCL kCL +pmN kCL -kCL -qYd -kCL +jKD kCL kCL -gyh -pmN kCL -riV +dyN +dyN +dyN +dyN dyN dyN dyN @@ -96047,16 +95961,16 @@ lju kCL kCL kCL +udK kCL -kCL -qYd -kCL +bPu kCL kCL -gHI -pmN kCL -jKD +dyN +dyN +dyN +dyN dyN dyN dyN @@ -96304,16 +96218,16 @@ lju kCL kCL kCL +pmN kCL -kCL -qYd -kCL +jKD kCL kCL -gHI -udK kCL -bPu +dyN +dyN +dyN +dyN dyN dyN dyN @@ -96561,16 +96475,16 @@ lju lju lju kCL +pmN kCL -kCL -qYd -kCL +riV kCL kCL -gHI -pmN kCL -jKD +dyN +dyN +dyN +dyN dyN dyN dyN @@ -96818,16 +96732,16 @@ aCk fsv iZn qYd +udK +kCL +jKD qYd qYd qYd -qYd -qYd -qYd -gHI -pmN -kCL -riV +dyN +dyN +dyN +dyN dyN dyN dyN @@ -97075,16 +96989,16 @@ lju qif lju kCL +pmN kCL -kCL -qYd +qFr kCL kCL kCL -gHI -udK -kCL -jKD +dyN +dyN +dyN +dyN dyN dyN dyN @@ -97300,9 +97214,9 @@ qiB vGW vGW urI -cId +vjs hcC -tnn +urI sYT gza xBo @@ -97332,16 +97246,16 @@ bYC bOQ qif kCL +pmN kCL -kCL -qYd -kCL +jKD kCL kCL -gHI -pmN kCL -qFr +dyN +dyN +dyN +dyN dyN dyN dyN @@ -97557,8 +97471,8 @@ izU koD bgA jCJ -sYT -oUu +cId +mPx nhK xtE gza @@ -97589,16 +97503,16 @@ lfn lfn qif kCL +udK kCL -kCL -qYd -kCL +qZh kCL kCL -gHI -pmN kCL -jKD +dyN +dyN +dyN +dyN dyN dyN dyN @@ -97836,7 +97750,7 @@ boP iDn sFB fgw -wHh +gIb eKt lju tis @@ -97846,16 +97760,16 @@ lfn lfn qif kCL +pmN kCL -kCL -qYd -kCL +jKD kCL kCL -gHI -udK kCL -qZh +dyN +dyN +dyN +dyN dyN dyN dyN @@ -98093,26 +98007,26 @@ pvR xuY wbO fgw -eKt +nDu oNh fLJ -kDW -kzN +fgn +fxX ebc rvV rvV qif kCL +pmN kCL -kCL -qYd -kCL +oxp kCL kCL -gHI -pmN kCL -jKD +dyN +dyN +dyN +dyN dyN dyN dyN @@ -98351,7 +98265,7 @@ sZv qlh fgw fgw -pPM +gIb lju fgn lZQ @@ -98360,16 +98274,16 @@ lju qif lju kCL +udK kCL -kCL -qYd -kCL +jKD kCL kCL -gHI -pmN kCL -oxp +dyN +dyN +dyN +dyN dyN dyN dyN @@ -98608,7 +98522,7 @@ xBH rKo wVf fgw -qjj +gIb lju bqv aWP @@ -98617,16 +98531,16 @@ aCk hZb iZn qYd +pmN +kCL +xGc qYd qYd qYd -qYd -qYd -qYd -gHI -udK -kCL -jKD +dyN +dyN +dyN +dyN dyN dyN dyN @@ -98865,7 +98779,7 @@ iDn sFB fgw fgw -pPM +gIb lju lGt fxX @@ -98874,16 +98788,16 @@ lju lju lju kCL +pmN kCL -kCL -qYd +jKD kCL kCL kCL dyN -pmN -kCL -xGc +dyN +dyN +dyN dyN dyN dyN @@ -99122,7 +99036,7 @@ xuY wbO fgw wOj -sDM +gIb lju lGt fxX @@ -99131,16 +99045,16 @@ lju kCL kCL kCL +udK kCL -kCL -jSQ +riV kCL kCL kCL dyN -pmN -kCL -jKD +dyN +dyN +dyN dyN dyN dyN @@ -99379,25 +99293,25 @@ sZv qlh fgw uxJ -sDM +gIb lju lGt fxX rDk lju dyN -pay dyN dyN -sfd -sfd -sfd +pmN +kCL +jKD +dyN +dyN +dyN +dyN +dyN dyN dyN -wjt -udK -kCL -riV dyN dyN dyN @@ -99636,7 +99550,7 @@ fgw fgw fgw xzS -sDM +gIb lju pYM tQb @@ -99645,6 +99559,9 @@ lju dyN dyN dyN +qiV +uWX +bZt dyN dyN dyN @@ -99652,9 +99569,6 @@ dyN dyN dyN dyN -pmN -kCL -jKD dyN dyN dyN @@ -99893,7 +99807,7 @@ arc arc arc arc -qjj +gIb xcc rrp aRE @@ -99909,9 +99823,9 @@ dyN dyN dyN dyN -qiV -uWX -bZt +dyN +dyN +dyN dyN dyN dyN @@ -100146,14 +100060,14 @@ jhf hqk qaM fgw -oft -bRf -bRf -bRf +oUu +eDI +xyC +xyC swH xcc fbL -lHX +cun ygJ xcc eKt @@ -100403,12 +100317,12 @@ kri hbU qpu fgw -sDM -eDI -xyC -fKp -eKt -jbk +oft +rfs +bRf +bRf +bRf +rtE lTY lHX pse @@ -101432,7 +101346,7 @@ fgw fgw fgw eoB -vjs +dTZ xcc xcc xcc @@ -101686,10 +101600,10 @@ kDf kDf kDf blW -oCV +kDf kDf cdN -aDc +wcs xcc xRU dSm @@ -101943,7 +101857,7 @@ lWb qhq jex mso -cyb +mso imP eMk ovw @@ -102200,7 +102114,7 @@ tsU eEK eEK cGl -iEW +fBe iEW fLb wxN @@ -105026,7 +104940,7 @@ dwi rIa eEK hJk -oYy +tUW lXq oXX tuC @@ -105283,7 +105197,7 @@ dwi rIa eEK hJk -leA +srG vbe eYV isV @@ -105797,7 +105711,7 @@ dwi rIa eEK hJk -leA +oYy bdy uxA lQP diff --git a/_maps/map_files/Galactica/old/Galactica2_old.dmm b/_maps/map_files/Galactica/old/Galactica2_old.dmm index cbc5a790c9f..e7b9c7f0a52 100644 --- a/_maps/map_files/Galactica/old/Galactica2_old.dmm +++ b/_maps/map_files/Galactica/old/Galactica2_old.dmm @@ -5509,7 +5509,7 @@ /area/maintenance/nsv/deck2/frame1/starboard) "aof" = ( /obj/item/paper{ - info = "We've run out of blue paint for the briefing room so we'll just have to ship it out with the SolGov logos untouched. If you find this note, please forward it to your nearest Titanworks shipyard for processing."; + default_raw_text = "We've run out of blue paint for the briefing room so we'll just have to ship it out with the SolGov logos untouched. If you find this note, please forward it to your nearest Titanworks shipyard for processing."; name = "SGC Solaria retrofit notes" }, /obj/structure/rack, @@ -14761,7 +14761,7 @@ name = "Executive officer's Office" }) "aHJ" = ( -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /turf/open/floor/monotile, /area/crew_quarters/heads/hop{ name = "Executive officer's Office" @@ -14807,7 +14807,7 @@ /obj/structure/sign/nanotrasen{ pixel_y = 26 }, -/obj/item/cartridge/lawyer, +/obj/item/computer_hardware/hard_drive/role/lawyer, /obj/item/taperecorder, /turf/open/floor/monotile, /area/lawoffice) @@ -19068,18 +19068,18 @@ /area/crew_quarters/heads/chief) "aRr" = ( /obj/structure/table/reinforced, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = 4; pixel_y = 5 }, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = -3; pixel_y = 2 }, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = 3 }, -/obj/item/cartridge/atmos, +/obj/item/computer_hardware/hard_drive/role/atmos, /obj/machinery/camera/autoname{ dir = 1; icon_state = "camera" @@ -54495,12 +54495,12 @@ /turf/open/floor/monotile, /area/security/checkpoint/engineering) "sVz" = ( -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = -4; pixel_y = 7 }, -/obj/item/cartridge/quartermaster, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = 6; pixel_y = 5 }, diff --git a/_maps/map_files/Galactica/old/Galactica_old.dmm b/_maps/map_files/Galactica/old/Galactica_old.dmm index 5d0c034cf69..448590381cf 100644 --- a/_maps/map_files/Galactica/old/Galactica_old.dmm +++ b/_maps/map_files/Galactica/old/Galactica_old.dmm @@ -6917,10 +6917,10 @@ /area/crew_quarters/heads/cmo) "rx" = ( /obj/structure/table/glass, -/obj/item/cartridge/medical, -/obj/item/cartridge/medical, -/obj/item/cartridge/medical, -/obj/item/cartridge/chemistry{ +/obj/item/computer_hardware/hard_drive/role/medical, +/obj/item/computer_hardware/hard_drive/role/medical, +/obj/item/computer_hardware/hard_drive/role/medical, +/obj/item/computer_hardware/hard_drive/role/chemistry{ pixel_y = 2 }, /obj/item/clothing/glasses/hud/health, diff --git a/_maps/map_files/Gladius/Gladius1.dmm b/_maps/map_files/Gladius/Gladius1.dmm index f0051faf01f..560ae1f443e 100644 --- a/_maps/map_files/Gladius/Gladius1.dmm +++ b/_maps/map_files/Gladius/Gladius1.dmm @@ -3700,6 +3700,10 @@ }, /turf/open/floor/monotile/dark, /area/gateway) +"bRw" = ( +/obj/machinery/lazylift_button, +/turf/closed/wall/r_wall/ship, +/area/shuttle/turbolift/tertiary) "bRS" = ( /obj/effect/turf_decal/tile/ship/half/blue{ dir = 1 @@ -3943,7 +3947,7 @@ /turf/open/floor/monotile/light, /area/science/mixing) "bXz" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ +/obj/machinery/atmospherics/pipe/multiz{ dir = 1 }, /turf/open/floor/plating, @@ -4068,6 +4072,12 @@ /obj/machinery/newscaster/security_unit/north, /turf/open/floor/monotile/steel, /area/security/brig) +"cai" = ( +/obj/machinery/atmospherics/components/unary/portables_connector{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "cal" = ( /obj/structure/lattice/catwalk/over/ship/dark, /obj/effect/landmark/event_spawn, @@ -4401,6 +4411,20 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/nsv/weapons) +"cid" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "cih" = ( /obj/structure/cable{ icon_state = "4-8" @@ -22438,7 +22462,7 @@ pixel_x = -2 }, /obj/item/book/manual/wiki/security_space_law, -/obj/item/cartridge/detective, +/obj/item/computer_hardware/hard_drive/role/detective, /obj/machinery/light_switch/north, /turf/open/floor/monotile/steel, /area/crew_quarters/heads/hos) @@ -23358,16 +23382,16 @@ /turf/open/floor/monotile/steel, /area/crew_quarters/dorms/nsv/state_room) "kXg" = ( -/obj/item/cartridge/medical{ +/obj/item/computer_hardware/hard_drive/role/medical{ pixel_x = -2; pixel_y = 6 }, -/obj/item/cartridge/medical{ +/obj/item/computer_hardware/hard_drive/role/medical{ pixel_x = 6; pixel_y = 3 }, -/obj/item/cartridge/medical, -/obj/item/cartridge/chemistry{ +/obj/item/computer_hardware/hard_drive/role/medical, +/obj/item/computer_hardware/hard_drive/role/chemistry{ pixel_y = 2 }, /obj/structure/table/glass, @@ -30180,12 +30204,12 @@ /area/crew_quarters/heads/hor) "oga" = ( /obj/structure/table, -/obj/item/cartridge/signal/toxins, -/obj/item/cartridge/signal/toxins{ +/obj/item/computer_hardware/hard_drive/role/signal/toxins, +/obj/item/computer_hardware/hard_drive/role/signal/toxins{ pixel_x = -4; pixel_y = 2 }, -/obj/item/cartridge/signal/toxins{ +/obj/item/computer_hardware/hard_drive/role/signal/toxins{ pixel_x = 4; pixel_y = 6 }, @@ -32206,10 +32230,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/closet/secure_closet/brig{ - id = "brig3"; - name = "Cell 3 Locker" - }, +/obj/structure/closet/secure_closet/genpop, /turf/open/floor/monotile/steel, /area/security/brig) "oZR" = ( @@ -35526,6 +35547,10 @@ }, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) +"qCo" = ( +/obj/machinery/atmospherics/components/binary/valve/digital, +/turf/open/floor/plating, +/area/maintenance/nsv/deck1/port/aft) "qCC" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -42075,7 +42100,7 @@ /turf/open/floor/monotile/steel, /area/nsv/briefingroom) "tPt" = ( -/obj/machinery/vending/cart{ +/obj/machinery/vending/job_disk{ req_access_txt = "57" }, /turf/open/floor/wood, @@ -44823,9 +44848,6 @@ /obj/structure/disposalpipe/segment{ dir = 1 }, -/obj/structure/cable{ - icon_state = "4-32" - }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/aft) "vcs" = ( @@ -48316,9 +48338,8 @@ /turf/open/floor/carpet/blue, /area/bridge/meeting_room) "wKy" = ( -/obj/structure/grille/broken, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/dark{ + dir = 1 }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/aft) @@ -50470,6 +50491,11 @@ /area/science/research) "xLA" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/ship/shutoff, +/obj/structure/cable{ + icon_state = "8-32" + }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port/aft) "xLQ" = ( @@ -72838,7 +72864,7 @@ wsg eqI gVj gVj -eqI +bRw eqI pJj pJj @@ -74334,7 +74360,7 @@ cDJ mgX cuq vck -cuq +cid tCd acZ mNq @@ -74589,7 +74615,7 @@ csK pdN lNe wKy -xLA +qCo qai xLA bXz @@ -74845,7 +74871,7 @@ pdN pdN pdN qCG -qCG +cai vCb emS meS diff --git a/_maps/map_files/Gladius/Gladius2.dmm b/_maps/map_files/Gladius/Gladius2.dmm index 4d319adca87..1a91a908571 100644 --- a/_maps/map_files/Gladius/Gladius2.dmm +++ b/_maps/map_files/Gladius/Gladius2.dmm @@ -92,6 +92,9 @@ /obj/structure/cable/yellow{ icon_state = "1-8" }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "afs" = ( @@ -642,6 +645,15 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) +"avp" = ( +/obj/effect/turf_decal/ship/techfloor{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "avB" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -775,6 +787,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "aBd" = ( @@ -861,7 +874,9 @@ /turf/open/floor/plasteel/grid/steel, /area/engine/engineering/reactor_control) "aDN" = ( -/obj/machinery/atmospherics/pipe/manifold4w/green/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer2{ + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "aEd" = ( @@ -1224,9 +1239,16 @@ /turf/open/floor/plasteel/dark, /area/engine/storage) "aTA" = ( -/obj/structure/cable/yellow, -/turf/open/floor/plasteel/airless/solarpanel, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "aTK" = ( /obj/structure/closet/crate/coffin, /obj/machinery/firealarm/directional/south, @@ -2109,6 +2131,13 @@ }, /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss) +"bwC" = ( +/obj/machinery/camera/autoname, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "bxf" = ( /obj/machinery/atmospherics/components/binary/valve/digital{ dir = 4; @@ -2260,6 +2289,15 @@ /obj/machinery/light, /turf/open/floor/wood, /area/crew_quarters/theatre) +"bCO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/meter{ + name = "FTL Waste to Cooler" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "bDl" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral{ @@ -2857,6 +2895,13 @@ }, /turf/open/floor/wood, /area/library) +"bZZ" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/brown/visible, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "cal" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3052,25 +3097,14 @@ /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "cfT" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" +/obj/effect/turf_decal/ship/techfloor{ + dir = 9 }, -/obj/machinery/power/terminal{ - dir = 8 +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/turf/open/floor/monotile/dark, -/area/nsv/engine/corridor) +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "cfW" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/monotile/dark, @@ -3130,6 +3164,22 @@ /obj/structure/rack, /turf/open/floor/plating, /area/storage/tech) +"chR" = ( +/obj/machinery/atmospherics/components/binary/drive_pylon, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "cic" = ( /obj/effect/turf_decal/bot, /obj/structure/closet/crate{ @@ -3181,6 +3231,8 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 5 }, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/effect/turf_decal/ship/outline, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "ciY" = ( @@ -3264,15 +3316,17 @@ /turf/open/floor/monotile/dark, /area/crew_quarters/kitchen) "cld" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/power/solar_control{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable{ - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 4 }, -/turf/open/floor/plasteel/techmaint, -/area/nsv/engine/corridor) +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "cle" = ( /obj/machinery/door/airlock/ship/hatch{ name = "Network Administration"; @@ -3326,18 +3380,15 @@ /obj/structure/disposalpipe/junction{ dir = 1 }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/techmaint, /area/nsv/engine/corridor) "cmB" = ( @@ -3350,6 +3401,15 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/port/fore) +"cnA" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "cnV" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/plasteel/dark, @@ -3388,13 +3448,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/obj/machinery/power/smes/engineering, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "0-2" - }, /turf/open/floor/plasteel/techmaint, /area/nsv/engine/corridor) "coz" = ( @@ -3610,6 +3663,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "ctg" = ( @@ -3927,6 +3981,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "cCz" = ( @@ -4089,6 +4144,13 @@ }, /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) +"cGo" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + id = "nucleium_in" + }, +/turf/open/floor/engine/nucleium, +/area/engine/engineering/ftl_room) "cGs" = ( /obj/machinery/door/airlock/ship/maintenance/defaultaccess{ name = "Maintenance Access Library" @@ -4132,6 +4194,13 @@ }, /turf/open/floor/monotile/dark, /area/storage/primary) +"cHX" = ( +/obj/effect/turf_decal/ship/techfloor, +/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/reactor_core) "cIl" = ( /obj/structure/cable{ icon_state = "2-8" @@ -4236,6 +4305,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "cKf" = ( @@ -4458,10 +4528,16 @@ /area/maintenance/nsv/deck2/port/fore) "cRU" = ( /obj/structure/cable/yellow{ - icon_state = "2-8" + icon_state = "1-2" }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/effect/turf_decal/ship/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "cSs" = ( /obj/effect/spawner/structure/window/reinforced/ship, /turf/open/floor/plating, @@ -5185,6 +5261,21 @@ }, /turf/open/floor/carpet/red, /area/nsv/weapons/gauss) +"dvm" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "dvv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 @@ -5346,14 +5437,10 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/open/floor/monotile/dark, /area/nsv/engine/corridor) @@ -5549,21 +5636,9 @@ }, /area/maintenance/nsv/deck2/frame1/central) "dFy" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel/techmaint, -/area/nsv/engine/corridor) +/obj/structure/grille, +/turf/open/space/basic, +/area/space) "dFK" = ( /obj/machinery/atmospherics/components/binary/pump{ name = "N2 to Rx Mix" @@ -5808,9 +5883,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/brown/hidden, /obj/structure/table, /obj/item/stack/sheet/duranium/fifty, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plasteel/techmaint, /area/engine/engineering/reactor_core) "dLi" = ( @@ -6309,6 +6384,10 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"eaY" = ( +/obj/machinery/firealarm/directional/east, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "eba" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/techmaint, @@ -6350,6 +6429,12 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating/airless, /area/engine/atmos) +"ecJ" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "ecN" = ( /obj/structure/lattice/catwalk/over/ship/dark, /obj/structure/cable{ @@ -6467,20 +6552,17 @@ /turf/open/floor/engine/n2, /area/engine/atmos) "egy" = ( -/obj/machinery/door/airlock/ship/external/glass{ - name = "Arrival Shuttle Dock" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/layer_manifold{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable/yellow{ +/obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/solar/aft) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "ehg" = ( /obj/structure/ore_box, /obj/machinery/camera/autoname{ @@ -6834,11 +6916,7 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister{ - icon_state = "miasma"; - name = "Nucleium Retrieval Canister" - }, +/obj/machinery/atmospherics/pipe/simple/green/hidden, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "esl" = ( @@ -6939,13 +7017,14 @@ /turf/open/floor/carpet/ship, /area/quartermaster/qm) "euC" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 1; - name = "Nucleium Purge" +/obj/effect/turf_decal/ship/techfloor{ + dir = 8 }, -/obj/effect/turf_decal/ship/shutoff, -/turf/open/floor/plasteel/dark, -/area/engine/engineering/reactor_core) +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "euH" = ( /obj/machinery/light/small, /turf/open/floor/plating, @@ -7037,17 +7116,11 @@ /turf/open/floor/durasteel, /area/hydroponics/garden) "exY" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 9 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "eyd" = ( /obj/machinery/computer/ship/viewscreen, /turf/open/floor/carpet, @@ -7102,12 +7175,11 @@ /turf/open/floor/durasteel, /area/maintenance/nsv/deck2/frame1/starboard) "ezy" = ( -/obj/item/solar_assembly, -/obj/structure/cable/yellow{ - icon_state = "0-2" +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 }, -/turf/open/floor/plasteel/airless/solarpanel, -/area/space/nearstation) +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "ezE" = ( /obj/structure/closet/radiation, /obj/machinery/light/small{ @@ -7511,10 +7583,8 @@ /turf/open/floor/plasteel/dark, /area/engine/break_room) "eID" = ( -/obj/effect/spawner/structure/window/reinforced/ship, -/obj/machinery/atmospherics/pipe/layer_manifold, -/turf/open/floor/plating, -/area/engine/engineering/reactor_core) +/turf/closed/wall/r_wall/ship, +/area/space) "eIR" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -7991,7 +8061,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/green/hidden/layer2, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "eYZ" = ( @@ -8092,10 +8162,11 @@ /turf/open/floor/monotile/dark, /area/engine/atmos) "fbQ" = ( -/obj/machinery/atmospherics/pipe/simple/brown/hidden, -/obj/effect/spawner/structure/window/reinforced/ship, -/turf/open/floor/plating, -/area/engine/engineering/reactor_core) +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "fbS" = ( /obj/structure/particle_accelerator/fuel_chamber{ dir = 4 @@ -8266,6 +8337,7 @@ /obj/structure/railing{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2, /turf/open/floor/plasteel/grid/techfloor/grid, /area/engine/engineering/reactor_core) "fgo" = ( @@ -9310,6 +9382,12 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/deck2/starboard/fore) +"fDN" = ( +/obj/machinery/computer/ship/ftl_core, +/obj/effect/turf_decal/ship/techfloor, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "fEg" = ( /obj/structure/table, /obj/item/storage/belt/utility, @@ -9347,8 +9425,13 @@ /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "fFD" = ( -/turf/open/floor/monotile/dark, -/area/engine/storage) +/obj/effect/turf_decal/ship/techfloor, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/reactor_core) "fFK" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 @@ -9485,6 +9568,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "fJl" = ( @@ -9592,11 +9676,7 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister{ - icon_state = "miasma"; - name = "Nucleium Retrieval Canister" - }, +/obj/machinery/atmospherics/pipe/simple/green/hidden, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "fLO" = ( @@ -9925,6 +10005,16 @@ /obj/structure/rack, /turf/open/floor/plating, /area/nsv/weapons/gauss) +"fUO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 8; + name = "Nucleium Exhaust Cooler" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "fUQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -10011,6 +10101,10 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/department/cargo) +"fXF" = ( +/obj/structure/extinguisher_cabinet/east, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "fYs" = ( /obj/machinery/door/airlock/ship/public{ name = "Dressing Room"; @@ -10111,6 +10205,7 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "gam" = ( @@ -10220,6 +10315,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "gcr" = ( @@ -10342,12 +10438,29 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/wood, /area/crew_quarters/theatre) +"geF" = ( +/obj/structure/cable/yellow, +/obj/machinery/computer/monitor{ + dir = 4; + name = "Reactor Grid power monitoring console" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "geN" = ( /obj/machinery/mineral/stacking_machine{ input_dir = 1 }, /turf/open/floor/plating, /area/maintenance/disposal) +"gfc" = ( +/obj/machinery/atmospherics/pipe/manifold/brown/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "gfO" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -10433,9 +10546,10 @@ /area/quartermaster/miningoffice) "gil" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-16" }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/effect/turf_decal/ship/shutoff, +/obj/effect/turf_decal/box, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "giq" = ( @@ -10551,6 +10665,9 @@ /area/crew_quarters/bar) "glm" = ( /obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/maintenance/nsv/deck2/starboard/aft) "glx" = ( @@ -10758,12 +10875,6 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, @@ -10779,6 +10890,7 @@ /obj/structure/cable{ icon_state = "1-4" }, +/obj/structure/cable, /turf/open/floor/monotile/dark, /area/engine/atmos) "gpR" = ( @@ -11204,6 +11316,15 @@ }, /turf/open/floor/plasteel/dark, /area/tcommsat/computer) +"gEc" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/reactor_core) "gEN" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/monotile/dark, @@ -11284,6 +11405,18 @@ /obj/machinery/blackbox_recorder, /turf/open/floor/plasteel/grid/techfloor/grid/airless, /area/tcommsat/server) +"gHH" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "gHO" = ( /obj/structure/table/wood/poker, /obj/item/toy/cards/deck{ @@ -11695,6 +11828,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/visible/layer2, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) +"gVh" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/turbolift/tertiary) "gVj" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 @@ -11731,6 +11871,16 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"gWC" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/modular_computer/console/preset/engineering, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "gWL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -12026,6 +12176,12 @@ }, /turf/open/floor/durasteel, /area/crew_quarters/locker) +"hdw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "hdB" = ( /obj/structure/chair/office{ dir = 1 @@ -12204,7 +12360,7 @@ /area/engine/atmos) "hig" = ( /turf/closed/wall/r_wall/ship, -/area/solar/aft) +/area/engine/engineering/ftl_room) "him" = ( /obj/structure/table/reinforced, /obj/item/kitchen/rollingpin, @@ -12245,6 +12401,12 @@ /obj/machinery/light/small, /turf/open/floor/plating, /area/maintenance/department/cargo) +"hjy" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "hjC" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/snacks/dough, @@ -12413,6 +12575,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "hpA" = ( @@ -12590,23 +12753,27 @@ /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "huL" = ( -/obj/machinery/door/airlock/ship/external/glass{ - name = "Arrival Shuttle Dock" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable/yellow{ +/obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/solar/aft) +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/airlock/ship/engineering{ + name = "FTL Room"; + req_one_access_txt = "10" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "hvi" = ( /turf/closed/wall/r_wall/ship, /area/security/checkpoint/engineering) @@ -12628,6 +12795,15 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) +"hvE" = ( +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "hvL" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -12985,6 +13161,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "hGN" = ( @@ -13016,6 +13193,10 @@ }, /turf/open/floor/carpet/purple, /area/library) +"hHB" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/space/basic, +/area/space) "hHD" = ( /obj/structure/closet/emcloset, /obj/machinery/airalarm/directional/west, @@ -13800,6 +13981,16 @@ }, /turf/open/floor/monotile/dark, /area/chapel/main) +"ieU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "ieY" = ( /obj/machinery/vending/snack/random, /turf/open/floor/monotile/dark, @@ -13857,6 +14048,15 @@ }, /turf/open/floor/plasteel/dark, /area/engine/storage) +"igx" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "igI" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -14247,12 +14447,16 @@ /turf/open/floor/monotile/dark, /area/hydroponics) "ipH" = ( -/obj/machinery/power/solar, -/obj/structure/cable/yellow{ - icon_state = "0-2" +/obj/machinery/atmospherics/components/binary/drive_pylon, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/ship/techfloor{ + dir = 10 }, -/turf/open/floor/plasteel/airless/solarpanel, -/area/space/nearstation) +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "ipN" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light_switch/west{ @@ -14315,7 +14519,6 @@ /turf/closed/wall/ship, /area/crew_quarters/bar) "iqF" = ( -/obj/machinery/atmospherics/pipe/simple/brown/hidden, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, @@ -14716,6 +14919,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "iBp" = ( @@ -15058,6 +15262,7 @@ dir = 8; name = "Direct Moderator Input" }, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2, /turf/open/floor/plasteel/grid/techfloor/grid, /area/engine/engineering/reactor_core) "iMs" = ( @@ -15573,6 +15778,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "jcf" = ( @@ -15834,21 +16040,15 @@ /turf/open/floor/monotile/dark, /area/engine/atmos) "jlv" = ( -/obj/machinery/advanced_airlock_controller{ - pixel_y = 26 - }, -/obj/machinery/light/small, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/cable/yellow{ +/obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, -/area/solar/aft) +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "jlH" = ( /obj/machinery/holopad, /turf/open/floor/plasteel/techmaint, @@ -16178,10 +16378,6 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "jwh" = ( -/obj/machinery/door/airlock/ship/public/glass{ - name = "Atmospherics Monitoring"; - req_one_access_txt = "10;24" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -16206,6 +16402,12 @@ dir = 4 }, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/airlock/ship/engineering/glass{ + req_one_access_txt = "10;24" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/open/floor/monotile/dark, /area/engine/atmos) "jwp" = ( @@ -16224,6 +16426,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "jwZ" = ( @@ -16286,6 +16489,33 @@ /obj/machinery/camera/autoname, /turf/open/floor/plating, /area/maintenance/disposal) +"jyU" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/airlock/ship/engineering{ + name = "FTL Room"; + req_one_access_txt = "10" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) +"jyZ" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/item/pipe_dispenser, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "jza" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -16308,9 +16538,11 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen/coldroom) "jzO" = ( -/obj/item/solar_assembly, -/turf/open/floor/plasteel/airless/solarpanel, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/ship/techfloor, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "jzZ" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ @@ -16643,6 +16875,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "jJx" = ( @@ -16820,20 +17053,11 @@ /turf/open/space/basic, /area/space/nearstation) "jPo" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 6 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "jPJ" = ( /obj/effect/decal/cleanable/dirt, /obj/item/electronics/apc, @@ -16843,12 +17067,14 @@ /turf/open/floor/plasteel/tech/grid, /area/quartermaster/warehouse) "jPO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/brown/hidden, -/obj/structure/lattice/catwalk/over/ship, -/turf/open/floor/plating, -/area/engine/engineering/reactor_core) +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "jPU" = ( /obj/machinery/door/airlock/ship/station/mining{ name = "Mining Lounge"; @@ -16883,6 +17109,8 @@ /obj/effect/turf_decal/ship/techfloor{ dir = 9 }, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/effect/turf_decal/ship/outline, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "jRJ" = ( @@ -16896,6 +17124,13 @@ }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/frame1/central) +"jRX" = ( +/obj/machinery/atmospherics/pipe/manifold/green/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "jSi" = ( /obj/effect/turf_decal/ship/delivery/yellow, /obj/machinery/door/firedoor/border_only/directional/north, @@ -17236,6 +17471,15 @@ /obj/structure/table/wood, /turf/open/floor/carpet/purple, /area/library) +"kcg" = ( +/obj/effect/turf_decal/ship/techfloor{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "kci" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -17608,6 +17852,19 @@ /obj/machinery/light, /turf/open/floor/monotile/dark, /area/crew_quarters/kitchen) +"koE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) +"koX" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "kpu" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/engine/n2o, @@ -18048,11 +18305,10 @@ /turf/closed/wall/ship, /area/engine/atmos) "kDJ" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "kEq" = ( /obj/machinery/power/apc/auto_name/east, /obj/structure/cable/yellow{ @@ -18806,12 +19062,8 @@ /turf/open/floor/monotile/dark, /area/quartermaster/office) "leQ" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-8"; - tag = "" +/obj/machinery/atmospherics/components/binary/valve/digital{ + dir = 4 }, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) @@ -19055,6 +19307,15 @@ }, /turf/open/floor/wood, /area/library) +"lkh" = ( +/obj/effect/turf_decal/ship/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "lkl" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -19066,16 +19327,26 @@ }, /area/chapel/main) "lkt" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/power/smes/engineering, -/obj/structure/cable{ +/obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "0-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/turf/open/floor/plasteel/techmaint, -/area/nsv/engine/corridor) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/brown/visible{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "lkV" = ( /turf/closed/wall/ship, /area/security/checkpoint/customs) @@ -19201,18 +19472,18 @@ /turf/open/floor/monotile/dark, /area/quartermaster/sorting) "lqn" = ( -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = 4; pixel_y = 5 }, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = -3; pixel_y = 2 }, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = 3 }, -/obj/item/cartridge/atmos, +/obj/item/computer_hardware/hard_drive/role/atmos, /obj/structure/disposalpipe/segment, /obj/structure/rack, /obj/effect/turf_decal/ship/techfloor{ @@ -19317,10 +19588,6 @@ /turf/open/floor/plasteel/techmaint, /area/engine/storage) "lsV" = ( -/obj/machinery/door/airlock/ship/public/glass{ - name = "Atmospherics Monitoring"; - req_one_access_txt = "10;24" - }, /obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -19335,6 +19602,11 @@ /obj/structure/cable{ icon_state = "1-4" }, +/obj/machinery/door/airlock/ship/engineering/glass{ + req_one_access_txt = "10;24" + }, +/obj/effect/landmark/zebra_interlock_point, +/obj/structure/cable, /turf/open/floor/monotile/dark, /area/engine/atmos) "ltG" = ( @@ -19591,11 +19863,10 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet) "lBb" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/effect/turf_decal/ship/techfloor, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "lBn" = ( /obj/machinery/disposal/bin, /obj/machinery/light_switch/west, @@ -20218,7 +20489,7 @@ pixel_x = 4; pixel_y = -2 }, -/obj/item/cartridge/janitor, +/obj/item/computer_hardware/hard_drive/role/janitor, /obj/machinery/light{ dir = 4 }, @@ -20633,19 +20904,20 @@ /turf/open/floor/plating, /area/construction) "mcl" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/turf/open/floor/monotile/dark, -/area/nsv/engine/corridor) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "mct" = ( /obj/item/restraints/legcuffs/beartrap, /obj/item/restraints/legcuffs/beartrap, @@ -20898,6 +21170,17 @@ }, /turf/open/floor/monotile/dark, /area/chapel/main) +"miM" = ( +/obj/machinery/atmospherics/components/binary/drive_pylon, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/ship/techfloor{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "miX" = ( /obj/structure/closet/secure_closet/security/engine, /obj/item/book/manual/wiki/security_space_law, @@ -21007,14 +21290,8 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) "mmi" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "mmj" = ( /obj/structure/cable{ icon_state = "1-4" @@ -21223,6 +21500,7 @@ dir = 4 }, /obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "mpv" = ( @@ -21284,6 +21562,7 @@ /obj/structure/cable{ icon_state = "1-8" }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "msH" = ( @@ -21893,9 +22172,14 @@ /turf/open/floor/monotile/dark, /area/hallway/secondary/exit/departure_lounge) "mJh" = ( -/obj/effect/spawner/structure/window/reinforced/ship, -/turf/open/floor/plating, -/area/solar/aft) +/obj/effect/turf_decal/ship/techfloor{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "mJn" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -22102,6 +22386,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) +"mRS" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "mSa" = ( /obj/effect/spawner/room/fivexfour, /turf/template_noop, @@ -22889,6 +23179,21 @@ }, /turf/open/floor/monotile/dark, /area/hallway/secondary/service) +"noA" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "noL" = ( /obj/machinery/telecomms/server/presets/engineering, /obj/effect/turf_decal/tile/brown{ @@ -23048,7 +23353,7 @@ /turf/open/floor/carpet/green, /area/engine/engineering/reactor_core) "nsL" = ( -/obj/item/cartridge/lawyer, +/obj/item/computer_hardware/hard_drive/role/lawyer, /obj/item/clothing/accessory/lawyers_badge, /obj/item/clothing/accessory/lawyers_badge, /obj/item/clothing/suit/toggle/lawyer, @@ -23523,6 +23828,11 @@ "nII" = ( /turf/closed/wall/ship, /area/crew_quarters/toilet) +"nIV" = ( +/obj/effect/turf_decal/ship/techfloor, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "nJq" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -24008,6 +24318,13 @@ }, /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) +"nVk" = ( +/obj/machinery/atmospherics/components/binary/pump/layer4{ + name = "Cooled FTL Waste to Scrubber"; + on = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "nVr" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/grid/steel, @@ -24136,6 +24453,13 @@ }, /turf/open/floor/plasteel/grid/techfloor/grid/airless, /area/tcommsat/server) +"nYs" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "nYx" = ( /obj/structure/closet/firecloset, /turf/open/floor/monotile/dark, @@ -24402,6 +24726,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "oeL" = ( @@ -24845,6 +25170,12 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) +"ouq" = ( +/obj/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "ouH" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -24949,9 +25280,11 @@ /turf/open/floor/plasteel/techmaint, /area/engine/engineering/reactor_core) "oxx" = ( -/obj/structure/closet/crate/solarpanel_small, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "oxC" = ( /obj/structure/mirror{ pixel_y = 26 @@ -25000,7 +25333,7 @@ pixel_y = 7 }, /obj/item/pen, -/obj/item/cartridge/lawyer{ +/obj/item/computer_hardware/hard_drive/role{ pixel_x = 8 }, /turf/open/floor/carpet/blue, @@ -25086,8 +25419,18 @@ /turf/open/floor/plasteel/dark, /area/engine/break_room) "oAX" = ( -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/ship/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "oBc" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /turf/open/floor/plasteel/grid/techfloor/grid/airless, @@ -25248,6 +25591,16 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"oGG" = ( +/obj/machinery/computer/atmos_control/tank/sm{ + dir = 8; + input_tag = "nucleium_in"; + name = "Nucleium Tank Monitor"; + output_tag = "nucleium_out"; + sensors = list("nucleium"="Nucleium") + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "oGK" = ( /obj/structure/sink/kitchen{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; @@ -25333,10 +25686,17 @@ /turf/open/floor/monotile/dark, /area/storage/primary) "oJu" = ( -/obj/structure/cable/yellow, -/obj/machinery/power/tracker, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "oJD" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -25709,12 +26069,11 @@ /turf/open/floor/plasteel/techmaint, /area/engine/engineering/reactor_core) "oXO" = ( -/obj/structure/cable/yellow{ - icon_state = "0-2" +/obj/machinery/camera/autoname{ + dir = 1 }, -/obj/machinery/power/tracker, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "oYo" = ( /obj/structure/cable{ icon_state = "0-2" @@ -26648,12 +27007,12 @@ /turf/open/floor/durasteel, /area/lawoffice) "pwQ" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 9 - }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/multiz{ + dir = 8 + }, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "pwS" = ( @@ -26845,11 +27204,8 @@ /turf/open/floor/monotile/airless, /area/tcommsat/server) "pCV" = ( -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/airless/solarpanel, -/area/space/nearstation) +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "pDi" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, @@ -26902,8 +27258,10 @@ "pFq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/brown/hidden{ - dir = 5 +/obj/machinery/atmospherics/components/binary/pump/layer2{ + dir = 8; + name = "Stormdrive Waste to FTL"; + target_pressure = 3000 }, /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, @@ -26959,6 +27317,15 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) +"pGD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/reactor_core) "pGR" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -28194,6 +28561,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/frame1/central) +"qmY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "qng" = ( /obj/structure/cable{ icon_state = "4-8" @@ -28801,22 +29174,10 @@ /turf/open/floor/monotile/dark, /area/engine/engineering/reactor_control) "qDe" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/monotile/dark, -/area/nsv/engine/corridor) +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "qDx" = ( /obj/structure/sign/poster/official/report_crimes{ pixel_x = -32 @@ -28824,6 +29185,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "qDC" = ( @@ -29232,6 +29594,20 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/frame1/central) +"qPR" = ( +/obj/machinery/light, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/computer/monitor{ + dir = 4; + name = "Main Grid power monitoring console" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "qPU" = ( /obj/structure/closet/radiation, /obj/structure/cable{ @@ -29353,6 +29729,10 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) +"qSZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "qTb" = ( /obj/structure/bed, /obj/item/bedsheet/dorms, @@ -29972,6 +30352,11 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) +"rhk" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering/ftl_room) "rhH" = ( /obj/effect/turf_decal/tile/ship/full/blue, /obj/machinery/light, @@ -30473,15 +30858,15 @@ /area/quartermaster/qm) "rvu" = ( /obj/structure/table, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = -4; pixel_y = 7 }, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = 6; pixel_y = 5 }, -/obj/item/cartridge/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster, /obj/item/gps{ gpstag = "QM0" }, @@ -30556,6 +30941,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "rxc" = ( @@ -30674,6 +31060,12 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) +"rCA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "rCB" = ( /obj/machinery/ore_silo, /obj/machinery/status_display/supply/north, @@ -31052,20 +31444,38 @@ /turf/open/floor/engine, /area/engine/engineering/reactor_core) "rNc" = ( -/obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ icon_state = "0-4" }, /obj/structure/cable{ - icon_state = "0-2" + icon_state = "2-4" }, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/storage) +"rNj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "rNm" = ( /obj/structure/table, /obj/item/reagent_containers/food/snacks/muffin/berry, /turf/open/floor/wood, /area/crew_quarters/bar) +"rNx" = ( +/obj/machinery/atmospherics/pipe/manifold/brown/visible{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "rOa" = ( /obj/structure/closet/emcloset, /obj/effect/turf_decal/tile/ship/full/yellow, @@ -31325,11 +31735,14 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/monotile/dark, /area/nsv/engine/corridor) "rVu" = ( @@ -31740,6 +32153,10 @@ /area/crew_quarters/dorms) "shr" = ( /obj/machinery/airalarm/directional/north, +/obj/machinery/door/airlock/ship/engineering{ + name = "Engineering Construction Storage"; + req_one_access_txt = "10;24" + }, /turf/open/floor/plasteel/dark, /area/nsv/engine/corridor) "shB" = ( @@ -31754,6 +32171,13 @@ "shK" = ( /turf/closed/wall/ship, /area/security/checkpoint/supply) +"shM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "siC" = ( /obj/structure/closet/firecloset, /turf/open/floor/monotile/dark, @@ -32319,6 +32743,13 @@ /obj/item/dest_tagger, /turf/open/floor/monotile/dark, /area/quartermaster/sorting) +"sxn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering/ftl_room) "sxu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -32359,6 +32790,21 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/frame1/starboard) +"syC" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "syL" = ( /obj/structure/table, /obj/item/hand_labeler, @@ -32494,6 +32940,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/nsv/deck2/starboard/aft) +"sCZ" = ( +/obj/machinery/camera/autoname{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "sDB" = ( /obj/machinery/door/airlock/ship{ name = "Garden" @@ -32742,6 +33194,14 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/monotile/dark, /area/quartermaster/miningoffice) +"sJn" = ( +/obj/machinery/power/apc/auto_name/south, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "sJo" = ( /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, @@ -32809,25 +33269,33 @@ /turf/open/floor/plating, /area/nsv/weapons/gauss) "sMx" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/power/solar_control{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/effect/turf_decal/ship/techfloor{ + dir = 1 }, -/turf/open/floor/plasteel/techmaint, -/area/nsv/engine/corridor) +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "sMI" = ( /obj/machinery/atmospherics/pipe/multiz/layer4, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "sMT" = ( -/obj/machinery/computer/ship/ftl_computer{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/monotile/dark, -/area/engine/storage) +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "sMV" = ( /obj/effect/turf_decal/bot, /obj/structure/closet/crate, @@ -33824,10 +34292,21 @@ /turf/open/floor/carpet/ship, /area/chapel/office) "tpb" = ( -/obj/item/solar_assembly, -/obj/structure/cable/yellow, -/turf/open/floor/plasteel/airless/solarpanel, -/area/space/nearstation) +/obj/machinery/atmospherics/components/binary/drive_pylon, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "tpd" = ( /obj/structure/mopbucket, /obj/item/mop, @@ -34072,6 +34551,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "twu" = ( @@ -34111,8 +34591,8 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer2{ + dir = 1 }, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) @@ -34155,6 +34635,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/dark, /area/nsv/engine/corridor) +"tAt" = ( +/obj/machinery/lazylift_button, +/turf/closed/wall/ship, +/area/shuttle/turbolift/tertiary) "tAz" = ( /obj/machinery/light{ dir = 4 @@ -34163,9 +34647,6 @@ /area/chapel/main) "tAQ" = ( /obj/structure/lattice/catwalk, -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ - name = "Nucleium Waste Outlet" - }, /turf/open/space/basic, /area/engine/engineering/reactor_core) "tBe" = ( @@ -34489,6 +34970,11 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/dark, /area/quartermaster/miningoffice) +"tJQ" = ( +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/reactor_core) "tKn" = ( /obj/effect/turf_decal/ship/techfloor{ dir = 4 @@ -34520,11 +35006,11 @@ /turf/open/floor/plasteel/dark, /area/engine/break_room) "tKY" = ( -/obj/machinery/atmospherics/pipe/simple/brown/hidden{ - dir = 4 - }, /obj/effect/turf_decal/ship/delivery/yellow, /obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "tLh" = ( @@ -34556,23 +35042,11 @@ /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "tLz" = ( -/obj/effect/turf_decal/tile/yellow{ +/obj/machinery/light{ dir = 1 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow, -/obj/machinery/power/terminal{ - dir = 8 - }, -/turf/open/floor/monotile/dark, -/area/nsv/engine/corridor) +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "tLE" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -34715,6 +35189,24 @@ }, /turf/open/floor/durasteel, /area/lawoffice) +"tPW" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/meter{ + name = "FTL Pillar Input" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "tPX" = ( /obj/machinery/camera/autoname{ dir = 4 @@ -34901,10 +35393,20 @@ /turf/open/floor/plasteel/dark, /area/engine/atmos) "tXz" = ( -/obj/machinery/power/solar, -/obj/structure/cable/yellow, -/turf/open/floor/plasteel/airless/solarpanel, -/area/space/nearstation) +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "tYa" = ( /obj/effect/turf_decal/pool/corner{ dir = 4 @@ -35102,14 +35604,11 @@ /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "udY" = ( -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/airless/solarpanel, -/area/space/nearstation) +/obj/effect/turf_decal/ship/techfloor, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "ueg" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -35213,6 +35712,10 @@ /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) +"ujF" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "ujR" = ( /obj/machinery/conveyor{ dir = 8; @@ -35563,14 +36066,32 @@ /turf/open/floor/plating, /area/storage/tech) "utf" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/green/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "utD" = ( /obj/effect/turf_decal/ship/delivery/yellow, /turf/open/floor/plasteel/techmaint, /area/engine/engineering/reactor_core) +"utH" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_y = 6; + name = "Common Channel Intercom" + }, +/obj/item/radio/intercom{ + pixel_y = -5; + name = "Engineering Channel Intercom"; + frequency = 1357 + }, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "uup" = ( /obj/item/radio/intercom/directional/east, /obj/structure/lattice/catwalk/over/ship/dark, @@ -36098,6 +36619,12 @@ }, /turf/open/floor/monotile/dark, /area/quartermaster/miningoffice) +"uIu" = ( +/obj/machinery/air_sensor/atmos/nucleium_tank{ + id_tag = "nucleium" + }, +/turf/open/floor/engine/nucleium, +/area/engine/engineering/ftl_room) "uII" = ( /obj/machinery/newscaster/directional/west, /turf/open/floor/monotile/dark, @@ -36133,13 +36660,9 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable/yellow{ +/obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/cable/yellow, -/obj/machinery/power/terminal{ - dir = 8 - }, /turf/open/floor/monotile/dark, /area/nsv/engine/corridor) "uJd" = ( @@ -36152,6 +36675,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "uJJ" = ( @@ -36283,6 +36807,7 @@ /obj/machinery/computer/lore_terminal{ pixel_x = 6 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "uOv" = ( @@ -36361,6 +36886,12 @@ }, /turf/open/floor/plasteel/chapel, /area/chapel/main) +"uSa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nucleium_output{ + id_tag = "nucleium_out" + }, +/turf/open/floor/engine/nucleium, +/area/engine/engineering/ftl_room) "uSh" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -36672,11 +37203,18 @@ /turf/open/floor/plating, /area/maintenance/nsv/deck2/frame1/starboard) "vcj" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/airlock/ship/engineering{ + name = "FTL Room"; + req_one_access_txt = "10" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "vdG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -36699,6 +37237,13 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/wood, /area/crew_quarters/bar) +"veB" = ( +/obj/machinery/atmospherics/pipe/manifold/green/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "veD" = ( /obj/structure/closet/crate/coffin, /obj/item/reagent_containers/food/snacks/grown/poppy{ @@ -37493,6 +38038,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "vCU" = ( @@ -37562,6 +38108,9 @@ /area/construction) "vGo" = ( /obj/item/radio/intercom/directional/south, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer2{ + dir = 9 + }, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) "vGZ" = ( @@ -37726,10 +38275,10 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "2-8" }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "vLV" = ( @@ -38045,8 +38594,9 @@ /turf/open/floor/plating, /area/engine/atmos) "vTu" = ( -/turf/closed/wall/ship, -/area/solar/aft) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "vTz" = ( /obj/machinery/power/solar_control{ dir = 4 @@ -38188,8 +38738,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) +"vXY" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "vYb" = ( /obj/structure/table, /obj/item/cultivator, @@ -38397,6 +38954,12 @@ }, /turf/open/floor/durasteel, /area/crew_quarters/locker) +"wde" = ( +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "wdr" = ( /obj/structure/table, /obj/item/hatchet, @@ -38695,6 +39258,7 @@ /obj/structure/cable{ icon_state = "0-2" }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "wnO" = ( @@ -38993,10 +39557,6 @@ /turf/open/floor/monotile/dark, /area/storage/tools) "wvU" = ( -/obj/machinery/door/airlock/ship/public/glass{ - name = "Atmospherics"; - req_one_access_txt = "10;24" - }, /obj/machinery/door/firedoor/border_only{ dir = 4 }, @@ -39013,6 +39573,10 @@ dir = 4 }, /obj/effect/landmark/zebra_interlock_point, +/obj/machinery/door/airlock/ship/engineering{ + name = "Atmospherics"; + req_one_access_txt = "10;24" + }, /turf/open/floor/monotile/dark, /area/engine/atmos) "wwi" = ( @@ -39148,8 +39712,31 @@ /area/chapel/main) "wAC" = ( /obj/effect/turf_decal/stripes/line, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) +"wAO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/landmark/zebra_interlock_point, +/turf/open/floor/monotile/dark, +/area/engine/storage) "wAT" = ( /obj/machinery/telecomms/broadcaster/preset_right, /turf/open/floor/circuit/airless, @@ -39176,10 +39763,14 @@ }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/frame1/central) +"wCF" = ( +/obj/machinery/airalarm/directional/south, +/turf/open/floor/engine, +/area/engine/engineering/ftl_room) "wCH" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/solar/aft) +/area/engine/engineering/ftl_room) "wDh" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -39671,9 +40262,8 @@ "wSA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/brown/hidden, -/obj/structure/lattice/catwalk/over/ship, /obj/effect/landmark/start/station_engineer, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/engine/engineering/reactor_core) "wSW" = ( @@ -39789,11 +40379,17 @@ /turf/open/floor/monotile/dark, /area/engine/engineering/reactor_core) "wXe" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "wXk" = ( /obj/structure/lattice/catwalk/over/ship/dark, /obj/structure/cable{ @@ -40285,18 +40881,6 @@ /obj/machinery/field/generator, /turf/open/floor/plating, /area/engine/storage) -"xlz" = ( -/obj/docking_port/stationary{ - dir = 2; - dwidth = 3; - height = 14; - id = "arrivals_stationary"; - name = "gladius arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/gladius; - width = 7 - }, -/turf/open/space/basic, -/area/space/nearstation) "xlA" = ( /obj/structure/closet/secure_closet/brig{ id = "engcell"; @@ -40419,14 +41003,12 @@ /turf/open/floor/plasteel/grid/steel, /area/hallway/secondary/exit/departure_lounge) "xof" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, +/obj/machinery/atmospherics/pipe/simple/brown/visible, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "xox" = ( /obj/structure/cable{ icon_state = "4-8" @@ -40657,6 +41239,13 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck2/starboard/fore) +"xuU" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped{ + dir = 8; + filter_type = "nucleium" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "xvq" = ( /obj/machinery/door/airlock/ship/hatch{ name = "Telecommunications Storage"; @@ -40685,6 +41274,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "xwF" = ( @@ -40788,6 +41378,10 @@ }, /turf/open/floor/monotile/airless, /area/tcommsat/server) +"xBr" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "xBt" = ( /obj/structure/closet/crate, /obj/item/wrench/medical, @@ -41000,9 +41594,6 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 6 }, -/obj/structure/cable{ - icon_state = "4-16" - }, /turf/open/floor/plasteel/grid/steel, /area/engine/atmos) "xGV" = ( @@ -41814,6 +42405,7 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monotile/light, /area/crew_quarters/cryopods) "yfJ" = ( @@ -41966,15 +42558,29 @@ }, /turf/open/floor/monotile/dark, /area/security/checkpoint/engineering) +"ylS" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/ship/techfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering/ftl_room) "ylW" = ( /turf/closed/wall/ship, /area/storage/art) "ymc" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/brown/visible, +/obj/machinery/meter{ + name = "FTL Pillar Exhaust" }, -/turf/open/floor/plating/airless, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/engine/engineering/ftl_room) "ymi" = ( /turf/open/floor/plating, /area/nsv/weapons/gauss) @@ -47248,7 +47854,7 @@ aaa aaa aaa aaa -aaa +hHB aaa aaa aaa @@ -53693,19 +54299,19 @@ aaa aaa aaa aaa +dFy +dFy +dFy +dFy +dFy +dFy aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +dFy +dFy +dFy +dFy +dFy +dFy aaa aaa aaa @@ -53950,19 +54556,19 @@ aaa aaa aaa aaa +dFy +eID +eID +eID +eID +dFy aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +dFy +eID +eID +eID +eID +dFy aaa aaa aaa @@ -54207,19 +54813,19 @@ aaa aaa aaa aaa +dFy +dFy +dFy +dFy +dFy +dFy aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +dFy +dFy +dFy +dFy +dFy +dFy aaa ncg ncg @@ -54465,17 +55071,17 @@ fiL uaT aaa aaa +cTt aaa aaa +cTt aaa aaa aaa +cTt aaa aaa -aaa -aaa -aaa -aaa +cTt aaa aaa ncg @@ -54722,17 +55328,17 @@ fiL fiL aaa aaa +cTt aaa aaa +cTt aaa aaa aaa +cTt aaa aaa -aaa -aaa -aaa -aaa +cTt aaa aaa ncg @@ -54977,21 +55583,21 @@ ecj fiL fiL fiL -fiL -fiL -oXO -wXe -fiL -fiL -kDJ -oJu -oXO -wXe -fiL -fiL -kDJ -oJu -fiL +cCg +cCg +hig +hig +hig +hig +hig +hig +hig +hig +hig +hig +hig +hig +hig uCi aaa aaa @@ -55236,18 +55842,18 @@ ecj ecj ecj hig -ipH -exY -tXz -ipH -exY -tXz -ipH -exY -tXz -ipH -exY -aTA +hig +hig +hig +hig +hig +hig +hig +hig +hig +hig +hig +hig hig uCi aaa @@ -55493,18 +56099,18 @@ iLT iLT ecj hig -ipH -exY -aTA -pCV -exY -tXz -ipH -exY -tXz -pCV -exY -tXz +mmi +mmi +mmi +mmi +mmi +mmi +ouq +mmi +mmi +mmi +mmi +mmi hig xwj xwj @@ -55750,18 +56356,18 @@ btC btC cnV hig -pCV +mmi jPo -tXz -pCV -exY -tXz -ipH -exY +chR +dvm +cRU +cRU +cRU +cRU tXz ipH -exY -aTA +fbQ +mmi hig xwj xwj @@ -56007,18 +56613,18 @@ btC btC xpz hig +tLz +shM oAX -lBb -oAX -oAX -lBb -oAX -oAX -lBb -oAX -oAX -lBb -oAX +utf +qDe +qDe +qDe +qDe +ieU +udY +exY +ujF hig xwj wAT @@ -56264,18 +56870,18 @@ tnF vYj oBJ hig -ipH -exY -tpb -ezy -exY -tpb +mmi +oxx +sMx ezy -exY -aTA +cfT +euC +euC +mJh +sMT jzO -exY -tXz +qmY +mmi hig nyb oBc @@ -56521,18 +57127,18 @@ lOu gKT cuc hig -ipH -exY -tpb +mmi +oxx +sMx +ezy +lkh pCV -exY -aTA pCV -exY -aTA -jzO -exY -aTA +lBb +cld +nIV +mmi +mmi hig bIq woy @@ -56756,9 +57362,9 @@ ioS ioS jPd tAQ -utf -eID -euC +qAk +wYF +btC aDN czX mgl @@ -56776,20 +57382,20 @@ mxv mox nZO aeQ -pQI -hig -ipH -exY -aTA +gEc +jyU +igx +jPO +syC ezy -exY -aTA +lkh pCV -exY -tpb -jzO -exY -tXz +pCV +fDN +cld +nIV +mmi +mmi hig bIq woZ @@ -57022,31 +57628,31 @@ sfn rzf ciY rzf -drj +cHX ffZ iLY tws -dwf -dwf +tJQ +tJQ cCx iBa mpp jJc -gKT +fFD vGo hig -oAX -lBb -oAX -oAX -lBb -oAX -oAX -lBb -oAX -oAX +vXY +oxx +sMx +ezy +lkh +pCV +pCV lBb -oAX +cld +nIV +mmi +oXO hig vQo uNP @@ -57290,20 +57896,20 @@ tDt tDt tDt ekj -btC +pQI hig -ipH -exY -tpb +bwC +oxx +sMx ezy -exY -aTA -pCV -exY -aTA -pCV -exY -tXz +avp +hvE +hvE +kcg +cld +nIV +mmi +mmi hig osn wqq @@ -57549,18 +58155,18 @@ btC btC xpz hig -ipH -exY -tpb -pCV -exY -aTA -pCV -exY +vXY +oxx +ylS +jRX +veB +kDJ +kDJ +kDJ aTA udY -exY -aTA +fbQ +mmi hig bIq wrh @@ -57806,18 +58412,18 @@ jhd jhd gXH hig -ipH -exY +vXY +rNx tpb -pCV -exY -aTA -pCV -exY -aTA -pCV +noA +tPW +gHH +gHH +mcl +lkt +miM exY -tXz +mmi hig kZk oBc @@ -58047,7 +58653,7 @@ xzq jwp pLA dMm -dMm +pGD dMm fUQ sRH @@ -58063,18 +58669,18 @@ wNe wNe ecj hig -oAX -lBb -oAX -oAX -mmi -ymc +vXY +ecJ +koX +koX +bZZ +gfc ymc xof -oAX -oAX -lBb -oAX +rNj +qSZ +rCA +mmi hig omb btY @@ -58298,11 +58904,11 @@ ioS ioS jPd tsX -hUF -fbQ +tAQ +wYF dKS iqF -jPO +izp wSA pFq izp @@ -58320,18 +58926,18 @@ vwN vwN ecj hig -pCV -xof -oAX -oAX -lBb -oAX -oAX -lBb -oAX -oAX +wde +xBr +xBr +xBr +nYs +xuU mmi -tXz +hjy +oJu +jyZ +geF +qPR hig iEd wsj @@ -58577,18 +59183,18 @@ vwN vwN ecj hig -pCV -xof -oAX -kDJ -vcj -oAX -oAX -cRU -wXe -oAX +cnA +oGG mmi -aTA +sCZ +vXY +bCO +mmi +mmi +wXe +gWC +hdw +sJn hig knc iwi @@ -58834,18 +59440,18 @@ kZy wNe ecj hig -pCV -xof -vTu -egy -vTu -oAX -oAX -vTu -egy -vTu +sxn +wCH +wCH +hig +vXY +mRS mmi -aTA +mmi +egy +utH +pCV +wCF hig tDQ aVM @@ -59091,18 +59697,18 @@ ecj ecj ecj hig -ipH -vcj -mJh -jlv -mJh -oxx -oAX -mJh +cGo +uIu +uSa +rhk +exY +fUO +vTu +nVk jlv -mJh -cRU -aTA +koE +eaY +fXF hig qop pYQ @@ -59350,16 +59956,16 @@ ecj hig wCH wCH -vTu -huL -vTu wCH +hig +vcj wCH -vTu -huL -vTu wCH wCH +huL +hig +hig +hig hig oZO oZO @@ -59607,14 +60213,14 @@ duI aEd kho kho -cld -dFy -lkt +kho +kho +kho cov -lkt -lkt +kho +kho cmn -sMx +kho kho mUf kho @@ -59864,14 +60470,14 @@ wHn kXU uEg dFl -mcl dAY -tLz +dAY +dAY uJc -cfT -cfT +dAY +dAY rVe -qDe +dAY dFl alm dFl @@ -60375,7 +60981,7 @@ kHT ecj ecj pWy -vlW +wAO iaa iaa uhi @@ -62443,7 +63049,7 @@ lEY lEY lEY hnm -cEl +gVh qjq xmk gnw @@ -63217,7 +63823,7 @@ khJ khJ jBH dnn -khJ +tAt khJ dJe dJe @@ -64985,11 +65591,11 @@ ogi oDg lHQ iUn -dvQ +hrw nTz vst ijJ -dvQ +hrw mZl scl ndP @@ -65256,9 +65862,9 @@ syU nRQ tKO hrw -fFD -fFD -sMT +pWy +pWy +pWy iaa cfw czV @@ -65513,9 +66119,9 @@ tHh vRf wfR hvi -pWy -pWy -pWy +jBz +jBz +jBz pWy pWy pWy @@ -75556,7 +76162,7 @@ oYR gJw iCo qQs -xlz +fiL fiL fiL fiL diff --git a/_maps/map_files/Hammerhead/Hammerhead.dmm b/_maps/map_files/Hammerhead/Hammerhead.dmm index b2491444a2d..a3dbae2f4e2 100644 --- a/_maps/map_files/Hammerhead/Hammerhead.dmm +++ b/_maps/map_files/Hammerhead/Hammerhead.dmm @@ -89,6 +89,15 @@ /obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) +"aar" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "aat" = ( /turf/closed/wall/ship, /area/engine/engine_smes) @@ -134,6 +143,11 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) +"aaG" = ( +/obj/machinery/airalarm/directional/north, +/obj/machinery/computer/ams, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "aaH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -150,7 +164,7 @@ /turf/open/floor/plasteel/dark, /area/bridge) "aaI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel, @@ -171,22 +185,22 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/west{ pixel_y = 24 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, /obj/machinery/camera/autoname{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/crew_quarters/bar/atrium) "aaL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/command/glass{ name = "Bridge"; @@ -206,8 +220,8 @@ /turf/closed/wall/ship, /area/science/mixing) "aaT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -224,8 +238,8 @@ /turf/open/floor/carpet/ship, /area/bridge/cic) "aaV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/public{ name = "Custodial Closet"; @@ -245,20 +259,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/light{ +/obj/machinery/light/runway/delay4, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 8 }, -/obj/machinery/light/runway/delay4, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) -"aaY" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "aaZ" = ( /turf/open/floor/plasteel/white, /area/science/mixing) @@ -266,17 +272,8 @@ /turf/closed/wall/ship, /area/quartermaster/storage) "abb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/light/runway/delay4, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/turf/template_noop, +/area/maintenance/port/central) "abe" = ( /obj/machinery/camera/autoname{ dir = 4 @@ -308,13 +305,14 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 4 +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "abi" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 8 @@ -322,7 +320,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -28 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel, @@ -331,13 +329,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/advanced_airlock_controller/directional/east{ + req_access = list(79) }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "abk" = ( /obj/machinery/door/airlock/ship/public{ name = "Restrooms" @@ -376,35 +373,24 @@ /obj/effect/spawner/structure/window/reinforced/ship, /turf/open/floor/plating, /area/hallway/secondary/entry) -"abp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 4 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "abr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "abs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/public{ name = "Restrooms" @@ -527,24 +513,16 @@ name = "Launch tubes 1 and 2" }) "abS" = ( -/obj/effect/turf_decal/stripes/line{ +/turf/template_noop, +/area/maintenance/starboard/central) +"abT" = ( +/obj/effect/turf_decal/arrows/white, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ dir = 8 }, -/obj/structure/fighter_launcher, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 4 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) -"abT" = ( -/obj/effect/turf_decal/arrows, -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/obj/effect/turf_decal/delivery/white, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "abV" = ( /obj/machinery/door/airlock/ship/public/glass{ name = "Aft Primary Hallway" @@ -563,8 +541,8 @@ /turf/closed/wall/ship, /area/science/test_area) "abZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, @@ -594,10 +572,6 @@ /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) -"ace" = ( -/obj/machinery/light, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/secondary/entry) "acf" = ( /obj/machinery/light{ dir = 1 @@ -618,20 +592,6 @@ /obj/machinery/vending/cigarette, /turf/open/floor/durasteel/padded, /area/crew_quarters/locker) -"acj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) "ack" = ( /turf/open/floor/durasteel, /area/security/main) @@ -670,8 +630,8 @@ /turf/open/floor/durasteel/padded, /area/crew_quarters/locker) "acr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/table, /turf/open/floor/durasteel/padded, @@ -697,36 +657,21 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/exit/departure_lounge) -"acB" = ( -/turf/closed/wall/r_wall/ship, -/area/security/checkpoint/customs) -"acC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 +"acA" = ( +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/structure/grille, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/weapons/fore) +"acB" = ( +/turf/closed/wall/r_wall/ship, +/area/security/checkpoint/customs) "acF" = ( -/obj/machinery/button/door{ - id = "launchbay_tube1"; - name = "Tube 1 Interior Doors"; - pixel_x = 8; - req_one_access_txt = "69" - }, /obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "launch1"; - name = "Tube 1 exterior doors"; - req_one_access_txt = "69" - }, /turf/open/floor/durasteel, /area/nsv/hanger/deck2/starboard{ name = "Launch tubes 1 and 2" @@ -753,56 +698,43 @@ /turf/open/floor/grass, /area/hallway/secondary/exit/departure_lounge) "acK" = ( -/obj/machinery/button/door{ - id = "launch2"; - name = "Tube 2 exterior doors"; - req_one_access_txt = "69" - }, -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "launchbay_tube2"; - name = "Tube 2 Interior Doors"; - pixel_x = 8; - req_one_access_txt = "69" +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 }, -/turf/open/floor/durasteel, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/turf/open/floor/plating, +/area/maintenance/department/chapel) "acL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/door/poddoor/ship{ - id = "launch1" +/obj/effect/turf_decal/stripes/full, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/turf/open/floor/durasteel/riveted, +/area/nsv/hanger) "acM" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/door/poddoor/ship{ - id = "launch1" +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "79" }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "acN" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/machinery/door/poddoor/ship{ - id = "launch1" +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "79" }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "acO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -835,30 +767,45 @@ /turf/open/floor/durasteel, /area/quartermaster/storage) "acS" = ( -/obj/machinery/door/poddoor/ship{ - id = "launch2" - }, /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "79" + }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) +"acU" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/ammo_sorter{ + dir = 4; + id = "Hammerheadammo"; + name = "Missile Rack" + }, +/obj/item/ship_weapon/ammunition/missile, +/obj/item/ship_weapon/ammunition/missile, +/obj/item/ship_weapon/ammunition/missile, +/obj/item/ship_weapon/ammunition/missile, +/obj/item/ship_weapon/ammunition/missile, +/obj/item/ship_weapon/ammunition/missile, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "acV" = ( /obj/structure/table/wood, /mob/living/carbon/monkey/punpun, /turf/open/floor/wood, /area/crew_quarters/bar) "acW" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/poddoor/ship{ - id = "launch2" +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/maintenance/starboard/central) "acX" = ( /obj/structure/table, /obj/structure/cable{ @@ -904,10 +851,10 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/cable{ @@ -916,22 +863,20 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "ada" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 8 }, -/obj/machinery/door/poddoor/ship{ - id = "launch2" +/obj/machinery/door/airlock/ship/maintenance{ + req_one_access_txt = "69" }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "adc" = ( /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) "ade" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -952,24 +897,13 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) -"adm" = ( -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "12;69" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/turf/open/floor/plating, -/area/maintenance/starboard/central) "adn" = ( /obj/structure/flora/ausbushes/brflowers, /turf/open/floor/grass, /area/hallway/secondary/exit/departure_lounge) "ado" = ( /obj/item/stack/cable_coil/red, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, @@ -993,7 +927,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = -28 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -1028,11 +962,11 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/light/runway/delay4, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) "adB" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -1046,31 +980,20 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/main) -"adC" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "adD" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/obj/machinery/light{ +/obj/machinery/camera/autoname{ dir = 4 }, -/obj/machinery/light/runway/delay4, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" +/turf/open/floor/durasteel, +/area/nsv/hanger/deck2/starboard{ + name = "Launch tubes 1 and 2" }) "adE" = ( /obj/machinery/computer/ship/dradis/minor, /obj/machinery/computer/ship/viewscreen, -/obj/machinery/airalarm/all_access{ - dir = 4; - pixel_x = -23 - }, /turf/open/floor/durasteel, /area/nsv/hanger/deck2/starboard{ name = "Launch tubes 1 and 2" @@ -1080,8 +1003,8 @@ /turf/open/floor/durasteel, /area/hallway/primary/central) "adG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -1101,12 +1024,6 @@ pixel_y = 26 }, /turf/open/floor/durasteel, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) -"adI" = ( -/obj/effect/spawner/structure/window/reinforced/ship, -/turf/open/floor/plating, /area/nsv/hanger/deck2/port{ name = "Launch tubes 3 and 4" }) @@ -1116,17 +1033,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/nanite) -"adL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "adO" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -1137,40 +1043,34 @@ /obj/machinery/door/airlock/ship/engineering/glass, /turf/open/floor/durasteel, /area/engine/break_room) -"adP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "adQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/structure/fighter_launcher, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) "adR" = ( /obj/structure/chair, /turf/open/floor/durasteel/padded, /area/hallway/secondary/exit/departure_lounge) "adS" = ( -/obj/effect/turf_decal/arrows, -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/obj/effect/turf_decal/arrows/white, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ + dir = 8 + }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) +"adT" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/orange{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/west, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "adU" = ( /obj/effect/turf_decal/tile/purple{ dir = 1 @@ -1201,27 +1101,12 @@ /area/nsv/hanger/deck2/port{ name = "Launch tubes 3 and 4" }) -"aea" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/light/runway, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 4 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) "aeb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, @@ -1232,8 +1117,8 @@ /area/science/research) "aec" = ( /obj/effect/turf_decal/stripes/red/line, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/durasteel, /area/quartermaster/storage) @@ -1241,14 +1126,27 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/light/runway, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +/obj/machinery/camera/autoname{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) +"aee" = ( +/obj/machinery/ammo_sorter{ + dir = 4; + id = "Hammerheadammo"; + name = "Broadside Shell Rack #2" + }, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "aeg" = ( /obj/structure/extinguisher_cabinet{ pixel_y = -28 @@ -1262,65 +1160,36 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) "aei" = ( /obj/machinery/computer/ship/dradis/minor, /obj/machinery/computer/ship/viewscreen, -/obj/machinery/airalarm/all_access{ - dir = 4; - pixel_x = -23 - }, /turf/open/floor/durasteel, /area/nsv/hanger/deck2/port{ name = "Launch tubes 3 and 4" }) "aej" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/nsv/hanger/deck2/starboard{ name = "Launch tubes 1 and 2" }) "ael" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) -"aem" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /turf/open/floor/durasteel, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" +/area/nsv/hanger/deck2/starboard{ + name = "Launch tubes 1 and 2" }) -"aen" = ( -/obj/machinery/button/door{ - id = "launch3"; - name = "Tube 3 exterior doors"; - req_one_access_txt = "69" - }, -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "launchbay_tube3"; - name = "Tube 3 Interior Doors"; - pixel_x = 8; - req_one_access_txt = "69" - }, +"aem" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/nsv/hanger/deck2/port{ name = "Launch tubes 3 and 4" @@ -1334,114 +1203,79 @@ name = "Launch tubes 3 and 4" }) "aep" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/durasteel, /area/hallway/primary/port) "aeq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/durasteel, /area/hallway/primary/port) "aer" = ( -/obj/machinery/button/door{ - id = "launch4"; - name = "Tube 4 exterior doors"; - req_one_access_txt = "69" - }, /obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "launchbay_tube4"; - name = "Tube 4 Interior Doors"; - pixel_x = 8; - req_one_access_txt = "69" - }, /turf/open/floor/durasteel, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) -"aes" = ( -/obj/machinery/door/poddoor/ship{ - id = "launch3" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, /area/nsv/hanger/deck2/port{ name = "Launch tubes 3 and 4" }) "aet" = ( -/obj/machinery/door/poddoor/ship{ - id = "launch3" - }, /obj/effect/turf_decal/stripes/line, +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "79" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) "aeu" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/camera/autoname, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "aev" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "aew" = ( -/obj/machinery/door/poddoor/ship{ - id = "launch3" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, +/obj/machinery/atmospherics/components/unary/tank/air, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/maintenance/department/chapel) "aex" = ( -/obj/machinery/door/poddoor/ship{ - id = "launch4" - }, /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) -"aey" = ( -/obj/machinery/door/poddoor/ship{ - id = "launch4" +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "79" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) "aez" = ( /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/service/support_ship) "aeA" = ( -/obj/machinery/door/poddoor/ship{ - id = "launch4" - }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "79" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) "aeB" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 6 @@ -1469,7 +1303,7 @@ dir = 8 }, /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/east{ pixel_y = 24 }, @@ -1508,10 +1342,10 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aeM" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/cable{ @@ -1562,8 +1396,8 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "aeV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/airalarm/directional/north, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -1587,13 +1421,22 @@ }, /turf/open/floor/plating, /area/nsv/hanger) -"afa" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +"aeZ" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) +"afa" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, /turf/open/floor/plating, /area/nsv/hanger) "afb" = ( @@ -1615,11 +1458,11 @@ /turf/open/floor/engine/vacuum, /area/engine/atmospherics_engine) "afg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plating, /area/nsv/hanger) "afh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -1635,7 +1478,7 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "afj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -1645,8 +1488,8 @@ /turf/open/floor/durasteel, /area/hallway/primary/port) "afm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/disposalpipe/segment, @@ -1656,22 +1499,22 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "afn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/nsv/hanger) "afq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/nsv/hanger) "afr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/delivery/white, /obj/structure/cable{ @@ -1680,18 +1523,18 @@ /turf/open/floor/plating, /area/nsv/hanger) "afs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plating, /area/nsv/hanger) "aft" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/delivery, /obj/structure/cable{ @@ -1700,7 +1543,7 @@ /turf/open/floor/plating, /area/nsv/hanger) "afu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -1708,9 +1551,11 @@ /area/nsv/hanger) "afv" = ( /obj/effect/turf_decal/stripes/line{ - dir = 10 + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 }, -/obj/machinery/atmospherics/components/binary/valve/layer2, /turf/open/floor/plating, /area/nsv/hanger) "afw" = ( @@ -1724,31 +1569,37 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/squad) "afy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/nsv/hanger) "afz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plating, /area/nsv/hanger) "afA" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/light/runway/delay4, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "afB" = ( /turf/closed/wall/ship, /area/security/detectives_office/private_investigators_office) @@ -1759,12 +1610,9 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "afD" = ( -/obj/effect/turf_decal/delivery/white, -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space) "afE" = ( /obj/machinery/light/small{ dir = 1 @@ -1775,17 +1623,16 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "afF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/components/binary/valve/layer4, /turf/open/floor/plating, -/area/nsv/hanger) +/area/maintenance/department/chapel) "afG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/durasteel, @@ -1820,11 +1667,11 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -1832,11 +1679,11 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "afJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -1854,7 +1701,7 @@ /turf/open/floor/engine/air, /area/engine/atmos) "afO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/effect/turf_decal/tile/neutral, @@ -1916,20 +1763,20 @@ /turf/open/floor/plasteel/dark, /area/security/prison) "afY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/effect/landmark/xeno_spawn, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) "afZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/plasteel, /area/security/checkpoint/customs/auxiliary) "aga" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/disposalpipe/segment, @@ -1939,11 +1786,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "agb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-4" @@ -1951,11 +1798,11 @@ /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_a) "agc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -2010,10 +1857,10 @@ /turf/open/floor/plating, /area/nsv/hanger) "agl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/disposalpipe/segment{ @@ -2032,7 +1879,7 @@ /turf/open/floor/wood, /area/science/research) "agn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /turf/open/floor/durasteel, @@ -2066,7 +1913,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "ags" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -2077,10 +1924,10 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/lobby) "agt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/disposalpipe/segment, @@ -2091,13 +1938,13 @@ /turf/open/floor/plasteel, /area/quartermaster/qm) "agu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/medical/genetics) "agv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/turf_decal/tile/blue{ @@ -2113,10 +1960,10 @@ /turf/open/floor/plasteel/dark, /area/bridge) "agw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /mob/living/carbon/monkey, @@ -2129,18 +1976,23 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) -"agy" = ( +"agz" = ( /obj/effect/turf_decal/stripes/full, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 }, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) -"agz" = ( -/obj/effect/turf_decal/stripes/full, -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) +/turf/open/floor/plating, +/area/nsv/hanger) +"agA" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/structure/extinguisher_cabinet{ + pixel_x = 28 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "agD" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -2188,15 +2040,15 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/engine/engineering/hangar) "agP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "agQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/turf_decal/tile/blue{ @@ -2205,6 +2057,16 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, /area/medical/surgery) +"agR" = ( +/turf/template_noop, +/area/maintenance/department/science/xenobiology) +"agS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel, +/area/hallway/primary/fore) "agT" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -2213,8 +2075,8 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/hallway/secondary/entry) "agV" = ( @@ -2244,7 +2106,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "agY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment, @@ -2257,7 +2119,7 @@ /area/crew_quarters/heads/chief) "aha" = ( /obj/effect/landmark/start/medical_doctor, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/plasteel/white, @@ -2276,7 +2138,7 @@ /turf/open/floor/plasteel/dark, /area/engine/engine_room) "ahc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/effect/turf_decal/stripes/line{ @@ -2302,11 +2164,11 @@ /turf/open/floor/plating, /area/quartermaster/miningoffice) "ahf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -2318,7 +2180,7 @@ dir = 8 }, /obj/structure/chair/stool, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/effect/landmark/start/scientist, @@ -2335,11 +2197,11 @@ /turf/open/floor/durasteel/padded, /area/science/research) "ahj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -2373,11 +2235,8 @@ /turf/open/floor/plasteel/white, /area/medical/genetics) "ahm" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -2385,6 +2244,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/plating, /area/nsv/hanger) "ahn" = ( @@ -2398,10 +2260,10 @@ /turf/open/floor/plating/airless, /area/nsv/weapons/gauss) "ahv" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, /obj/structure/cable{ icon_state = "2-4" }, @@ -2420,18 +2282,18 @@ /turf/open/floor/plating, /area/crew_quarters/fitness) "ahz" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "ahA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/cult, /area/library) "ahB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -2450,11 +2312,8 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "ahF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -2462,6 +2321,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plating, /area/nsv/hanger) "ahG" = ( @@ -2469,7 +2331,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/atmospherics/components/binary/valve/layer2, /turf/open/floor/plating, /area/nsv/hanger) "ahH" = ( @@ -2477,7 +2338,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/valve/layer4, /turf/open/floor/plating, /area/nsv/hanger) "ahJ" = ( @@ -2490,32 +2350,24 @@ /turf/open/floor/plating, /area/maintenance/department/medical) "ahK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/runway, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ +/obj/effect/turf_decal/stripes/full, +/obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "ahL" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/light/runway, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ +/obj/machinery/camera/autoname{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "ahM" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -2532,51 +2384,28 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) -"ahS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/light/runway, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 4 +"ahR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/obj/machinery/computer/ship/munitions_computer/east, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "ahT" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/light/runway, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) -"ahU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/runway, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) "ahV" = ( /obj/structure/chair/office, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/effect/landmark/start/air_traffic_controller, @@ -2586,10 +2415,10 @@ }) "ahW" = ( /obj/structure/chair/office, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/effect/landmark/start/air_traffic_controller, @@ -2598,7 +2427,7 @@ name = "Launch tubes 3 and 4" }) "ahX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/chair/office{ @@ -2610,7 +2439,7 @@ name = "Launch tubes 1 and 2" }) "aid" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/durasteel, @@ -2644,9 +2473,7 @@ "ail" = ( /obj/effect/spawner/structure/window/reinforced/ship, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "aim" = ( /obj/machinery/light{ dir = 1; @@ -2656,10 +2483,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/exit/departure_lounge) "ain" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -2692,7 +2519,7 @@ /turf/open/floor/durasteel, /area/nsv/hanger) "air" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/effect/landmark/event_spawn, @@ -2704,11 +2531,11 @@ /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) "ait" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -2720,15 +2547,15 @@ /turf/open/floor/plasteel/dark, /area/bridge) "aiv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "aiw" = ( /obj/machinery/power/apc/auto_name/east{ pixel_x = 24 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/airalarm/directional/north, /obj/structure/cable{ icon_state = "0-2" @@ -2749,10 +2576,10 @@ /turf/open/floor/wood, /area/library) "aiC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -2768,14 +2595,14 @@ /obj/effect/turf_decal/tile/purple{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel/white, /area/science/lab) "aiE" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/cable{ @@ -2787,8 +2614,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "aiF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 5 }, @@ -2801,11 +2628,11 @@ /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) "aiG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -2813,7 +2640,7 @@ /turf/open/floor/plasteel/dark, /area/bridge) "aiJ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plasteel/dark, @@ -2854,7 +2681,7 @@ /turf/open/floor/plating, /area/engine/atmos) "aiQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/durasteel, @@ -2896,8 +2723,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "aiV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/machinery/conveyor{ id = "cmbelt" @@ -2948,8 +2775,8 @@ /turf/open/floor/wood, /area/library) "ajh" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ dir = 4 @@ -2979,10 +2806,10 @@ /turf/open/floor/durasteel, /area/quartermaster/storage) "ajj" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -3023,7 +2850,7 @@ /turf/closed/wall/ship, /area/medical/patients_rooms/room_c) "ajq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/structure/table, @@ -3049,11 +2876,11 @@ /turf/open/floor/plating, /area/engine/engineering/hangar) "aju" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -3095,6 +2922,10 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) +"ajz" = ( +/obj/machinery/broadside_shell_packer, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "ajA" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/techstorage/engineering, @@ -3121,17 +2952,17 @@ /turf/open/floor/engine/plasma, /area/engine/atmos) "ajF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/quartermaster/storage) "ajG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -3150,8 +2981,15 @@ }, /turf/open/floor/plating, /area/engine/engineering/hangar) +"ajK" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/orange{ + dir = 8 + }, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "ajL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/durasteel, @@ -3169,16 +3007,16 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "ajR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) "ajT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/effect/landmark/start/station_engineer, @@ -3188,16 +3026,16 @@ /turf/open/floor/plasteel, /area/engine/storage) "ajU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "ajV" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/disposalpipe/segment, @@ -3218,9 +3056,9 @@ /turf/open/floor/durasteel, /area/hallway/primary/aft) "ajZ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -3263,10 +3101,10 @@ /turf/open/floor/durasteel, /area/nsv/hanger) "ake" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -3282,10 +3120,10 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "akg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/cable{ @@ -3293,9 +3131,18 @@ }, /turf/open/floor/wood, /area/library) +"akh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "aki" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -3396,10 +3243,10 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai_upload) "akw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/chair/stool, @@ -3421,7 +3268,6 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/machinery/atmospherics/components/binary/valve/layer2, /turf/open/floor/plating, /area/nsv/hanger) "akz" = ( @@ -3461,7 +3307,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "akE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/status_display/evac{ pixel_y = 32 }, @@ -3503,10 +3349,10 @@ /turf/open/floor/wood, /area/library) "akT" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/disposalpipe/segment, @@ -3559,7 +3405,7 @@ /turf/open/floor/plasteel/white, /area/maintenance/department/science/xenobiology) "alh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) "ali" = ( @@ -3574,7 +3420,7 @@ /area/engine/engine_smes) "alm" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/west{ pixel_y = 24 }, @@ -3624,33 +3470,31 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "alz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/machinery/light/small, /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_a) "alA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 8 - }, /obj/effect/landmark/patrol_node{ next_id = list("hall_split"); name = "Hangar Bay patrol node"; id = "hangar_bay" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/hallway/primary/fore) "alB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -3674,7 +3518,7 @@ /turf/closed/wall/ship, /area/crew_quarters/toilet/restrooms) "alE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel, /area/crew_quarters/fitness) "alF" = ( @@ -3701,10 +3545,10 @@ /turf/open/floor/durasteel, /area/engine/engineering/hangar) "alI" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -3722,7 +3566,7 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "alJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/table/wood/fancy/black, /obj/structure/disposalpipe/segment, /obj/item/flashlight/lantern{ @@ -3743,7 +3587,7 @@ /turf/open/floor/plasteel, /area/janitor) "alO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel, /area/engine/storage) @@ -3753,7 +3597,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel, @@ -3771,14 +3615,14 @@ /area/maintenance/department/security/brig) "alS" = ( /obj/effect/landmark/start/geneticist, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/plasteel/white, /area/medical/genetics/cloning) "alT" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -3790,11 +3634,11 @@ /turf/open/floor/durasteel, /area/hallway/primary/aft) "alU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "alV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/bed, @@ -3802,11 +3646,11 @@ /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_b) "alW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -3814,8 +3658,8 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "alX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) @@ -3857,10 +3701,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "amf" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/disposalpipe/segment, @@ -3878,7 +3722,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = 28 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel, /area/hallway/primary/fore) "amh" = ( @@ -3894,12 +3738,6 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "amj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, /obj/structure/cable{ icon_state = "2-4" }, @@ -3909,6 +3747,12 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, /turf/open/floor/monotile/light, /area/science/research) "amk" = ( @@ -3994,7 +3838,7 @@ /turf/open/floor/durasteel, /area/quartermaster/storage) "amv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plating, /area/storage/tech) "amw" = ( @@ -4004,9 +3848,9 @@ /turf/open/floor/plasteel/white, /area/medical/surgery/aux) "amx" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -4023,11 +3867,11 @@ /turf/open/floor/monotile/dark, /area/gateway) "amA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -4090,12 +3934,12 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen/coldroom) "amO" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "4-8" }, @@ -4110,7 +3954,6 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/machinery/atmospherics/components/binary/valve/layer4, /turf/open/floor/plating, /area/nsv/hanger) "amQ" = ( @@ -4142,7 +3985,7 @@ /obj/machinery/power/apc/auto_name/east{ pixel_x = 24 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 10 }, @@ -4160,10 +4003,10 @@ /turf/open/floor/plasteel, /area/hydroponics) "amV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -4179,10 +4022,10 @@ /turf/open/floor/durasteel/padded, /area/hallway/secondary/exit/departure_lounge) "amZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/machinery/holopad, @@ -4201,8 +4044,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "anc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel, /area/security/main) @@ -4216,7 +4059,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/aft) "ane" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/dark, /area/bridge) "anf" = ( @@ -4225,12 +4068,12 @@ /turf/open/floor/plating, /area/storage/tech) "anh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/landmark/start/chaplain, /turf/open/floor/plasteel/dark, /area/chapel/main) "anj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/public/glass{ name = "Medbay Lobby"; req_one_access_txt = "5" @@ -4248,7 +4091,7 @@ /area/storage/tech) "anl" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/east{ pixel_y = 24 }, @@ -4274,8 +4117,8 @@ /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "ans" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "4-8" }, @@ -4285,7 +4128,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "ant" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/structure/cable{ @@ -4297,8 +4140,8 @@ /turf/closed/wall/ship, /area/engine/engineering) "anx" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -4339,6 +4182,12 @@ /obj/item/storage/box/monkeycubes, /turf/open/floor/durasteel, /area/science/xenobiology) +"anB" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "anC" = ( /turf/open/floor/plasteel, /area/engine/engineering) @@ -4352,8 +4201,8 @@ /turf/open/floor/plasteel/white, /area/medical/storage) "anE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/landmark/event_spawn, /obj/effect/landmark/start/chief_engineer, @@ -4366,8 +4215,8 @@ /turf/open/floor/carpet/black, /area/crew_quarters/heads/chief) "anG" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, @@ -4377,7 +4226,7 @@ /turf/open/floor/durasteel, /area/hallway/primary/central) "anH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /turf/open/floor/plasteel/dark, @@ -4386,16 +4235,16 @@ /turf/open/floor/carpet/ship, /area/bridge/meeting_room) "anL" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/carpet/ship, /area/chapel/office) "anM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/disposalpipe/segment, @@ -4453,8 +4302,8 @@ /turf/open/floor/durasteel/padded, /area/science/research) "anS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/public/glass{ name = "Locker Room" }, @@ -4480,10 +4329,23 @@ /obj/effect/turf_decal/stripes/red/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/quartermaster/storage) +"anX" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "anY" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -4519,14 +4381,14 @@ /turf/open/floor/plating, /area/storage/tech) "aob" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/effect/landmark/start/security_officer, /turf/open/floor/durasteel, /area/security/main) "aoc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/disposalpipe/segment{ @@ -4542,7 +4404,7 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/cable{ @@ -4567,11 +4429,11 @@ /turf/open/floor/wood, /area/library) "aom" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -4690,11 +4552,11 @@ /turf/open/floor/engine/o2, /area/engine/atmos) "aoI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -4702,8 +4564,8 @@ /turf/open/floor/durasteel, /area/hallway/primary/port) "aoK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -4727,16 +4589,19 @@ /turf/open/floor/plasteel/dark, /area/engine/engine_room) "aoM" = ( -/obj/machinery/airalarm/directional/west, /obj/machinery/light{ dir = 8 }, /obj/effect/turf_decal/tile/yellow, +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -23 + }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "aoN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -4750,33 +4615,33 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) "aoP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/durasteel, /area/hallway/primary/central) "aoS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/structure/chair, /turf/open/floor/plasteel/dark, /area/medical/surgery) "aoU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/public/glass{ name = "Medbay Lobby"; req_one_access_txt = "5" @@ -4805,7 +4670,7 @@ /turf/open/floor/plating, /area/engine/engineering/hangar) "aoZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "apa" = ( @@ -4835,17 +4700,17 @@ /turf/open/floor/plating, /area/maintenance/disposal) "ape" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/wood, /area/crew_quarters/bar) "apf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-4" @@ -4880,7 +4745,7 @@ /obj/machinery/power/apc/auto_name/east{ pixel_x = 24 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/airalarm/directional/north, /obj/structure/cable{ icon_state = "0-2" @@ -4897,10 +4762,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plasteel/white, @@ -4912,7 +4777,7 @@ /turf/closed/wall/r_wall/ship, /area/security/execution/transfer) "apr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/effect/turf_decal/tile/blue{ @@ -4928,8 +4793,8 @@ /turf/open/floor/plating, /area/maintenance/port/central) "apv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -4941,11 +4806,11 @@ /turf/open/floor/plating/airless, /area/nsv/weapons/gauss) "apx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -4958,8 +4823,8 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "apA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -4985,11 +4850,11 @@ /turf/open/floor/plasteel, /area/engine/engine_room) "apD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 4 @@ -5000,7 +4865,7 @@ /turf/open/floor/durasteel, /area/security/prison) "apE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/chapel{ dir = 10 @@ -5010,8 +4875,8 @@ /obj/effect/turf_decal/stripes/red/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/light{ dir = 8 }, @@ -5041,7 +4906,7 @@ /turf/open/floor/durasteel, /area/science/robotics/lab) "apK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /turf/open/floor/durasteel, @@ -5086,10 +4951,10 @@ /turf/closed/wall/ship, /area/engine/break_room) "apS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/effect/turf_decal/tile/yellow{ @@ -5098,7 +4963,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "apT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/effect/landmark/start/medical_doctor, @@ -5132,7 +4997,7 @@ /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) "apZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/plasteel, @@ -5141,14 +5006,14 @@ /turf/open/floor/durasteel, /area/ai_monitored/nuke_storage) "aqb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel/dark, /area/medical/morgue) "aqd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/cable{ @@ -5157,7 +5022,7 @@ /turf/open/floor/plasteel/dark, /area/bridge) "aqf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/closet/secure_closet/bar, @@ -5200,7 +5065,7 @@ }, /area/chapel/main) "aql" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/machinery/status_display/evac{ @@ -5210,23 +5075,23 @@ /turf/open/floor/wood, /area/library/lounge) "aqm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plasteel, /area/science/research) "aqn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel, /area/security/warden) "aqr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/engine/engine_smes) @@ -5240,11 +5105,11 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) "aqy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/junction/flip{ dir = 8 @@ -5255,7 +5120,7 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "aqA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -5267,11 +5132,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "aqB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/structure/cable{ @@ -5280,8 +5145,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "aqC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 6 }, @@ -5291,8 +5156,8 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "aqD" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, @@ -5303,10 +5168,10 @@ /area/nsv/hanger) "aqE" = ( /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/cable{ @@ -5332,7 +5197,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "aqH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/cable{ @@ -5348,27 +5213,27 @@ /turf/open/floor/plating/airless, /area/nsv/weapons/gauss) "aqK" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/crew_quarters/bar) "aqL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/plasteel/dark, /area/engine/engine_room) "aqM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -5376,16 +5241,16 @@ /turf/open/floor/durasteel/padded, /area/ai_monitored/turret_protected/ai_upload) "aqN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/durasteel, /area/security/main) "aqO" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/cable{ @@ -5404,11 +5269,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "aqR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -5422,8 +5287,8 @@ /turf/open/floor/plating, /area/maintenance/department/bridge) "aqT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/tile/red{ dir = 8 }, @@ -5442,7 +5307,7 @@ /turf/open/floor/plasteel/dark, /area/hallway/secondary/service) "aqX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/structure/table/reinforced, /obj/item/paper_bin, /obj/item/pen, @@ -5452,11 +5317,25 @@ /obj/structure/bookcase/random/fiction, /turf/open/floor/wood, /area/library) +"arb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/door/firedoor/border_only/directional/south, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/secondary/entry) "arc" = ( /turf/open/floor/durasteel, /area/hallway/primary/fore) "ard" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/wood, @@ -5499,7 +5378,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/weapons/fore) "arm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/tile/red{ dir = 4 }, @@ -5518,7 +5397,7 @@ /turf/open/floor/plasteel/dark, /area/engine/engine_smes) "art" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/disposalpipe/segment{ @@ -5559,10 +5438,10 @@ /turf/open/floor/durasteel, /area/quartermaster/storage) "ary" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/cable{ @@ -5571,7 +5450,7 @@ /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "arB" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/structure/sign/poster/official/obey{ @@ -5580,8 +5459,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "arD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -5589,15 +5468,11 @@ /obj/structure/chair/office, /turf/open/floor/plasteel, /area/security/checkpoint/customs/auxiliary) -"arE" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/bar/atrium) "arF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/effect/turf_decal/tile/neutral, @@ -5619,7 +5494,7 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "arI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/blue{ dir = 4 }, @@ -5635,8 +5510,8 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "arK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/machinery/conveyor{ id = "cmbelt" @@ -5644,10 +5519,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "arL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/machinery/libraryscanner, @@ -5657,8 +5532,8 @@ /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "arN" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/wood, @@ -5670,8 +5545,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "arP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /mob/living/simple_animal/pet/dog/corgi/Ian, @@ -5695,10 +5570,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "arX" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, @@ -5716,8 +5591,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/quartermaster/storage) "asc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/light{ dir = 1 @@ -5727,16 +5602,12 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "asd" = ( -/obj/machinery/button/door{ - id = "launchbay_access"; - name = "Launch bay doors"; - pixel_y = -26; - req_one_access_txt = "69" - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/full, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 }, -/turf/open/floor/durasteel/eris_techfloor_alt, +/turf/open/floor/plating, /area/nsv/hanger) "asf" = ( /obj/effect/turf_decal/tile/neutral, @@ -5746,17 +5617,17 @@ /turf/open/floor/durasteel, /area/nsv/hanger) "asi" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/machinery/airalarm/directional/west, /turf/open/floor/durasteel/padded, /area/ai_monitored/turret_protected/ai_upload) "asj" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/effect/turf_decal/tile/blue{ @@ -5774,12 +5645,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/carpet, /area/crew_quarters/dorms) -"asm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/squad) "asn" = ( /turf/closed/wall/ship, /area/hallway/primary/port) @@ -5796,10 +5661,10 @@ /turf/open/floor/plasteel, /area/engine/storage) "asr" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -5815,7 +5680,7 @@ /turf/open/floor/durasteel/padded, /area/hallway/secondary/exit/departure_lounge) "asv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/effect/landmark/start/cook, @@ -5833,10 +5698,10 @@ /turf/closed/wall/r_wall/ship, /area/security/brig) "asz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/medical/genetics) @@ -5848,7 +5713,7 @@ /turf/closed/wall/r_wall/ship, /area/storage/tech) "asD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel, /area/engine/engineering) "asE" = ( @@ -5863,6 +5728,18 @@ /obj/machinery/telecomms/server/presets/common, /turf/open/floor/circuit/green/telecomms, /area/tcommsat/server) +"asH" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "asI" = ( /obj/structure/cable{ icon_state = "1-2" @@ -5879,10 +5756,10 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "asK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/cable{ @@ -5891,10 +5768,10 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "asL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/disposalpipe/segment{ @@ -5911,7 +5788,7 @@ /area/ai_monitored/nuke_storage) "asN" = ( /obj/machinery/light, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -5921,16 +5798,16 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/exit/departure_lounge) "asP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/plasteel/white, /area/medical/virology) "asQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/cable{ @@ -5939,10 +5816,10 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "asU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/cable{ @@ -5983,11 +5860,11 @@ /obj/effect/turf_decal/tile/purple{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/white, /area/science/research) @@ -5995,7 +5872,7 @@ /turf/open/floor/plating, /area/maintenance/department/electrical) "atb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/public/glass{ name = "Chapel" }, @@ -6010,8 +5887,8 @@ /obj/machinery/door/airlock/ship/external/glass{ name = "Arrival Shuttle Dock" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/hallway/secondary/entry) "atd" = ( @@ -6019,11 +5896,11 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "ate" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -6037,6 +5914,18 @@ }, /turf/open/floor/durasteel, /area/hallway/primary/aft) +"atf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/durasteel, +/area/hallway/primary/fore) "atg" = ( /obj/machinery/conveyor{ dir = 4; @@ -6053,8 +5942,8 @@ /turf/open/floor/plating, /area/maintenance/disposal) "atl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/disposalpipe/segment{ @@ -6069,7 +5958,7 @@ /turf/closed/wall/r_wall/ship, /area/crew_quarters/heads/cmo) "atn" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -6077,6 +5966,17 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) +"atp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/computer/ship/munitions_computer/east, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "atq" = ( /obj/machinery/power/apc/auto_name/west{ pixel_x = -24 @@ -6105,7 +6005,7 @@ /turf/closed/wall/ship, /area/medical/storage) "atw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 }, @@ -6123,10 +6023,10 @@ /turf/open/floor/plasteel/dark, /area/medical/morgue) "atA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/effect/turf_decal/tile/yellow, @@ -6139,11 +6039,11 @@ /turf/open/floor/plasteel, /area/engine/engineering) "atB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -6166,8 +6066,8 @@ /turf/open/floor/plasteel, /area/security/checkpoint/customs/auxiliary) "atF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -6193,10 +6093,10 @@ /turf/open/floor/plating/airless, /area/science/test_area) "atM" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -6204,7 +6104,7 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "atN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/wood, @@ -6227,15 +6127,15 @@ /turf/open/floor/carpet, /area/crew_quarters/theatre) "atQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/computer/ship/viewscreen, /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_a) "atR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/effect/landmark/start/chief_engineer, @@ -6259,7 +6159,7 @@ /turf/open/floor/circuit/telecomms/server, /area/tcommsat/server) "atU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/cable{ @@ -6278,10 +6178,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/quartermaster/storage) "atY" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -6290,8 +6190,8 @@ /turf/open/floor/durasteel, /area/hallway/secondary/exit) "atZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -6330,10 +6230,10 @@ /turf/open/floor/plating, /area/storage/tech) "auj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/cable{ @@ -6349,7 +6249,7 @@ /turf/closed/wall/r_wall/ship, /area/construction) "auo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 9 }, @@ -6359,10 +6259,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) "auq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, @@ -6373,11 +6273,11 @@ /turf/open/floor/plating, /area/medical/sleeper) "auu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -6391,8 +6291,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -6405,6 +6305,10 @@ }, /turf/open/floor/plasteel/dark, /area/science/nanite) +"aux" = ( +/obj/machinery/light/floor, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "auy" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/northright{ @@ -6419,10 +6323,10 @@ /turf/open/floor/plating, /area/security/checkpoint/customs/auxiliary) "auz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/cable{ @@ -6434,8 +6338,8 @@ /turf/open/floor/plasteel/dark, /area/bridge) "auA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -6516,7 +6420,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "auJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/disposalpipe/segment{ @@ -6538,7 +6442,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/customs/auxiliary) "auL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel, /area/science/research) "auM" = ( @@ -6560,13 +6464,13 @@ /area/nsv/hanger) "auR" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/lab) "auS" = ( /obj/effect/turf_decal/stripes/red/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/durasteel, @@ -6589,11 +6493,11 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/brown{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/tile/brown{ dir = 1 }, @@ -6612,7 +6516,7 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "avb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel/dark, @@ -6630,8 +6534,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/brig) "ave" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -6648,8 +6552,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/exit/departure_lounge) "avj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -6657,10 +6561,10 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen/coldroom) "avk" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment{ @@ -6678,15 +6582,28 @@ /obj/structure/table/wood, /turf/open/floor/wood, /area/crew_quarters/bar) +"avp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/light/small, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) "avq" = ( /obj/structure/particle_accelerator/particle_emitter/center, /turf/open/floor/plasteel/dark, /area/engine/engine_room) "avw" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/cable{ @@ -6707,11 +6624,11 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "avA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -6730,11 +6647,11 @@ /turf/open/floor/plating, /area/quartermaster/storage) "avH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) @@ -6747,11 +6664,11 @@ /turf/open/floor/plasteel/dark, /area/security/warden) "avK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/neutral, /obj/structure/cable{ @@ -6783,10 +6700,10 @@ /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) "avN" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 5 }, @@ -6806,8 +6723,8 @@ /turf/closed/wall/r_wall/ship, /area/tcommsat/server) "avR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -6862,11 +6779,11 @@ /turf/open/floor/plating, /area/maintenance/disposal) "awa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -6874,11 +6791,11 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "awb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -6892,7 +6809,7 @@ /turf/closed/wall/r_wall/ship, /area/engine/break_room) "awe" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/carpet/ship, @@ -6914,8 +6831,8 @@ /turf/open/floor/monotile/dark, /area/gateway) "awm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 5 }, @@ -6928,11 +6845,11 @@ /turf/open/floor/plasteel/dark, /area/engine/break_room) "awn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -7002,7 +6919,7 @@ /turf/closed/wall/r_wall/ship, /area/science/xenobiology) "awD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/disposalpipe/segment{ @@ -7010,6 +6927,13 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) +"awE" = ( +/obj/machinery/airalarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel, +/area/hallway/primary/fore) "awG" = ( /obj/machinery/light{ dir = 4 @@ -7021,8 +6945,8 @@ /turf/open/floor/monotile/dark, /area/gateway) "awI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/brown{ dir = 4 }, @@ -7035,17 +6959,13 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "awK" = ( -/obj/machinery/button/door{ - id = "launchbay_access"; - name = "Launch bay doors"; - pixel_y = -26; - req_one_access_txt = "69" +/obj/machinery/door/airlock/ship/maintenance{ + req_one_access_txt = "12" }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/hanger) +/turf/open/floor/plating, +/area/maintenance/department/electrical) "awL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/plasteel, @@ -7058,8 +6978,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/quartermaster/warehouse) "awN" = ( @@ -7069,21 +6989,21 @@ /turf/open/floor/plating, /area/engine/engineering/hangar) "awO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/table/glass, /turf/open/floor/plasteel/white, /area/medical/virology) "awP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -7101,23 +7021,19 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "awR" = ( -/obj/effect/turf_decal/arrows/white, -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ + dir = 8 + }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "awS" = ( /obj/effect/turf_decal/stripes/white/line, /turf/open/floor/durasteel, /area/science/robotics/lab) "awT" = ( -/obj/effect/turf_decal/arrows/white, -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/obj/effect/spawner/room/threexthree, +/turf/template_noop, +/area/maintenance/port/aft) "awU" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7130,10 +7046,10 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) "awW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "4-8" }, @@ -7204,8 +7120,8 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "axj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -7218,8 +7134,8 @@ /turf/open/floor/plating, /area/storage/tech) "axl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -7254,8 +7170,8 @@ /obj/machinery/power/terminal{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable, /turf/open/floor/durasteel, /area/engine/gravity_generator) @@ -7268,20 +7184,21 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "axu" = ( -/obj/machinery/button/door{ - id = "launchbay_access"; - name = "Launch bay doors"; - pixel_y = -26; - req_one_access_txt = "69" - }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/durasteel/eris_techfloor_alt, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, /area/nsv/hanger) "axx" = ( /turf/closed/wall/ship, /area/medical/genetics) +"axy" = ( +/turf/open/floor/plasteel, +/area/engine/storage) "axz" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -7297,7 +7214,7 @@ /turf/open/floor/plasteel/dark, /area/gateway) "axA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/effect/turf_decal/tile/brown{ @@ -7330,7 +7247,7 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen/coldroom) "axC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/machinery/camera/autoname{ @@ -7369,15 +7286,15 @@ /turf/open/floor/plating/airless, /area/nsv/weapons/gauss) "axH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/squad) "axI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, @@ -7405,10 +7322,10 @@ /turf/open/floor/durasteel/padded, /area/bridge/cic) "axK" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -7420,8 +7337,8 @@ /turf/open/floor/plasteel/dark, /area/bridge) "axL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -7436,20 +7353,20 @@ /turf/closed/wall/ship, /area/medical/surgery) "axN" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/chair/office/light, /obj/effect/landmark/start/virologist, /turf/open/floor/plasteel/white, /area/medical/virology) "axQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -7475,7 +7392,7 @@ /turf/closed/wall/ship, /area/crew_quarters/theatre) "axT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plasteel/white, @@ -7485,12 +7402,12 @@ /turf/open/floor/plating, /area/engine/engine_smes) "axV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, /turf/open/floor/plating, /area/nsv/hanger) "axW" = ( @@ -7507,8 +7424,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/port/central) "axY" = ( @@ -7531,23 +7448,23 @@ codes_txt = "patrol;next_patrol=Vault"; location = "TechStorage" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /turf/open/floor/durasteel, /area/hallway/primary/aft) "ayb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/engine/engine_room) "ayd" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/cable{ @@ -7562,8 +7479,8 @@ /turf/open/floor/plasteel, /area/construction) "ayf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/public/glass{ name = "Chemistry"; @@ -7581,14 +7498,14 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/exit/departure_lounge) "ayh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "ayi" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/effect/turf_decal/tile/red{ @@ -7643,7 +7560,7 @@ /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) "ayq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -7692,13 +7609,8 @@ /obj/structure/table/glass, /turf/open/floor/carpet/ship, /area/bridge/meeting_room) -"ayw" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/binary/valve/layer4, -/turf/open/floor/plating, -/area/nsv/hanger) "ayx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/item/radio/intercom{ @@ -7725,10 +7637,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "ayB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/disposalpipe/trunk{ @@ -7739,19 +7651,19 @@ /area/medical/morgue) "ayC" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/plating, /area/engine/engineering/hangar) "ayD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) @@ -7767,11 +7679,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/brig) "ayG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -7797,19 +7709,26 @@ /turf/open/floor/engine/vacuum, /area/engine/atmos) "ayJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) +"ayK" = ( +/obj/machinery/airalarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "ayL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/turf_decal/tile/blue{ @@ -7821,8 +7740,8 @@ /turf/open/floor/durasteel/padded, /area/bridge/cic) "ayN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/general/visible, @@ -7832,7 +7751,7 @@ /turf/open/floor/plasteel/white, /area/medical/genetics/cloning) "ayO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/turf_decal/tile/red{ @@ -7844,24 +7763,19 @@ /turf/open/floor/durasteel, /area/security/prison) "ayP" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/wood, /area/crew_quarters/heads/hop) -"ayQ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/binary/valve/layer2, -/turf/open/floor/plating, -/area/nsv/hanger) "ayR" = ( /obj/machinery/camera/autoname, /obj/machinery/computer/ship/viewscreen, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "ayS" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 }, @@ -7883,23 +7797,17 @@ /turf/open/floor/plating, /area/maintenance/disposal) "ayV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/bar/atrium) +/turf/template_noop, +/area/maintenance/department/cargo) "ayW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) "ayY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/plasteel/white, @@ -7914,10 +7822,10 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "aza" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/effect/turf_decal/tile/yellow{ @@ -7932,16 +7840,16 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "azd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "aze" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 9 }, @@ -7965,10 +7873,10 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "azh" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -7977,7 +7885,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "azi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/camera/autoname{ dir = 8 }, @@ -8000,6 +7908,10 @@ /obj/structure/cable{ icon_state = "0-4" }, +/obj/item/stamp, +/obj/item/stamp/denied{ + pixel_y = 4 + }, /turf/open/floor/plasteel, /area/quartermaster/qm) "azl" = ( @@ -8028,7 +7940,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/brig) "azn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/sorting/mail{ dir = 4; sortType = 27 @@ -8051,16 +7963,16 @@ /turf/open/floor/durasteel, /area/quartermaster/storage) "azp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/plasteel, /area/security/checkpoint/customs/auxiliary) "azs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /obj/structure/cable{ @@ -8080,18 +7992,18 @@ /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) "azv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/plasteel/white, /area/medical/surgery/aux) "azw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/cable{ @@ -8149,8 +8061,8 @@ /turf/open/floor/circuit/telecomms/server, /area/tcommsat/server) "azH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -8160,14 +8072,14 @@ /obj/effect/turf_decal/stripes/white/line{ dir = 6 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plating, /area/engine/engineering/hangar) "azK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/medical/virology) "azL" = ( @@ -8179,7 +8091,7 @@ /turf/open/floor/plating, /area/storage/tech) "azM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/turf_decal/tile/red{ @@ -8189,8 +8101,8 @@ /turf/open/floor/plasteel, /area/security/checkpoint/medical) "azN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; @@ -8203,17 +8115,17 @@ /turf/open/floor/durasteel, /area/nsv/weapons/fore) "azQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/durasteel, /area/ai_monitored/nuke_storage) "azS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -8246,11 +8158,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/brig) "azV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -8266,7 +8178,7 @@ /turf/open/floor/durasteel, /area/hallway/primary/central) "azW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/machinery/airalarm/directional/north, @@ -8287,10 +8199,10 @@ /turf/closed/wall/r_wall/ship, /area/nsv/weapons/gauss) "aAa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/carpet/blue, @@ -8308,11 +8220,11 @@ /turf/open/floor/plasteel, /area/security/checkpoint/science/research) "aAd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -8320,17 +8232,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "aAe" = ( -/obj/machinery/button/door{ - id = "launchbay_access"; - name = "Launch bay doors"; - pixel_y = -26; - req_one_access_txt = "69" - }, -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/hanger) +/turf/open/floor/plating, +/area/maintenance/starboard/central) "aAf" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -8386,18 +8292,18 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) "aAs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/effect/landmark/xeno_spawn, /turf/open/floor/plasteel/cult, /area/library) "aAt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-4" @@ -8505,7 +8411,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/ai_upload) "aAP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/medical/virology) "aAQ" = ( @@ -8524,10 +8430,15 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/machinery/fax{ + fax_name = "Wardens Office"; + name = "Wardens Office Fax Machine" + }, +/obj/structure/table/reinforced, /turf/open/floor/durasteel, /area/security/warden) "aAS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/machinery/camera/autoname{ @@ -8562,8 +8473,18 @@ /obj/effect/landmark/start/medical_doctor, /turf/open/floor/engine, /area/medical/sleeper) +"aAW" = ( +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "aAX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -8572,8 +8493,8 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aAZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -8586,11 +8507,11 @@ /turf/open/floor/durasteel, /area/ai_monitored/nuke_storage) "aBa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/wood, /area/crew_quarters/bar) @@ -8600,9 +8521,18 @@ }, /turf/open/floor/plating/airless, /area/nsv/weapons/gauss) +"aBe" = ( +/obj/structure/table/reinforced, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/item/storage/toolbox/electrical, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "aBf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -8639,7 +8569,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/brig) "aBk" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel/dark, @@ -8652,16 +8582,33 @@ "aBm" = ( /turf/closed/wall/ship, /area/maintenance/central) +"aBn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/storage) "aBo" = ( /obj/machinery/newscaster/directional/south, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/exit/departure_lounge) +"aBp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 17 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel, +/area/hallway/primary/fore) "aBr" = ( /turf/open/floor/carpet, /area/crew_quarters/dorms) "aBt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -8680,8 +8627,8 @@ /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) "aBx" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, @@ -8691,22 +8638,22 @@ /turf/open/floor/durasteel, /area/hallway/primary/port) "aBy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/landmark/start/cook, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "aBA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/durasteel, /area/security/brig) "aBB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -8715,10 +8662,10 @@ /turf/open/floor/durasteel, /area/crew_quarters/locker) "aBC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/disposalpipe/segment{ @@ -8730,7 +8677,7 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "aBD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plasteel/freezer, @@ -8739,21 +8686,21 @@ /obj/effect/turf_decal/stripes/red/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/newscaster{ pixel_x = -30 }, /turf/open/floor/durasteel, /area/quartermaster/storage) "aBF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/airalarm/directional/north, /obj/structure/closet/secure_closet/personal/patient, /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_b) "aBG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -8770,24 +8717,24 @@ /turf/open/floor/plasteel/dark, /area/engine/gravity_generator) "aBK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) "aBM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /obj/structure/displaycase/trophy, /turf/open/floor/wood, /area/library) "aBN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel, /area/hallway/primary/central) "aBO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -8797,11 +8744,11 @@ /turf/open/floor/plasteel/cult, /area/library) "aBS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -8888,8 +8835,8 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "aCm" = ( @@ -8899,11 +8846,18 @@ /obj/structure/table/glass, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) +"aCp" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + sortType = 33 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "aCq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/disposalpipe/segment{ @@ -8915,7 +8869,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) "aCr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/ship, /area/chapel/office) @@ -8991,11 +8945,11 @@ /turf/open/floor/plating, /area/engine/engineering/hangar) "aCI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -9009,15 +8963,15 @@ /turf/open/floor/durasteel, /area/security/brig) "aCM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/durasteel/padded, /area/ai_monitored/turret_protected/ai_upload) "aCO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -9043,15 +8997,26 @@ /obj/effect/turf_decal/stripes/white/box, /turf/open/floor/engine/air, /area/engine/atmos) +"aCS" = ( +/obj/structure/sign/departments/medbay/alt{ + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "aCT" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/plasteel/white, /area/medical/virology) "aCV" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -9064,7 +9029,7 @@ /turf/open/floor/monotile/light, /area/science/research) "aCW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/effect/landmark/start/janitor, @@ -9094,9 +9059,9 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "aDd" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -9121,6 +9086,12 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) +"aDh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "aDi" = ( /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/tile/yellow{ @@ -9161,11 +9132,11 @@ /turf/open/floor/plasteel/white, /area/science/research) "aDp" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -9286,8 +9257,8 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen/coldroom) "aDE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/structure/cable{ icon_state = "1-2" @@ -9298,13 +9269,31 @@ /obj/structure/bookcase/manuals/research_and_development, /turf/open/floor/wood, /area/library) +"aDH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/secondary/entry) "aDJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/carpet/ship, /area/chapel/office) +"aDM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 22 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "aDN" = ( /obj/machinery/power/apc/auto_name/north{ pixel_y = 24 @@ -9346,10 +9335,10 @@ /obj/structure/chair{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/effect/landmark/start/bridge, @@ -9358,6 +9347,28 @@ }, /turf/open/floor/carpet/ship, /area/bridge/meeting_room) +"aDV" = ( +/obj/structure/table/reinforced, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/machinery/camera/autoname{ + dir = 8 + }, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/obj/item/ship_weapon/parts/broadside_casing, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "aDW" = ( /obj/machinery/door/poddoor{ id = "chapelgun"; @@ -9365,13 +9376,6 @@ }, /turf/open/floor/durasteel/techfloor, /area/chapel/office) -"aDX" = ( -/obj/effect/turf_decal/delivery/white, -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "aDY" = ( /obj/structure/fluff/bleepypanel{ dir = 4 @@ -9379,7 +9383,7 @@ /turf/closed/wall/r_wall/ship, /area/gateway) "aEa" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/durasteel, @@ -9415,10 +9419,10 @@ /turf/open/floor/plating, /area/tcommsat/server) "aEg" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/disposalpipe/segment, @@ -9438,10 +9442,10 @@ /obj/machinery/power/apc/auto_name/west{ pixel_x = -24 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/cable, @@ -9461,8 +9465,8 @@ /turf/open/floor/plasteel, /area/engine/engine_room) "aEp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/airalarm/directional/east, /obj/structure/cable{ icon_state = "1-2" @@ -9470,7 +9474,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "aEs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/dark, /area/chapel/main) @@ -9483,15 +9487,9 @@ /turf/open/floor/plating, /area/security/checkpoint/customs) "aEu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "aEw" = ( @@ -9504,8 +9502,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "aEz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) @@ -9559,11 +9557,11 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "aEG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -9577,7 +9575,7 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "aEI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/effect/turf_decal/tile/blue{ @@ -9589,21 +9587,17 @@ /turf/open/floor/plasteel/white, /area/medical/surgery) "aEJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/table/wood, /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/ship, /area/chapel/office) "aEK" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/turf/template_noop, +/area/maintenance/department/medical/morgue) "aEL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -9621,10 +9615,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -9636,8 +9630,8 @@ /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) "aEP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -9649,7 +9643,7 @@ /area/security/brig) "aER" = ( /obj/effect/spawner/room/fivexfour, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/science) "aES" = ( /obj/structure/table/wood, @@ -9676,7 +9670,7 @@ /turf/open/floor/plasteel/dark, /area/gateway) "aEU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/machinery/camera/autoname{ @@ -9731,10 +9725,10 @@ /turf/closed/wall/r_wall/ship, /area/bridge) "aFf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/machinery/light{ @@ -9758,10 +9752,10 @@ /turf/closed/wall/r_wall/ship, /area/engine/atmos) "aFm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /turf/open/floor/plasteel/white, @@ -9775,8 +9769,8 @@ dir = 8; pixel_x = 24 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "aFp" = ( @@ -9792,7 +9786,7 @@ /obj/effect/turf_decal/arrows/red{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/cable{ @@ -9811,18 +9805,18 @@ /turf/open/floor/circuit/telecomms/server, /area/tcommsat/server) "aFv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/ai) "aFw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/security/checkpoint/customs) "aFy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/effect/turf_decal/tile/blue{ @@ -9843,8 +9837,19 @@ /obj/item/clothing/mask/gas/sechailer, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) +"aFC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/ship/public/glass{ + name = "Central Primary Hallway" + }, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "aFE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/landmark/start/medical_doctor, /obj/structure/cable{ icon_state = "1-2" @@ -9852,19 +9857,19 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "aFF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "aFG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/cable{ @@ -9874,10 +9879,10 @@ /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "aFH" = ( /obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/effect/landmark/event_spawn, @@ -9901,13 +9906,22 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "aFK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/medical/storage) +"aFL" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "aFM" = ( /obj/effect/turf_decal/tile/green{ dir = 1 @@ -9923,8 +9937,8 @@ /turf/open/floor/plasteel, /area/hydroponics) "aFN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -9950,7 +9964,7 @@ /turf/closed/wall/ship, /area/security/warden) "aFR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/chapel/main) "aFT" = ( @@ -9986,7 +10000,7 @@ /turf/closed/wall/ship, /area/hallway/primary/central) "aFY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "aFZ" = ( @@ -10005,11 +10019,11 @@ /turf/open/floor/circuit/red/telecomms, /area/tcommsat/server) "aGh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -10020,21 +10034,21 @@ /turf/open/floor/engine/n2, /area/engine/atmos) "aGj" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/crew_quarters/bar) "aGl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/quartermaster/storage) @@ -10049,8 +10063,8 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "aGo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment{ @@ -10063,7 +10077,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "aGp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/table/reinforced, @@ -10084,13 +10098,13 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "aGx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel, /area/crew_quarters/locker) "aGz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/machinery/light{ @@ -10102,11 +10116,11 @@ /turf/open/floor/durasteel, /area/security/prison) "aGB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/table/wood, /turf/open/floor/wood, @@ -10126,8 +10140,8 @@ /turf/open/floor/plasteel/dark, /area/engine/engine_room) "aGG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -10140,10 +10154,10 @@ /turf/open/floor/durasteel, /area/security/prison) "aGH" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -10168,9 +10182,16 @@ }, /turf/open/floor/durasteel/padded, /area/science/research) +"aGL" = ( +/obj/machinery/newscaster{ + pixel_x = -28 + }, +/obj/machinery/ship_weapon/vls, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "aGM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/northleft{ name = "Customs Desk"; @@ -10184,8 +10205,8 @@ /turf/open/floor/plating, /area/security/checkpoint/customs/auxiliary) "aGN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) @@ -10209,16 +10230,16 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "aGQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/landmark/start/chaplain, /turf/open/floor/carpet/ship, /area/chapel/office) "aGR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -10226,10 +10247,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "aGS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/dark, @@ -10244,7 +10262,7 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "aGU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/carpet/black, /area/crew_quarters/heads/chief) "aGV" = ( @@ -10254,8 +10272,8 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "aGW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -10273,8 +10291,8 @@ /area/space/nearstation) "aGY" = ( /obj/structure/table/glass, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/carpet/ship, /area/bridge/meeting_room) @@ -10299,8 +10317,8 @@ /turf/open/space, /area/space/nearstation) "aHe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/public/glass{ name = "Pilot Ready Room"; req_access_txt = "71" @@ -10356,7 +10374,7 @@ /turf/open/floor/durasteel, /area/science/research) "aHs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/structure/extinguisher_cabinet/north, /turf/open/floor/durasteel, /area/crew_quarters/dorms) @@ -10378,14 +10396,14 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "aHw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/plasteel, /area/engine/gravity_generator) "aHx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -10396,10 +10414,10 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "aHA" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -10414,8 +10432,8 @@ /turf/closed/wall/ship, /area/crew_quarters/bar) "aHC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/public/glass{ name = "Theatre" }, @@ -10428,7 +10446,7 @@ /turf/open/floor/durasteel, /area/crew_quarters/theatre) "aHD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/turf_decal/tile/blue{ @@ -10440,7 +10458,7 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "aHE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/structure/chair, @@ -10459,7 +10477,7 @@ /turf/open/floor/circuit/telecomms/server, /area/science/server) "aHK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel, /area/crew_quarters/dorms) "aHL" = ( @@ -10467,8 +10485,8 @@ name = "Private Investigator's Office"; req_one_access_txt = "4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -10477,14 +10495,14 @@ /turf/open/floor/wood, /area/security/detectives_office/private_investigators_office) "aHM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/durasteel, /area/hallway/primary/fore) @@ -10492,13 +10510,14 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/east{ pixel_y = 24 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "aHO" = ( @@ -10511,28 +10530,33 @@ /turf/open/floor/plating, /area/maintenance/department/bridge) "aHP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/ship, /area/crew_quarters/heads/captain/private) +"aHQ" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/light, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/secondary/entry) "aHR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/durasteel, /area/engine/engineering/hangar) "aHS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/carpet/ship, /area/chapel/office) "aHT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/chair/office{ @@ -10552,10 +10576,10 @@ /turf/open/floor/carpet/ship, /area/chapel/office) "aHX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/disposalpipe/segment{ @@ -10573,8 +10597,8 @@ /turf/open/floor/plasteel, /area/science/research) "aId" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -10611,8 +10635,8 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "aIk" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -10649,8 +10673,8 @@ /turf/open/floor/wood, /area/library) "aIp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel, /area/nsv/weapons/fore) @@ -10661,7 +10685,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/maintenance/department/science/xenobiology) "aIr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/wood, /area/library) "aIs" = ( @@ -10672,8 +10696,8 @@ /turf/open/floor/durasteel, /area/science/robotics/lab) "aIv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -10692,14 +10716,14 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "aIC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/wood, /area/library/lounge) "aID" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment, @@ -10709,14 +10733,14 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "aIF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/table/wood, /obj/item/nullrod, /turf/open/floor/carpet/ship, /area/chapel/office) "aII" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -10727,6 +10751,18 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) +"aIK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "aIL" = ( /obj/structure/chair/office{ dir = 8 @@ -10734,7 +10770,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/hop) "aIN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/machinery/newscaster{ @@ -10772,7 +10808,7 @@ /turf/open/floor/engine/plasma, /area/engine/atmos) "aIV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) "aIX" = ( @@ -10786,17 +10822,17 @@ /turf/open/floor/plating, /area/security/warden) "aIY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/shuttle_manipulator, /turf/open/floor/carpet/ship, /area/bridge/meeting_room) "aJa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -10812,10 +10848,10 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "aJc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/disposalpipe/segment{ @@ -10863,11 +10899,11 @@ /turf/open/floor/plasteel, /area/security/checkpoint/medical) "aJf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-8" @@ -10893,10 +10929,10 @@ /turf/closed/wall/ship, /area/bridge/meeting_room) "aJk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -10904,12 +10940,20 @@ }, /turf/open/floor/plasteel/white, /area/medical/surgery/aux) +"aJl" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -26 + }, +/obj/machinery/ship_weapon/vls, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "aJm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-4" @@ -10917,10 +10961,10 @@ /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_c) "aJn" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/effect/turf_decal/tile/blue{ @@ -11008,7 +11052,7 @@ /turf/open/floor/plasteel/dark, /area/engine/engine_room) "aJz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/table/wood/fancy/black, /obj/item/storage/book/bible, /turf/open/floor/plasteel/dark, @@ -11017,9 +11061,9 @@ /turf/closed/wall/ship, /area/maintenance/port/aft) "aJC" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/chair/office, /turf/open/floor/durasteel, @@ -11057,8 +11101,8 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "aJJ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /turf/open/floor/plasteel/white, @@ -11073,7 +11117,7 @@ /turf/open/floor/plating, /area/maintenance/central) "aJM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel/white, @@ -11083,7 +11127,7 @@ /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) "aJP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "aJQ" = ( @@ -11130,8 +11174,8 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "aKa" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/conveyor{ id = "cmbelt" @@ -11153,7 +11197,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "aKc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/machinery/camera/autoname{ @@ -11184,7 +11228,7 @@ /obj/machinery/camera/autoname{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -11226,15 +11270,15 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/quartermaster/warehouse) "aKp" = ( /obj/effect/landmark/start/depsec/medical, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plasteel, @@ -11267,11 +11311,11 @@ /turf/open/floor/plating, /area/nsv/hanger) "aKx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) @@ -11316,11 +11360,11 @@ /turf/open/floor/wood, /area/library) "aKG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/durasteel, /area/quartermaster/storage) @@ -11329,10 +11373,7 @@ dir = 4 }, /obj/effect/landmark/start/assistant, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/carpet/ship, @@ -11347,7 +11388,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "aKJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/nsv/squad) "aKK" = ( @@ -11371,7 +11412,7 @@ /turf/open/floor/plating/airless, /area/nsv/weapons/gauss) "aKP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/carpet/ship, @@ -11412,7 +11453,7 @@ /turf/open/floor/plasteel/dark, /area/hallway/secondary/service) "aKT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/machinery/light, @@ -11439,14 +11480,14 @@ /area/medical/morgue) "aKX" = ( /obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel, /area/maintenance/port/aft) "aKY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -11464,9 +11505,9 @@ /turf/open/floor/wood, /area/library/lounge) "aLa" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/sorting/mail/flip{ sortType = 5 @@ -11481,7 +11522,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aLc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/structure/cable{ @@ -11588,7 +11629,7 @@ /turf/open/floor/carpet/ship, /area/bridge/cic) "aLu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/carpet/ship, @@ -11597,10 +11638,10 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/mixing) "aLy" = ( @@ -11635,8 +11676,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "aLB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/red{ dir = 8 }, @@ -11658,8 +11699,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "aLF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/table/wood, /obj/structure/disposalpipe/segment, /turf/open/floor/wood, @@ -11692,11 +11733,11 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aLI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/medical/morgue) @@ -11759,7 +11800,7 @@ /turf/open/space, /area/space/nearstation) "aLS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/effect/landmark/start/warden, /turf/open/floor/plasteel/dark, /area/security/warden) @@ -11768,8 +11809,8 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/durasteel, @@ -11841,6 +11882,13 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) +"aMf" = ( +/obj/machinery/camera/autoname{ + dir = 4 + }, +/obj/machinery/ship_weapon/vls, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "aMi" = ( /obj/structure/cable{ icon_state = "1-2" @@ -11854,10 +11902,10 @@ /turf/open/floor/durasteel, /area/engine/break_room) "aMk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/cable{ @@ -11866,14 +11914,14 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/exit/departure_lounge) "aMl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/aft) "aMm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 4 @@ -11882,7 +11930,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "aMn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel, /area/security/prison) "aMo" = ( @@ -11890,8 +11938,8 @@ /turf/open/floor/plating, /area/science/server) "aMp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -11899,8 +11947,8 @@ /turf/open/floor/plasteel/white, /area/medical/surgery) "aMr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -11911,7 +11959,7 @@ /turf/open/floor/durasteel, /area/security/prison) "aMt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/effect/turf_decal/tile/red{ @@ -11931,16 +11979,16 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /turf/open/floor/plasteel, /area/security/checkpoint/science/research) "aMw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/effect/turf_decal/tile/blue{ @@ -11963,16 +12011,20 @@ /turf/open/floor/plating, /area/maintenance/department/medical) "aMB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ icon_state = "2-4" }, /obj/structure/table/reinforced, +/obj/item/stamp, +/obj/item/stamp/denied{ + pixel_y = 4 + }, /turf/open/floor/durasteel, /area/quartermaster/storage) "aMD" = ( @@ -11987,7 +12039,7 @@ /turf/open/floor/plasteel, /area/science/research) "aME" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/turf_decal/delivery/white, @@ -12001,7 +12053,7 @@ }, /area/chapel/main) "aMG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -12021,14 +12073,14 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "aMO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/durasteel, /area/security/prison) "aMP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -12068,10 +12120,10 @@ /turf/open/floor/durasteel, /area/quartermaster/storage) "aMV" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/cable{ @@ -12087,17 +12139,17 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/nuke_storage) "aMX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "aMY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -12107,7 +12159,7 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "aNa" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -12115,9 +12167,16 @@ }, /turf/open/floor/durasteel, /area/crew_quarters/locker) +"aNb" = ( +/obj/effect/turf_decal/tile/green, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "aNd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -12131,8 +12190,8 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/blue{ dir = 4 }, @@ -12152,7 +12211,7 @@ }, /area/chapel/main) "aNh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel, @@ -12198,7 +12257,7 @@ /turf/open/floor/plating, /area/maintenance/central) "aNm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/turf_decal/tile/brown{ @@ -12208,13 +12267,13 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "aNn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/suit_storage_unit/security, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "aNo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/junction{ dir = 1 }, @@ -12231,7 +12290,7 @@ dir = 4 }, /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/west{ pixel_y = 24 }, @@ -12242,8 +12301,8 @@ /obj/machinery/power/apc/auto_name/west{ pixel_x = -24 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "0-2" @@ -12265,10 +12324,10 @@ /turf/open/floor/durasteel/padded, /area/science/robotics/lab) "aNt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/cable{ @@ -12277,12 +12336,12 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "aNy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/computer/ship/viewscreen, /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_b) "aNz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/landmark/start/geneticist, @@ -12310,11 +12369,11 @@ /obj/machinery/power/apc/auto_name/north{ pixel_y = 24 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -12328,14 +12387,14 @@ /turf/open/floor/wood, /area/crew_quarters/heads/hop) "aNH" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) "aNI" = ( /obj/item/beacon, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plating, /area/storage/tech) "aNJ" = ( @@ -12375,11 +12434,11 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "aNQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -12396,7 +12455,7 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "aNS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -12410,7 +12469,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "aNT" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/table/glass, @@ -12445,14 +12504,14 @@ /area/security/prison) "aNX" = ( /obj/effect/turf_decal/stripes/red/corner, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/quartermaster/storage) "aNY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/disposalpipe/segment, @@ -12481,16 +12540,23 @@ /turf/open/floor/plasteel, /area/hydroponics) "aOc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) +"aOi" = ( +/obj/effect/turf_decal/tile/blue, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "aOk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /turf/open/floor/plasteel/showroomfloor, @@ -12535,12 +12601,12 @@ /turf/open/floor/plasteel, /area/security/checkpoint/medical) "aOt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/engine/engine_room) "aOu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -12555,8 +12621,8 @@ /turf/open/floor/plating, /area/maintenance/department/science) "aOy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -12574,8 +12640,8 @@ /turf/closed/wall/r_wall/ship, /area/crew_quarters/heads/captain/private) "aOC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -12607,7 +12673,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) "aOF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/bridge) "aOG" = ( @@ -12643,7 +12709,7 @@ /turf/open/floor/plasteel, /area/hydroponics) "aOP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/structure/table/glass, @@ -12660,7 +12726,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "aOQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/disposalpipe/segment{ @@ -12672,11 +12738,11 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "aOR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel/dark, @@ -12690,10 +12756,10 @@ /turf/open/floor/carpet/ship, /area/chapel/office) "aOU" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/effect/turf_decal/tile/brown, @@ -12706,7 +12772,7 @@ /turf/open/floor/plasteel/cult, /area/library) "aOW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/durasteel, @@ -12715,16 +12781,16 @@ /turf/closed/wall/ship, /area/medical/surgery/aux) "aOY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "aOZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/cable{ @@ -12737,7 +12803,7 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "aPa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/spawner/structure/window/reinforced, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -12752,7 +12818,7 @@ /turf/open/floor/plating, /area/maintenance/port/central) "aPg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/machinery/light/small, @@ -12764,10 +12830,10 @@ /area/tcommsat/server) "aPl" = ( /obj/effect/landmark/observer_start, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/disposalpipe/segment{ @@ -12782,7 +12848,7 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "aPm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/chair/fancy/bench/pew/left, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/chapel{ @@ -12809,12 +12875,12 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) "aPp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/wood, /area/crew_quarters/heads/hop) "aPs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/bridge) "aPt" = ( @@ -12822,10 +12888,10 @@ dir = 4; req_one_access_txt = "55" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, @@ -12834,15 +12900,15 @@ /turf/closed/wall/r_wall/ship, /area/hallway/secondary/exit) "aPw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "aPx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/landmark/start/station_engineer, /obj/structure/cable{ @@ -12862,8 +12928,8 @@ /turf/closed/wall/r_wall/ship, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "aPB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 4 @@ -12875,14 +12941,14 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "aPC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/durasteel, /area/security/prison) "aPD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/chair/stool, /turf/open/floor/durasteel, @@ -12911,14 +12977,14 @@ /turf/open/floor/plating, /area/ai_monitored/security/armory/lockup) "aPJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/effect/landmark/start/medical_doctor, /turf/open/floor/plasteel/white, /area/medical/storage) "aPM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/cable{ @@ -12948,12 +13014,12 @@ /obj/machinery/door/airlock/ship/external/glass{ name = "Escape Shuttle Dock" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "aPQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/structure/table/glass, @@ -12968,8 +13034,8 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "aPR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/table/reinforced, /turf/open/floor/durasteel, @@ -12981,18 +13047,18 @@ /turf/open/floor/plating/airless, /area/maintenance/department/crew_quarters/bar) "aPU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/aft) "aPV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/durasteel, /area/crew_quarters/locker) "aPW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/table/reinforced, /obj/item/toy/cards/deck, @@ -13022,29 +13088,28 @@ /turf/open/floor/durasteel/padded, /area/bridge/cic) "aPZ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) "aQa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/durasteel, /area/security/prison) "aQb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/cable{ @@ -13114,16 +13179,16 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "aQm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/crew_quarters/locker) "aQn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/medical/morgue) "aQr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/dark, /area/medical/morgue) "aQt" = ( @@ -13149,10 +13214,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/weapons/fore) "aQw" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/effect/turf_decal/tile/yellow{ @@ -13188,7 +13253,7 @@ /turf/open/floor/durasteel, /area/security/warden) "aQz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel, /area/science/robotics/lab) "aQA" = ( @@ -13269,10 +13334,10 @@ /turf/open/floor/carpet/ship, /area/chapel/office) "aRc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/plasteel/white, @@ -13306,8 +13371,8 @@ /turf/open/floor/carpet/ship, /area/bridge/cic) "aRh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -13335,10 +13400,10 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "aRj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel, @@ -13369,10 +13434,10 @@ /turf/open/floor/plating/airless, /area/nsv/weapons/gauss) "aRs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/disposalpipe/segment{ @@ -13411,17 +13476,17 @@ /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) "aRw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/machinery/light/small, /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_b) "aRx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) "aRy" = ( @@ -13429,11 +13494,11 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "aRz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -13441,7 +13506,7 @@ /turf/open/floor/plating, /area/maintenance/port/central) "aRC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/structure/table/optable, /obj/machinery/computer/ship/viewscreen, /turf/open/floor/plasteel/white, @@ -13478,8 +13543,8 @@ /turf/open/floor/durasteel, /area/security/prison) "aRK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/disposalpipe/segment{ @@ -13495,11 +13560,11 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "aRL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -13557,11 +13622,11 @@ /turf/open/floor/durasteel, /area/engine/engineering/hangar) "aRR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -13577,8 +13642,8 @@ /turf/open/floor/plating, /area/engine/atmos) "aRX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/machinery/light{ @@ -13592,8 +13657,8 @@ /turf/open/floor/plasteel, /area/janitor) "aRY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/disposalpipe/segment, @@ -13619,11 +13684,11 @@ /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "aSc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel/white, /area/science/mixing) "aSe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/medical/storage) @@ -13651,7 +13716,7 @@ /obj/machinery/power/apc/auto_name/north{ pixel_y = 24 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/effect/landmark/xeno_spawn, /obj/structure/cable{ icon_state = "0-2" @@ -13693,26 +13758,26 @@ /turf/closed/wall/r_wall/ship, /area/ai_monitored/nuke_storage) "aSs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/item/ectoplasm/angelic, /turf/open/floor/plasteel/dark, /area/medical/morgue) "aSt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/medical/morgue) "aSu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/durasteel, /area/engine/break_room) "aSv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/machinery/camera/autoname{ @@ -13721,10 +13786,10 @@ /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) "aSy" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/disposalpipe/sorting/mail/flip{ @@ -13740,7 +13805,7 @@ /turf/open/floor/durasteel, /area/hallway/primary/aft) "aSz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/structure/table/glass, @@ -13758,7 +13823,7 @@ /turf/open/floor/circuit/telecomms, /area/science/xenobiology) "aSI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/effect/turf_decal/tile/blue{ @@ -13771,10 +13836,10 @@ /turf/open/floor/plating, /area/chapel/main) "aSM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/disposalpipe/segment{ @@ -13824,10 +13889,10 @@ /turf/closed/wall/ship, /area/quartermaster/office) "aST" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/cable{ @@ -13857,10 +13922,10 @@ /turf/closed/wall/ship, /area/engine/engine_room) "aSX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/wood, @@ -13871,11 +13936,11 @@ /turf/open/floor/plating, /area/storage/tech) "aTa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/white, /area/medical/virology) @@ -13898,11 +13963,11 @@ /turf/open/floor/engine/n2, /area/engine/atmos) "aTd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -13922,7 +13987,7 @@ /turf/open/floor/plating, /area/engine/engine_room) "aTg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -13951,8 +14016,8 @@ /turf/open/floor/plating, /area/medical/sleeper) "aTj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -13990,7 +14055,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "aTn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment{ @@ -14043,7 +14108,7 @@ /turf/open/floor/engine/vacuum, /area/engine/atmos) "aTv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/machinery/light{ @@ -14052,10 +14117,10 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "aTw" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment, @@ -14065,18 +14130,12 @@ /turf/open/floor/wood, /area/library) "aTx" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/cable{ icon_state = "2-4" }, -/obj/structure/cable{ - icon_state = "2-8" - }, /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=Arrivals-A-0.75"; location = "Arrivals-A-0.25" @@ -14084,6 +14143,9 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, /turf/open/floor/durasteel, /area/hallway/secondary/entry) "aTz" = ( @@ -14099,13 +14161,13 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /turf/open/floor/durasteel, /area/science/server) "aTE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/effect/turf_decal/tile/blue{ @@ -14131,32 +14193,18 @@ }, /obj/machinery/door/airlock/ship/engineering/glass{ name = "Atmospherics"; - req_one_access_txt = "24;11" + req_one_access_txt = "24;11"; + dir = 4 }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) -"aTG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/monotile/light, -/area/science/research) "aTH" = ( /obj/effect/landmark/start/scientist, /obj/structure/chair/fancy/sofa/corp/left, /turf/open/floor/wood, /area/science/research) "aTJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-4" @@ -14169,8 +14217,21 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/maintenance/port/central) +"aTN" = ( +/obj/machinery/ammo_sorter{ + dir = 8; + id = "Hammerheadammo"; + name = "Broadside Shell Rack #1" + }, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "aTP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/public/glass{ name = "Chapel" @@ -14183,11 +14244,11 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "aTQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -14214,7 +14275,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/medical) "aTU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/wood, /area/crew_quarters/bar) "aTV" = ( @@ -14222,10 +14283,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/exit) "aTW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -14237,8 +14298,8 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "aTY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /turf/open/floor/plasteel/dark, @@ -14254,10 +14315,10 @@ /turf/open/floor/durasteel, /area/nsv/squad) "aUb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -14275,11 +14336,11 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/lobby) "aUd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/public/glass{ name = "Fitness Room" @@ -14295,7 +14356,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "aUh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel, @@ -14306,7 +14367,7 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "aUk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/machinery/vending/wardrobe/viro_wardrobe, @@ -14331,13 +14392,27 @@ /turf/open/floor/circuit/telecomms, /area/science/xenobiology) "aUp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/durasteel, /area/hallway/primary/port) +"aUq" = ( +/obj/item/powder_bag, +/obj/item/powder_bag, +/obj/item/powder_bag, +/obj/machinery/ammo_sorter{ + dir = 4; + id = "Hammerheadammo"; + name = "Broadside Gunpowder Rack #1" + }, +/obj/item/powder_bag, +/obj/item/powder_bag, +/obj/item/powder_bag, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "aUs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/table/glass, @@ -14353,10 +14428,10 @@ /turf/open/floor/plating, /area/maintenance/port/central) "aUw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/disposalpipe/segment, @@ -14380,7 +14455,7 @@ /turf/open/floor/plasteel/white, /area/medical/storage) "aUB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -14439,8 +14514,8 @@ /turf/open/floor/plasteel/dark, /area/science/nanite) "aUH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/poddoor/shutters/preopen{ id = "cargo_privacy"; name = "Cargo Hangar Security Shutter"; @@ -14453,7 +14528,7 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aUI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /obj/machinery/light, @@ -14478,10 +14553,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/cable{ @@ -14500,13 +14575,13 @@ /turf/open/floor/plating, /area/maintenance/port/central) "aUU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/carpet/ship, /area/crew_quarters/heads/captain/private) "aUW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -14526,11 +14601,11 @@ }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/wood, /area/crew_quarters/theatre) @@ -14554,7 +14629,7 @@ /turf/open/floor/carpet/ship, /area/crew_quarters/heads/hop) "aVf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/durasteel, @@ -14570,10 +14645,10 @@ /turf/closed/wall/ship, /area/maintenance/department/cargo) "aVj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plasteel/dark, @@ -14585,7 +14660,7 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "aVl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/structure/cable{ @@ -14595,10 +14670,10 @@ /area/crew_quarters/bar) "aVm" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plating, @@ -14620,17 +14695,17 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "aVr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "aVs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -14650,8 +14725,8 @@ /area/maintenance/department/science) "aVv" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "bot_north"; @@ -14670,11 +14745,11 @@ /turf/open/floor/plating, /area/crew_quarters/locker) "aVy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -14682,11 +14757,11 @@ /turf/open/floor/plasteel/dark, /area/bridge) "aVz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 4 @@ -14711,10 +14786,10 @@ /turf/open/floor/durasteel, /area/nsv/squad) "aVD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/machinery/door_timer{ @@ -14737,8 +14812,8 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "aVF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -14755,8 +14830,8 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "aVG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/table/wood, /obj/structure/disposalpipe/segment, /obj/effect/spawner/lootdrop/gambling, @@ -14784,7 +14859,7 @@ /turf/open/floor/plasteel, /area/engine/engine_room) "aVK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/cable{ @@ -14815,8 +14890,8 @@ /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) "aVS" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, /obj/structure/disposalpipe/sorting/mail/flip{ dir = 8; sortType = 6 @@ -14870,8 +14945,8 @@ /turf/open/floor/plating, /area/maintenance/port/central) "aVZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/landmark/start/security_officer, /turf/open/floor/durasteel, @@ -14891,8 +14966,8 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "aWd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/crew_quarters/bar) @@ -14920,10 +14995,10 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "aWh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/wood, @@ -14935,7 +15010,7 @@ /turf/closed/wall/ship, /area/storage/tech) "aWm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/machinery/light{ @@ -14944,10 +15019,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "aWn" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -15000,10 +15075,10 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aWw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/cable{ @@ -15012,10 +15087,10 @@ /turf/open/floor/durasteel, /area/engine/gravity_generator) "aWx" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -15037,7 +15112,7 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/ai) "aWC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -15053,10 +15128,10 @@ /turf/open/floor/engine/o2, /area/engine/atmos) "aWF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/effect/turf_decal/tile/blue{ @@ -15075,8 +15150,8 @@ /turf/open/floor/engine/o2, /area/engine/atmos) "aWI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -15105,7 +15180,7 @@ /turf/open/floor/engine, /area/medical/sleeper) "aWO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/durasteel, @@ -15139,7 +15214,7 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "aWT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -15147,8 +15222,8 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "aWU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/brown{ dir = 8 }, @@ -15170,10 +15245,10 @@ /turf/open/floor/plasteel/dark, /area/engine/break_room) "aWW" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -15191,7 +15266,7 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "aXa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/machinery/airalarm/directional/south, @@ -15208,8 +15283,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/exit) "aXh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -15219,7 +15294,7 @@ /turf/open/floor/plating, /area/engine/atmos) "aXj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/newscaster{ pixel_x = -30 }, @@ -15243,7 +15318,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aXm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/closet/l3closet/janitor, @@ -15260,11 +15335,11 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "aXp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -15274,18 +15349,6 @@ "aXq" = ( /turf/closed/wall/ship, /area/chapel/main) -"aXr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/durasteel, -/area/engine/break_room) "aXu" = ( /obj/structure/rack, /turf/open/floor/plating, @@ -15303,11 +15366,11 @@ /turf/open/floor/wood, /area/library) "aXy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -15339,7 +15402,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aXD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/effect/landmark/start/chief_engineer, @@ -15352,8 +15415,8 @@ /turf/open/floor/carpet/black, /area/crew_quarters/heads/chief) "aXE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/quartermaster/storage) @@ -15373,15 +15436,13 @@ /turf/open/floor/plasteel/dark, /area/bridge) "aXG" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer4{ - dir = 1 - }, /obj/machinery/advanced_airlock_controller/directional/east, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer4, /turf/open/floor/durasteel, /area/nsv/squad) "aXI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/structure/disposalpipe/trunk{ @@ -15400,7 +15461,7 @@ /turf/open/floor/durasteel, /area/storage/eva) "aXK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/structure/cable{ @@ -15422,11 +15483,11 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "aXP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/airalarm/directional/south, /obj/machinery/light, @@ -15468,11 +15529,11 @@ /obj/machinery/door/airlock/ship/public/glass{ name = "Squad Equipment Room and Gauss Bay" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -15511,8 +15572,8 @@ /turf/open/floor/plating, /area/maintenance/department/medical) "aYe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/northleft{ name = "Customs Desk"; @@ -15549,15 +15610,15 @@ /turf/open/floor/circuit/telecomms/server, /area/science/server) "aYo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/computer/ship/reactor_control_computer{ reactor_id = 1 }, /turf/open/floor/plasteel/dark, /area/engine/engine_room) "aYp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -15565,11 +15626,11 @@ /turf/open/floor/durasteel, /area/hallway/primary/aft) "aYq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/wood, /area/library) @@ -15578,11 +15639,11 @@ /turf/open/floor/carpet/ship, /area/chapel/office) "aYv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -15604,11 +15665,11 @@ /turf/open/floor/durasteel, /area/storage/eva) "aYz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -15616,11 +15677,11 @@ /turf/open/floor/durasteel, /area/engine/break_room) "aYA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -15639,8 +15700,8 @@ /turf/open/floor/engine, /area/medical/sleeper) "aYC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/blue{ dir = 8 }, @@ -15657,10 +15718,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/nuke_storage) "aYF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/cable{ @@ -15669,14 +15730,14 @@ /turf/open/floor/durasteel, /area/hallway/primary/central) "aYH" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/quartermaster/storage) "aYI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/public/glass{ name = "Departures Hallway" }, @@ -15717,7 +15778,7 @@ /turf/open/floor/plasteel/white, /area/medical/surgery) "aYQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /mob/living/simple_animal/pet/cat/Runtime, @@ -15803,8 +15864,8 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "aZd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -15829,10 +15890,10 @@ /turf/open/floor/durasteel, /area/security/prison) "aZh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/disposalpipe/segment{ @@ -15881,8 +15942,8 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aZr" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -15894,33 +15955,30 @@ /turf/open/floor/durasteel, /area/hallway/primary/central) "aZs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) "aZt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/landmark/start/cargo_technician, /turf/open/floor/durasteel, /area/quartermaster/storage) "aZw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/carpet/ship, /area/crew_quarters/bar/atrium) "aZx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/carpet/ship, /area/bridge/meeting_room) @@ -15933,7 +15991,7 @@ /turf/open/floor/plating, /area/medical/medbay/lobby) "aZz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/table/wood, @@ -15947,8 +16005,8 @@ /turf/open/floor/wood, /area/science/research) "aZB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/window/reinforced/tinted{ dir = 4 @@ -15960,8 +16018,8 @@ /obj/machinery/disposal/deliveryChute{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -15976,6 +16034,18 @@ /obj/effect/turf_decal/box/red/corners, /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen/coldroom) +"aZG" = ( +/obj/structure/sign/departments/medbay/alt{ + pixel_y = -32 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "aZI" = ( /turf/open/floor/plasteel/white, /area/medical/medbay/central) @@ -15983,11 +16053,11 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/light{ dir = 1 @@ -16005,7 +16075,7 @@ /obj/effect/turf_decal/arrows/red{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/structure/cable{ @@ -16027,10 +16097,10 @@ /turf/open/floor/durasteel, /area/science/robotics/lab) "aZR" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -16089,10 +16159,25 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/science/server) +"aZY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "bab" = ( /obj/machinery/vending/cigarette{ name = "Adama's Finest Cigars" @@ -16100,8 +16185,8 @@ /turf/open/floor/durasteel/padded, /area/nsv/weapons/fore) "bac" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/hatch{ name = "Air Control Left"; req_one_access_txt = "19;69" @@ -16135,24 +16220,24 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/white, /area/science/research) "bag" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/door/airlock/ship/public/glass{ @@ -16185,8 +16270,8 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "bal" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/hatch{ name = "Air Control Right"; req_one_access_txt = "19;69" @@ -16201,7 +16286,7 @@ name = "Launch tubes 3 and 4" }) "bam" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/machinery/status_display/evac/west, @@ -16334,10 +16419,10 @@ dir = 4 }, /obj/machinery/computer/ship/viewscreen, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/plasteel, @@ -16361,18 +16446,18 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 4 }, /turf/open/floor/durasteel, /area/science/xenobiology) "baG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment{ @@ -16381,8 +16466,8 @@ /turf/open/floor/durasteel, /area/science/robotics/lab) "baH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -16532,8 +16617,8 @@ /turf/open/floor/carpet/ship, /area/crew_quarters/heads/captain) "bbp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/requests_console{ announcementConsole = 1; @@ -16548,12 +16633,12 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bbq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bbr" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 9 }, @@ -16564,25 +16649,25 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bbs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bbt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bbu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/machinery/light, @@ -16605,10 +16690,10 @@ /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /turf/open/floor/plating, @@ -16673,6 +16758,8 @@ "bbI" = ( /obj/machinery/computer/lore_terminal, /obj/structure/munitions_trolley, +/obj/item/ammo_box/magazine/nsv/heavy_cannon, +/obj/item/ammo_box/magazine/nsv/heavy_cannon, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "bbJ" = ( @@ -16696,8 +16783,8 @@ /turf/open/floor/durasteel/padded, /area/bridge/cic) "bbM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/carpet/ship, /area/bridge/cic) "bbN" = ( @@ -16707,27 +16794,27 @@ /turf/open/floor/carpet/ship, /area/bridge/cic) "bbO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/carpet/ship, /area/bridge/cic) "bbQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/camera/autoname{ dir = 4 }, /turf/open/floor/carpet/ship, /area/bridge/cic) "bbR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/carpet/ship, /area/bridge/cic) "bbS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/carpet/ship, /area/bridge/cic) @@ -16735,8 +16822,8 @@ /turf/closed/wall/r_wall/ship, /area/nsv/squad) "bbV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, @@ -16746,10 +16833,10 @@ /turf/open/floor/durasteel, /area/crew_quarters/bar) "bbW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment{ @@ -16773,6 +16860,8 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/research) "bca" = ( @@ -16805,8 +16894,8 @@ /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) "bcf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/external/glass{ name = "Gauss Bay" }, @@ -16859,16 +16948,16 @@ /turf/open/floor/plasteel/dark, /area/engine/break_room) "bcp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/durasteel, /area/engine/break_room) "bcq" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -16877,7 +16966,7 @@ /turf/open/floor/durasteel, /area/engine/break_room) "bcr" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/durasteel, @@ -16916,8 +17005,8 @@ /turf/open/floor/plasteel/dark, /area/engine/break_room) "bcw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, @@ -16946,10 +17035,10 @@ /turf/open/floor/plasteel/dark, /area/engine/break_room) "bcA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/science/robotics/lab) "bcB" = ( @@ -17021,11 +17110,11 @@ /turf/open/floor/plating, /area/maintenance/department/science) "bcJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -17040,6 +17129,17 @@ /obj/machinery/door/firedoor/border_only/directional/west, /turf/open/floor/durasteel, /area/hallway/primary/fore) +"bcK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/ship/public/glass{ + name = "Central Primary Hallway" + }, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "bcN" = ( /turf/closed/wall/ship, /area/bridge/cic) @@ -17103,23 +17203,23 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/main) "bcU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/security/warden) "bcV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/carpet/ship, /area/bridge/meeting_room) "bcW" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/security/warden) "bcX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/structure/chair{ @@ -17141,8 +17241,8 @@ /turf/open/floor/carpet/ship, /area/bridge/meeting_room) "bda" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -17150,7 +17250,7 @@ /turf/open/floor/plasteel/dark, /area/security/warden) "bdb" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/cable{ @@ -17158,6 +17258,17 @@ }, /turf/open/floor/plasteel/dark, /area/security/warden) +"bde" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + sortType = 19 + }, +/obj/structure/sign/directions/security{ + dir = 4; + pixel_y = -24 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "bdh" = ( /obj/structure/sign/directions/security{ dir = 4 @@ -17171,27 +17282,19 @@ /turf/closed/wall/r_wall/ship, /area/security/checkpoint/customs) "bdn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/engine/engineering/hangar) -"bdo" = ( -/obj/machinery/atmospherics/pipe/layer_manifold{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/engine/engineering/hangar) "bdp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, -/turf/open/floor/plating, -/area/engine/engineering/hangar) +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/secondary/entry) "bdq" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -17206,15 +17309,15 @@ /area/engine/engineering/hangar) "bdr" = ( /obj/machinery/light/small, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, /obj/machinery/advanced_airlock_controller/directional/north{ pixel_y = 24 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 8 + }, /turf/open/floor/plating, /area/engine/engineering/hangar) "bds" = ( @@ -17224,34 +17327,29 @@ /obj/machinery/door/airlock/ship/external{ req_one_access_txt = "24;32" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/engine/engineering/hangar) "bdt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel, /area/engine/engineering/hangar) "bdu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, /turf/open/floor/durasteel, /area/engine/engineering/hangar) "bdv" = ( @@ -17320,8 +17418,8 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bdQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/holopad, /obj/structure/cable{ @@ -17330,8 +17428,8 @@ /turf/open/floor/wood, /area/library) "bdR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/holopad, /obj/effect/landmark/start/head_of_personnel{ name = "Executive Officer" @@ -17344,8 +17442,8 @@ /turf/open/floor/durasteel, /area/bridge/cic) "bdV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/effect/landmark/start/medical_doctor, @@ -17360,8 +17458,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/white, /area/medical/surgery) "bdX" = ( @@ -17376,8 +17474,8 @@ /turf/open/floor/durasteel, /area/storage/eva) "bdY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -17390,7 +17488,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "beb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/structure/cable{ @@ -17437,7 +17535,10 @@ /area/crew_quarters/fitness) "bef" = ( /obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -17525,8 +17626,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/white, /area/medical/surgery) "bes" = ( @@ -17576,8 +17677,8 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "beG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /turf/open/floor/plasteel/dark, @@ -17586,14 +17687,14 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/east{ pixel_y = 24 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, /obj/machinery/camera/autoname{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/crew_quarters/bar/atrium) "beI" = ( @@ -17609,19 +17710,19 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "beJ" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/lab) "beL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -17629,8 +17730,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel, /area/hallway/primary/aft) @@ -17675,11 +17776,11 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/medical) @@ -17725,10 +17826,10 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/plating, @@ -17854,11 +17955,11 @@ /obj/machinery/power/apc/auto_name/north{ pixel_y = 24 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -18044,17 +18145,9 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "bfN" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 15; - id = "arrivals_stationary"; - name = "arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/box; - width = 7 - }, -/turf/open/space/basic, -/area/space/nearstation) +/obj/effect/landmark/latejoin, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "bfO" = ( /obj/structure/hull_plate, /obj/effect/turf_decal/stripes/line{ @@ -18133,11 +18226,11 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/electrical) @@ -18180,100 +18273,65 @@ /area/space/nearstation) "bgs" = ( /obj/effect/turf_decal/delivery/white, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/reagent_dispensers/foamtank, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, +/obj/structure/reagent_dispensers/foamtank, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/durasteel, /area/nsv/hanger) "bgt" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "bgv" = ( /obj/machinery/light{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/structure/cable{ icon_state = "2-8" }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) -"bgw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 8 }, /turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) +/area/nsv/hanger/deck2/starboard{ + name = "Launch tubes 1 and 2" + }) "bgy" = ( /obj/effect/turf_decal/stripes/full, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) -"bgz" = ( -/obj/effect/turf_decal/stripes/full, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) -"bgA" = ( -/obj/effect/turf_decal/stripes/full, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, /turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) +/area/nsv/hanger) "bgC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard/central) "bgD" = ( @@ -18281,53 +18339,53 @@ pixel_x = 24 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/central) "bgE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/central) "bgG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/binary/dp_vent_pump, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/central) "bgI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /turf/open/floor/plating, /area/maintenance/department/bridge) "bgJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/department/bridge) "bgL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/bridge) "bgV" = ( /obj/machinery/light/small, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/bridge) "bgX" = ( /obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/bridge) @@ -18338,21 +18396,21 @@ /obj/machinery/door/airlock/ship/external{ req_one_access_txt = "13" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/bridge) "bgZ" = ( /obj/machinery/light/small, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/bridge) @@ -18369,7 +18427,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /turf/open/floor/plating, @@ -18382,10 +18440,10 @@ /turf/open/floor/plasteel/white, /area/medical/genetics/cloning) "bhe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/plating, @@ -18398,10 +18456,10 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, @@ -18417,34 +18475,36 @@ /obj/machinery/advanced_airlock_controller/directional/north{ pixel_y = 24 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plating, /area/quartermaster/miningoffice) "bhj" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/effect/landmark/start/shaft_miner, /turf/open/floor/plating, /area/quartermaster/miningoffice) "bhk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, /obj/effect/landmark/start/shaft_miner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plating, /area/quartermaster/miningoffice) "bhl" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, /turf/open/floor/plating, /area/quartermaster/miningoffice) "bhm" = ( @@ -18453,15 +18513,9 @@ dir = 1; pixel_y = -24 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 5 - }, /turf/open/floor/plating, /area/quartermaster/miningoffice) "bhn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, /obj/item/kirbyplants/random, /turf/open/floor/plating, /area/quartermaster/miningoffice) @@ -18475,10 +18529,10 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "bhp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 8 }, /turf/open/floor/plating, @@ -18490,40 +18544,40 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/cargo) "bhr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/cargo) "bhs" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/department/cargo) "bht" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/department/cargo) "bhu" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /turf/open/floor/plating, @@ -18545,38 +18599,38 @@ /turf/open/floor/plasteel, /area/engine/storage) "bhw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plating, /area/maintenance/department/cargo) "bhx" = ( /obj/effect/decal/cleanable/cobweb, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/cargo) "bhy" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /turf/open/floor/plating, /area/maintenance/department/cargo) "bhz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/plating, @@ -18599,41 +18653,41 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/port/central) "bhE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /turf/open/floor/plating, /area/maintenance/port/central) "bhF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/port/central) "bhG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/port/central) "bhH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/machinery/light/small{ @@ -18642,16 +18696,16 @@ /turf/open/floor/plating, /area/maintenance/port/central) "bhI" = ( -/obj/machinery/atmospherics/pipe/layer_manifold{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/port/central) "bhJ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -18667,9 +18721,8 @@ /turf/open/floor/plating, /area/maintenance/port/central) "bhL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, /turf/open/floor/plating, /area/maintenance/port/central) @@ -18699,11 +18752,11 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/port/central) @@ -18716,25 +18769,21 @@ }, /turf/open/floor/plating, /area/maintenance/port/central) -"bhS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/maintenance/port/central) "bhT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/port/central) "bhU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, @@ -18744,8 +18793,8 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bhW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -18756,23 +18805,23 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/port/aft) "bia" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/port/aft) "bic" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel, /area/maintenance/port/aft) @@ -18785,19 +18834,19 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bie" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "bif" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /turf/open/floor/plating, @@ -18812,11 +18861,11 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bih" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -18843,8 +18892,8 @@ /turf/open/floor/plasteel/white, /area/maintenance/department/science/xenobiology) "bil" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/white, /area/maintenance/department/science/xenobiology) @@ -18852,50 +18901,36 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 28 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "biu" = ( /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 8 }, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "biw" = ( /obj/effect/landmark/start/assistant, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/carpet/ship, /area/crew_quarters/bar/atrium) -"bix" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/bar/atrium) "biy" = ( /obj/machinery/status_display/evac{ pixel_y = -32 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) @@ -18910,8 +18945,8 @@ /turf/open/floor/plating, /area/crew_quarters/bar/atrium) "biA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) @@ -18924,8 +18959,8 @@ /turf/open/floor/plating, /area/hallway/secondary/entry) "biC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -18934,14 +18969,14 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel, /area/hallway/secondary/entry) "biD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -18949,38 +18984,38 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/hallway/secondary/entry) "biE" = ( /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/east{ pixel_y = 24 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 1 }, /obj/machinery/camera/autoname{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/hallway/secondary/entry) "biF" = ( /obj/machinery/status_display/ai{ pixel_y = -32 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) "biG" = ( /obj/machinery/light, /obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/plasteel/dark, @@ -18990,29 +19025,29 @@ /obj/machinery/door/airlock/ship/external/glass{ name = "Arrival Shuttle Dock" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/crew_quarters/bar/atrium) "biJ" = ( /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/west{ pixel_y = 24 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 1 }, /obj/machinery/camera/autoname{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/hallway/secondary/entry) "biK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "biL" = ( @@ -19022,29 +19057,29 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "biM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "biN" = ( /obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "biO" = ( /obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /turf/open/floor/plasteel/dark, @@ -19059,12 +19094,12 @@ /obj/effect/turf_decal/tile/neutral, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "biQ" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/hallway/secondary/entry) "biR" = ( @@ -19074,33 +19109,33 @@ /obj/effect/turf_decal/tile/neutral, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "biS" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "biT" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "biU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "biV" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/entry) "biW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -19111,12 +19146,12 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/durasteel, /area/hallway/secondary/entry) "biX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -19124,7 +19159,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/durasteel, /area/hallway/secondary/entry) "bjc" = ( @@ -19132,8 +19167,8 @@ name = "Auxiliary Shuttle Dock" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/hallway/primary/fore) "bjd" = ( @@ -19141,11 +19176,11 @@ brightness = 3; dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/binary/dp_vent_pump, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, /obj/machinery/advanced_airlock_controller/directional/east{ pixel_y = 24 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/hallway/primary/fore) "bje" = ( @@ -19186,8 +19221,8 @@ /obj/structure/cable{ icon_state = "0-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/department/cargo) "bjs" = ( @@ -19195,25 +19230,25 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/department/cargo) "bjt" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /turf/open/floor/plating, /area/maintenance/department/cargo) "bju" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, @@ -19221,10 +19256,10 @@ "bjv" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, @@ -19234,10 +19269,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/plating, @@ -19249,13 +19284,13 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 1 }, /obj/machinery/advanced_airlock_controller/directional/west{ pixel_y = 24 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/port/aft) "bjA" = ( @@ -19265,36 +19300,36 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/port/aft) "bjB" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/maintenance/port/aft) "bjC" = ( /obj/effect/turf_decal/stripes/red/corner{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/maintenance/port/aft) "bjD" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /turf/open/floor/plasteel, @@ -19303,21 +19338,21 @@ /obj/machinery/camera/autoname{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /turf/open/floor/plasteel, /area/maintenance/port/aft) "bjG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/advanced_airlock_controller/directional/north, /turf/open/floor/durasteel/padded, /area/science/xenobiology) "bjJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /turf/open/floor/durasteel, @@ -19338,8 +19373,8 @@ /turf/open/floor/durasteel/padded, /area/hallway/secondary/exit/departure_lounge) "bjX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "bka" = ( @@ -19350,14 +19385,14 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "bkd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -19368,11 +19403,11 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/circuit/red, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "bkf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/camera/autoname{ dir = 8 }, @@ -19380,21 +19415,21 @@ /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "bkh" = ( /obj/machinery/status_display/ai/east, -/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "bki" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "bkj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -19420,7 +19455,7 @@ /turf/open/floor/durasteel, /area/hallway/primary/central) "bkm" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -19429,7 +19464,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /turf/open/floor/durasteel, @@ -19722,11 +19757,11 @@ /turf/open/floor/plating, /area/crew_quarters/dorms) "blV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/wood, /area/crew_quarters/theatre) @@ -19739,29 +19774,29 @@ /turf/open/space/basic, /area/security/execution/transfer) "bmf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "bmj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/landmark/start/bartender, /turf/open/floor/wood, /area/crew_quarters/bar) "bmu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -19775,33 +19810,18 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) -"bmM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = -28 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "bmQ" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/engine/engineering/hangar) -"bna" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) "bnb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -19854,6 +19874,7 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, +/obj/machinery/computer/camera_advanced/xenobio, /turf/open/floor/durasteel, /area/science/xenobiology) "boH" = ( @@ -19877,11 +19898,11 @@ /area/maintenance/department/science/xenobiology) "bqi" = ( /obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-4" @@ -19918,11 +19939,12 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "brq" = ( -/obj/machinery/atmospherics/pipe/layer_manifold{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/techmaint, +/area/engine/atmos) "bry" = ( /obj/machinery/vending/snack/random, /turf/open/floor/durasteel, @@ -19969,12 +19991,16 @@ }, /turf/open/floor/plating, /area/construction) +"bsn" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "bsB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/airlock/ship/security/glass{ name = "Riot Armory"; @@ -19995,8 +20021,8 @@ /area/maintenance/department/cargo) "bup" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/components/binary/dp_vent_pump, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/engineering/hangar) "buE" = ( @@ -20063,18 +20089,12 @@ /obj/structure/table, /turf/open/floor/plating, /area/maintenance/department/cargo) -"bwR" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) "bxo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -20097,17 +20117,17 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) "byf" = ( -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /turf/open/floor/wood, /area/crew_quarters/heads/hop) "byj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2{ dir = 9 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "bzd" = ( @@ -20127,10 +20147,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment{ @@ -20144,13 +20164,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/weapons/fore) -"bAB" = ( -/obj/machinery/camera/autoname{ - dir = 4 - }, -/obj/machinery/ship_weapon/vls, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "bAC" = ( /obj/machinery/holopad, /turf/open/floor/durasteel, @@ -20178,26 +20191,14 @@ }, /turf/open/floor/plasteel, /area/engine/engine_room) -"bAX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8; - sortType = 22 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "bCd" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/central) "bCt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -20232,22 +20233,12 @@ }, /turf/open/floor/durasteel, /area/crew_quarters/dorms) -"bDE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/maintenance/port/aft) "bEf" = ( /turf/open/floor/plating, /area/space/nearstation) -"bEz" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "bEN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 9 }, @@ -20281,10 +20272,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating, @@ -20319,8 +20310,8 @@ /area/engine/gravity_generator) "bGA" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/durasteel, @@ -20341,7 +20332,7 @@ /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) "bHb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/machinery/camera/autoname{ @@ -20383,29 +20374,21 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "bHY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/wood, /area/security/detectives_office/private_investigators_office) "bIw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) -"bIA" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 8; - name = "Theatre Trunk"; - sortType = 18 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "bIB" = ( /obj/machinery/atmospherics/pipe/simple/brown/visible, /obj/effect/turf_decal/tile/yellow{ @@ -20427,7 +20410,12 @@ /turf/open/floor/plasteel/dark, /area/security/prison) "bJB" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater, +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + piping_layer = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "bKn" = ( @@ -20452,17 +20440,6 @@ }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) -"bKO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "bKR" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -20481,11 +20458,11 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) @@ -20512,7 +20489,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/lockup) "bMm" = ( @@ -20530,11 +20507,11 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "bMR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/light, /obj/effect/turf_decal/tile/yellow, @@ -20573,11 +20550,11 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, @@ -20627,12 +20604,6 @@ /obj/effect/spawner/structure/window/reinforced/ship, /turf/open/floor/plating, /area/science/mixing/chamber) -"bOu" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/engine/storage) "bOA" = ( /obj/structure/cable{ icon_state = "0-4" @@ -20680,7 +20651,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) "bRn" = ( @@ -20760,11 +20731,11 @@ /turf/open/floor/engine/o2, /area/engine/atmos) "bSL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/airlock/ship/hatch{ name = "Support Vessel Fore"; @@ -20804,6 +20775,23 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) +"bTF" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/highsecurity/ship{ + name = "Weapons Bay"; + req_one_access_txt = "3;69" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "bTW" = ( /obj/machinery/firealarm{ dir = 1; @@ -20812,11 +20800,11 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "bUf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -20831,9 +20819,24 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) +"bUL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/ship/maintenance{ + req_one_access_txt = "32" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/west, +/turf/open/floor/plating, +/area/maintenance/department/electrical) "bUN" = ( /turf/closed/wall/r_wall/ship, /area/maintenance/department/medical) @@ -20851,7 +20854,7 @@ /area/maintenance/department/electrical) "bVY" = ( /obj/structure/closet/secure_closet/miner, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plating, @@ -20880,11 +20883,17 @@ /obj/machinery/light, /turf/open/floor/durasteel, /area/science/xenobiology) +"bWy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/techmaint, +/area/engine/atmos) "bWH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/door/airlock/ship/security/glass{ @@ -20899,6 +20908,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/fans/tiny, /turf/open/floor/plasteel, /area/crew_quarters/heads/hos) "bXo" = ( @@ -20925,20 +20935,13 @@ name = "Engineering Security Post"; req_one_access_txt = "63" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/durasteel, /area/security/checkpoint/engineering) -"bYa" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/secondary/entry) "bYk" = ( /obj/structure/extinguisher_cabinet/west, /turf/open/floor/plating, @@ -20953,10 +20956,10 @@ /turf/closed/wall/r_wall/ship, /area/engine/engineering/hangar) "bZF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/structure/cable{ @@ -21098,8 +21101,8 @@ /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) "ceW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/light{ dir = 4 }, @@ -21127,7 +21130,7 @@ /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "cfR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/carpet/orange, @@ -21172,7 +21175,7 @@ /turf/open/floor/engine, /area/engine/atmospherics_engine) "cjv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "cjC" = ( @@ -21199,25 +21202,11 @@ /obj/machinery/light, /turf/open/floor/plasteel/white, /area/maintenance/department/medical) -"ckt" = ( -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "12;69" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/turf/open/floor/plating, -/area/maintenance/starboard/central) "ckw" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/machinery/atmospherics/components/unary/portables_connector{ @@ -21247,25 +21236,16 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/bar/atrium) "clE" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/item/radio/intercom{ - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/camera/autoname{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "clF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "4-8" }, @@ -21293,18 +21273,6 @@ /obj/structure/munitions_trolley, /turf/open/floor/durasteel, /area/nsv/weapons/fore) -"cmS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8; - sortType = 16 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "cne" = ( /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -21312,10 +21280,10 @@ /turf/open/floor/durasteel/padded, /area/science/robotics/lab) "cnp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/durasteel, @@ -21325,12 +21293,12 @@ /turf/open/floor/engine/air, /area/engine/atmos) "cob" = ( -/obj/machinery/door/airlock/ship/external{ - req_one_access_txt = "13,69" - }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, +/obj/machinery/door/airlock/ship/external{ + req_one_access_txt = "79" + }, /turf/open/floor/plating, /area/maintenance/starboard/central) "coj" = ( @@ -21339,11 +21307,9 @@ /turf/open/floor/plasteel/dark, /area/hallway/secondary/service) "cpb" = ( -/obj/machinery/atmospherics/components/unary/tank{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/department/chapel) +/obj/structure/lattice/catwalk, +/turf/open/space, +/area/space) "cpf" = ( /obj/machinery/firealarm{ dir = 4; @@ -21383,11 +21349,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/circuit, /area/maintenance/department/science/xenobiology) -"cqj" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/computer/ams, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "cql" = ( /obj/effect/turf_decal/bot_white, /obj/structure/closet/crate, @@ -21410,7 +21371,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "crj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/port/central) "crk" = ( @@ -21422,10 +21383,10 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plating, @@ -21435,7 +21396,7 @@ /turf/open/floor/plasteel, /area/engine/engine_room) "crE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/carpet/orange, @@ -21449,26 +21410,42 @@ }, /turf/open/floor/engine, /area/maintenance/department/science/xenobiology) +"csf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/landmark/nuclear_waste_spawner, +/turf/open/floor/plasteel, +/area/engine/engineering) "csA" = ( /turf/open/floor/durasteel, /area/engine/atmos) "csL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, /obj/item/radio/intercom/directional/south, /obj/machinery/atmospherics/components/binary/pump/layer2{ dir = 8; name = "Uncooled Reactor Waste to Scrubbers" }, /obj/effect/turf_decal/delivery/red, +/obj/machinery/atmospherics/components/binary/pump/on/layer4{ + target_pressure = 4500; + dir = 8; + name = "Scrubber Network to Reclaimation Loop" + }, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "csP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -21518,8 +21495,8 @@ /turf/open/floor/plating, /area/maintenance/disposal) "cuL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/blue{ dir = 8 }, @@ -21550,8 +21527,8 @@ /turf/open/floor/durasteel/padded, /area/science/xenobiology) "cwu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -21569,10 +21546,10 @@ /turf/open/floor/durasteel, /area/security/prison) "cwP" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -21584,8 +21561,8 @@ /turf/open/floor/durasteel, /area/crew_quarters/theatre) "cxl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/firealarm/directional/east, /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) @@ -21595,7 +21572,7 @@ /turf/open/floor/durasteel/padded, /area/nsv/weapons/fore) "cxT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel/dark, @@ -21607,13 +21584,13 @@ /turf/open/floor/circuit/telecomms, /area/science/xenobiology) "cyK" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/disposalpipe/segment{ @@ -21653,8 +21630,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "czt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -21668,6 +21645,10 @@ /obj/machinery/status_display/evac/south, /turf/open/floor/durasteel/padded, /area/science/research) +"czU" = ( +/obj/machinery/camera/autoname, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "czX" = ( /obj/effect/turf_decal/tile/green{ dir = 4 @@ -21702,12 +21683,12 @@ /turf/open/floor/durasteel/padded, /area/bridge/cic) "cAF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) "cAH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -21724,8 +21705,8 @@ /turf/open/floor/plasteel, /area/security/checkpoint/science/research) "cAU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/public/glass{ name = "Surgery Observation" @@ -21764,8 +21745,8 @@ /turf/open/floor/engine, /area/medical/genetics/cloning) "cCg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -21809,10 +21790,10 @@ /turf/open/floor/carpet/ship, /area/crew_quarters/heads/captain/private) "cDI" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -21831,10 +21812,17 @@ }, /turf/open/floor/plasteel, /area/science/lab) -"cEK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +"cEz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, -/area/engine/engineering/hangar) +/area/maintenance/department/medical/morgue) +"cEK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel/techmaint, +/area/engine/atmos) "cEN" = ( /turf/open/floor/wood, /area/crew_quarters/heads/hop) @@ -21852,11 +21840,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "cFH" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, /turf/open/floor/plating/airless, /area/maintenance/department/cargo) @@ -21884,10 +21872,14 @@ pixel_y = -8 }, /obj/structure/table/glass, -/obj/item/storage/toolbox/mechanical, /obj/item/radio/intercom/directional/north, +/obj/item/storage/toolbox/mechanical, /turf/open/floor/plasteel/white, /area/science/lab) +"cGV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/bar/atrium) "cHg" = ( /obj/machinery/door/poddoor/shutters/ship{ dir = 1; @@ -21897,8 +21889,8 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/lockup) "cHo" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -21927,14 +21919,14 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "cHE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -21947,10 +21939,10 @@ name = "Research and Development Lab"; req_one_access_txt = "7" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/east, @@ -21961,12 +21953,6 @@ /obj/machinery/light/small, /turf/open/floor/plating, /area/maintenance/central) -"cIF" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 8 - }, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) "cIN" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -21987,8 +21973,8 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "cJj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/blue{ dir = 8 }, @@ -22008,13 +21994,6 @@ }, /turf/open/floor/plating, /area/medical/genetics/cloning) -"cJE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "cKn" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/airalarm/directional/south, @@ -22072,11 +22051,11 @@ /turf/closed/wall/ship, /area/hallway/secondary/entry) "cNO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/turretid{ icon_state = "control_stun"; @@ -22096,17 +22075,19 @@ /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /turf/open/floor/durasteel/padded, -/area/nsv/hanger) +/area/nsv/hanger/deck2/starboard{ + name = "Launch tubes 1 and 2" + }) "cNU" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/department/medical) "cOx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel, /area/nsv/hanger) @@ -22116,11 +22097,11 @@ /area/maintenance/department/crew_quarters/dorms) "cON" = ( /obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/mapping_helpers/airlock/locked, /obj/structure/cable{ @@ -22194,15 +22175,15 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "cSl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "cSp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/machinery/camera/autoname{ @@ -22211,16 +22192,16 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) "cSC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/durasteel, /area/nsv/weapons/fore) "cSD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -22243,17 +22224,17 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "cTJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/nsv/squad) "cTO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 9 - }, /obj/machinery/camera/autoname{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 9 + }, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "cUA" = ( @@ -22270,8 +22251,8 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "cVr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -22287,7 +22268,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "cVt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -22299,23 +22280,11 @@ }, /turf/open/floor/wood, /area/crew_quarters/theatre) -"cWT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "cXQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/effect/turf_decal/tile/blue{ @@ -22325,11 +22294,11 @@ /turf/open/floor/plasteel/dark, /area/bridge) "cXR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -22379,7 +22348,7 @@ "cZk" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 4; - piping_layer = 3 + piping_layer = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -22394,14 +22363,14 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "cZS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/port/central) @@ -22447,8 +22416,8 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "dbR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/machinery/door/airlock/ship/public/glass{ name = "Cloning"; @@ -22462,18 +22431,18 @@ /turf/open/floor/plasteel/white, /area/medical/genetics/cloning) "dcf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/landmark/start/pilot, /turf/open/floor/durasteel, /area/nsv/hanger) "dcg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/hatch{ name = "Support Vessel Aft"; @@ -22487,11 +22456,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "dcq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plasteel/white, /area/science/mixing) @@ -22510,16 +22479,12 @@ dir = 8 }, /obj/structure/fighter_launcher, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/light{ + dir = 8 }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "dcV" = ( /obj/structure/girder, /obj/structure/grille, @@ -22621,21 +22586,20 @@ /turf/closed/wall/ship, /area/tcommsat/computer) "dhs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "dhx" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-8" }, @@ -22700,20 +22664,6 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) -"dlf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/door/firedoor/border_only/directional/south, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/secondary/entry) "dlp" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/item/stack/tile/plasteel, @@ -22729,7 +22679,7 @@ /turf/open/floor/plasteel, /area/science/research) "dms" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/durasteel, @@ -22757,8 +22707,8 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "dmI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/camera/autoname, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -22773,13 +22723,9 @@ }, /turf/closed/wall/r_wall/ship, /area/ai_monitored/turret_protected/ai) -"dnG" = ( -/obj/machinery/broadside_shell_packer, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "dnO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/airlock/ship/security/glass{ name = "Brig Control"; @@ -22845,10 +22791,10 @@ /turf/open/floor/plating, /area/maintenance/department/science) "dpq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, @@ -22869,23 +22815,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) -"dpK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "dql" = ( /obj/machinery/status_display/evac/south, /obj/structure/chair{ @@ -22897,12 +22826,12 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plating, /area/quartermaster/warehouse) "dqr" = ( /obj/effect/spawner/room/threexfive, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/medical/morgue) "dqt" = ( /obj/machinery/door/firedoor/border_only/directional/north, @@ -22948,6 +22877,9 @@ dir = 4 }, /obj/machinery/camera/autoname, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "drf" = ( @@ -22984,10 +22916,10 @@ /turf/open/floor/carpet/ship, /area/crew_quarters/heads/captain/private) "drK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/structure/cable/yellow{ @@ -22999,8 +22931,8 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) "drQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/camera/autoname{ dir = 8 }, @@ -23046,17 +22978,6 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plating, /area/maintenance/fore) -"dtz" = ( -/obj/machinery/door/airlock/ship/public/glass{ - name = "Central Primary Hallway" - }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "duc" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -23096,11 +23017,11 @@ /turf/open/floor/monotile/dark, /area/science/storage) "duG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -23132,8 +23053,8 @@ /obj/machinery/atmospherics/pipe/manifold/purple/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable/yellow{ icon_state = "1-8" }, @@ -23165,17 +23086,17 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /turf/open/floor/plating, /area/quartermaster/warehouse) "dvq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -23206,8 +23127,8 @@ /obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -23276,11 +23197,11 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "dxy" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -23327,11 +23248,11 @@ /turf/open/floor/plating, /area/engine/engine_smes) "dyU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/airlock/ship/public{ name = "Bar closet"; @@ -23367,10 +23288,12 @@ /obj/structure/chair/office{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/landmark/start/pilot, /turf/open/floor/durasteel, -/area/nsv/hanger) +/area/nsv/hanger/deck2/starboard{ + name = "Launch tubes 1 and 2" + }) "dzQ" = ( /obj/machinery/light/small{ brightness = 3; @@ -23379,8 +23302,8 @@ /turf/open/floor/plating, /area/maintenance/fore) "dAf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -23395,37 +23318,15 @@ dir = 8 }, /obj/structure/fighter_launcher, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) "dCA" = ( /obj/structure/table/wood, /turf/open/floor/carpet/black, /area/science/research) -"dCJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -24 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "dDc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/effect/spawner/room/threexthree, @@ -23435,18 +23336,23 @@ /obj/item/wrench, /turf/open/floor/plating, /area/maintenance/department/science) +"dDq" = ( +/obj/structure/table, +/obj/machinery/coffeemaker, +/turf/open/floor/wood, +/area/crew_quarters/bar) "dDB" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "dEe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -23512,11 +23418,11 @@ /turf/open/floor/plating, /area/maintenance/fore) "dGm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -23535,8 +23441,8 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -23585,11 +23491,11 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "dHJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/red{ dir = 4 }, @@ -23621,10 +23527,10 @@ /turf/open/floor/plating, /area/quartermaster/office) "dJj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -23642,7 +23548,7 @@ /obj/structure/cable/yellow{ icon_state = "0-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/durasteel, @@ -23677,16 +23583,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/virology) -"dLi" = ( -/obj/machinery/light, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/departments/holy{ - pixel_y = -32 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "dLy" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/dark/telecomms, @@ -23718,10 +23614,10 @@ /turf/open/floor/durasteel/padded, /area/bridge/cic) "dLS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /turf/open/floor/plasteel/white, @@ -23756,6 +23652,19 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/department/chapel) +"dOJ" = ( +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "dOV" = ( /obj/structure/rack, /obj/item/clothing/suit/fire/atmos, @@ -23814,9 +23723,17 @@ /obj/structure/closet/crate/coffin, /turf/open/floor/plating, /area/maintenance/department/chapel) +"dQS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "dRb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/table/wood, /obj/structure/cable{ icon_state = "1-2" @@ -23846,12 +23763,6 @@ }, /turf/open/floor/durasteel, /area/science/robotics/lab) -"dSe" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "dSj" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 5 @@ -23859,11 +23770,11 @@ /turf/open/floor/plating, /area/nsv/hanger) "dSy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -23877,8 +23788,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -23887,7 +23798,7 @@ /turf/open/floor/monotile/steel, /area/science/xenobiology) "dSX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/blue{ dir = 8 }, @@ -23930,6 +23841,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) +"dTS" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "dUp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -23955,11 +23876,11 @@ /turf/open/floor/plating, /area/crew_quarters/heads/hos) "dVb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -23982,11 +23903,11 @@ /turf/open/floor/plasteel/white, /area/maintenance/department/medical) "dXj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -24043,6 +23964,16 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) +"dZV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/plasteel/techmaint, +/area/engine/atmos) +"eah" = ( +/obj/machinery/computer/ship/munitions_computer/east, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "eaw" = ( /obj/machinery/computer/telecomms/monitor, /turf/open/floor/plasteel/grimy, @@ -24068,12 +23999,13 @@ /turf/open/floor/plasteel, /area/construction) "ebZ" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) +/turf/open/floor/durasteel, +/area/nsv/hanger/deck2/port{ + name = "Launch tubes 3 and 4" + }) "eci" = ( /obj/effect/turf_decal/tile/orange{ dir = 4 @@ -24081,11 +24013,11 @@ /turf/open/floor/durasteel, /area/nsv/weapons/fore) "ecH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -24116,10 +24048,10 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "edN" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -24171,31 +24103,31 @@ }, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/hallway/secondary/exit) "egN" = ( /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ - dir = 8 - }, /obj/machinery/advanced_airlock_controller/directional/north{ pixel_y = 24 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 8 + }, /turf/open/floor/plating, /area/maintenance/port/central) "egP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/light, /obj/effect/turf_decal/tile/yellow, @@ -24214,18 +24146,9 @@ /obj/machinery/light, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"eho" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) "ehI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/light_switch/south, /turf/open/floor/plasteel/dark, @@ -24276,10 +24199,10 @@ /turf/open/floor/plasteel/dark, /area/science/nanite) "eiW" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/cable{ @@ -24292,11 +24215,11 @@ /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "ejn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -24402,6 +24325,10 @@ /obj/item/tank/internals/oxygen/yellow, /turf/open/floor/plating, /area/maintenance/department/electrical) +"emx" = ( +/obj/machinery/light, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/secondary/entry) "emD" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -24431,17 +24358,6 @@ /obj/effect/spawner/lootdrop/maintenance/six, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"eoH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/orange{ - dir = 4 - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "epl" = ( /turf/open/floor/carpet/ship, /area/nsv/crew_quarters/heads/maa) @@ -24482,11 +24398,11 @@ /turf/open/floor/plating, /area/ai_monitored/security/armory/security) "eqq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -24496,27 +24412,20 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "eqD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "4-8" }, /obj/machinery/firealarm/directional/south, /turf/open/floor/plasteel/white, /area/science/mixing) -"eqG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/machinery/computer/ship/munitions_computer/east, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) "eqW" = ( /obj/machinery/rnd/production/circuit_imprinter/department/science, /obj/machinery/light_switch{ @@ -24542,10 +24451,10 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "ery" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/structure/cable{ @@ -24555,10 +24464,10 @@ /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_b) "erC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -24591,7 +24500,7 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "esD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/effect/landmark/start/pilot, @@ -24610,6 +24519,17 @@ /obj/structure/extinguisher_cabinet/east, /turf/open/floor/plating, /area/hallway/secondary/entry) +"etq" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/machinery/coffeemaker, +/turf/open/floor/durasteel, +/area/security/main) "etx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -24624,12 +24544,32 @@ /obj/effect/landmark/start/brig_physician, /turf/open/floor/plasteel/dark, /area/security/prison) -"euv" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +"eur" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/camera/autoname{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/item/storage/fancy/coffee_condi_display{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/storage/fancy/coffee_cart_rack{ + pixel_x = 9; + pixel_y = -1 + }, +/obj/item/storage/fancy/coffee_condi_display{ + pixel_x = -3; + pixel_y = 2 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/security/main) +"euv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -24640,6 +24580,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plating, /area/nsv/hanger) "euD" = ( @@ -24659,11 +24602,8 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/security/glass{ name = "Hangar Bay"; @@ -24674,6 +24614,9 @@ }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/nsv/hanger) "ewW" = ( @@ -24689,10 +24632,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/disposalpipe/segment{ @@ -24723,23 +24666,16 @@ /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/plating, /area/maintenance/port/aft) -"exJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/grille_or_trash, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) "eyQ" = ( /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -24761,13 +24697,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/weapons/fore) -"ezy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel, -/area/hallway/primary/fore) "eAd" = ( /obj/structure/cable{ icon_state = "4-8" @@ -24788,9 +24717,11 @@ /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/durasteel/padded, -/area/nsv/hanger) +/area/nsv/hanger/deck2/port{ + name = "Launch tubes 3 and 4" + }) "eAW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/item/storage/box/evidence, @@ -24836,11 +24767,11 @@ /turf/open/floor/plasteel, /area/engine/engineering) "eCj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/public/glass{ name = "Patient Room A"; @@ -24895,8 +24826,8 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "eDC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 10 }, @@ -24907,16 +24838,16 @@ /turf/open/floor/wood, /area/library) "eEd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/table, /obj/item/toy/plush/lizardplushie, /turf/open/floor/durasteel/padded, /area/crew_quarters/locker) "eFd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 9 }, @@ -25002,17 +24933,6 @@ /obj/structure/table, /turf/open/floor/durasteel, /area/engine/atmos) -"eIP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 8 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "eJc" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/snacks/pie/cream, @@ -25025,8 +24945,8 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "eJy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -25036,11 +24956,11 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "eJR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -25057,8 +24977,8 @@ pixel_x = -24; pixel_y = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/components/binary/pump/on{ dir = 4; name = "Burn to port" @@ -25116,8 +25036,8 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "eMJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel/padded, /area/ai_monitored/turret_protected/ai_upload) @@ -25135,14 +25055,14 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "eNz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -25186,7 +25106,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "ePb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -25195,8 +25115,8 @@ /turf/open/floor/plating, /area/maintenance/department/bridge) "ePr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ icon_state = "1-2" @@ -25205,8 +25125,8 @@ /area/engine/break_room) "ePt" = ( /obj/effect/turf_decal/arrows/red, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/machinery/door/poddoor/shutters/preopen{ id = "xoline"; @@ -25227,7 +25147,7 @@ /turf/open/floor/plating, /area/maintenance/central) "ePQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/effect/landmark/start/atmospheric_technician, @@ -25249,10 +25169,10 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/monotile/steel, @@ -25279,7 +25199,7 @@ /obj/structure/closet, /obj/item/clothing/suit/armor/vest/old, /obj/item/clothing/under/color/red, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plating, /area/maintenance/department/security/brig) "eSR" = ( @@ -25301,7 +25221,7 @@ /turf/open/floor/wood, /area/science/research) "eTs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/cable{ @@ -25330,15 +25250,8 @@ "eTA" = ( /turf/open/floor/carpet/orange, /area/engine/atmos) -"eTE" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "eTW" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/effect/turf_decal/tile/red{ @@ -25351,7 +25264,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /turf/open/floor/durasteel, /area/hallway/primary/fore) @@ -25391,14 +25304,14 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "eUW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/hatch{ name = "Xenobiology Airlock"; @@ -25454,7 +25367,7 @@ /turf/open/floor/durasteel, /area/security/checkpoint/engineering) "eVV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/tile/purple, /obj/effect/turf_decal/tile/purple{ dir = 8 @@ -25462,8 +25375,8 @@ /turf/open/floor/plasteel/white, /area/science/research) "eWc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -25481,11 +25394,11 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 5 @@ -25500,12 +25413,11 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "eXO" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, /turf/open/floor/plating, /area/maintenance/department/electrical) @@ -25521,6 +25433,19 @@ /obj/machinery/light_switch/east, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) +"eXV" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 3; + name = "Engineering RC"; + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/engine/storage) "eYk" = ( /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "10" @@ -25542,11 +25467,11 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "eYz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -25574,7 +25499,7 @@ /area/ai_monitored/turret_protected/ai) "eYZ" = ( /obj/structure/table/wood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/item/paper_bin, /obj/item/pen/fountain, /turf/open/floor/plasteel/dark, @@ -25608,14 +25533,9 @@ /obj/structure/table/glass, /obj/machinery/reagentgrinder, /obj/machinery/camera/autoname, +/obj/item/stack/sheet/mineral/plasma/five, /turf/open/floor/durasteel, /area/science/xenobiology) -"eZK" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "faf" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -25640,7 +25560,7 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "fbN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /turf/open/floor/plating, @@ -25673,13 +25593,6 @@ /obj/item/storage/box/donkpockets, /turf/open/floor/plasteel/white, /area/medical/virology) -"fdx" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 8; - sortType = 26 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "fdA" = ( /obj/effect/spawner/xmastree, /turf/open/floor/wood, @@ -25689,14 +25602,11 @@ /turf/open/floor/durasteel/padded, /area/hallway/primary/central) "fdS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/electrical) @@ -25714,10 +25624,13 @@ /obj/machinery/atmospherics/pipe/simple/brown/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "fer" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/durasteel, @@ -25735,10 +25648,10 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmospherics_engine) "feD" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -25787,10 +25700,10 @@ /turf/open/floor/plating, /area/quartermaster/warehouse) "ffv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/cable{ @@ -25798,24 +25711,9 @@ }, /turf/open/floor/durasteel, /area/engine/break_room) -"ffW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/monotile/light, -/area/science/research) "fge" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 1 @@ -25833,10 +25731,10 @@ /turf/open/floor/plating, /area/maintenance/port/central) "fgD" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plasteel, @@ -25897,8 +25795,8 @@ /area/chapel/main) "fjy" = ( /obj/machinery/light/small, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/bridge) @@ -25962,6 +25860,17 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"fnb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "fnZ" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -28 @@ -25981,22 +25890,17 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/tcommsat/computer) -"fpo" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) "fpq" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) -"fpD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +/obj/effect/turf_decal/stripes/full, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/turf/open/floor/plating, +/area/nsv/hanger) +"fpD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "fqh" = ( @@ -26033,18 +25937,6 @@ }, /turf/open/floor/durasteel, /area/security/main) -"fqG" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_tube2"; - name = "Launch tube 2 access" - }, -/obj/effect/turf_decal/stripes/full, -/obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) "fqL" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -26098,10 +25990,10 @@ /obj/effect/turf_decal/stripes/red/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/machinery/airalarm/directional/north, @@ -26111,8 +26003,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "fsn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "fst" = ( @@ -26125,18 +26017,14 @@ /obj/machinery/air_sensor/atmos/mix_tank, /turf/open/floor/engine/vacuum, /area/engine/atmos) -"fsG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "fsK" = ( /obj/structure/chair/wood, /obj/effect/landmark/start/assistant, /turf/open/floor/wood, /area/crew_quarters/theatre) "ftf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -26144,13 +26032,6 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/durasteel, /area/hallway/secondary/entry) -"ftC" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8; - sortType = 32 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "fuM" = ( /obj/machinery/light/small, /turf/open/floor/plating, @@ -26163,11 +26044,11 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/monotile/steel, /area/science/xenobiology) @@ -26176,11 +26057,11 @@ /turf/open/floor/carpet/orange, /area/engine/atmos) "fvm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -26225,8 +26106,8 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "fwl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, @@ -26297,8 +26178,8 @@ /turf/open/floor/plasteel/dark, /area/maintenance/port/central) "fzt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/wood, /area/crew_quarters/theatre) @@ -26344,17 +26225,17 @@ /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /turf/open/floor/engine, /area/engine/atmospherics_engine) "fBr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/hatch{ name = "Air Control Right"; req_one_access_txt = "19;69" @@ -26365,9 +26246,11 @@ /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/durasteel/padded, -/area/nsv/hanger) +/area/nsv/hanger/deck2/port{ + name = "Launch tubes 3 and 4" + }) "fBx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, @@ -26377,7 +26260,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel, /area/engine/engineering) "fCs" = ( @@ -26403,7 +26286,7 @@ /turf/open/floor/plating, /area/construction) "fCG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/plasteel/dark, @@ -26439,7 +26322,7 @@ }, /obj/effect/turf_decal/tile/purple, /obj/structure/table/glass, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/item/storage/box/beakers, /obj/item/storage/box/syringes{ pixel_y = 5 @@ -26458,11 +26341,11 @@ /turf/open/floor/plating, /area/nsv/weapons/fore) "fEa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -26477,8 +26360,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "fEF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -26490,7 +26373,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "fEP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -26513,10 +26396,10 @@ /area/maintenance/department/engine) "fFK" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/plating, @@ -26530,13 +26413,13 @@ /turf/open/floor/plating, /area/maintenance/disposal) "fGG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "fGH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /turf/open/floor/durasteel, @@ -26561,6 +26444,18 @@ /obj/machinery/space_heater, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) +"fIp" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/ship/maintenance{ + req_one_access_txt = "12" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/turf/open/floor/plating, +/area/maintenance/department/electrical) "fIF" = ( /turf/closed/wall/r_wall/ship, /area/library/lounge) @@ -26614,22 +26509,12 @@ /obj/machinery/light, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) -"fJM" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_tube4"; - name = "Launch tube 4 access" - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "fKx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -26649,7 +26534,7 @@ /turf/open/floor/durasteel/riveted, /area/storage/eva) "fKL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /turf/open/floor/plasteel/techmaint, @@ -26666,10 +26551,10 @@ dir = 4; pixel_x = 24 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/machinery/light{ @@ -26720,8 +26605,8 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -26731,19 +26616,8 @@ /obj/effect/mob_spawn/human/clown/corpse, /turf/open/floor/plating, /area/maintenance/department/bridge) -"fMe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel, -/area/hallway/primary/fore) "fMH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/door/poddoor/shutters/ship{ @@ -26760,11 +26634,11 @@ /turf/open/floor/plating/airless, /area/nsv/weapons/gauss) "fOs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/yellow{ @@ -26777,7 +26651,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "fOF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/carpet/black, /area/science/research) "fOR" = ( @@ -26798,10 +26672,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/chair/office{ @@ -26831,13 +26705,16 @@ /obj/machinery/atmospherics/pipe/simple/brown/visible{ dir = 10 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "fPI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/cable{ @@ -26905,6 +26782,13 @@ }, /turf/open/floor/plasteel, /area/hydroponics) +"fRs" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/secondary/entry) "fRH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 10 @@ -26953,10 +26837,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /turf/open/floor/monotile/light, /area/science/research) @@ -26966,11 +26850,11 @@ /turf/open/floor/plating, /area/security/prison) "fUF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -26987,39 +26871,9 @@ }, /turf/open/floor/durasteel, /area/hallway/primary/fore) -"fVm" = ( -/obj/item/powder_bag, -/obj/item/powder_bag, -/obj/item/powder_bag, -/obj/machinery/ammo_sorter{ - dir = 4; - id = "Hammerheadammo"; - name = "Broadside Gunpowder Rack #1" - }, -/obj/item/powder_bag, -/obj/item/powder_bag, -/obj/item/powder_bag, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) -"fVr" = ( -/obj/machinery/camera/autoname{ - dir = 1 - }, -/obj/machinery/ammo_sorter{ - dir = 1; - id = "Hammerheadammo"; - name = "Broadside Shell Rack #4" - }, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) "fVs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, @@ -27035,7 +26889,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "fVU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plasteel/dark, @@ -27067,6 +26921,18 @@ /obj/structure/closet, /turf/open/floor/plating, /area/maintenance/port/aft) +"fXB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 16 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "fXC" = ( /obj/structure/table/reinforced, /obj/machinery/status_display/ai/north, @@ -27083,7 +26949,7 @@ /turf/open/floor/circuit, /area/maintenance/department/science/xenobiology) "fYp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /turf/open/floor/durasteel, @@ -27093,11 +26959,11 @@ /turf/open/floor/plasteel, /area/maintenance/department/crew_quarters/dorms) "fYU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/chair/office{ dir = 8 @@ -27123,7 +26989,7 @@ /turf/open/floor/plasteel/white, /area/medical/surgery) "fZB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/effect/turf_decal/tile/purple{ @@ -27142,8 +27008,8 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "4-8" }, @@ -27183,6 +27049,21 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/engine/o2, /area/engine/atmos) +"gbF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "gbJ" = ( /obj/structure/girder, /obj/structure/grille, @@ -27213,12 +27094,6 @@ }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) -"gck" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -28 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/secondary/entry) "gcr" = ( /obj/structure/closet/crate/freezer/blood, /obj/effect/turf_decal/tile/blue{ @@ -27253,10 +27128,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "gfK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/cable/yellow{ @@ -27276,7 +27151,7 @@ /obj/machinery/power/apc/auto_name/south{ pixel_y = -24 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/structure/cable{ @@ -27356,7 +27231,7 @@ /area/science/research) "gjF" = ( /obj/effect/turf_decal/stripes/white/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/table/reinforced, @@ -27366,7 +27241,9 @@ dir = 1 }, /turf/open/floor/durasteel, -/area/nsv/hanger) +/area/nsv/hanger/deck2/starboard{ + name = "Launch tubes 1 and 2" + }) "gjQ" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -27418,21 +27295,18 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /turf/open/floor/plating, /area/maintenance/starboard/central) "gmu" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/techmaint, +/area/engine/atmos) "gmw" = ( /obj/structure/cable{ icon_state = "1-2" @@ -27442,19 +27316,9 @@ }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen/coldroom) -"gnQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/plasteel, -/area/engine/engineering) "gnX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 10 }, @@ -27480,8 +27344,8 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "gox" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "4-8" }, @@ -27498,7 +27362,7 @@ /area/maintenance/port/aft) "goH" = ( /obj/effect/turf_decal/stripes/white/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/closet/secure_closet/atc, @@ -27506,7 +27370,9 @@ dir = 1 }, /turf/open/floor/durasteel, -/area/nsv/hanger) +/area/nsv/hanger/deck2/port{ + name = "Launch tubes 3 and 4" + }) "goU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 5 @@ -27560,17 +27426,18 @@ "gqM" = ( /obj/machinery/computer/ship/viewscreen, /obj/structure/munitions_trolley, +/obj/item/ammo_box/magazine/nsv/light_cannon, +/obj/item/ammo_box/magazine/nsv/light_cannon, +/obj/item/ammo_box/magazine/nsv/light_cannon, +/obj/item/ammo_box/magazine/nsv/light_cannon, +/obj/item/ammo_box/magazine/nsv/light_cannon, +/obj/item/ammo_box/magazine/nsv/light_cannon, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "gre" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/durasteel, +/area/nsv/squad) "gri" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2{ dir = 4 @@ -27594,8 +27461,8 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "grQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /turf/open/floor/durasteel, @@ -27604,8 +27471,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-4" }, @@ -27619,13 +27486,6 @@ }, /turf/open/floor/durasteel, /area/hallway/primary/aft) -"gso" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8; - sortType = 31 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "gsZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -27642,11 +27502,11 @@ /turf/open/floor/plating, /area/maintenance/department/medical) "gtv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -27660,16 +27520,10 @@ /turf/open/floor/durasteel, /area/hallway/primary/aft) "guf" = ( -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "12" - }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 +/obj/machinery/door/airlock/ship/maintenance{ + req_one_access_txt = "12" }, /turf/open/floor/plating/airless, /area/maintenance/department/cargo) @@ -27683,20 +27537,9 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) -"gvd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/computer/ship/munitions_computer/east, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) "gvq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) "gvH" = ( @@ -27847,7 +27690,7 @@ /turf/open/floor/durasteel, /area/ai_monitored/security/armory/security) "gAB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/carpet/orange, @@ -27884,8 +27727,8 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel, /area/storage/eva) "gBv" = ( @@ -27905,29 +27748,14 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/engine/engine_room) -"gBJ" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, -/turf/open/floor/plating, -/area/maintenance/port/central) "gCm" = ( -/obj/structure/closet/firecloset, +/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plating, /area/maintenance/department/chapel) "gCr" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/durasteel, /area/security/prison) -"gCG" = ( -/obj/structure/sign/departments/medbay/alt{ - pixel_y = -32 - }, -/obj/effect/turf_decal/tile/blue, -/obj/machinery/light, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "gCY" = ( /obj/machinery/light, /obj/machinery/computer/ship/ordnance{ @@ -27936,10 +27764,10 @@ /turf/open/floor/carpet/ship, /area/nsv/crew_quarters/heads/maa) "gDS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -27957,7 +27785,7 @@ /turf/open/floor/engine/vacuum, /area/engine/atmospherics_engine) "gEJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/structure/cable{ @@ -27980,14 +27808,14 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plasteel, /area/hydroponics) "gHq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -28003,26 +27831,23 @@ }, /turf/open/floor/durasteel, /area/hallway/primary/fore) -"gIp" = ( +"gHQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/airlock/ship/public/glass{ - name = "Central Primary Hallway" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) +/area/hallway/primary/fore) "gIH" = ( /obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/monotile/dark, /area/science/storage) "gIK" = ( /obj/machinery/light/small, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "gIS" = ( @@ -28055,7 +27880,7 @@ /turf/open/floor/plasteel/white, /area/medical/genetics/cloning) "gLy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/structure/cable{ @@ -28070,6 +27895,10 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) +"gLT" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) "gLY" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -28081,8 +27910,8 @@ /turf/open/floor/durasteel, /area/security/prison) "gMi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "45" }, @@ -28123,7 +27952,7 @@ /obj/structure/table/reinforced, /obj/item/paper_bin, /obj/item/pen, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /turf/open/floor/durasteel, @@ -28131,8 +27960,8 @@ name = "Launch tubes 1 and 2" }) "gNq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -28156,21 +27985,15 @@ /obj/structure/chair/office, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) -"gOE" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) +"gOJ" = ( +/turf/template_noop, +/area/maintenance/department/cargo) "gOK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-2" @@ -28180,8 +28003,8 @@ /turf/open/floor/plasteel/dark, /area/engine/engine_smes) "gOU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/security/glass{ name = "Brig Control"; @@ -28211,9 +28034,6 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) -"gQc" = ( -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "gRn" = ( /obj/machinery/computer/nanite_cloud_controller, /obj/structure/extinguisher_cabinet/west, @@ -28224,10 +28044,10 @@ dir = 1 }, /obj/effect/turf_decal/caution, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/cable{ @@ -28271,11 +28091,11 @@ /area/maintenance/department/medical) "gSw" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/external{ req_one_access_txt = "24;32" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/engineering/hangar) "gSD" = ( @@ -28316,12 +28136,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "gUS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/visible{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible/layer2{ - dir = 9 - }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer2, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "gVf" = ( @@ -28337,8 +28152,8 @@ /turf/open/floor/durasteel, /area/nsv/squad) "gVz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -28351,17 +28166,11 @@ /obj/effect/turf_decal/tile/purple{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plasteel/white, /area/science/research) -"gVS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/turf/open/floor/plating, -/area/maintenance/department/crew_quarters/bar) "gVT" = ( /obj/machinery/camera/autoname{ dir = 8 @@ -28376,11 +28185,11 @@ /turf/open/floor/carpet/orange, /area/engine/break_room) "gWA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -28399,15 +28208,15 @@ /turf/open/floor/plasteel/dark, /area/engine/engine_room) "gXh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/light, /obj/effect/turf_decal/tile/red{ dir = 8 }, /obj/effect/turf_decal/tile/red, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, @@ -28422,10 +28231,10 @@ /turf/open/floor/wood, /area/hydroponics) "gXv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/plating, @@ -28466,33 +28275,20 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engine_room) -"gYM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "32" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/west, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "gYY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/machinery/camera/autoname{ dir = 4 }, /turf/open/floor/durasteel, -/area/nsv/hanger) +/area/nsv/hanger/deck2/port{ + name = "Launch tubes 3 and 4" + }) "haO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -28500,11 +28296,11 @@ /turf/open/floor/monotile/light, /area/science/research) "haU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -28519,8 +28315,8 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "haV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/sorting/mail{ dir = 8; sortType = 11 @@ -28566,6 +28362,12 @@ /obj/machinery/light_switch/east, /turf/open/floor/plasteel/dark, /area/gateway) +"hbP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/storage) "hbS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -28583,8 +28385,8 @@ /turf/open/floor/durasteel, /area/storage/eva) "hbZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -28597,8 +28399,8 @@ /turf/closed/wall/ship, /area/science/research) "hci" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/public/glass{ name = "Library" @@ -28611,8 +28413,8 @@ /turf/open/floor/wood, /area/library) "hcs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/mixing) "hcx" = ( @@ -28620,10 +28422,10 @@ /turf/open/floor/plating, /area/maintenance/department/chapel) "hcC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/table, @@ -28638,8 +28440,8 @@ /turf/open/floor/plasteel, /area/science/research) "hcI" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "4-8" }, @@ -28658,10 +28460,10 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "hcU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plating, @@ -28744,10 +28546,10 @@ /turf/open/floor/durasteel, /area/nsv/hanger) "hfs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/effect/landmark/event_spawn, @@ -28771,8 +28573,8 @@ /turf/open/floor/plasteel/dark, /area/medical/surgery) "hfM" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /turf/open/floor/plasteel/techmaint, @@ -28813,8 +28615,8 @@ /turf/open/floor/durasteel, /area/nsv/squad) "hhi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -28845,7 +28647,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/white, @@ -28899,16 +28701,13 @@ /turf/open/floor/plasteel/dark, /area/gateway) "hke" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/visible, -/obj/machinery/atmospherics/pipe/simple/general/visible/layer2{ - dir = 6 - }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 1 }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer2, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "hkh" = ( @@ -28960,7 +28759,7 @@ /turf/open/floor/carpet/orange, /area/engine/break_room) "hlW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/effect/landmark/start/detective, @@ -28999,6 +28798,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "hmW" = ( @@ -29012,8 +28814,8 @@ /turf/open/floor/durasteel/padded, /area/hallway/secondary/exit/departure_lounge) "hng" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -29078,8 +28880,8 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "hoX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/hatch{ name = "Crematorium"; @@ -29096,7 +28898,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/sign/plaques/golden{ @@ -29295,7 +29097,7 @@ /turf/open/floor/wood, /area/library) "hvE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plating, @@ -29314,8 +29116,8 @@ /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/hallway/primary/aft) "hwf" = ( @@ -29345,6 +29147,22 @@ }, /turf/open/floor/wood, /area/library/lounge) +"hxp" = ( +/obj/machinery/door/airlock/highsecurity/ship{ + name = "Weapons Bay"; + req_one_access_txt = "3;69" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/effect/turf_decal/tile/orange{ + dir = 8 + }, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "hye" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -29364,10 +29182,10 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/cable{ @@ -29397,8 +29215,8 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "hyH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/stripes/line, /obj/structure/cable{ icon_state = "1-4" @@ -29460,10 +29278,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "hBn" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -29477,10 +29295,6 @@ }, /turf/open/floor/durasteel, /area/security/brig) -"hBo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "hBM" = ( /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -29489,7 +29303,7 @@ /turf/open/floor/plasteel/white, /area/maintenance/department/medical) "hCb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/plating, @@ -29508,9 +29322,8 @@ /turf/open/floor/durasteel/padded, /area/hallway/primary/central) "hCB" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, /turf/open/floor/plating, /area/maintenance/department/cargo) @@ -29561,11 +29374,11 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "hEJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -29594,7 +29407,6 @@ /turf/open/floor/plating, /area/maintenance/department/medical) "hFo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /obj/machinery/light/small{ dir = 4 }, @@ -29606,7 +29418,7 @@ /area/crew_quarters/bar) "hFA" = ( /obj/effect/spawner/room/fivexfour, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/port/aft) "hFE" = ( /obj/effect/spawner/room/threexthree, @@ -29619,6 +29431,22 @@ }, /turf/open/floor/plating, /area/maintenance/central) +"hGw" = ( +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/machinery/ammo_sorter{ + dir = 1; + id = "Hammerheadammo"; + name = "Broadside Shell Rack #4" + }, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "hGy" = ( /obj/effect/decal/cleanable/crayon{ paint_colour = "#851200" @@ -29654,11 +29482,11 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "hHk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -29682,10 +29510,10 @@ /turf/open/floor/plasteel, /area/engine/engine_room) "hHW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/structure/cable{ @@ -29701,20 +29529,11 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "hIb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/item/assembly/mousetrap/armed, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/department/electrical) -"hIi" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "hIL" = ( /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" @@ -29764,8 +29583,8 @@ /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "hKY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/ai_upload) @@ -29773,6 +29592,26 @@ /obj/machinery/camera/autoname, /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/ai) +"hLX" = ( +/obj/machinery/door/airlock/highsecurity/ship{ + name = "Weapons Bay"; + req_one_access_txt = "3;69" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "hNa" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -29813,7 +29652,7 @@ "hOW" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 4; - piping_layer = 3 + piping_layer = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -29830,7 +29669,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) "hPH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/tile/red{ dir = 4 }, @@ -29857,10 +29696,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -30027,11 +29866,11 @@ /turf/open/floor/plasteel/cult, /area/library) "hXc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -30046,11 +29885,11 @@ /turf/open/floor/carpet, /area/crew_quarters/theatre) "hXF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -30058,8 +29897,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "hXO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -30070,7 +29909,7 @@ /area/science/research) "hXU" = ( /obj/effect/spawner/room/tenxfive, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/electrical) "hXV" = ( /obj/effect/turf_decal/stripes/white/line{ @@ -30089,28 +29928,18 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "hYj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/maintenance/port/aft) "hYn" = ( -/obj/machinery/button/door{ - dir = 8; - id = "launchbay_access2"; - name = "Launch bay doors"; - pixel_x = 22; - req_one_access_txt = "69" - }, /obj/structure/table/reinforced, /obj/item/clothing/ears/earmuffs, /obj/machinery/light{ dir = 4 }, -/obj/machinery/button/door{ - id = "atcrightblast"; - name = "External shutters"; - pixel_x = 22; - pixel_y = -8 +/obj/machinery/airalarm/all_access{ + pixel_y = 22 }, /turf/open/floor/durasteel, /area/nsv/hanger/deck2/port{ @@ -30131,11 +29960,11 @@ /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) "hZb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -30145,15 +29974,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) -"hZk" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_access"; - name = "Launch tube access" - }, -/obj/effect/turf_decal/stripes/full, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/hanger) "hZw" = ( /obj/structure/chair/wood{ dir = 4 @@ -30210,8 +30030,8 @@ /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "iaV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-4" }, @@ -30225,7 +30045,6 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "ibq" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, /obj/structure/disposalpipe/segment{ dir = 9 }, @@ -30253,6 +30072,7 @@ /obj/item/clothing/head/welding{ pixel_x = 7 }, +/obj/item/stack/sheet/plasteel/twenty, /turf/open/floor/durasteel/padded, /area/science/robotics/lab) "ibY" = ( @@ -30343,11 +30163,11 @@ /turf/open/floor/carpet/black, /area/crew_quarters/heads/hor) "igu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/structure/cable{ @@ -30381,8 +30201,8 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "ihF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /turf/open/floor/carpet/orange, @@ -30399,8 +30219,8 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "iia" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/tile/blue{ dir = 8 }, @@ -30425,7 +30245,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/effect/spawner/lootdrop/whiteship_cere_ripley, @@ -30459,8 +30279,8 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "iko" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -30494,11 +30314,11 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "ilr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -30536,11 +30356,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) "ilO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -30554,8 +30374,8 @@ /obj/effect/turf_decal/stripes/red/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/sign/warning/docking{ pixel_x = -32 }, @@ -30565,8 +30385,12 @@ /obj/machinery/status_display/ai/west, /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) +"imu" = ( +/obj/machinery/ship_weapon/broadside, +/turf/closed/wall/r_wall/ship, +/area/nsv/weapons/fore) "imF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/structure/cable{ icon_state = "4-8" }, @@ -30625,8 +30449,8 @@ /turf/open/floor/durasteel/padded, /area/science/robotics/lab) "inY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/decal/cleanable/robot_debris, /turf/open/floor/plating/airless, /area/maintenance/department/cargo) @@ -30634,6 +30458,13 @@ /obj/effect/spawner/structure/window/reinforced/ship, /turf/open/floor/plating, /area/engine/engineering/hangar) +"iok" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + sortType = 26 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "ioz" = ( /obj/structure/rack, /obj/item/stack/spacecash/c10, @@ -30646,7 +30477,7 @@ /turf/open/floor/plating, /area/engine/engineering/hangar) "ioN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -30664,7 +30495,7 @@ /area/construction) "iqb" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plating, @@ -30690,10 +30521,10 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "isj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/wood, @@ -30733,8 +30564,8 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "iua" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/components/binary/pump{ dir = 1; name = "Fuel Mix In" @@ -30755,17 +30586,19 @@ /turf/open/floor/plasteel/white, /area/maintenance/department/medical) "iuz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, /obj/effect/turf_decal/tile/blue{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "iuE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -30784,7 +30617,7 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "iuZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/machinery/newscaster/directional/south, @@ -30806,16 +30639,6 @@ /obj/machinery/light, /turf/open/floor/durasteel, /area/crew_quarters/dorms) -"ivA" = ( -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "ivF" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -30851,8 +30674,8 @@ /turf/open/floor/plating/airless, /area/ai_monitored/turret_protected/ai) "ixm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -30870,7 +30693,7 @@ /turf/open/floor/plating, /area/maintenance/department/medical) "ixK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/plasteel/dark, @@ -30909,7 +30732,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/service/support_ship) "izl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/durasteel/padded, @@ -30924,8 +30747,8 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmospherics_engine) "izA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -30938,11 +30761,11 @@ /turf/open/floor/plating, /area/maintenance/fore) "izL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -31025,6 +30848,17 @@ "iCu" = ( /turf/closed/wall/r_wall/ship, /area/quartermaster/office) +"iDr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "iEt" = ( /obj/machinery/camera/autoname, /turf/open/floor/plasteel/techmaint, @@ -31071,11 +30905,11 @@ }, /area/chapel/main) "iFt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/sorting/mail/flip{ dir = 8; @@ -31088,27 +30922,27 @@ /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "iGa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/monotile/steel, /area/science/xenobiology) "iGc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/light/small, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "iGo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -31126,16 +30960,16 @@ /turf/open/floor/plasteel/dark, /area/hallway/secondary/service) "iGM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /turf/open/floor/plating, @@ -31158,19 +30992,12 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plating, /area/maintenance/department/cargo) -"iIe" = ( -/obj/machinery/light, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "iIg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-8" @@ -31178,10 +31005,10 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "iIy" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -31192,11 +31019,11 @@ name = "Launch tubes 3 and 4" }) "iIR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -31228,8 +31055,8 @@ /turf/open/floor/plasteel, /area/engine/engine_room) "iJX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -31245,15 +31072,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) -"iKg" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/department/chapel) "iKp" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /obj/machinery/atmospherics/pipe/layer_manifold/visible{ @@ -31299,9 +31117,13 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "69" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/central) "iMz" = ( @@ -31312,16 +31134,12 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "iMC" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_tube1"; - name = "Launch tube 1 access" +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 8 }, -/obj/effect/turf_decal/stripes/full, -/obj/machinery/door/firedoor/heavy, +/obj/effect/spawner/structure/window/reinforced/ship, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "iMZ" = ( /obj/machinery/firealarm{ dir = 4; @@ -31358,8 +31176,8 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "iOf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/light, /turf/open/floor/plasteel/showroomfloor, @@ -31395,10 +31213,10 @@ /area/maintenance/port/central) "iPn" = ( /obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /turf/open/floor/carpet/black, @@ -31434,8 +31252,8 @@ dir = 8 }, /obj/effect/turf_decal/tile/red, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) @@ -31478,25 +31296,21 @@ /obj/structure/table, /turf/open/floor/durasteel, /area/construction) -"iRO" = ( -/obj/machinery/computer/ship/munitions_computer/east, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) "iSh" = ( /turf/open/floor/plating, /area/maintenance/starboard/central) "iSr" = ( -/obj/structure/cable{ - icon_state = "1-4" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 5 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 5 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) +/turf/open/floor/durasteel, +/area/nsv/squad) "iSw" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -31508,11 +31322,11 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "iSx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/effect/turf_decal/tile/green{ @@ -31525,7 +31339,7 @@ /turf/open/floor/plasteel, /area/hydroponics) "iSz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/structure/cable{ @@ -31550,17 +31364,6 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plasteel/white, /area/medical/virology) -"iTr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "iTC" = ( /obj/structure/cable{ icon_state = "4-8" @@ -31587,8 +31390,17 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plating, /area/maintenance/department/science) +"iVe" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "iVr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/effect/turf_decal/tile/purple{ @@ -31608,11 +31420,11 @@ /turf/open/floor/durasteel, /area/engine/atmos) "iWi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -31645,21 +31457,14 @@ /turf/open/floor/plating, /area/maintenance/department/electrical) "iWE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "iWJ" = ( /obj/item/stack/sheet/duranium, /turf/open/floor/engine, /area/maintenance/department/science/xenobiology) -"iXg" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/status_display/evac/south, -/turf/open/floor/durasteel, -/area/hallway/primary/fore) "iXl" = ( /obj/structure/table, /turf/open/floor/plasteel/techmaint, @@ -31694,11 +31499,11 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "iYr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-8" @@ -31731,11 +31536,11 @@ /turf/open/floor/durasteel, /area/security/prison) "jaG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -31749,8 +31554,8 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "jaY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) @@ -31761,16 +31566,11 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "jbw" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/electrical) "jbD" = ( /obj/effect/spawner/room/fivexfour, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/port/central) "jbH" = ( /obj/effect/turf_decal/tile/yellow{ @@ -31795,11 +31595,11 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "jdg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -31835,7 +31635,7 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "jdB" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/computer/ship/viewscreen, /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_c) @@ -31868,8 +31668,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /turf/open/floor/plating, @@ -31928,8 +31728,8 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -31940,11 +31740,11 @@ /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "jio" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/airlock/ship/public/glass{ name = "Command Hallway" @@ -31957,8 +31757,8 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "jip" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "jiW" = ( @@ -31990,10 +31790,10 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plating, @@ -32021,7 +31821,7 @@ /area/hallway/secondary/exit) "jkQ" = ( /obj/effect/spawner/room/tenxfive, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/crew_quarters/bar) "jkW" = ( /obj/machinery/firealarm{ @@ -32031,10 +31831,10 @@ /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) "jld" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -32047,7 +31847,7 @@ /area/maintenance/port/central) "jle" = ( /obj/effect/spawner/room/fivexfour, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/cargo) "jlH" = ( /obj/effect/landmark/event_spawn, @@ -32079,13 +31879,9 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) -"jnm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plating, -/area/maintenance/department/crew_quarters/bar) "jnt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -32095,8 +31891,8 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "jnZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "joc" = ( @@ -32138,8 +31934,8 @@ /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) "jpt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -32206,21 +32002,21 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "jsn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/durasteel, /area/security/prison) "jsv" = ( -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "12;69" +/obj/structure/extinguisher_cabinet{ + pixel_y = -4 }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/turf/open/floor/plating, -/area/maintenance/starboard/central) +/turf/closed/wall/ship, +/area/nsv/hanger/deck2/port{ + name = "Launch tubes 3 and 4" + }) "jsQ" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -32251,6 +32047,21 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/carpet/ship, /area/bridge/meeting_room) +"jtI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=MaintDetour-0"; + location = "JaniCloset" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/durasteel, +/area/hallway/primary/fore) "jtY" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 28 @@ -32258,11 +32069,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "jum" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/wood, /area/science/research) @@ -32277,11 +32088,11 @@ }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/white, /area/science/research) @@ -32300,11 +32111,11 @@ /turf/open/floor/durasteel/padded, /area/bridge/cic) "jvX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -32340,15 +32151,25 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hop) +"jxb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "jxt" = ( /turf/closed/wall/r_wall/ship, /area/maintenance/port/aft) "jxv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -32369,8 +32190,8 @@ /turf/open/floor/carpet/ship, /area/chapel/office) "jyB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/brown{ dir = 8 }, @@ -32381,8 +32202,8 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "jyF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 9 }, @@ -32411,11 +32232,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "jzC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -32462,21 +32283,6 @@ /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engine/atmos) -"jCV" = ( -/obj/structure/table, -/obj/machinery/light{ - dir = 1 - }, -/obj/item/storage/fancy/coffee_condi_display{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/storage/fancy/coffee_cart_rack{ - pixel_x = 9; - pixel_y = -1 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) "jDI" = ( /obj/machinery/light, /obj/structure/disposalpipe/segment{ @@ -32517,8 +32323,8 @@ /obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -32565,12 +32371,12 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "jGG" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/monotile/steel, /area/science/xenobiology) @@ -32581,10 +32387,10 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "jGY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/effect/turf_decal/tile/yellow{ @@ -32642,10 +32448,10 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/white, @@ -32656,7 +32462,7 @@ /turf/open/floor/durasteel/riveted, /area/storage/eva) "jIF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/hatch{ name = "Chaplain's Office"; req_one_access_txt = "22" @@ -32688,14 +32494,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/office) -"jIZ" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_access"; - name = "Launch tube access" - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/hanger) "jJO" = ( /obj/machinery/computer/teleporter, /obj/machinery/light{ @@ -32704,8 +32502,8 @@ /turf/open/floor/durasteel/riveted, /area/storage/eva) "jKd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -32730,10 +32528,10 @@ /turf/open/floor/plating, /area/security/prison) "jLa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -32759,10 +32557,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -32785,7 +32583,7 @@ /turf/open/floor/plating, /area/hydroponics) "jLt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment, @@ -32806,13 +32604,13 @@ dir = 4 }, /obj/effect/turf_decal/tile/purple, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/lab) "jMw" = ( @@ -32846,10 +32644,10 @@ /area/security/prison) "jMU" = ( /obj/machinery/light/floor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -32858,16 +32656,12 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, /obj/machinery/camera/autoname{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) "jNo" = ( /obj/effect/spawner/lootdrop/costume, /obj/structure/rack, @@ -32926,11 +32720,11 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, @@ -32962,10 +32756,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) -"jQZ" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) "jRp" = ( /obj/machinery/light{ dir = 4 @@ -32973,11 +32763,11 @@ /turf/open/floor/carpet/orange, /area/engine/break_room) "jRY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/airlock/virology{ name = "Break Room"; @@ -32988,9 +32778,8 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "jSC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/turf/open/floor/plating, -/area/maintenance/port/aft) +/turf/template_noop, +/area/maintenance/department/crew_quarters/dorms) "jSD" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -33001,11 +32790,11 @@ /turf/open/floor/plasteel/white, /area/science/research) "jSG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, @@ -33030,11 +32819,11 @@ /turf/open/floor/durasteel, /area/crew_quarters/dorms) "jTW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/junction/yjunction{ dir = 8 @@ -33044,17 +32833,9 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) -"jTY" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) "jUf" = ( /obj/machinery/light/small, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plasteel/white, @@ -33108,28 +32889,9 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plasteel, /area/storage/eva) -"jVf" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_access"; - name = "Launch tube access" - }, -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/hanger) -"jVG" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 1 - }, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) "jWq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-2" @@ -33137,23 +32899,6 @@ /obj/effect/landmark/start/munitions_tech, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/weapons/fore) -"jWs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/brown/visible{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "jWP" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -33189,10 +32934,10 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "jXt" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -33205,10 +32950,10 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -33250,13 +32995,10 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/department/electrical) "kbI" = ( @@ -33277,11 +33019,11 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) @@ -33321,10 +33063,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/cable{ @@ -33333,11 +33075,11 @@ /turf/open/floor/durasteel, /area/hallway/secondary/exit) "ker" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/techmaint, /area/engine/atmospherics_engine) @@ -33348,10 +33090,10 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "keD" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/cable{ @@ -33495,8 +33237,8 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "kjr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -33508,6 +33250,18 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) +"kjC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/camera/autoname{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/nsv/hanger) "kjH" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -33522,7 +33276,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "kjX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -33580,14 +33334,12 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "kmP" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/west, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer4, /turf/open/floor/durasteel, /area/nsv/squad) "knt" = ( @@ -33642,11 +33394,22 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plating, /area/maintenance/department/cargo) +"kqW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel, +/area/engine/engineering) "kqX" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -33670,10 +33433,10 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "krx" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ @@ -33692,7 +33455,12 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "ksg" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/plating, /area/engine/engineering/hangar) "ksk" = ( @@ -33708,7 +33476,7 @@ /turf/closed/wall/r_wall/ship, /area/engine/atmospherics_engine) "ksI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/carpet/ship, @@ -33718,11 +33486,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "ksP" = ( @@ -33745,10 +33510,10 @@ /turf/open/floor/monotile/dark, /area/science/storage) "ktA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -33757,11 +33522,11 @@ /turf/open/floor/plasteel, /area/hydroponics) "kue" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -33779,8 +33544,8 @@ dir = 8 }, /obj/effect/turf_decal/tile/green, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -33794,10 +33559,10 @@ dir = 1 }, /obj/effect/turf_decal/tile/red, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -33865,11 +33630,11 @@ /turf/open/floor/plasteel, /area/security/checkpoint/medical) "kwV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -33897,7 +33662,7 @@ /area/hallway/primary/port) "kxn" = ( /obj/effect/landmark/start/botanist, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel, /area/hydroponics) "kxI" = ( @@ -33912,12 +33677,6 @@ }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) -"kxL" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/central) "kxN" = ( /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/tile/green{ @@ -33956,6 +33715,10 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/plasteel/white, /area/medical/storage) +"kyI" = ( +/obj/machinery/ship_weapon/broadside/north, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "kyP" = ( /obj/machinery/status_display/evac{ pixel_x = -32 @@ -33992,29 +33755,23 @@ /obj/effect/turf_decal/stripes/red/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/status_display/supply{ pixel_x = -32 }, /turf/open/floor/durasteel, /area/quartermaster/storage) "kzC" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_access"; - name = "Launch tube access" - }, /obj/effect/turf_decal/stripes/full, -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/machinery/door/firedoor/heavy, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "kzU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -34034,8 +33791,8 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "kBd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ icon_state = "1-2" @@ -34142,8 +33899,8 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/engine/engineering/hangar) "kEN" = ( @@ -34168,8 +33925,8 @@ /turf/open/floor/durasteel, /area/security/checkpoint/engineering) "kFf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -34179,20 +33936,20 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "kFm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/white, /area/medical/virology) "kFM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -34213,17 +33970,11 @@ /turf/closed/wall/r_wall/ship, /area/maintenance/port/central) "kHi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/carpet/orange, /area/engine/atmos) -"kHn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/storage) "kIp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34267,7 +34018,7 @@ /turf/open/floor/plating, /area/tcommsat/server) "kIG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -34309,11 +34060,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) -"kJP" = ( -/obj/effect/spawner/lootdrop/grille_or_trash, -/obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/open/floor/plating, -/area/maintenance/department/chapel) "kJU" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34325,13 +34071,13 @@ /turf/open/floor/plating, /area/maintenance/department/chapel) "kLa" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/durasteel, /area/nsv/squad) "kLx" = ( @@ -34345,19 +34091,6 @@ /obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/space/basic, /area/engine/atmospherics_engine) -"kLG" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "kLW" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 8 @@ -34372,11 +34105,11 @@ /area/quartermaster/storage) "kLX" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -34401,10 +34134,10 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/wood, @@ -34436,18 +34169,6 @@ /obj/machinery/light_switch/west, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"kOr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - dir = 1 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "kOU" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -34470,11 +34191,11 @@ /turf/open/floor/engine, /area/maintenance/department/science/xenobiology) "kQl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -34498,10 +34219,10 @@ /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "kRb" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -34510,8 +34231,8 @@ /turf/open/floor/durasteel, /area/nsv/squad) "kRm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/recharge_station, /obj/effect/landmark/start/cyborg, /obj/effect/turf_decal/bot, @@ -34533,19 +34254,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/aft) -"kSb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/status_display/evac{ - pixel_y = -32 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "kSB" = ( /obj/structure/grille/broken, /obj/structure/lattice, @@ -34595,7 +34307,7 @@ /obj/effect/turf_decal/tile/purple{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/machinery/light{ @@ -34632,7 +34344,7 @@ /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) "kVm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/white, /area/science/mixing) "kVt" = ( @@ -34646,8 +34358,8 @@ /turf/open/floor/carpet/ship, /area/nsv/crew_quarters/heads/maa) "kVF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -34678,11 +34390,11 @@ /obj/effect/turf_decal/stripes/red/line{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/airalarm/directional/south, /turf/open/floor/plasteel, @@ -34718,6 +34430,13 @@ /obj/item/pipe_dispenser, /turf/open/floor/plasteel/techmaint, /area/engine/atmospherics_engine) +"kXQ" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/secondary/entry) "kXR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34738,10 +34457,10 @@ /turf/open/floor/durasteel/padded, /area/hallway/primary/port) "kZc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -34755,13 +34474,6 @@ }, /turf/open/floor/plasteel/white, /area/science/research) -"kZy" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4; - sortType = 33 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "kZV" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -34785,7 +34497,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/purple, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/item/radio/intercom{ pixel_y = 26 }, @@ -34829,13 +34541,13 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "lbt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -34843,15 +34555,6 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) -"lbu" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "lcD" = ( /obj/effect/landmark/start/medical_doctor, /turf/open/floor/plasteel/white, @@ -34883,11 +34586,11 @@ /turf/closed/wall/r_wall/ship, /area/maintenance/department/electrical) "ldt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ @@ -34942,15 +34645,15 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/lockup) "lfl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/crew_quarters/theatre) @@ -34969,8 +34672,8 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "lgY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/engineering/glass{ name = "Atmospherics"; @@ -34985,11 +34688,11 @@ /obj/effect/turf_decal/stripes/red/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -35005,11 +34708,11 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "lhx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door_timer{ id = "pw_4"; @@ -35025,8 +34728,8 @@ /turf/open/floor/durasteel, /area/security/prison) "lhA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -35048,7 +34751,7 @@ /turf/open/floor/plating, /area/quartermaster/warehouse) "lio" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -35102,8 +34805,8 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -35118,6 +34821,12 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/port) +"lkP" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "llp" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -35137,20 +34846,15 @@ }, /turf/open/floor/carpet/black, /area/crew_quarters/heads/hor) -"llC" = ( -/turf/open/floor/plasteel, -/area/engine/storage) -"llD" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 8; - sortType = 19 +"llJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/structure/sign/directions/security{ - dir = 4; - pixel_y = -24 +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) +/turf/open/floor/plating, +/area/nsv/hanger) "llV" = ( /obj/structure/table/reinforced, /obj/item/extinguisher/advanced/hull_repair_juice, @@ -35190,7 +34894,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "lmJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -35210,7 +34914,7 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "lnl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/monotile/dark, @@ -35262,8 +34966,8 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "lpU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -35272,15 +34976,23 @@ }, /turf/open/floor/durasteel, /area/hallway/primary/fore) -"lqe" = ( -/obj/machinery/light/small, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +"lqb" = ( +/obj/effect/landmark/start/munitions_tech, +/obj/effect/turf_decal/tile/orange{ dir = 8 }, -/obj/machinery/advanced_airlock_controller/directional/north{ - pixel_y = 24 +/obj/effect/turf_decal/tile/orange{ + dir = 8 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer4{ +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) +"lqe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/advanced_airlock_controller/directional/south, +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 8 }, /turf/open/floor/plating, @@ -35290,8 +35002,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) "lql" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -35308,11 +35020,11 @@ /turf/closed/wall/r_wall/ship, /area/maintenance/fore) "lqM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "2-4" @@ -35323,17 +35035,17 @@ /obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-4" }, /turf/open/floor/plasteel/dark, /area/science/nanite) "lrz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /turf/open/floor/plasteel/dark, @@ -35356,20 +35068,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) -"lsw" = ( -/obj/machinery/door/airlock/ship/public/glass{ - name = "Command Hallway" - }, -/obj/structure/sign/departments/custodian{ - pixel_y = -32 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "lsP" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/westright{ @@ -35385,11 +35083,11 @@ /turf/open/floor/plating, /area/medical/medbay/lobby) "lsX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/librarian, @@ -35408,13 +35106,6 @@ "ltV" = ( /turf/open/floor/durasteel, /area/hallway/secondary/exit) -"lur" = ( -/obj/machinery/light, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/secondary/entry) "luv" = ( /obj/structure/grille{ layer = 3.001 @@ -35450,8 +35141,8 @@ /turf/open/floor/plating, /area/storage/tech) "lvh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/science/mixing) "lvw" = ( @@ -35579,7 +35270,7 @@ /turf/open/floor/plating/airless, /area/maintenance/department/cargo) "lxE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/durasteel, @@ -35607,11 +35298,11 @@ /turf/open/floor/plasteel, /area/crew_quarters/bar) "lyj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-8" @@ -35622,7 +35313,7 @@ /turf/open/floor/monotile/steel, /area/science/xenobiology) "lyk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -35638,13 +35329,10 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) "lzg" = ( -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "12" - }, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/door/airlock/ship/maintenance{ + req_one_access_txt = "12" }, /turf/open/floor/plating, /area/maintenance/department/electrical) @@ -35665,11 +35353,11 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/ai_upload) "lzo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "1-4" @@ -35684,7 +35372,7 @@ brightness = 3; dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/structure/cable{ @@ -35745,10 +35433,10 @@ /turf/open/floor/carpet/black, /area/crew_quarters/heads/chief) "lAO" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/cable{ @@ -35757,17 +35445,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/durasteel, /area/security/prison) -"lBv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/ship/public/glass{ - name = "Central Primary Hallway" - }, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "lCp" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -35784,12 +35461,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/aft) -"lCT" = ( -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "lCV" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 28 @@ -35815,22 +35486,9 @@ }, /turf/open/floor/durasteel, /area/engine/engineering/hangar) -"lDl" = ( -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "12" - }, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "lDm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -35840,10 +35498,10 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "lDC" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/junction/yjunction{ @@ -35910,10 +35568,6 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) -"lEQ" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "lFj" = ( /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -35936,7 +35590,7 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "lFs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plasteel/white, @@ -35952,10 +35606,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/service/support_ship) "lGc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/machinery/conveyor{ @@ -35975,35 +35629,10 @@ /obj/item/bikehorn/rubberducky, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) -"lIs" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/ammo_sorter{ - dir = 4; - id = "Hammerheadammo"; - name = "Missile Rack" - }, -/obj/item/ship_weapon/ammunition/missile, -/obj/item/ship_weapon/ammunition/missile, -/obj/item/ship_weapon/ammunition/missile, -/obj/item/ship_weapon/ammunition/missile, -/obj/item/ship_weapon/ammunition/missile, -/obj/item/ship_weapon/ammunition/missile, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "lID" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/techmaint, +/area/engine/atmos) "lIT" = ( /obj/structure/chair/stool, /turf/open/floor/carpet/ship, @@ -36025,8 +35654,8 @@ /turf/open/floor/plasteel, /area/janitor) "lJn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -36053,6 +35682,13 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/port/central) +"lLb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "lLu" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/durasteel, @@ -36060,7 +35696,7 @@ "lLE" = ( /obj/effect/turf_decal/tile/purple, /obj/structure/table, -/obj/item/stack/sheet/plasteel/twenty, +/obj/machinery/ecto_sniffer, /turf/open/floor/durasteel/padded, /area/science/robotics/lab) "lMH" = ( @@ -36079,8 +35715,8 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "lNa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, @@ -36100,8 +35736,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "lNu" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/durasteel/eris_techfloor_alt, +/turf/open/floor/durasteel/padded, /area/nsv/weapons/fore) "lOv" = ( /obj/machinery/space_heater, @@ -36109,8 +35744,8 @@ /turf/open/floor/plating, /area/maintenance/fore) "lOy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -36161,17 +35796,17 @@ /turf/open/floor/plasteel, /area/engine/engine_room) "lQM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "lRf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -36209,31 +35844,23 @@ /obj/structure/falsewall/durasteel, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) -"lSt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "lSz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ +/obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 8 }, /turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) +/area/nsv/hanger/deck2/starboard{ + name = "Launch tubes 1 and 2" + }) "lSH" = ( /obj/structure/closet/radiation, /obj/item/clothing/mask/gas, @@ -36269,17 +35896,17 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "lTR" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/monotile/dark, /area/engine/atmos) "lUs" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -36308,7 +35935,7 @@ /turf/open/floor/plating, /area/quartermaster/office) "lUH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /turf/open/floor/durasteel, @@ -36402,11 +36029,11 @@ name = "Master At Arms"; req_one_access_txt = "70" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -36438,8 +36065,15 @@ }, /turf/open/floor/plating/airless, /area/ai_monitored/turret_protected/ai) +"lZe" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "lZr" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/structure/cable{ @@ -36487,10 +36121,10 @@ /turf/open/floor/durasteel, /area/crew_quarters/locker) "mcm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/cable{ @@ -36514,10 +36148,10 @@ /turf/open/floor/durasteel, /area/engine/atmos) "mdi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating, @@ -36547,9 +36181,6 @@ /turf/open/floor/plasteel/white, /area/medical/genetics/cloning) "mdw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, /obj/machinery/atmospherics/components/binary/pump/on/layer4{ dir = 1; name = "O2 to Airmix" @@ -36557,17 +36188,19 @@ /obj/machinery/atmospherics/components/binary/pump{ dir = 1; icon_state = "pump_map-2"; - name = "Oxygen to Reactor Mix" + name = "Oxygen to Reactor Mix"; + piping_layer = 2 }, /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 1; - icon_state = "pump_map-1"; - name = "O2 to Mixline" - }, /obj/effect/turf_decal/delivery/white, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1 + }, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "mdJ" = ( @@ -36579,7 +36212,7 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "mdN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -36617,17 +36250,17 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/lobby) "mel" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/durasteel, /area/construction) "mes" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -36639,11 +36272,14 @@ codes_txt = "patrol;next_patrol=Library"; location = "Bar-1" }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/durasteel, /area/hallway/primary/fore) "meT" = ( /obj/machinery/light/small, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/effect/turf_decal/tile/purple, @@ -36701,8 +36337,8 @@ /turf/open/floor/durasteel, /area/security/brig) "mgj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -36713,7 +36349,7 @@ /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/durasteel, /area/hallway/primary/fore) "mgG" = ( @@ -36760,23 +36396,17 @@ /turf/open/floor/plasteel, /area/security/checkpoint/science/research) "mhm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/durasteel, /area/nsv/squad) -"mhr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "mhQ" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "mia" = ( @@ -36791,7 +36421,7 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/durasteel, /area/security/prison) "mie" = ( @@ -36812,8 +36442,8 @@ /turf/open/floor/durasteel, /area/nsv/hanger) "miQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -36846,10 +36476,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "mkb" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -36864,8 +36494,8 @@ /turf/open/floor/durasteel, /area/security/prison) "mkc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -36879,8 +36509,8 @@ /turf/open/floor/durasteel/padded, /area/bridge/cic) "mkn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/light{ dir = 1 @@ -36888,11 +36518,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/quartermaster/storage) "mkM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -36923,11 +36553,11 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "mlM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -36941,13 +36571,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"mlQ" = ( -/obj/effect/turf_decal/tile/blue, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "mms" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -37004,10 +36627,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel, @@ -37098,6 +36721,19 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) +"mql" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/light, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "mqN" = ( /obj/machinery/light{ dir = 4 @@ -37127,25 +36763,20 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/lockup) "msf" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_tube1"; - name = "Launch tube 1 access" +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "79" }, -/obj/effect/turf_decal/stripes/full, -/obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/door/firedoor/heavy, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "msj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/station/mining{ name = "Cargo Storage"; req_one_access_txt = "31; 48" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -37153,12 +36784,6 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plating, /area/quartermaster/office) -"msm" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "msK" = ( /obj/structure/chair{ dir = 4 @@ -37216,8 +36841,8 @@ /turf/open/floor/durasteel, /area/crew_quarters/locker) "muO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/hatch{ name = "Support Vessel Service"; req_one_access_txt = "65" @@ -37230,10 +36855,10 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/service/support_ship) "muY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/effect/turf_decal/tile/red{ @@ -37254,6 +36879,15 @@ }, /turf/open/floor/plasteel, /area/science/lab) +"mvv" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) "mvO" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light{ @@ -37276,28 +36910,18 @@ /turf/open/floor/plating, /area/maintenance/department/medical) "mww" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/department/bridge) "mwM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/durasteel, /area/nsv/squad) -"mxh" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/west, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "mxv" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -37348,19 +36972,6 @@ /obj/machinery/seed_extractor, /turf/open/floor/plasteel, /area/hydroponics) -"myr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/machinery/light, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "myB" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 8 @@ -37377,11 +36988,11 @@ /area/medical/morgue) "myU" = ( /obj/structure/table/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/item/storage/fancy/donut_box, /obj/machinery/door/poddoor/shutters/preopen{ @@ -37424,11 +37035,11 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "mAo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -37448,7 +37059,7 @@ /turf/open/floor/plasteel/white, /area/medical/surgery/aux) "mAM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/machinery/light, @@ -37507,12 +37118,6 @@ /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/durasteel, /area/crew_quarters/dorms) -"mCt" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) "mCG" = ( /obj/structure/table/glass, /obj/item/storage/firstaid/fire, @@ -37532,7 +37137,7 @@ /turf/open/floor/durasteel/padded, /area/hallway/primary/central) "mDT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -37541,7 +37146,7 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -37550,8 +37155,8 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "mEb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "2-4" @@ -37570,11 +37175,11 @@ /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) "mEt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -37601,11 +37206,11 @@ /turf/closed/wall/ship, /area/quartermaster/miningoffice) "mFK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -37672,11 +37277,11 @@ /obj/effect/turf_decal/loading_area/red{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/hatch{ name = "AI Upload Access"; @@ -37693,19 +37298,6 @@ /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/ai_upload) -"mHb" = ( -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "mHm" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -37724,8 +37316,8 @@ /area/engine/atmospherics_engine) "mHD" = ( /obj/effect/landmark/start/botanist, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -37746,8 +37338,8 @@ /turf/open/floor/durasteel, /area/science/xenobiology) "mHV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/landmark/start/munitions_tech, /obj/effect/turf_decal/tile/orange{ @@ -37778,7 +37370,7 @@ /turf/open/floor/engine, /area/maintenance/department/science/xenobiology) "mKt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/durasteel, @@ -37813,8 +37405,8 @@ /turf/open/floor/wood, /area/crew_quarters/heads/hop) "mLH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -37822,8 +37414,8 @@ /turf/open/floor/durasteel, /area/security/prison) "mLM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/public/glass{ name = "Surgery"; @@ -37837,11 +37429,11 @@ /turf/open/floor/plasteel/dark, /area/medical/surgery) "mLP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -37884,11 +37476,11 @@ /turf/open/floor/plasteel/dark, /area/medical/virology) "mMR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -37906,10 +37498,10 @@ /turf/open/floor/plating, /area/science/xenobiology) "mNZ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/disposalpipe/segment, @@ -37952,28 +37544,13 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "mOD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/chair/stool, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/durasteel, /area/security/prison) -"mPc" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/obj/item/storage/firstaid/regular, -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 7; - pixel_y = -32 - }, -/obj/item/taperecorder, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/security/main) "mPm" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -38040,8 +37617,8 @@ /area/maintenance/starboard/central) "mQs" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/tile/green{ dir = 4 }, @@ -38064,18 +37641,6 @@ }, /turf/open/floor/plating, /area/engine/atmos) -"mQT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "mRS" = ( /obj/structure/cable{ icon_state = "2-4" @@ -38095,8 +37660,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "mSh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, @@ -38110,16 +37675,12 @@ /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/plating, /area/library) -"mTD" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/cable{ - icon_state = "1-2" +"mTA" = ( +/obj/machinery/camera/autoname{ + dir = 1 }, -/obj/structure/grille, -/turf/open/floor/plating, -/area/nsv/weapons/fore) +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/secondary/entry) "mTR" = ( /obj/structure/grille, /obj/structure/cable/yellow{ @@ -38169,7 +37730,7 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "mVV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /obj/machinery/power/apc/auto_name/east{ @@ -38205,11 +37766,11 @@ /turf/open/floor/carpet/black, /area/crew_quarters/heads/chief) "mYo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/light/small{ dir = 1 @@ -38296,11 +37857,11 @@ /turf/open/space/basic, /area/space) "naW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -38330,6 +37891,12 @@ }, /turf/open/floor/durasteel, /area/crew_quarters/locker) +"nbU" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 8 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "ncm" = ( /obj/structure/disposalpipe/trunk, /obj/machinery/disposal/bin, @@ -38346,7 +37913,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) "ncx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel, @@ -38358,7 +37925,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "nda" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/white, @@ -38394,8 +37961,8 @@ /turf/open/floor/durasteel, /area/crew_quarters/dorms) "neE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/plasticflaps, /obj/structure/disposalpipe/segment, /obj/machinery/door/poddoor/shutters{ @@ -38471,11 +38038,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/quartermaster/storage) "niu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -38495,6 +38062,19 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) +"niO" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "niT" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -38512,10 +38092,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) "njd" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment, @@ -38617,11 +38197,11 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/landmark/start/shaft_miner, /turf/open/floor/plating, @@ -38631,15 +38211,7 @@ /turf/open/floor/plating, /area/maintenance/port/central) "nmG" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, +/obj/machinery/light/small, /turf/open/floor/plating, /area/maintenance/department/electrical) "nmN" = ( @@ -38652,8 +38224,8 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/central) "nnC" = ( @@ -38725,28 +38297,16 @@ /area/medical/surgery) "npU" = ( /obj/effect/landmark/start/assistant, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/hallway/primary/fore) -"nqv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "nqC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -38799,7 +38359,7 @@ /turf/closed/wall/r_wall/ship, /area/maintenance/department/crew_quarters/bar) "ntz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/machinery/light{ @@ -38811,10 +38371,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/monotile/light, @@ -38850,10 +38410,10 @@ /turf/open/floor/durasteel, /area/nsv/hanger) "nuR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/cable{ @@ -38914,11 +38474,11 @@ /turf/open/floor/plating, /area/science/mixing) "nxd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -38936,7 +38496,7 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "nxr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "4-8" @@ -38963,39 +38523,22 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/structure/cable{ icon_state = "2-8" }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ +/obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 8 }, /turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) -"nzP" = ( -/obj/machinery/door/airlock/highsecurity/ship{ - name = "Weapons Bay"; - req_one_access_txt = "3;69" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) +/area/nsv/hanger/deck2/port{ + name = "Launch tubes 3 and 4" + }) "nAq" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 10 @@ -39004,7 +38547,7 @@ /turf/open/floor/plasteel, /area/science/lab) "nAA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/port/central) @@ -39015,8 +38558,8 @@ /turf/open/floor/plasteel, /area/maintenance/fore) "nBm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, @@ -39044,7 +38587,7 @@ /turf/open/floor/durasteel/padded, /area/bridge/cic) "nBK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/effect/landmark/event_spawn, @@ -39072,11 +38615,11 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "nCm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/airlock/ship{ name = "Toxins Storage"; @@ -39111,24 +38654,15 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) -"nCL" = ( -/obj/machinery/ammo_sorter{ - dir = 8; - id = "Hammerheadammo"; - name = "Broadside Shell Rack #1" - }, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "nCR" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced/spawner/north, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/north, +/obj/machinery/fax{ + fax_name = "Medical Lobby"; + name = "Medical Lobby Fax Machine" + }, /turf/open/floor/plasteel/white, /area/medical/medbay/lobby) "nDk" = ( @@ -39145,11 +38679,11 @@ /turf/open/floor/plasteel/white, /area/medical/storage) "nDN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -39160,14 +38694,14 @@ /turf/open/floor/monotile/light, /area/science/research) "nDS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "nDV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "55" }, @@ -39208,18 +38742,29 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) +"nFa" = ( +/obj/machinery/door/airlock/ship/public/glass{ + name = "Central Primary Hallway" + }, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "nFf" = ( /obj/machinery/light/floor, /turf/open/floor/engine, /area/engine/engine_room) "nFo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, @@ -39235,28 +38780,35 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/starboard/central) "nFC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/engine/atmos) +"nFL" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 31 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "nFT" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /turf/open/floor/plasteel/dark, @@ -39279,8 +38831,8 @@ /area/maintenance/department/cargo) "nGo" = ( /obj/effect/landmark/start/research_director, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/cable{ @@ -39301,6 +38853,13 @@ /obj/item/pen, /turf/open/floor/durasteel, /area/engine/break_room) +"nGC" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plating, +/area/nsv/hanger) "nGH" = ( /obj/machinery/light/small{ dir = 1 @@ -39317,10 +38876,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "nHK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/techmaint, @@ -39345,7 +38904,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "nIa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plasteel, @@ -39412,8 +38971,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/squad) "nKX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -39461,7 +39020,7 @@ /turf/open/floor/plating/airless, /area/maintenance/department/crew_quarters/bar) "nOK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/firealarm{ dir = 8; pixel_x = 24 @@ -39469,10 +39028,10 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "nOP" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment, @@ -39490,16 +39049,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/nuke_storage) -"nPj" = ( -/obj/effect/landmark/start/munitions_tech, -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "nPz" = ( /obj/structure/chair{ dir = 8 @@ -39507,8 +39056,8 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "nPE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/hatch{ name = "Intelligence Core Access"; req_one_access_txt = "61;65" @@ -39519,7 +39068,7 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "nPO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/machinery/camera/autoname{ @@ -39535,16 +39084,13 @@ /obj/structure/disposalpipe/segment{ dir = 2 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/holopad, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "nQg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/crew_quarters/bar) "nQl" = ( /obj/effect/turf_decal/tile/blue{ @@ -39554,6 +39100,11 @@ /obj/effect/turf_decal/tile/blue{ dir = 4 }, +/obj/machinery/fax{ + name = "CIC Fax Machine"; + fax_name = "CIC" + }, +/obj/structure/table/glass, /turf/open/floor/durasteel/padded, /area/bridge/cic) "nQp" = ( @@ -39563,8 +39114,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-8" }, @@ -39591,17 +39142,17 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "nRg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -39653,19 +39204,6 @@ /obj/machinery/igniter/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing/chamber) -"nSt" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "nSL" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -39691,7 +39229,7 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "nTI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/structure/sign/poster/official/obey{ @@ -39722,6 +39260,19 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/theatre) +"nUm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/airlock/ship/public/glass{ + name = "Central Primary Hallway" + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "nUp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -39735,11 +39286,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "nUs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/poddoor/shutters/preopen{ dir = 4; @@ -39857,7 +39408,7 @@ /turf/open/floor/carpet/ship, /area/nsv/crew_quarters/heads/maa) "nYF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/structure/table/reinforced, @@ -39868,11 +39419,11 @@ /turf/open/floor/plating, /area/nsv/weapons/fore) "nZa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -39961,8 +39512,8 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "oaQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -39971,6 +39522,12 @@ }, /turf/open/floor/durasteel, /area/crew_quarters/theatre) +"obE" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) "obK" = ( /obj/structure/cable{ icon_state = "1-4" @@ -39981,6 +39538,9 @@ /obj/machinery/newscaster{ pixel_x = -30 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "obW" = ( @@ -39997,11 +39557,12 @@ /turf/open/floor/durasteel, /area/science/research) "odJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/dark/visible/layer2{ + dir = 4 }, -/turf/open/floor/plating, -/area/engine/engineering/hangar) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/techmaint, +/area/engine/atmos) "oeu" = ( /obj/structure/disposalpipe/segment, /obj/machinery/hydroponics/constructable, @@ -40015,10 +39576,10 @@ /turf/open/floor/plasteel, /area/hydroponics) "oew" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/chair/fancy/shuttle{ @@ -40053,28 +39614,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/maintenance/department/crew_quarters/dorms) -"oeK" = ( -/obj/structure/table/reinforced, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/machinery/camera/autoname{ - dir = 8 - }, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/obj/item/ship_weapon/parts/broadside_casing, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "oeP" = ( /obj/structure/cable{ icon_state = "2-8" @@ -40099,7 +39638,7 @@ /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "ofi" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /turf/open/floor/plasteel/dark, @@ -40119,16 +39658,6 @@ /obj/machinery/camera/autoname, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/lockup) -"ofY" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "ogm" = ( /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" @@ -40169,8 +39698,8 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "ohp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 5 }, @@ -40262,16 +39791,16 @@ /turf/open/floor/plasteel/white, /area/maintenance/department/medical) "okb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/camera/autoname, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/aft) "okq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -40316,8 +39845,24 @@ }, /turf/open/floor/plating, /area/storage/tech) +"omF" = ( +/obj/machinery/firealarm{ + pixel_y = -24 + }, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/item/ship_weapon/ammunition/broadside_shell, +/obj/machinery/ammo_sorter{ + dir = 1; + id = "Hammerheadammo"; + name = "Broadside Shell Rack #3" + }, +/obj/item/ship_weapon/ammunition/broadside_shell, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "omI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/durasteel, @@ -40351,11 +39896,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "onQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/disposalpipe/segment, @@ -40378,26 +39923,6 @@ /obj/machinery/ai_slipper, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/ai) -"opo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) -"opr" = ( -/obj/structure/sign/departments/medbay/alt{ - pixel_y = -32 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "opY" = ( /obj/structure/cable{ icon_state = "2-4" @@ -40405,19 +39930,19 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /turf/open/floor/plating, /area/maintenance/starboard/central) "oqC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/item/storage/box/lights/mixed, @@ -40439,10 +39964,10 @@ /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/ai) "orz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -40492,12 +40017,6 @@ }, /turf/open/floor/plasteel/dark, /area/bridge/cic) -"osI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "osO" = ( /obj/machinery/camera/autoname{ dir = 8 @@ -40508,7 +40027,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /turf/open/floor/durasteel, @@ -40562,10 +40081,10 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen/coldroom) "ovf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/disposalpipe/junction/yjunction, @@ -40575,10 +40094,10 @@ /turf/open/floor/plasteel/dark, /area/medical/morgue) "ovm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/general/visible/layer4, /obj/structure/cable{ icon_state = "1-2" @@ -40654,11 +40173,11 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, @@ -40680,30 +40199,27 @@ /turf/open/floor/plasteel, /area/hydroponics) "oxJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/durasteel, /area/hallway/primary/central) -"oxL" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "oyi" = ( /obj/machinery/light, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) +"oyq" = ( +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/secondary/entry) "oyO" = ( /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, @@ -40720,11 +40236,11 @@ /turf/open/floor/plasteel/white, /area/maintenance/department/medical) "oyW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -40734,15 +40250,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/construction) -"oyZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "ozc" = ( /obj/effect/turf_decal/delivery/red, /obj/structure/chair, @@ -40750,7 +40257,7 @@ /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "ozn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/chair/office, @@ -40760,8 +40267,8 @@ /turf/open/floor/carpet/black, /area/crew_quarters/heads/hor) "ozy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -40779,12 +40286,6 @@ }, /turf/open/floor/plasteel/white, /area/maintenance/department/medical) -"ozH" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "ozO" = ( /obj/structure/sign/directions/security, /obj/structure/sign/directions/command{ @@ -40820,11 +40321,11 @@ /area/crew_quarters/kitchen) "oAX" = ( /obj/effect/landmark/start/virologist, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/medical/virology) @@ -40839,17 +40340,8 @@ /area/security/checkpoint/customs/auxiliary) "oBE" = ( /obj/effect/spawner/room/threexthree, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/science/xenobiology) -"oBO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - dir = 1 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "oBW" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -40869,11 +40361,11 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "oDp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 5 @@ -40894,7 +40386,7 @@ /turf/closed/wall/r_wall/ship, /area/engine/atmos) "oDG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/durasteel, @@ -40927,12 +40419,12 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "oEl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "oFa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/landmark/start/munitions_tech, /obj/effect/turf_decal/tile/orange{ @@ -40947,32 +40439,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, /area/medical/medbay/lobby) -"oFq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/newscaster{ - pixel_y = -30 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) -"oFv" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/highsecurity/ship{ - name = "Weapons Bay"; - req_one_access_txt = "3;69" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/tile/orange{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "oFx" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -41001,8 +40467,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "oGK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -41024,7 +40490,7 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/plasteel/white, @@ -41050,7 +40516,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/plasteel/dark, @@ -41064,10 +40530,10 @@ dir = 1; icon_state = "tube" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/techmaint, @@ -41078,19 +40544,6 @@ /obj/structure/bed, /turf/open/floor/carpet, /area/crew_quarters/dorms) -"oKo" = ( -/obj/machinery/requests_console{ - department = "Munitions Bay"; - pixel_x = -32 - }, -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/obj/effect/turf_decal/tile/orange{ - dir = 4 - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "oLM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -41131,8 +40584,8 @@ /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_a) "oNs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/binary/dp_vent_pump, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "oNB" = ( @@ -41147,12 +40600,6 @@ /obj/machinery/rnd/production/circuit_imprinter/department/science, /turf/open/floor/plasteel, /area/science/lab) -"oNL" = ( -/obj/effect/turf_decal/arrows{ - dir = 8 - }, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "oOe" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -41195,29 +40642,9 @@ /obj/item/clothing/mask/breath/medical, /turf/open/floor/plating, /area/maintenance/port/aft) -"oQf" = ( -/obj/machinery/door/airlock/highsecurity/ship{ - name = "Weapons Bay"; - req_one_access_txt = "3;69" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/effect/turf_decal/tile/orange{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "oQz" = ( /obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/carpet/black, @@ -41234,13 +40661,13 @@ /turf/open/floor/plasteel/dark, /area/medical/morgue) "oQU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, @@ -41296,8 +40723,8 @@ /turf/open/floor/plasteel, /area/security/checkpoint/science/research) "oRR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -41393,7 +40820,7 @@ /turf/open/floor/plasteel, /area/quartermaster/qm) "oVl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/white, /area/science/mixing) "oVD" = ( @@ -41435,8 +40862,8 @@ /area/hallway/secondary/entry) "oYa" = ( /obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "0-2" @@ -41446,28 +40873,12 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai_upload) -"oZg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "oZh" = ( /obj/machinery/computer/operating{ dir = 8 }, /turf/open/floor/plasteel/white, /area/medical/surgery) -"oZu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/firealarm{ - pixel_y = -24 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "oZx" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -41500,13 +40911,6 @@ /obj/machinery/door/firedoor/border_only/directional/north, /turf/open/floor/plating, /area/maintenance/disposal) -"pay" = ( -/obj/machinery/newscaster{ - pixel_x = -28 - }, -/obj/machinery/ship_weapon/vls, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "paE" = ( /obj/machinery/door_timer{ id = "pw_6"; @@ -41522,10 +40926,10 @@ /turf/open/floor/durasteel, /area/security/prison) "pbr" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -41575,6 +40979,13 @@ /obj/effect/spawner/lootdrop/maintenance/five, /turf/open/floor/plating, /area/construction) +"pfm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/status_display/evac/south, +/turf/open/floor/durasteel, +/area/hallway/primary/fore) "pfn" = ( /obj/structure/closet/secure_closet/munitions_technician, /turf/open/floor/plasteel/dark, @@ -41593,10 +41004,10 @@ /turf/open/floor/plasteel, /area/hydroponics) "pfQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plating, @@ -41606,8 +41017,8 @@ /turf/open/floor/plating, /area/chapel/office) "pgy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/door/morgue{ name = "Private Study"; @@ -41628,7 +41039,7 @@ /obj/machinery/atmospherics/pipe/simple/brown/hidden{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/machinery/atmospherics/pipe/simple/dark/hidden/layer2{ @@ -41637,12 +41048,12 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/engine/engineering/hangar) "pgO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, /obj/machinery/computer/atmos_control/tank/air_tank{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "pgW" = ( @@ -41683,29 +41094,20 @@ /turf/open/floor/plating, /area/nsv/hanger) "phw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/effect/landmark/nuclear_waste_spawner, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "phF" = ( -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "12" - }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 +/obj/machinery/door/airlock/ship/maintenance{ + req_one_access_txt = "12" }, /turf/open/floor/plating, /area/maintenance/department/electrical) @@ -41819,10 +41221,10 @@ "plb" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance/six, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/plating/airless, @@ -41858,14 +41260,14 @@ /obj/machinery/door/airlock/ship/external{ req_one_access_txt = "13" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/central) "pnj" = ( /obj/effect/landmark/start/botanist, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -41874,7 +41276,12 @@ /turf/open/floor/plasteel, /area/hydroponics) "pnl" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + piping_layer = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "pnG" = ( @@ -41886,6 +41293,16 @@ /obj/machinery/door/firedoor/border_only/directional/west, /turf/open/floor/plasteel/dark, /area/engine/engine_room) +"pnI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = -24 + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "pnK" = ( /obj/structure/cable{ icon_state = "4-8" @@ -41912,8 +41329,8 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "pnZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -41924,8 +41341,8 @@ /turf/open/floor/plating, /area/bridge/cic) "pot" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/chair/stool/bar, /obj/structure/cable{ icon_state = "1-2" @@ -41941,19 +41358,16 @@ /turf/open/floor/plasteel, /area/science/lab) "pph" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_tube4"; - name = "Launch tube 4 access" - }, /obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/door/firedoor/heavy, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "79" + }, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/nsv/hanger) "ppq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -41975,8 +41389,8 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "pqS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -42002,8 +41416,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/aft) "prS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -42011,8 +41425,8 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "psc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -42037,24 +41451,25 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, /area/medical/medbay/central) -"psK" = ( -/obj/machinery/firealarm{ - pixel_y = -24 +"psJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 }, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/machinery/ammo_sorter{ - dir = 1; - id = "Hammerheadammo"; - name = "Broadside Shell Rack #3" +/obj/effect/turf_decal/tile/yellow{ + dir = 1 }, -/obj/item/ship_weapon/ammunition/broadside_shell, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/brown/visible{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "psN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/machinery/photocopier, @@ -42067,8 +41482,8 @@ /obj/structure/table/reinforced, /obj/machinery/door/window/southright, /obj/effect/spawner/lootdrop/maintenance/two, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/department/cargo) "pts" = ( @@ -42140,11 +41555,11 @@ /turf/open/floor/plating, /area/maintenance/port/central) "pwk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -42212,17 +41627,17 @@ }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/starboard/central) "pyV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -42244,10 +41659,10 @@ name = "Astrometrics Lab"; req_access_txt = "47" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/west, @@ -42257,17 +41672,8 @@ }, /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) -"pzi" = ( -/obj/structure/table/reinforced, -/obj/machinery/camera/autoname{ - dir = 1 - }, -/obj/item/storage/toolbox/electrical, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) "pzv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/plating, @@ -42296,24 +41702,24 @@ "pzV" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/gloves, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating/airless, /area/maintenance/department/cargo) "pAj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plating, /area/quartermaster/miningoffice) "pAD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -42377,6 +41783,18 @@ /obj/machinery/computer/ship/viewscreen, /turf/open/floor/carpet/black, /area/crew_quarters/heads/hor) +"pBP" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/storage) "pDp" = ( /turf/open/floor/durasteel, /area/bridge/cic) @@ -42455,7 +41873,7 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "pEK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -42483,14 +41901,14 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "pFh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" @@ -42511,20 +41929,22 @@ /turf/open/floor/plasteel, /area/engine/storage) "pFN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ +/obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 8 }, /turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) +/area/nsv/hanger/deck2/port{ + name = "Launch tubes 3 and 4" + }) "pFO" = ( /obj/structure/cable{ icon_state = "1-2" @@ -42537,8 +41957,8 @@ name = "Secure Storage"; req_access_txt = "3;58" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "pGF" = ( @@ -42549,20 +41969,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) -"pHJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 8 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "pHX" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -42585,8 +41991,8 @@ /area/construction) "pIj" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/engineering/hangar) "pIF" = ( @@ -42619,8 +42025,8 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "pJl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -42652,8 +42058,8 @@ /turf/open/floor/plating, /area/nsv/hanger) "pJO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/engineering/glass{ name = "Atmospherics"; req_access_txt = "24" @@ -42674,19 +42080,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) -"pKD" = ( -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) -"pKE" = ( -/obj/effect/turf_decal/tile/green, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "pKI" = ( /obj/effect/turf_decal/tile/purple{ dir = 4 @@ -42702,21 +42095,6 @@ /obj/machinery/light, /turf/open/floor/durasteel/riveted, /area/storage/eva) -"pKX" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=MaintDetour-0"; - location = "JaniCloset" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/durasteel, -/area/hallway/primary/fore) "pLA" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2, /obj/machinery/atmospherics/pipe/simple/brown/visible, @@ -42725,15 +42103,6 @@ }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) -"pLM" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) "pMq" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, @@ -42742,7 +42111,7 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/department/bridge) "pMU" = ( @@ -42752,27 +42121,14 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel, /area/hallway/primary/fore) -"pND" = ( -/obj/machinery/ammo_sorter{ - dir = 4; - id = "Hammerheadammo"; - name = "Broadside Shell Rack #2" - }, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/obj/item/ship_weapon/ammunition/broadside_shell, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "pNH" = ( /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" @@ -42788,7 +42144,7 @@ /turf/open/floor/engine, /area/engine/atmospherics_engine) "pOy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /turf/open/floor/plating/airless, @@ -42874,11 +42230,6 @@ }, /turf/open/floor/carpet/black, /area/crew_quarters/heads/hor) -"pQI" = ( -/obj/structure/table, -/obj/machinery/coffeemaker, -/turf/open/floor/wood, -/area/crew_quarters/bar) "pQZ" = ( /obj/structure/disposalpipe/trunk, /obj/machinery/disposal/bin, @@ -42927,11 +42278,11 @@ /turf/open/floor/plating, /area/science/xenobiology) "pRE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -42952,16 +42303,6 @@ }, /turf/open/floor/durasteel, /area/science/research) -"pRX" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "pSh" = ( /obj/machinery/door/window/northright{ name = "Minibar" @@ -43024,11 +42365,11 @@ /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "pUR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -43036,11 +42377,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "pVs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -43058,11 +42399,11 @@ /turf/open/floor/plating, /area/construction) "pVN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -43074,16 +42415,13 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "pVU" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_tube2"; - name = "Launch tube 2 access" +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/obj/machinery/door/airlock/ship/external/glass{ + req_one_access_txt = "79" }, -/obj/effect/turf_decal/stripes/full, -/obj/machinery/door/firedoor/heavy, /turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) +/area/nsv/hanger) "pWg" = ( /obj/machinery/power/apc/auto_name/east{ pixel_x = 24 @@ -43131,8 +42469,8 @@ /turf/open/floor/durasteel, /area/security/prison) "pXz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/brown{ dir = 4 }, @@ -43160,11 +42498,11 @@ /turf/open/floor/plating, /area/maintenance/central) "pYC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/durasteel, /area/construction) @@ -43181,7 +42519,7 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "pZs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/dark, /area/medical/virology) "pZy" = ( @@ -43199,7 +42537,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "qbx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/dark, @@ -43222,6 +42560,13 @@ /obj/effect/turf_decal/delivery/white, /turf/open/floor/durasteel, /area/nsv/weapons/fore) +"qcB" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ + dir = 8 + }, +/obj/effect/turf_decal/delivery/white, +/turf/open/floor/plating, +/area/nsv/hanger) "qcR" = ( /obj/structure/closet/crate/secure/loot, /turf/open/floor/plating, @@ -43230,11 +42575,11 @@ /turf/closed/wall/r_wall/ship, /area/security/checkpoint/engineering) "qdr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -43253,16 +42598,8 @@ /turf/closed/wall/r_wall/ship, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "qdB" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_tube3"; - name = "Launch tube 3 access" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/turf/closed/wall/r_wall/ship, +/area/nsv/hanger) "qdD" = ( /obj/structure/cable{ icon_state = "1-2" @@ -43303,11 +42640,11 @@ /turf/open/floor/plasteel/dark, /area/maintenance/port/central) "qeu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, /turf/open/floor/plating, /area/maintenance/port/central) @@ -43340,11 +42677,11 @@ /turf/open/floor/durasteel, /area/crew_quarters/dorms) "qfk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -43357,8 +42694,8 @@ /turf/open/floor/plating, /area/maintenance/port/central) "qfv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -43404,7 +42741,7 @@ /turf/open/floor/plasteel/white, /area/science/lab) "qgX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /turf/open/floor/plasteel/dark, @@ -43437,8 +42774,8 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, @@ -43449,7 +42786,7 @@ /turf/open/floor/plating, /area/quartermaster/storage) "qiu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/cable{ @@ -43475,18 +42812,14 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/engine/engine_room) -"qjT" = ( -/obj/machinery/light/floor, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) "qki" = ( /obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, /obj/effect/mapping_helpers/airlock/locked, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ pixel_x = 25; pixel_y = 8 @@ -43518,10 +42851,10 @@ /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "qlj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/cable{ @@ -43561,8 +42894,8 @@ /turf/open/space/basic, /area/maintenance/port/central) "qnJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/plating, @@ -43572,8 +42905,8 @@ name = "Air Control Right"; req_one_access_txt = "19;69" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/durasteel, @@ -43581,13 +42914,13 @@ name = "Launch tubes 3 and 4" }) "qot" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/camera/autoname{ dir = 1 }, @@ -43674,8 +43007,8 @@ brightness = 3; dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/central) "qpX" = ( @@ -43731,11 +43064,11 @@ /turf/open/floor/plating, /area/quartermaster/office) "qrf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -43773,14 +43106,9 @@ /obj/item/book/manual/wiki/plumbing, /turf/open/floor/plasteel/white, /area/maintenance/department/medical) -"qsJ" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/light, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/secondary/entry) "qsO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/public/glass{ name = "Port Primary Hallway" @@ -43850,8 +43178,8 @@ /turf/open/floor/durasteel, /area/hallway/primary/port) "qvl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -43932,11 +43260,11 @@ /area/engine/atmos) "qyb" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -43965,6 +43293,12 @@ }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) +"qzO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) "qzT" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible, /turf/open/floor/engine/n2, @@ -44021,7 +43355,7 @@ /turf/open/floor/durasteel/padded, /area/construction) "qCI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/chair/fancy/bench/pew/left, /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/assistant, @@ -44031,14 +43365,14 @@ /area/chapel/main) "qCO" = ( /obj/effect/spawner/room/fivexfour, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/electrical) "qDi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/light/small{ dir = 1 @@ -44066,19 +43400,28 @@ /obj/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/disposal) -"qDW" = ( +"qDZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, /obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/airlock/ship/public/glass{ - name = "Central Primary Hallway" +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/airlock/ship/engineering/glass{ + name = "Engineering Construction Storage"; + req_one_access_txt = "10;24;32" }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) +/turf/open/floor/plasteel, +/area/engine/storage) "qEd" = ( /obj/structure/cable{ icon_state = "1-4" @@ -44116,8 +43459,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "qEV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/quartermaster/warehouse) @@ -44164,8 +43507,8 @@ name = "Toxins Research"; req_one_access_txt = "8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plasteel/white, @@ -44223,10 +43566,10 @@ /area/hallway/primary/aft) "qIj" = ( /obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/east, @@ -44248,6 +43591,9 @@ /obj/machinery/atmospherics/pipe/simple/brown/visible{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "qJm" = ( @@ -44264,7 +43610,7 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "qJs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) "qJC" = ( @@ -44294,10 +43640,10 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "qLF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/durasteel/padded, @@ -44327,11 +43673,6 @@ /obj/machinery/light/runway/delay2, /turf/open/space/basic, /area/engine/engine_room) -"qNu" = ( -/obj/structure/table/reinforced, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "qNA" = ( /obj/effect/spawner/structure/window/reinforced/ship, /obj/machinery/door/poddoor/shutters/preopen{ @@ -44351,17 +43692,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) -"qOf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/newscaster{ - pixel_y = -32 - }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "qPn" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/eastleft{ @@ -44409,11 +43739,11 @@ /area/nsv/weapons/fore) "qQu" = ( /obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "2-8" @@ -44447,14 +43777,14 @@ /area/engine/engineering) "qRU" = ( /obj/effect/spawner/room/threexthree, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/medical/morgue) "qSO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/landmark/start/scientist, /turf/open/floor/monotile/light, @@ -44487,10 +43817,10 @@ /turf/open/floor/plasteel, /area/engine/storage) "qTl" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/cable{ @@ -44499,8 +43829,8 @@ /turf/open/floor/carpet/orange, /area/engine/break_room) "qTL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -44521,7 +43851,7 @@ /turf/open/floor/durasteel, /area/engine/atmos) "qUs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/closet/crate/wooden/toy, @@ -44549,16 +43879,9 @@ /obj/effect/landmark/start/cargo_technician, /turf/open/floor/plasteel, /area/quartermaster/office) -"qVv" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) "qVT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 10 }, @@ -44607,20 +43930,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/main) -"qYe" = ( -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "12;69" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/firedoor/border_only/directional/east, -/turf/open/floor/plating, -/area/maintenance/starboard/central) "qYK" = ( /obj/structure/girder/displaced, /turf/open/floor/plating, @@ -44635,11 +43944,11 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "qYV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -44654,11 +43963,11 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "qZs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 9 @@ -44685,11 +43994,11 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "rac" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/green{ dir = 1 @@ -44709,8 +44018,8 @@ /turf/open/floor/plasteel/dark, /area/medical/virology) "ram" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/public/glass{ name = "Secondary Hallway" @@ -44734,10 +44043,10 @@ /area/tcommsat/computer) "raM" = ( /obj/machinery/light/floor, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -44753,20 +44062,15 @@ /turf/open/floor/carpet, /area/crew_quarters/dorms) "rbl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 4; - name = "Mixline to Distro" - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 4; - name = "Air to Distro" - }, /obj/effect/turf_decal/tile/blue{ dir = 1 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "rbp" = ( @@ -44783,11 +44087,11 @@ /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "rbx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -44836,8 +44140,8 @@ /turf/open/floor/plasteel/dark, /area/medical/morgue) "rcB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -44853,17 +44157,17 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "rda" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/closed/wall/r_wall/ship, /area/ai_monitored/turret_protected/ai_upload) "rds" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -44898,11 +44202,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) "reM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -44986,16 +44290,16 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/mixing) "rgk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment{ @@ -45027,8 +44331,8 @@ /area/hallway/primary/fore) "rhc" = ( /obj/effect/landmark/start/botanist, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel, /area/hydroponics) "rhf" = ( @@ -45079,8 +44383,8 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "rji" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ dir = 6 }, @@ -45090,8 +44394,8 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "rjn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -45119,11 +44423,11 @@ /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "rkj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -45156,16 +44460,9 @@ }, /turf/open/floor/durasteel/padded, /area/bridge/cic) -"rkE" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "rlt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -45176,6 +44473,14 @@ }, /turf/open/floor/durasteel, /area/nsv/weapons/fore) +"rlR" = ( +/obj/structure/table/wood, +/obj/machinery/fax{ + name = "Engineerings Fax Machine"; + fax_name = "Engineering" + }, +/turf/open/floor/carpet/orange, +/area/engine/break_room) "rmf" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 10 @@ -45186,23 +44491,24 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "rmi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, /obj/machinery/atmospherics/components/binary/pump/layer4{ dir = 1; name = "Airmix to Mixline" }, /obj/effect/turf_decal/delivery/white, -/obj/machinery/atmospherics/components/binary/pump/on{ +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ dir = 1; - name = "Air to Distro" + name = "Oxygen to Air Mix"; + target_pressure = 1000 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 }, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "rml" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/newscaster{ pixel_x = -30 }, @@ -45212,7 +44518,6 @@ /obj/machinery/camera/autoname{ dir = 8 }, -/obj/item/stack/sheet/mineral/plasma/five, /turf/open/floor/engine, /area/science/xenobiology) "rmD" = ( @@ -45241,9 +44546,11 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "rnt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + dir = 4; + target_pressure = 1000 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "rny" = ( @@ -45265,7 +44572,7 @@ /area/maintenance/department/crew_quarters/dorms) "roi" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-4" }, /turf/open/floor/plating, /area/maintenance/department/chapel) @@ -45302,11 +44609,11 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "rqJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -45326,7 +44633,7 @@ /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "rrk" = ( /obj/effect/spawner/room/threexthree, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/starboard/central) "rrv" = ( /obj/effect/turf_decal/stripes/red/line{ @@ -45336,18 +44643,11 @@ /turf/open/floor/plasteel, /area/science/mixing) "rrz" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/ai) -"rrA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/turf/open/floor/plating, -/area/maintenance/port/central) "rrK" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/ship/security/glass{ @@ -45381,8 +44681,8 @@ /turf/open/floor/carpet/orange, /area/engine/break_room) "rtq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/landmark/start/medical_doctor, /turf/open/floor/plasteel/dark, @@ -45457,8 +44757,8 @@ /turf/open/floor/plasteel, /area/engine/engine_room) "rwp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/durasteel, /area/nsv/hanger) "rws" = ( @@ -45527,11 +44827,11 @@ /turf/open/floor/plating, /area/engine/atmos) "ryv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -45623,8 +44923,8 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "rAH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -45634,25 +44934,11 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/durasteel/eris_techfloor_alt, /area/construction) -"rBg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/landmark/nuclear_waste_spawner, -/turf/open/floor/plasteel, -/area/engine/engineering) "rBw" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/effect/turf_decal/tile/blue, @@ -45668,11 +44954,11 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "rBA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/monotile/light, /area/science/storage) @@ -45683,16 +44969,13 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "rCl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 5 - }, /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /turf/open/floor/durasteel, @@ -45712,13 +44995,19 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/weapons/fore) +"rDm" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 8 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "rDT" = ( /obj/effect/spawner/room/tenxfive, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/port/central) "rDV" = ( /obj/effect/landmark/start/depsec/engineering, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/effect/turf_decal/tile/red{ @@ -45752,10 +45041,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "rEz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -45779,16 +45068,35 @@ /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/plating, /area/hydroponics) +"rFp" = ( +/obj/structure/table/reinforced, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/obj/item/ship_weapon/parts/broadside_load, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "rFw" = ( /obj/effect/turf_decal/tile/red{ dir = 8 }, /obj/effect/turf_decal/tile/red, /obj/effect/landmark/start/brig_physician, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -45807,6 +45115,12 @@ dir = 4 }, /obj/effect/turf_decal/tile/blue, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "rFN" = ( @@ -45856,8 +45170,8 @@ /turf/open/floor/durasteel, /area/nsv/hanger) "rIA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/landmark/event_spawn, /obj/structure/cable{ icon_state = "1-2" @@ -45867,8 +45181,8 @@ "rIH" = ( /obj/structure/disposalpipe/segment, /obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/starboard/central) "rIP" = ( @@ -45885,10 +45199,10 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai_upload) "rJf" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -45918,7 +45232,7 @@ /turf/open/floor/plating, /area/engine/atmos) "rJN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plasteel/dark, @@ -45979,10 +45293,10 @@ /turf/open/floor/carpet/black, /area/crew_quarters/heads/hor) "rLC" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -46002,10 +45316,10 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "rMv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, @@ -46047,8 +45361,8 @@ /turf/open/floor/durasteel/riveted, /area/maintenance/department/medical/morgue) "rNF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/bookcase/manuals/engineering, /obj/structure/cable{ icon_state = "1-2" @@ -46060,8 +45374,8 @@ dir = 8 }, /obj/effect/turf_decal/tile/red, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -46098,6 +45412,16 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) +"rOM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/landmark/start/munitions_tech, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "rPc" = ( /obj/effect/turf_decal/stripes/white/corner, /obj/machinery/portable_atmospherics/canister/air, @@ -46130,11 +45454,11 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "rQH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/disposalpipe/segment, @@ -46199,10 +45523,10 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating, @@ -46213,6 +45537,19 @@ }, /turf/open/floor/wood, /area/security/detectives_office/private_investigators_office) +"rTK" = ( +/obj/machinery/door/firedoor/heavy, +/obj/machinery/door/airlock/highsecurity/ship{ + name = "Weapons Bay"; + req_one_access_txt = "3;69" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/orange{ + dir = 8 + }, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "rTZ" = ( /turf/open/floor/durasteel/padded, /area/science/nsv/astronomy) @@ -46293,17 +45630,17 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/squad) "rWO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plasteel, /area/science/mixing) "rWQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -46345,10 +45682,10 @@ /turf/open/floor/carpet, /area/crew_quarters/dorms) "rYI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plasteel/white, @@ -46357,8 +45694,8 @@ /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/bridge) @@ -46461,10 +45798,10 @@ /turf/open/floor/plasteel/white, /area/science/research) "sbd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /obj/structure/cable{ @@ -46482,7 +45819,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/maintenance/department/crew_quarters/dorms) "sbm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -46525,17 +45862,17 @@ /turf/open/floor/plating, /area/engine/engineering/hangar) "scE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /turf/open/floor/durasteel, /area/crew_quarters/dorms) "sdq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -46559,14 +45896,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/construction) -"sdX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel/techmaint, -/area/engine/atmos) "sdZ" = ( /obj/machinery/camera/autoname, /turf/open/floor/plating, @@ -46648,8 +45977,8 @@ /obj/machinery/door/airlock/vault/ship{ req_access_txt = "53" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/effect/mapping_helpers/airlock/locked, /obj/structure/cable{ @@ -46658,6 +45987,15 @@ /obj/machinery/door/firedoor/heavy, /turf/open/floor/durasteel, /area/ai_monitored/nuke_storage) +"siL" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/airlock/ship/external{ + req_one_access_txt = "24;32" + }, +/turf/open/floor/plating, +/area/engine/engineering/hangar) "siM" = ( /obj/structure/table/wood, /obj/machinery/reagentgrinder, @@ -46713,7 +46051,7 @@ dir = 8 }, /obj/effect/landmark/start/mime, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /turf/open/floor/wood, @@ -46738,11 +46076,12 @@ /turf/open/floor/plating, /area/maintenance/department/electrical) "snz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/engine/engineering/hangar) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/monotile/dark, +/area/engine/atmos) "snC" = ( /obj/machinery/camera/autoname{ dir = 1 @@ -46754,11 +46093,11 @@ /turf/open/floor/plating, /area/nsv/hanger) "snH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) @@ -46782,10 +46121,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel, @@ -46798,7 +46137,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "soN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -46817,9 +46156,6 @@ /obj/structure/cable{ icon_state = "1-4" }, -/obj/structure/cable{ - icon_state = "2-4" - }, /turf/open/floor/plating, /area/maintenance/department/electrical) "spf" = ( @@ -46867,8 +46203,8 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "sqI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/command/glass{ name = "Chief Medical Officer"; @@ -46898,7 +46234,7 @@ /turf/open/floor/plating, /area/maintenance/department/bridge) "srT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/machinery/portable_atmospherics/canister/carbon_dioxide, @@ -46988,23 +46324,13 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) "svV" = ( -/obj/machinery/button/door{ - dir = 8; - id = "launchbay_access"; - name = "Launch bay doors"; - pixel_x = 22; - req_one_access_txt = "69" - }, /obj/structure/table/reinforced, /obj/item/clothing/ears/earmuffs, /obj/machinery/light{ dir = 4 }, -/obj/machinery/button/door{ - id = "atcleftblast"; - name = "External shutters"; - pixel_x = 22; - pixel_y = -8 +/obj/machinery/airalarm/all_access{ + pixel_y = 22 }, /turf/open/floor/durasteel, /area/nsv/hanger/deck2/starboard{ @@ -47020,11 +46346,11 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/security) "swe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/firedoor/border_only/directional/east, @@ -47058,7 +46384,7 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "swW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/structure/disposalpipe/segment{ @@ -47077,14 +46403,15 @@ /turf/open/floor/carpet/ship, /area/nsv/crew_quarters/heads/maa) "swX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/advanced_airlock_controller/directional/east{ + req_access = list(79) + }, +/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plating, -/area/maintenance/department/crew_quarters/bar) +/area/nsv/hanger) "sxk" = ( /obj/structure/cable{ icon_state = "1-8" @@ -47110,6 +46437,17 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) +"syy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel, +/area/hallway/primary/fore) "syA" = ( /obj/structure/cable{ icon_state = "1-2" @@ -47125,13 +46463,15 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "syE" = ( @@ -47144,15 +46484,15 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "szb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 4 }, /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/department/electrical) "szr" = ( @@ -47191,8 +46531,8 @@ /turf/open/floor/plating, /area/maintenance/department/electrical) "sAU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -47202,11 +46542,11 @@ /turf/open/floor/plating, /area/maintenance/port/central) "sAW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/airlock/ship/public/glass{ name = "Auxiliary Surgery"; @@ -47232,6 +46572,19 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/ship, /area/maintenance/department/medical/morgue) +"sBO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/light/runway/delay4, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/nsv/hanger) "sCo" = ( /obj/machinery/air_sensor/atmos{ id_tag = "sdmix_sensor"; @@ -47284,8 +46637,8 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) "sDU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/hatch{ name = "Air Control Left"; req_one_access_txt = "19;69" @@ -47296,7 +46649,9 @@ /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /turf/open/floor/durasteel/padded, -/area/nsv/hanger) +/area/nsv/hanger/deck2/starboard{ + name = "Launch tubes 1 and 2" + }) "sDX" = ( /obj/machinery/door/airlock/ship/hatch{ name = "Telecomms Server Floor Access"; @@ -47308,10 +46663,10 @@ /area/tcommsat/server) "sEb" = ( /obj/machinery/door/airlock/ship/external, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating/airless, @@ -47362,20 +46717,9 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) -"sHc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8; - sortType = 17 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel, -/area/hallway/primary/fore) "sHh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/mineral/ore_redemption, /obj/structure/cable{ icon_state = "1-2" @@ -47424,13 +46768,30 @@ /obj/structure/closet/secure_closet/bridge, /turf/open/floor/carpet/ship, /area/bridge/cic) +"sIE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "sIG" = ( /obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "sIW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/security/glass{ name = "Medical Security Post"; req_one_access_txt = "63" @@ -47450,13 +46811,13 @@ /turf/open/floor/durasteel, /area/engine/atmos) "sJH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/engineering/hangar) "sJS" = ( /obj/effect/landmark/nuclear_waste_spawner, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/electrical) "sJZ" = ( /obj/structure/table, @@ -47478,19 +46839,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/durasteel/padded, /area/nsv/hanger) -"sKB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/machinery/light/small, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) "sKV" = ( /obj/structure/grille, /obj/structure/lattice, @@ -47503,7 +46851,7 @@ /turf/open/floor/engine/co2, /area/engine/atmos) "sLp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/computer/ship/viewscreen, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) @@ -47531,10 +46879,10 @@ /turf/open/floor/plating, /area/nsv/weapons/fore) "sNt" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /obj/structure/cable{ @@ -47552,28 +46900,6 @@ }, /turf/open/floor/plasteel/white, /area/maintenance/department/medical) -"sNS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only/directional/east, -/obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/door/airlock/ship/engineering/glass{ - name = "Engineering Construction Storage"; - req_one_access_txt = "10;24;32" - }, -/turf/open/floor/plasteel, -/area/engine/storage) "sOb" = ( /obj/machinery/igniter/incinerator_atmos, /turf/open/floor/engine/vacuum, @@ -47592,16 +46918,20 @@ /obj/effect/spawner/lootdrop/glowstick, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"sPx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 +"sPg" = ( +/obj/machinery/requests_console{ + department = "Munitions Bay"; + pixel_x = -32 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/turf_decal/tile/orange{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/effect/turf_decal/tile/orange{ dir = 4 }, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) +"sPx" = ( /obj/machinery/light/small{ dir = 1 }, @@ -47617,11 +46947,11 @@ /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "sPS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/airlock/ship/public/glass{ name = "Patient Room C"; @@ -47635,14 +46965,17 @@ /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_c) "sPZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plating, -/area/maintenance/department/crew_quarters/bar) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "sQf" = ( /obj/effect/turf_decal/tile/red, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -47673,16 +47006,6 @@ /obj/item/book/manual/wiki/surgery, /turf/open/floor/plasteel/white, /area/medical/surgery) -"sSb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=MaintDetour-3"; - location = "MaintDetour-2" - }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) "sSl" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/yellow{ @@ -47710,10 +47033,10 @@ /turf/open/floor/plasteel, /area/security/checkpoint/customs) "sSF" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/cable{ @@ -47724,18 +47047,6 @@ }, /turf/open/floor/durasteel, /area/nsv/hanger) -"sSY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "sTo" = ( /obj/structure/cable{ icon_state = "2-4" @@ -47796,7 +47107,7 @@ /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "sUL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, @@ -47844,7 +47155,7 @@ /obj/machinery/power/apc/auto_name/east{ pixel_x = 24 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/cable{ @@ -47856,7 +47167,7 @@ /turf/open/floor/durasteel, /area/security/warden) "sXM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/machinery/firealarm{ @@ -47895,14 +47206,14 @@ /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "sZX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/light/small, /turf/open/floor/plating, @@ -47963,7 +47274,7 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "tca" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/plasteel/dark, @@ -47987,7 +47298,7 @@ /turf/open/floor/plasteel/white, /area/medical/surgery) "tcI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/door/poddoor/shutters/ship{ @@ -47998,8 +47309,8 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/lockup) "tcK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -48038,10 +47349,10 @@ /area/science/robotics/lab) "tdo" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plating, @@ -48069,8 +47380,8 @@ /turf/open/floor/durasteel/riveted, /area/maintenance/department/medical/morgue) "teh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship{ name = "Research Director"; req_one_access_txt = "30" @@ -48089,32 +47400,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/crew_quarters/heads/hor) -"ter" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/camera/autoname{ - dir = 8 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) -"tew" = ( -/obj/machinery/camera/autoname{ - dir = 1 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/secondary/entry) "tex" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 28 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/entry) +"teS" = ( +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "teV" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 @@ -48127,17 +47424,6 @@ }, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/ai) -"tfa" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) "tfb" = ( /obj/machinery/light{ dir = 1 @@ -48148,10 +47434,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating, @@ -48165,7 +47451,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/disposalpipe/segment{ @@ -48181,8 +47467,8 @@ /obj/machinery/atmospherics/pipe/simple/brown/hidden{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/dark/hidden/layer2{ dir = 4 @@ -48234,11 +47520,11 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "tif" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -48252,13 +47538,13 @@ /obj/machinery/atmospherics/pipe/simple/brown/hidden{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/machinery/atmospherics/pipe/simple/dark/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel/eris_techfloor_alt, /area/engine/engineering/hangar) "tiB" = ( @@ -48292,8 +47578,8 @@ /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "tjP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -48377,10 +47663,10 @@ /area/engine/atmos) "tmt" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/starboard/central) "tmy" = ( @@ -48429,14 +47715,16 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "toj" = ( @@ -48457,7 +47745,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/machinery/computer/ship/viewscreen, @@ -48468,8 +47756,8 @@ /turf/open/floor/plating, /area/engine/engine_room) "tpq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/techmaint, /area/engine/atmospherics_engine) "tpK" = ( @@ -48496,23 +47784,23 @@ /turf/open/floor/durasteel/padded, /area/nsv/weapons/fore) "tqC" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/visible{ - dir = 8 - }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ + dir = 5 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "tqQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -48527,8 +47815,8 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "tqV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/public{ name = "Quiet Room" }, @@ -48570,18 +47858,11 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) -"trS" = ( -/obj/machinery/airalarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel, -/area/hallway/primary/fore) "trU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/durasteel/padded, @@ -48634,6 +47915,14 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) +"tsZ" = ( +/obj/structure/table/reinforced, +/obj/machinery/fax{ + name = "Cargo Fax Machine"; + fax_name = "Cargo" + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/quartermaster/storage) "ttq" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48651,10 +47940,10 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "tuy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/structure/cable{ @@ -48686,8 +47975,8 @@ /turf/open/floor/durasteel, /area/engine/atmos) "tvC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/chair/stool, /turf/open/floor/durasteel, @@ -48708,14 +47997,12 @@ /obj/item/radio/intercom{ pixel_y = -32 }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ +/obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 8 }, -/obj/machinery/camera/autoname{ - dir = 1 - }, -/turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) +/obj/effect/spawner/structure/window/reinforced/ship, +/turf/open/floor/plating, +/area/nsv/hanger) "twi" = ( /obj/machinery/armour_plating_nanorepair_well{ apnw_id = "poolnoodles" @@ -48756,10 +48043,10 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "txc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -48768,11 +48055,11 @@ /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "txh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/airlock/ship/public/glass{ name = "Patient Room B"; @@ -48852,8 +48139,8 @@ /turf/open/floor/plating, /area/maintenance/central) "tAh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -48897,11 +48184,26 @@ }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) -"tBY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +"tBS" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/red{ dir = 8 }, /obj/effect/turf_decal/tile/red, +/obj/item/storage/firstaid/regular, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 7; + pixel_y = -32 + }, +/obj/item/taperecorder, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/security/main) +"tBY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ dir = 4 }, @@ -48922,8 +48224,8 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "tCr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-4" @@ -48953,9 +48255,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "tEa" = ( @@ -49007,14 +48306,6 @@ /obj/structure/closet/emcloset/anchored, /turf/open/floor/plasteel/dark, /area/bridge) -"tFS" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -26 - }, -/obj/machinery/ship_weapon/vls, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "tGs" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=BridgeMaint"; @@ -49026,8 +48317,8 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "tGG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/airlock/ship/public/glass{ @@ -49037,11 +48328,11 @@ /turf/open/floor/plasteel/dark, /area/nsv/hanger) "tGU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -49052,10 +48343,10 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "tHV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /turf/open/floor/plating/airless, @@ -49070,8 +48361,8 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "tIa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -49120,16 +48411,17 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "tKw" = ( -/obj/machinery/door/airlock/ship/external{ - req_one_access_txt = "24" +/obj/machinery/door/airlock/ship/external/glass{ + name = "Auxiliary Shuttle Dock"; + dir = 4 }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating, @@ -49223,10 +48515,10 @@ /turf/open/floor/plasteel/cult, /area/library) "tNi" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -49238,7 +48530,7 @@ /turf/open/floor/durasteel, /area/engine/break_room) "tNE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -49292,8 +48584,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/monotile/light, /area/science/research) "tQp" = ( @@ -49309,11 +48601,11 @@ /turf/open/floor/carpet, /area/crew_quarters/theatre) "tQs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -49333,11 +48625,11 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/lockup) "tQE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 10 @@ -49351,7 +48643,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/chief) "tQG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/light{ dir = 1 }, @@ -49379,11 +48671,11 @@ name = "Toxins Research"; req_one_access_txt = "8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, @@ -49396,7 +48688,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/port) "tSc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/junction{ dir = 8 }, @@ -49469,8 +48761,8 @@ /turf/open/floor/mineral/plastitanium/red/brig, /area/security/prison) "tSU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -49494,11 +48786,11 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmospherics_engine) "tTk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/vault/ship{ name = "Arms Dump"; req_one_access_txt = "3;58;70" @@ -49506,13 +48798,13 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory/lockup) "tTt" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /turf/open/floor/durasteel, @@ -49557,7 +48849,7 @@ /turf/closed/wall/r_wall/ship, /area/maintenance/department/cargo) "tVy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/structure/table/reinforced, @@ -49595,10 +48887,10 @@ /turf/open/floor/durasteel, /area/hallway/primary/central) "tXA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -49616,7 +48908,7 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel/white, /area/science/research) @@ -49703,12 +48995,6 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) -"tZt" = ( -/obj/machinery/newscaster{ - pixel_y = -30 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/secondary/entry) "tZQ" = ( /obj/structure/rack, /obj/item/clothing/suit/armor/bulletproof, @@ -49745,10 +49031,10 @@ /turf/open/floor/plating, /area/maintenance/department/bridge) "ubv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/effect/turf_decal/tile/blue{ dir = 8 }, @@ -49760,22 +49046,22 @@ /turf/open/floor/plasteel/dark, /area/bridge) "ubJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, /turf/open/floor/durasteel, /area/nsv/squad) "ucs" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -49810,10 +49096,10 @@ /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "ucT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel, @@ -49888,16 +49174,6 @@ /obj/machinery/hydroponics/constructable, /turf/open/floor/plasteel, /area/hydroponics) -"ufV" = ( -/obj/machinery/door/poddoor/ship{ - id = "launchbay_tube3"; - name = "Launch tube 3 access" - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "ugw" = ( /obj/structure/grille, /obj/structure/cable{ @@ -49927,11 +49203,23 @@ /obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/durasteel, /area/storage/eva) +"uiM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/electrical) "uiV" = ( /obj/structure/table/glass, /obj/structure/window/reinforced/spawner/east, @@ -49967,7 +49255,7 @@ /area/security/prison) "ulb" = ( /obj/effect/spawner/room/tenxten, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/department/crew_quarters/dorms) "uli" = ( /obj/machinery/light/small{ @@ -49999,13 +49287,11 @@ /turf/open/floor/plasteel/dark, /area/bridge) "umd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/durasteel, /area/engine/engineering/hangar) "umK" = ( @@ -50064,17 +49350,9 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "unu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/light/runway, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 8 - }, +/obj/machinery/atmospherics/components/unary/tank/air, /turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) +/area/maintenance/starboard/central) "unC" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/condiment/peppermill{ @@ -50086,14 +49364,14 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "unM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/durasteel/padded, /area/ai_monitored/turret_protected/ai_upload) "unT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/machinery/airalarm/directional/west, @@ -50117,7 +49395,7 @@ /turf/open/floor/plating, /area/crew_quarters/heads/hop) "uox" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/sorting/mail{ dir = 4; sortType = 12 @@ -50131,6 +49409,13 @@ }, /turf/open/floor/plasteel/white, /area/medical/storage) +"uoZ" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 32 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "upk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 5 @@ -50141,15 +49426,16 @@ /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) "upp" = ( -/obj/machinery/atmospherics/pipe/layer_manifold{ +/obj/machinery/door/airlock/ship/external/glass{ + name = "Auxiliary Shuttle Dock"; dir = 4 }, -/obj/machinery/door/airlock/ship/external{ - req_one_access_txt = "24" - }, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, /turf/open/floor/plating, /area/engine/atmos) "upy" = ( @@ -50167,8 +49453,8 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "uqe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -50177,12 +49463,6 @@ }, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/aisat/service/support_ship) -"uqL" = ( -/obj/machinery/atmospherics/components/unary/tank{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/central) "ura" = ( /obj/structure/sign/poster/random{ pixel_y = 32 @@ -50225,7 +49505,7 @@ /turf/open/floor/durasteel, /area/science/robotics/lab) "utg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /obj/machinery/camera/autoname{ @@ -50261,10 +49541,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plating, @@ -50273,13 +49553,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/aft) -"uuv" = ( -/obj/effect/spawner/lootdrop/grille_or_trash, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "uuP" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -50296,11 +49569,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "uve" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 6 @@ -50311,8 +49584,8 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "uvi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 9 }, @@ -50379,18 +49652,6 @@ }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) -"uxa" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/durasteel, -/area/hallway/primary/fore) "uxw" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -50398,18 +49659,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/durasteel, /area/hallway/primary/central) -"uxz" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/storage) "uxG" = ( /obj/structure/lattice/catwalk, /obj/machinery/light/runway/delay4, @@ -50431,7 +49680,7 @@ /turf/open/floor/durasteel, /area/crew_quarters/dorms) "uyo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/plasteel/dark, @@ -50461,7 +49710,7 @@ /turf/closed/wall/ship, /area/engine/engine_smes) "uzN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/structure/disposalpipe/segment, @@ -50476,8 +49725,8 @@ /turf/open/floor/durasteel/padded, /area/nsv/hanger) "uzY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) @@ -50495,11 +49744,11 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "uAL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/junction/flip{ dir = 8 @@ -50516,8 +49765,8 @@ /obj/machinery/door/airlock/vault/ship{ req_access_txt = "53" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -50545,6 +49794,16 @@ }, /turf/open/floor/plasteel/white, /area/medical/surgery) +"uCd" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/departments/holy{ + pixel_y = -32 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "uCi" = ( /obj/structure/cable{ icon_state = "4-8" @@ -50575,7 +49834,7 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/structure/cable{ @@ -50584,17 +49843,14 @@ /turf/open/floor/durasteel, /area/security/checkpoint/engineering) "uDW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/structure/cable{ - icon_state = "2-4" - }, /obj/structure/table, /obj/item/storage/box/lights/mixed, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, /turf/open/floor/plating, /area/maintenance/department/electrical) "uEh" = ( @@ -50633,7 +49889,7 @@ /turf/open/floor/plating, /area/maintenance/department/electrical) "uFa" = ( -/obj/item/pda/clear, +/obj/item/modular_computer/tablet/pda/clear, /obj/structure/grille{ layer = 3.001 }, @@ -50660,11 +49916,11 @@ /turf/open/floor/durasteel, /area/security/prison) "uFJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -50727,6 +49983,21 @@ }, /turf/open/floor/plating, /area/engine/engineering/hangar) +"uHX" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/storage/fancy/coffee_condi_display{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/storage/fancy/coffee_cart_rack{ + pixel_x = 9; + pixel_y = -1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "uIi" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, @@ -50738,13 +50009,6 @@ /obj/structure/table, /turf/open/floor/durasteel/padded, /area/crew_quarters/locker) -"uIm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "uIn" = ( /obj/item/storage/secure/safe/HoS{ pixel_x = 8; @@ -50759,18 +50023,6 @@ /obj/structure/closet/secure_closet/hos, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) -"uIL" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "uIM" = ( /obj/structure/closet/secure_closet/master_at_arms, /turf/open/floor/carpet/ship, @@ -50780,7 +50032,7 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, /obj/structure/cable{ @@ -50817,8 +50069,8 @@ name = "Launch tubes 1 and 2" }) "uJE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/ship/public/glass{ name = "Genetics Lab"; @@ -50831,24 +50083,12 @@ /obj/machinery/door/firedoor/border_only/directional/north, /turf/open/floor/plasteel/white, /area/medical/genetics) -"uJI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "uJO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -50904,8 +50144,8 @@ /obj/effect/turf_decal/stripes/red/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/camera/autoname{ dir = 4 }, @@ -50954,6 +50194,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "uOc" = ( +/obj/effect/landmark/latejoin, /turf/open/floor/durasteel/eris_techfloor_alt, /area/maintenance/department/crew_quarters/dorms) "uOp" = ( @@ -50976,8 +50217,8 @@ /turf/open/floor/durasteel/padded, /area/hallway/primary/central) "uOS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, /obj/effect/turf_decal/tile/blue, @@ -51019,14 +50260,21 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plasteel, /area/construction) +"uPO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "uPW" = ( /turf/closed/wall/r_wall/ship, /area/science/nanite) "uQn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /turf/open/floor/plasteel/white, @@ -51047,18 +50295,16 @@ /obj/item/stack/ducts/fifty, /turf/open/floor/plasteel/white, /area/maintenance/department/medical) -"uQz" = ( -/obj/machinery/ship_weapon/broadside/north, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "uQA" = ( /obj/effect/spawner/xmastree, /turf/open/floor/durasteel, /area/ai_monitored/turret_protected/ai) "uQH" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plasteel/techmaint, -/area/engine/atmos) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/bar/atrium) "uRj" = ( /obj/effect/turf_decal/delivery, /obj/machinery/advanced_airlock_controller/directional/west{ @@ -51070,8 +50316,8 @@ /turf/open/floor/monotile/light, /area/science/research) "uRF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/sorting/mail/flip{ dir = 8; sortType = 15 @@ -51135,13 +50381,18 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/durasteel, /area/hallway/primary/fore) -"uWK" = ( -/obj/machinery/ship_weapon/broadside, -/turf/closed/wall/r_wall/ship, -/area/nsv/weapons/fore) +"uWf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "uWV" = ( /obj/structure/cable{ icon_state = "4-8" @@ -51175,17 +50426,13 @@ }, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/maintenance/department/chapel) "uYp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"uYO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/port/aft) "uYX" = ( /turf/open/floor/plasteel/white, @@ -51195,15 +50442,15 @@ dir = 8 }, /obj/effect/turf_decal/tile/purple, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/recharge_station, /obj/effect/landmark/start/cyborg, /obj/effect/turf_decal/bot, /turf/open/floor/durasteel/padded, /area/science/robotics/lab) "uZq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/machinery/light/small, @@ -51213,17 +50460,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"uZM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/turf/open/floor/plasteel, -/area/engine/engineering) "uZZ" = ( /obj/item/screwdriver, /turf/open/floor/plating, @@ -51264,6 +50500,14 @@ }, /turf/open/floor/plating, /area/quartermaster/office) +"vaM" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + name = "Theatre Trunk"; + sortType = 18 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "vaZ" = ( /obj/machinery/telecomms/server/presets/security, /obj/structure/cable{ @@ -51278,7 +50522,7 @@ /obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/structure/cable{ @@ -51394,11 +50638,11 @@ /turf/open/floor/plating, /area/nsv/hanger) "vfW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 8 @@ -51417,6 +50661,20 @@ /obj/effect/landmark/start/brig_physician, /turf/open/floor/durasteel, /area/security/brig) +"vgq" = ( +/obj/machinery/door/airlock/ship/public/glass{ + name = "Command Hallway" + }, +/obj/structure/sign/departments/custodian{ + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "vgJ" = ( /obj/structure/grille, /obj/structure/cable{ @@ -51437,17 +50695,17 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "vgW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/light_switch/south, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/toilet/restrooms) "vhr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/cable{ @@ -51460,11 +50718,11 @@ /area/science/xenobiology) "vhx" = ( /obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -51477,11 +50735,11 @@ /turf/open/floor/durasteel, /area/nsv/weapons/fore) "vig" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -51552,12 +50810,19 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/plasteel/white, /area/science/mixing) +"vkq" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/fore) "vkv" = ( /obj/machinery/computer/bounty, /turf/open/floor/durasteel/eris_techfloor_alt, /area/quartermaster/storage) "vkW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/door/poddoor/shutters/ship{ @@ -51581,8 +50846,8 @@ name = "Air Control Left"; req_one_access_txt = "19;69" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only/directional/south, /obj/machinery/door/firedoor/border_only/directional/north, /turf/open/floor/durasteel, @@ -51603,12 +50868,18 @@ /obj/structure/grille, /turf/open/floor/plating, /area/maintenance/port/central) +"vmf" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "vmg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -51623,7 +50894,7 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "vmy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /obj/machinery/light, @@ -51636,8 +50907,8 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /turf/open/floor/plating, /area/quartermaster/warehouse) @@ -51649,8 +50920,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -51667,7 +50938,7 @@ /turf/closed/wall/r_wall/ship, /area/medical/genetics/cloning) "vnV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/cable{ @@ -51682,8 +50953,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "voQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -51717,13 +50988,24 @@ /obj/effect/spawner/room/threexthree, /turf/open/floor/plating, /area/maintenance/department/electrical) +"vpq" = ( +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/durasteel, +/area/nsv/weapons/fore) "vpv" = ( /obj/effect/turf_decal/stripes/red/line, /obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /turf/open/floor/plasteel, @@ -51740,8 +51022,8 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "vpO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/hatch{ name = "Network Administration"; req_one_access_txt = "61;65" @@ -51780,8 +51062,8 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "vrI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plating/airless, /area/maintenance/department/cargo) "vsq" = ( @@ -51814,8 +51096,8 @@ dir = 2 }, /obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/item/folder/red{ pixel_x = 1; pixel_y = 5 @@ -51839,17 +51121,6 @@ /obj/effect/turf_decal/tile/brown, /turf/open/floor/plasteel, /area/hallway/primary/port) -"vuj" = ( -/obj/effect/turf_decal/tile/orange{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "vux" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2{ dir = 4 @@ -51857,6 +51128,9 @@ /obj/machinery/atmospherics/pipe/simple/brown/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "vvo" = ( @@ -51878,11 +51152,11 @@ /turf/open/floor/plasteel, /area/engine/storage) "vvO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -51897,9 +51171,6 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "vwi" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible/layer4{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/general/visible/layer4, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, @@ -51917,25 +51188,6 @@ /obj/item/paicard, /turf/open/floor/wood, /area/crew_quarters/bar) -"vwl" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red, -/obj/machinery/camera/autoname{ - dir = 1 - }, -/obj/item/storage/fancy/coffee_condi_display{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/storage/fancy/coffee_cart_rack{ - pixel_x = 9; - pixel_y = -1 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/security/main) "vwy" = ( /obj/machinery/teleport/hub, /turf/open/floor/durasteel, @@ -51962,11 +51214,11 @@ /turf/open/floor/plasteel, /area/engine/engineering) "vxd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -51981,11 +51233,11 @@ /area/nsv/squad) "vxA" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/advanced_airlock_controller/directional/west{ pixel_y = 24 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/engineering/hangar) "vxC" = ( @@ -51993,6 +51245,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plasteel/tech/grid, /area/engine/atmos) +"vyU" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/secondary/entry) "vzh" = ( /obj/machinery/mech_bay_recharge_port, /obj/machinery/light, @@ -52023,14 +51281,14 @@ /area/engine/atmospherics_engine) "vAC" = ( /obj/effect/landmark/start/botanist, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plasteel, /area/hydroponics) "vAJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /turf/open/floor/durasteel, @@ -52088,22 +51346,11 @@ /obj/effect/spawner/lootdrop/maintenance/seven, /turf/open/floor/plating, /area/maintenance/department/chapel) -"vEJ" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/table/reinforced, -/obj/machinery/coffeemaker, -/turf/open/floor/durasteel, -/area/security/main) "vFq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /obj/structure/cable/yellow{ @@ -52124,10 +51371,10 @@ /turf/open/floor/durasteel/padded, /area/bridge/cic) "vFN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -52140,7 +51387,7 @@ /turf/open/space/basic, /area/space/nearstation) "vFU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/carpet/orange, @@ -52213,6 +51460,9 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"vJB" = ( +/turf/template_noop, +/area/maintenance/department/science) "vJD" = ( /obj/structure/rack, /obj/item/gun/ballistic/automatic/peacekeeper, @@ -52243,12 +51493,6 @@ /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/carpet/ship, /area/chapel/office) -"vKA" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/port{ - name = "Launch tubes 3 and 4" - }) "vLb" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -52275,11 +51519,11 @@ /turf/open/floor/wood, /area/hydroponics) "vLB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/camera/autoname{ dir = 1 @@ -52317,6 +51561,14 @@ /obj/machinery/processor, /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen/coldroom) +"vMD" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 8 + }, +/turf/open/floor/durasteel/riveted, +/area/nsv/hanger/deck2/starboard{ + name = "Launch tubes 1 and 2" + }) "vMJ" = ( /obj/machinery/light{ dir = 4 @@ -52342,8 +51594,8 @@ /turf/open/floor/engine, /area/maintenance/department/science/xenobiology) "vNc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -52354,11 +51606,9 @@ /turf/open/floor/durasteel, /area/hallway/primary/fore) "vNq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/visible{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible/layer2{ - dir = 4 +/obj/machinery/atmospherics/components/binary/pump/layer2{ + dir = 4; + name = "Mixline to Distro" }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) @@ -52372,7 +51622,7 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/kitchen/coldroom) "vNS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/plating, @@ -52394,8 +51644,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship/aft) "vPg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -52426,21 +51676,11 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"vPL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/landmark/start/munitions_tech, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/nsv/weapons/fore) "vQd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/structure/cable{ @@ -52465,11 +51705,11 @@ /turf/open/floor/wood, /area/science/research) "vQp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -52477,8 +51717,8 @@ /turf/open/floor/plasteel, /area/hydroponics) "vQr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -52505,7 +51745,7 @@ /turf/open/floor/durasteel, /area/security/main) "vQy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/door/poddoor/shutters/ship{ @@ -52522,10 +51762,10 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "vQU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /obj/structure/cable{ @@ -52539,8 +51779,8 @@ req_one_access_txt = "7" }, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plating, @@ -52562,10 +51802,12 @@ pixel_y = -4 }, /turf/closed/wall/ship, -/area/nsv/hanger) +/area/nsv/hanger/deck2/starboard{ + name = "Launch tubes 1 and 2" + }) "vRm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/public/glass{ name = "Departures" }, @@ -52575,8 +51817,7 @@ /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "vRw" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, /obj/machinery/advanced_airlock_controller/directional/east{ pixel_y = 24 }, @@ -52584,12 +51825,13 @@ brightness = 3; dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/central) "vRB" = ( /obj/machinery/atmospherics/components/trinary/mixer/airmix{ dir = 4; - piping_layer = 3 + piping_layer = 4 }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) @@ -52605,24 +51847,12 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/service) -"vRU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "vSq" = ( /obj/machinery/atmospherics/pipe/simple/brown/hidden{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -52643,13 +51873,13 @@ /obj/effect/turf_decal/stripes/red/line{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /turf/open/floor/plasteel, /area/science/mixing) "vSU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -52659,7 +51889,7 @@ pixel_x = -24; req_one_access_txt = "70;71" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/heavy, /obj/machinery/light_switch/east, /obj/machinery/camera/autoname{ @@ -52686,10 +51916,10 @@ /turf/open/floor/plating, /area/maintenance/department/science) "vTT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, /turf/open/floor/durasteel, @@ -52710,24 +51940,12 @@ /obj/structure/curtain/obscuring/grey, /turf/open/floor/plating, /area/library/lounge) -"vUx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "vUM" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, /turf/open/floor/plating, /area/engine/engineering/hangar) @@ -52754,10 +51972,10 @@ /turf/open/floor/plating, /area/maintenance/department/chapel) "vVl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/light{ dir = 8 }, @@ -52765,8 +51983,8 @@ /area/bridge/cic) "vVw" = ( /obj/machinery/light/floor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/engineering/hangar) "vVy" = ( @@ -52780,18 +51998,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) -"vVV" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "12" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/door/firedoor/border_only/directional/north, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "vWu" = ( /obj/machinery/light/small{ dir = 1 @@ -52904,12 +52110,6 @@ /obj/machinery/vending/cigarette, /turf/open/floor/durasteel/padded, /area/hallway/secondary/exit/departure_lounge) -"wbq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/secondary/entry) "wbx" = ( /obj/effect/landmark/blobstart, /obj/effect/decal/cleanable/cobweb, @@ -52935,19 +52135,6 @@ }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) -"wcD" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/highsecurity/ship{ - name = "Weapons Bay"; - req_one_access_txt = "3;69" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/turf/open/floor/durasteel, -/area/nsv/weapons/fore) "wcZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -52988,10 +52175,10 @@ /turf/open/floor/plasteel, /area/engine/storage) "wdn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/structure/cable{ @@ -53073,7 +52260,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "wga" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -53087,11 +52274,11 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/lobby) "wgd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 9 @@ -53134,6 +52321,12 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/department/electrical) +"whO" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/nsv/weapons/fore) "whR" = ( /turf/open/space, /area/space) @@ -53141,7 +52334,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plating, @@ -53177,16 +52370,6 @@ /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) -"wjb" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/extinguisher_cabinet{ - pixel_x = 28 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "wjB" = ( /obj/machinery/air_sensor/atmos/incinerator_tank{ pixel_y = 32 @@ -53244,8 +52427,8 @@ /area/chapel/main) "wmr" = ( /obj/structure/table/glass, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/item/paper_bin, /turf/open/floor/carpet/ship, @@ -53272,15 +52455,29 @@ /turf/closed/wall/r_wall/ship, /area/maintenance/starboard/central) "wnV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/durasteel, -/area/nsv/hanger) +/area/nsv/hanger/deck2/port{ + name = "Launch tubes 3 and 4" + }) +"woi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/techmaint, +/area/engine/atmos) "wot" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -53298,12 +52495,12 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "woJ" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/external{ - req_one_access_txt = "13,69" + req_one_access_txt = "79" }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard/central) "wpp" = ( @@ -53350,11 +52547,11 @@ /turf/closed/wall/r_wall/ship, /area/library) "wrb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -53377,10 +52574,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/hallway/support_ship) "wrQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/structure/cable{ @@ -53396,17 +52593,18 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/fans/tiny, /turf/open/floor/durasteel, /area/security/prison) "wsa" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -53427,7 +52625,7 @@ /turf/open/floor/plasteel, /area/engine/engine_room) "wsw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/status_display/evac{ pixel_y = 32 }, @@ -53460,8 +52658,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/nuke_storage) "wtc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -53477,10 +52675,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/cable{ @@ -53515,8 +52713,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/durasteel, /area/hallway/secondary/exit/departure_lounge) "wtX" = ( @@ -53538,8 +52736,8 @@ /turf/open/floor/plasteel/white, /area/maintenance/department/medical) "wvX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -53556,31 +52754,36 @@ /obj/machinery/door/airlock/ship/external/glass{ name = "Gauss Bay" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, /turf/open/floor/durasteel, /area/nsv/squad) "wwo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plating, -/area/engine/engineering/hangar) +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/durasteel, +/area/hallway/secondary/entry) "wwp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "wwX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -53625,9 +52828,6 @@ /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "wxR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, /obj/effect/spawner/lootdrop/maintenance/six, /obj/structure/closet/crate/engineering, /obj/item/clothing/gloves/color/fyellow, @@ -53664,10 +52864,10 @@ /turf/closed/wall/r_wall/ship, /area/maintenance/port/central) "wzp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "4-8" }, @@ -53750,8 +52950,8 @@ /turf/open/floor/durasteel, /area/hallway/secondary/entry) "wCW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -53812,7 +53012,7 @@ /turf/closed/wall/r_wall/ship, /area/gateway) "wFV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /turf/open/floor/durasteel, @@ -53878,10 +53078,10 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /turf/open/floor/plating, @@ -53933,7 +53133,6 @@ /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/visible, /obj/machinery/atmospherics/pipe/simple/brown/visible{ dir = 4 }, @@ -53944,6 +53143,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "wKS" = ( @@ -53996,8 +53196,8 @@ dir = 4 }, /obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/components/binary/dp_vent_pump, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/engine/engineering/hangar) "wMz" = ( @@ -54034,11 +53234,11 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "wMX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -54049,7 +53249,7 @@ /turf/open/floor/durasteel, /area/hallway/primary/port) "wNb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/structure/cable{ icon_state = "1-2" @@ -54104,10 +53304,10 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel, @@ -54131,14 +53331,11 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) @@ -54187,6 +53384,17 @@ }, /turf/open/floor/plating, /area/security/warden) +"wSj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/firedoor/border_only/directional/east, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "wSt" = ( /obj/structure/cable{ icon_state = "1-2" @@ -54205,8 +53413,8 @@ /turf/open/floor/plating, /area/maintenance/starboard/central) "wTa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -54227,7 +53435,7 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "wUc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/atmospherics/pipe/simple/general/visible/layer4, /obj/structure/cable{ icon_state = "2-8" @@ -54252,7 +53460,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "wVf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/effect/turf_decal/tile/blue, @@ -54270,21 +53478,6 @@ "wVi" = ( /turf/open/floor/plasteel/white, /area/science/xenobiology) -"wVo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/central) "wVp" = ( /obj/structure/cable{ icon_state = "6-8" @@ -54321,11 +53514,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/crew_quarters/theatre) "wYj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -54336,11 +53529,11 @@ /turf/open/floor/durasteel, /area/construction) "wYE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -54393,11 +53586,11 @@ /turf/open/floor/engine/vacuum/light, /area/engine/atmos) "xaB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -54408,16 +53601,16 @@ /turf/open/floor/plating, /area/maintenance/department/medical) "xaC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/construction) "xaU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /obj/structure/disposalpipe/segment{ @@ -54464,10 +53657,6 @@ "xcC" = ( /turf/closed/wall/r_wall/ship, /area/nsv/crew_quarters/heads/maa) -"xdn" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, -/turf/closed/wall/r_wall/ship, -/area/maintenance/department/electrical) "xdN" = ( /obj/machinery/firealarm{ dir = 8; @@ -54476,8 +53665,8 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/central) "xdT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -54499,15 +53688,12 @@ /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plating, /area/maintenance/department/electrical) "xeT" = ( @@ -54526,13 +53712,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/durasteel/padded, /area/crew_quarters/locker) -"xfl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/durasteel/eris_techfloor_alt, -/area/hallway/primary/fore) "xfs" = ( /obj/effect/turf_decal/tile/purple{ dir = 4 @@ -54542,11 +53721,11 @@ /turf/open/floor/durasteel, /area/science/xenobiology) "xfu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/table/wood, /obj/item/lighter, @@ -54584,25 +53763,22 @@ /turf/open/floor/plasteel/white, /area/science/research) "xgn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/primary/fore) "xgy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -54632,10 +53808,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/firealarm{ @@ -54653,7 +53829,7 @@ /turf/open/floor/durasteel, /area/science/robotics/lab) "xhy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -54670,8 +53846,8 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "xhO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/airlock/ship/public/glass{ name = "Medical Storage"; req_one_access_txt = "5" @@ -54700,8 +53876,8 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "2-4" }, @@ -54728,12 +53904,12 @@ /area/science/xenobiology) "xkl" = ( /obj/machinery/atmospherics/pipe/layer_manifold, -/obj/machinery/advanced_airlock_controller/directional/west{ - pixel_y = 24 - }, /obj/machinery/light/small{ dir = 4 }, +/obj/machinery/advanced_airlock_controller/directional/west{ + pixel_y = 6 + }, /turf/open/floor/plating, /area/maintenance/starboard/central) "xks" = ( @@ -54784,17 +53960,18 @@ /turf/open/floor/durasteel, /area/crew_quarters/locker) "xlV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, /obj/machinery/door/airlock/ship/engineering/glass{ name = "Atmospherics Incinerator"; - req_access_txt = "24" + req_access_txt = "24"; + dir = 4 }, /turf/open/floor/plasteel/techmaint, /area/engine/atmospherics_engine) @@ -54850,11 +54027,11 @@ /turf/open/floor/durasteel, /area/security/warden) "xop" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/light, /obj/effect/turf_decal/tile/red{ @@ -54886,8 +54063,8 @@ /turf/open/floor/plating, /area/maintenance/department/electrical) "xpE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, @@ -54898,6 +54075,16 @@ /obj/machinery/door/firedoor/border_only/directional/north, /turf/open/floor/plating, /area/maintenance/port/central) +"xpS" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/plasteel, +/area/engine/engineering) "xqg" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -54941,8 +54128,8 @@ /turf/open/floor/plating, /area/nsv/weapons/fore) "xqR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -55075,11 +54262,11 @@ /turf/open/floor/plasteel, /area/engine/engine_room) "xuj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -55088,8 +54275,8 @@ /area/hallway/secondary/exit/departure_lounge) "xus" = ( /obj/effect/landmark/start/botanist, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "2-8" }, @@ -55140,14 +54327,14 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/hallway/secondary/exit/departure_lounge) "xxr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/advanced_airlock_controller/directional/north{ + pixel_y = 24 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump{ +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 8 }, -/obj/machinery/advanced_airlock_controller/directional/north{ - pixel_y = 24 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/cargo) @@ -55166,7 +54353,7 @@ /area/space/nearstation) "xyr" = ( /obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/plating, @@ -55198,25 +54385,6 @@ }, /turf/open/floor/plating/airless, /area/ai_monitored/turret_protected/ai_upload) -"xyQ" = ( -/obj/structure/table/reinforced, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/obj/item/ship_weapon/parts/broadside_load, -/turf/open/floor/durasteel/padded, -/area/nsv/weapons/fore) "xzi" = ( /obj/structure/lattice/catwalk, /obj/machinery/light/runway/delay3, @@ -55231,10 +54399,10 @@ dir = 1 }, /obj/machinery/light/floor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/durasteel/eris_techfloor_alt, @@ -55273,7 +54441,7 @@ /obj/structure/chair/office{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/effect/landmark/start/pilot, @@ -55289,6 +54457,9 @@ /obj/machinery/atmospherics/pipe/simple/brown/visible{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "xCO" = ( @@ -55305,18 +54476,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) -"xCZ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/electrical) "xDx" = ( /obj/structure/rack, /obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, @@ -55408,11 +54567,11 @@ /turf/open/floor/plating/airless, /area/maintenance/department/cargo) "xGu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/effect/turf_decal/bot_white, /obj/structure/table/reinforced, @@ -55438,6 +54597,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/mob/living/simple_animal/hostile/retaliate/bat/sgt_araneus, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "xHm" = ( @@ -55450,7 +54610,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, /obj/structure/chair/office{ @@ -55575,6 +54735,11 @@ }, /turf/open/floor/plating, /area/bridge/meeting_room) +"xLf" = ( +/obj/structure/table/reinforced, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/durasteel/padded, +/area/nsv/weapons/fore) "xLs" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -55605,30 +54770,6 @@ /obj/machinery/microwave, /turf/open/floor/wood, /area/science/research) -"xMB" = ( -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/requests_console{ - department = "Engineering"; - departmentType = 3; - name = "Engineering RC"; - pixel_x = 30 - }, -/turf/open/floor/plasteel, -/area/engine/storage) -"xMK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 8 - }, -/turf/open/floor/plating, -/area/nsv/hanger/deck2/starboard{ - name = "Launch tubes 1 and 2" - }) "xMQ" = ( /obj/structure/bodycontainer/morgue, /obj/machinery/light/small{ @@ -55647,13 +54788,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) "xNA" = ( +/obj/machinery/door/firedoor/border_only/directional/south, +/obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/airlock/ship/maintenance{ req_one_access_txt = "12" }, -/obj/machinery/door/firedoor/border_only/directional/south, -/obj/machinery/door/firedoor/border_only/directional/north, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /turf/open/floor/plating, /area/maintenance/port/central) "xND" = ( @@ -55671,8 +54810,8 @@ name = "Hydroponics"; req_one_access_txt = "35" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -55681,11 +54820,11 @@ /turf/open/floor/plasteel, /area/hydroponics) "xNK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ icon_state = "4-8" @@ -55698,13 +54837,22 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"xOb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/status_display/evac{ + pixel_y = -32 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "xOj" = ( /obj/machinery/door/airlock/ship/external{ req_one_access_txt = "13" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "xPt" = ( @@ -55729,11 +54877,11 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/ai_monitored/turret_protected/aisat/service/support_ship) "xRr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -55758,8 +54906,8 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai_upload) "xRM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /turf/open/floor/durasteel, @@ -55785,8 +54933,8 @@ /turf/open/floor/durasteel, /area/hallway/primary/central) "xSA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/structure/cable{ @@ -55816,8 +54964,8 @@ /turf/open/floor/plasteel/white, /area/medical/genetics) "xTm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, @@ -55863,10 +55011,10 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "xUI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, /turf/open/floor/monotile/light, @@ -55900,15 +55048,27 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plasteel/white, /area/medical/virology) -"xWo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +"xVF" = ( +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=MaintDetour-3"; + location = "MaintDetour-2" }, /turf/open/floor/plating, -/area/engine/engineering/hangar) +/area/maintenance/department/medical/morgue) +"xWo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/durasteel, +/area/hallway/secondary/entry) "xWt" = ( /obj/structure/table/glass, /turf/open/floor/wood, @@ -55953,7 +55113,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/medical/virology) "xXp" = ( @@ -55973,14 +55133,13 @@ /turf/open/floor/durasteel/padded, /area/crew_quarters/locker) "xXH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ +/obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 8 }, /turf/open/floor/durasteel/riveted, -/area/maintenance/starboard/central) +/area/nsv/hanger/deck2/port{ + name = "Launch tubes 3 and 4" + }) "xYl" = ( /obj/machinery/computer/ship/viewscreen{ pixel_x = -32; @@ -56116,10 +55275,10 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai) "yaD" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, /turf/open/floor/durasteel, @@ -56133,7 +55292,7 @@ /area/maintenance/department/science/xenobiology) "yaR" = ( /obj/machinery/airalarm/directional/south, -/turf/open/floor/plating, +/turf/template_noop, /area/maintenance/port/aft) "yaX" = ( /turf/open/floor/plating, @@ -56155,10 +55314,10 @@ /area/medical/genetics) "ybA" = ( /obj/machinery/bluespace_beacon, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ icon_state = "4-8" }, @@ -56181,6 +55340,15 @@ /obj/item/clothing/head/helmet/decktech, /turf/open/floor/durasteel/eris_techfloor_alt, /area/nsv/hanger) +"ycB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/open/floor/durasteel/eris_techfloor_alt, +/area/hallway/primary/central) "ycS" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input{ dir = 4 @@ -56200,8 +55368,8 @@ /turf/open/floor/plating, /area/maintenance/department/science) "yeJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/effect/turf_decal/tile/red{ dir = 1 @@ -56219,7 +55387,7 @@ /turf/open/floor/durasteel/eris_techfloor_alt, /area/security/prison) "yeR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/light{ dir = 1 }, @@ -56234,11 +55402,11 @@ /turf/closed/wall/r_wall/ship, /area/gateway) "yfK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/light, /obj/structure/cable{ @@ -56256,8 +55424,8 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "ygu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/stripes/line, /obj/structure/cable{ icon_state = "1-4" @@ -56288,7 +55456,6 @@ /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/machinery/atmospherics/pipe/simple/brown/visible{ dir = 4 }, @@ -56296,6 +55463,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, /turf/open/floor/plasteel/techmaint, /area/engine/atmos) "yhA" = ( @@ -56319,11 +55487,11 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/plating, /area/quartermaster/warehouse) @@ -56357,8 +55525,8 @@ /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_a) "yjr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, @@ -56392,10 +55560,10 @@ }, /obj/machinery/door/firedoor/border_only/directional/east, /obj/machinery/door/firedoor/border_only/directional/west, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/door/airlock/ship/maintenance{ @@ -56430,7 +55598,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "2-8" }, @@ -64299,13 +63467,13 @@ aiP aYi iEt mtL -cSD -dHx -gri -mtL -mtL -mtL -mtL +woi +brq +odJ +gmu +gmu +gmu +bWy mAf mtL vAZ @@ -64828,11 +63996,11 @@ gri mtL mtL mtL -mtL -mtL -mtL -mtL -mtL +cEK +lID +lID +lID +dZV mtL bKM cae @@ -65326,7 +64494,7 @@ wVf nxV aYi tBx -uQH +mtL syD hmL kfi @@ -65550,8 +64718,8 @@ aaa aaa aaa anm -vwM -vwM +agR +agR oBE wdF vwM @@ -65807,9 +64975,9 @@ aaa aaa aaa anm -vwM -vwM -vwM +agR +agR +agR dRJ nda hJS @@ -65840,7 +65008,7 @@ iXT bPn aYi xJT -sdX +xJT tod wcZ qeH @@ -66064,9 +65232,9 @@ aBl aBl aaa anm -vwM -vwM -vwM +agR +agR +agR wdF vwM raw @@ -67879,9 +67047,9 @@ pOO bdD hro aVu -bdD -bdD -bdD +vJB +vJB +vJB aER azl aRt @@ -67918,7 +67086,7 @@ awd awd aYi lTR -lTR +snz aTF aYi aYi @@ -68136,10 +67304,10 @@ bdD aFn hro iUn -bdD -bdD -bdD -bdD +vJB +vJB +vJB +vJB azl aVQ aBK @@ -68393,10 +67561,10 @@ dxb dDm hro aVu -bdD -bdD -bdD -bdD +vJB +vJB +vJB +vJB azl ais aZs @@ -68650,10 +67818,10 @@ bdD bdD hAT aVu -bdD -bdD -bdD -bdD +vJB +vJB +vJB +vJB oPP aIV qLF @@ -68682,7 +67850,7 @@ bcp aMj bcv vlA -mzw +rlR gWx nBK hlo @@ -68695,8 +67863,8 @@ agO agO agO agO -snz -bdo +agO +agO bef arQ arQ @@ -68907,10 +68075,10 @@ beu doN hSu aVu -bdD -bdD -bdD -bdD +vJB +vJB +vJB +vJB azl uFL trU @@ -68952,8 +68120,8 @@ azJ awN agO aJo -wwo -bdp +aYg +aYg ksg xZL aYg @@ -69189,7 +68357,7 @@ adO alu axY aMj -aXr +erC aMj bcm bcr @@ -69209,10 +68377,10 @@ ajI aoX agO aJo -odJ -cEK +aYg +aYg vUM -gSw +siL kEz bmQ bup @@ -69725,7 +68893,7 @@ agO aJo aYg aYg -xWo +ksg xZL bbB fKP @@ -69982,7 +69150,7 @@ wBs aJo aYg aYg -xWo +ksg xZL aYg fFK @@ -70496,7 +69664,7 @@ agO aJo aYg aYg -xWo +ksg xZL aYg tdo @@ -70753,7 +69921,7 @@ agO aJo aYg aYg -xWo +ksg xZL aYg csT @@ -72000,7 +71168,7 @@ eST xMq aMS kjN -ffW +dJj xhy dxn ydu @@ -72519,7 +71687,7 @@ ajN uRC uRC uRC -aTG +nDN uRC sCS abB @@ -73828,9 +72996,9 @@ nBm jKd sNt fVs -uZM -dCJ -jWs +kqW +gbF +psJ lNa wCW dvl @@ -74079,12 +73247,12 @@ wat sSl sSl fOs -gnQ -wjb +xpS +agA iQe iQe -rBg -nSt +csf +niO qtk qtk lWc @@ -74336,7 +73504,7 @@ vYV bNZ aRf ryv -sNS +qDZ aRf aat api @@ -74593,7 +73761,7 @@ iAi gSn aru uFJ -uxz +pBP vvo aat ars @@ -74850,7 +74018,7 @@ aLG auE auE aPx -llC +axy jDI aat yeR @@ -75107,7 +74275,7 @@ viJ auE alO ajT -kHn +aBn eMi aat wsw @@ -75313,9 +74481,9 @@ fwh fkN aEn feG -aUL -aUL -hFE +uYp +uYp +awT jxt aaa dMd @@ -75364,7 +74532,7 @@ wdj auE hdT pFu -bOu +hbP bhv aat bFl @@ -75570,9 +74738,9 @@ fwh fkN fkN feG -aUL -aUL -aUL +uYp +uYp +uYp jxt aaa dMd @@ -75621,7 +74789,7 @@ cXW pjs fxt asq -xMB +eXV qTi aat nRP @@ -75827,9 +74995,9 @@ fwh gMU gMU jxt -aUL -aUL -aUL +uYp +uYp +uYp atd aaa apW @@ -75879,7 +75047,7 @@ aam aam aam aam -gYM +bUL ajw ajw ajw @@ -76136,7 +75304,7 @@ aaj sXM aaj aaf -vUx +uiM xEZ bVr bVr @@ -76374,7 +75542,7 @@ aBf rji apA apA -apA +wwo apA apA apA @@ -76383,7 +75551,7 @@ apA apA apA apA -apA +xWo apA apA apA @@ -76392,7 +75560,7 @@ tIa apA avN aqA -vVV +fIp jqp aho tcP @@ -76631,7 +75799,7 @@ aaj gAC aDS aaj -aaj +bdp aaj aaj aaj @@ -76648,15 +75816,15 @@ aaj kgY aaj aqy -lur +kXQ aaf vHw aho gbJ aho -ata -ata -osI +jbw +jbw +jbw qCO akX akX @@ -76905,16 +76073,16 @@ asE aKL aaj aNQ -tew +mTA aaf iQX aho -dSe -lzg -bVr -bVr -gre ata +lzg +jbw +jbw +jbw +jbw aho aho akX @@ -77166,17 +76334,17 @@ aaj aaf vHw aho -vHw +awK aho -ata -hBo -uJI -ata +jbw +jbw +jbw +jbw aho -ata -ata -ata -ata +jbw +jbw +jbw +jbw hXU ldh bku @@ -77423,18 +76591,18 @@ aaj aaf vHw aho -vHw -aho -ata ata -nmG +aho +jbw +jbw +jbw +jbw +lzg +jbw +jbw jbw -lDl jbw jbw -iSr -ata -ata tyn aHd bkw @@ -77680,18 +76848,18 @@ aaj aaf vHw aho -iQX +nmG aho -ata -ata -ata -ata +jbw +jbw +jbw +jbw aho -ata -ata -xCZ -ata -ata +jbw +jbw +jbw +jbw +jbw tyn aHd aHd @@ -77937,18 +77105,18 @@ aaj aaf vHw emv -vHw +ata ldh ldh iWB iWB ldh ldh -ata -ata -xCZ -ata -ata +jbw +jbw +jbw +jbw +jbw ldh fwh fwh @@ -78190,22 +77358,22 @@ aAL oBf reI reM -gck +vyU aaf vtn soT -uuv +nZg ldh yfL yfL aaa aaa iWB -ata -ata -cWT -ata -ata +jbw +jbw +jbw +jbw +jbw tyn aHd bkw @@ -78426,7 +77594,7 @@ aIz aaj aFZ adc -adc +uQH gVf sQO sQO @@ -78447,7 +77615,7 @@ aKL aKL aaj aNQ -tew +mTA aaf aaf vHw @@ -78458,11 +77626,11 @@ vHO fDd yfL iWB -ata -ata -cWT -ata -ata +jbw +jbw +jbw +jbw +jbw tyn aHd aHd @@ -78715,11 +77883,11 @@ yfL bGF bEf ldh -ata -hBo -ofY -ata -ata +jbw +jbw +jbw +jbw +jbw ldh fwh fwh @@ -78972,11 +78140,11 @@ yfL yfL aaa ldh -ata -ata -vRU -mhr -ata +jbw +jbw +jbw +jbw +jbw tyn aHd bkw @@ -79230,10 +78398,10 @@ ldh ldh ldh sJS -ata -cWT -ata -ata +jbw +jbw +jbw +jbw tyn aHd aHd @@ -79475,7 +78643,7 @@ biN duW pGF biC -qsJ +aHQ aaf aaf vHw @@ -79486,11 +78654,11 @@ tLz rVd xpC aho -ata -ata -cWT -ata -ata +jbw +jbw +jbw +jbw +jbw ldh fwh fwh @@ -79685,9 +78853,9 @@ aJB exG aJB aJB -aUL -aUL -aUL +uYp +uYp +uYp hFA wza apt @@ -79942,10 +79110,10 @@ fVO aUL rpf aJB -aUL -aUL -aUL -aUL +uYp +uYp +uYp +uYp wza wza wza @@ -79969,7 +79137,7 @@ aaj aEZ fTz biw -biA +cGV pSh adc ykQ @@ -80002,7 +79170,7 @@ aaa aaa ldh sAp -cWT +ata ata rSF tyn @@ -80199,10 +79367,10 @@ bNw hGy aUL aJB -aUL -aUL -aUL -aUL +uYp +uYp +uYp +uYp wza aaa aaa @@ -80225,7 +79393,7 @@ aIz aaj aFZ adc -bix +aGS biF sQO ykQ @@ -80259,7 +79427,7 @@ aaa aaa ldh urY -cWT +ata edV wqP ldh @@ -80456,9 +79624,9 @@ atd oQc jNt aJB -aUL -aUL -aUL +uYp +uYp +uYp yaR wza wza @@ -80482,7 +79650,7 @@ aIz aaj aFZ adc -ayV +aGN beG biI beH @@ -80515,8 +79683,8 @@ aaa aaa aaa ldh -nqv -mQT +ata +ata neL ldh ldh @@ -80713,14 +79881,14 @@ atd atd jxt jxt -bDE -jSC -uYO +uYp +uYp +uYp uYp xNA -rrA -crj -gBJ +aub +aub +aub bhL crj aST @@ -80738,7 +79906,7 @@ gVz agl aaj aFZ -arE +adc aPZ biG sQO @@ -80760,7 +79928,7 @@ aaf aaf gyQ aNQ -ace +emx aaf aaf vHw @@ -80772,7 +79940,7 @@ gMU gMU gMU ldh -cWT +ata ata lcI ldh @@ -80976,7 +80144,7 @@ jxt jxt wza wxR -bhS +aub hFo qeu nAA @@ -81004,7 +80172,7 @@ aaa aaa aaa aaa -bfN +fkN aaa aaa aaa @@ -81017,7 +80185,7 @@ oXl aaf bfi aNQ -tew +mTA cNK rDY vHw @@ -81029,7 +80197,7 @@ aaa aaa aaa ldh -cWT +ata rPc jOW aaa @@ -81531,7 +80699,7 @@ aaf aaf aaj aNQ -tZt +oyq aaf aho bNP @@ -81543,7 +80711,7 @@ iWB iWB ldh ldh -cWT +ata whB jOW aaa @@ -82029,7 +81197,7 @@ ftf apA apA apA -apA +wwo apA apA aPl @@ -82055,8 +81223,8 @@ nkB wBG wBG fdS -fsG -xdn +ata +ldh bgb ldh fwh @@ -82286,20 +81454,20 @@ mtG aaj aaj aaj -aaj +bdp mtG aaj tqQ gAC aaj aaj -bYa +fRs mtG aaj aDS aaj -wbq -dlf +aDH +arb aaj mtG aaj @@ -82547,7 +81715,7 @@ aEt nLn acc azV -gIp +aFC tYp aWP aWP @@ -83318,7 +82486,7 @@ tJN aEt abO tQs -oFq +ycB aWP itl vrr @@ -84089,7 +83257,7 @@ wtN bdi abO tQs -hIi +rDm uxw aWP aNO @@ -84603,7 +83771,7 @@ aEt acB abO tQs -gCG +aCS atV atV atV @@ -84860,7 +84028,7 @@ abO tsY abO uJO -pRX +dTS asW aSq diB @@ -85117,7 +84285,7 @@ aOu ram aOu ajh -kLG +anX umT uOt kTH @@ -85374,7 +84542,7 @@ abO tsY abO rkj -pRX +dTS cam app app @@ -85608,10 +84776,10 @@ dRy aub ayG aIx -aub -aub -aub -aub +abb +abb +abb +abb rDT aIx aZK @@ -85631,7 +84799,7 @@ alD alD adz amV -uIL +asH atV bah app @@ -85865,11 +85033,11 @@ aIx aub ayG aIx -aub -aub -aub -aub -aub +abb +abb +abb +abb +abb aIx pAD svT @@ -85888,7 +85056,7 @@ aFs alD akE aiC -mlQ +aOi atV aQi app @@ -86122,11 +85290,11 @@ aIx aub ayG aXS -aub -aub -aub -aub -aub +abb +abb +abb +abb +abb aIx aYv abO @@ -86145,7 +85313,7 @@ aFs alD beN auu -pRX +dTS cam app app @@ -86379,11 +85547,11 @@ aIx lKR ayG aXS -aub -aub -aub -aub -aub +abb +abb +abb +abb +abb aIx oxJ aKj @@ -86402,7 +85570,7 @@ aSv alD xIV tQs -pRX +dTS cam app app @@ -86636,11 +85804,11 @@ aIx aUn ayG aXS -aub -aub -aub -aub -aub +abb +abb +abb +abb +abb aIx tpa adr @@ -86659,7 +85827,7 @@ iOf alD cto tQs -pRX +dTS iEF fSI fSI @@ -86893,11 +86061,11 @@ lwz aub ayG aXS -aub -aub -aub -aub -aub +abb +abb +abb +abb +abb aIx fvA abO @@ -86916,7 +86084,7 @@ aEz alD aPz tQs -opr +aZG hud aYZ aYZ @@ -87150,11 +86318,11 @@ aub aub ayG aIx -aub -aub -aub -aub -aub +abb +abb +abb +abb +abb pwe qqt pQo @@ -87173,7 +86341,7 @@ vgW alD abO tQs -lSt +jxb aSN kwL aOs @@ -87407,11 +86575,11 @@ wHh aub ayG aIx -aub -aub -aub -aub -aub +abb +abb +abb +abb +abb aIx abO abO @@ -87664,11 +86832,11 @@ uKD aIx ayG aIx -aub -aub -aub -aub -aub +abb +abb +abb +abb +abb aIx lmm mDu @@ -87687,7 +86855,7 @@ aAt alD abO tQs -uIm +lLb aSN akp azM @@ -87921,11 +87089,11 @@ qem aIx ayG aIx -aub -aub -aub -aub -aub +abb +abb +abb +abb +abb wza sFF sFF @@ -87944,7 +87112,7 @@ abs alD lqj tQs -cJE +uPO vnL cJA cJA @@ -88201,7 +87369,7 @@ aTQ aFX abO tQs -pKE +aNb aJF sgn bfz @@ -88435,9 +87603,9 @@ wza wza bFX pwe -aub -aub -aub +abb +abb +abb jbD wza yfL @@ -88458,7 +87626,7 @@ yfK aFX abO jxv -mHb +dOJ oAh aFr atw @@ -88692,10 +87860,10 @@ fwh wza cZS aIx -aub -aub -aub -aub +abb +abb +abb +abb wza aaa aaa @@ -88715,7 +87883,7 @@ ayJ trO abO tQs -ivA +aAW akO aZP aYc @@ -88949,10 +88117,10 @@ fwh wza sZX aIx -aub -aub -aub -aub +abb +abb +abb +abb wza yfL yfL @@ -88972,7 +88140,7 @@ avk nRg aOu aze -gOE +aFL aJF auB aYc @@ -89206,10 +88374,10 @@ aIJ wza cHE aIx -aub -aub -aub -aub +abb +abb +abb +abb wza aaa aaa @@ -89228,7 +88396,7 @@ abO ilH nja abO -wVo +aZY aCq aQB aOa @@ -89463,10 +88631,10 @@ ohS wza cZS aIx -aub -aub -aub -aub +abb +abb +abb +abb wza yfL yfL @@ -89475,7 +88643,7 @@ aLW dQn aVo sbf -abO +bfN abP aXP ayy @@ -89732,7 +88900,7 @@ aLW aiM aLW oeJ -abO +bfN aBN auq ayy @@ -89742,7 +88910,7 @@ acq fWo gYu ayy -fpo +obE qZs aNV aDO @@ -89989,7 +89157,7 @@ aLW aiM aLW wGc -abO +bfN abP hZb aws @@ -89999,7 +89167,7 @@ aPV aNa mPo ayy -exJ +cEz aXp aNV atz @@ -90246,7 +89414,7 @@ aLW aiM aLW uOc -abO +bfN abP aMP anS @@ -90256,7 +89424,7 @@ akw mbJ hkh ayy -pLM +mvv aXp aNV atz @@ -90503,7 +89671,7 @@ wHc aiM aLW oeJ -abO +bfN gln aXK ayy @@ -90513,7 +89681,7 @@ eEd uIl aco ayy -bwR +qzO aXp aNV myM @@ -90760,7 +89928,7 @@ wHc aiM aLW wGc -abO +bfN abP eAd ayy @@ -90770,7 +89938,7 @@ acr xXw cLt ayy -bwR +qzO aXp aNV oQM @@ -91017,7 +90185,7 @@ pRc aiM aVo jfD -abO +bfN abP eAd ayy @@ -91027,7 +90195,7 @@ tvC mbJ mut ayy -bwR +qzO aXp aNV atz @@ -91284,7 +90452,7 @@ aGx kkJ aiA ayy -sSb +xVF aXp aNV xpl @@ -91542,7 +90710,7 @@ aBB xlw ayy aHX -sKB +avp aNV atz atz @@ -91823,8 +90991,8 @@ aZI hmp aWK uZK -lID -brq +tDJ +arM rMP rMP rMP @@ -92313,7 +91481,7 @@ aVx aVx ayy iFt -jQZ +gLT sBx qmE oZx @@ -93084,7 +92252,7 @@ uet deM pQo jTW -ozH +vmf aVL aVL aVL @@ -93096,10 +92264,10 @@ aVL aVL aVL aVL -arM -arM -arM -arM +aEK +aEK +aEK +aEK dqr dLA vpo @@ -93353,16 +92521,16 @@ lzy lzy lzy aVL -arM -arM -arM -arM -arM +aEK +aEK +aEK +aEK +aEK dLA iSh suQ -iSh -iSh +abS +abS rrk dLA boH @@ -93610,22 +92778,22 @@ aVL aVL lzy aVL -arM -arM -arM -arM -arM +aEK +aEK +aEK +aEK +aEK dLA iSh oEb -iSh -iSh -iSh +abS +abS +abS dLA boH dLA -arM -arM +aEK +aEK qRU nub dEY @@ -93855,7 +93023,7 @@ avI avI tQG aZr -kOr +aIK aVL aPH aVL @@ -93875,15 +93043,15 @@ dLA dLA iSh suQ -iSh -iSh -iSh +abS +abS +abS dLA boH hNh -arM -arM -arM +aEK +aEK +aEK nub dEY aaa @@ -94087,15 +93255,15 @@ avh bGE bGE wHc -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC ulb avI aQd @@ -94112,7 +93280,7 @@ aca avI oyO mkM -qOf +wSj aVL aPH aVL @@ -94138,9 +93306,9 @@ aeR dLA boH dLA -arM -arM -arM +aEK +aEK +aEK nub dEY aaa @@ -94344,16 +93512,16 @@ xll wbb bGE aVo -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC avI aQd axq @@ -94601,16 +93769,16 @@ xll aKq bGE aVo -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC avI aQd aQd @@ -94626,7 +93794,7 @@ avI avI abO tQs -oZu +pnI aVL aVL aVL @@ -94858,16 +94026,16 @@ xll aKM bGE aVo -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC avI blw avI @@ -94883,7 +94051,7 @@ aXj scE aRx edN -dpK +sIE dHJ tTk vSU @@ -95115,16 +94283,16 @@ axd bGE bGE wHc -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC aVo lSM nwp @@ -95140,7 +94308,7 @@ uxO avI ryX dxy -myr +mql aVL aVL aVL @@ -95372,16 +94540,16 @@ aBo bGE cJf wHc -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC aVo aiM jNo @@ -95397,7 +94565,7 @@ ogL avI bmA ldt -fdx +iok aVL aPH aVL @@ -95629,16 +94797,16 @@ aCw bGE pSW wHc -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC rnW oZO xIE @@ -95886,16 +95054,16 @@ aEU bGE pSW wHc -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC aVo twb fYu @@ -95911,7 +95079,7 @@ amT wNb auo xgy -kSb +xOb aVL aPH aVL @@ -96143,16 +95311,16 @@ aYb bGE aiM rnW -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC aVo pOK vHV @@ -96400,16 +95568,16 @@ xll aLf aiM wHc -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM -aiM +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC +jSC aVo aiM aiM @@ -96425,7 +95593,7 @@ gUf aVo abO tQs -rkE +ayK aVL aPH aPH @@ -96682,7 +95850,7 @@ aVo dPx acc azV -dtz +nFa nHX aVL aVL @@ -96939,7 +96107,7 @@ rtQ acu arZ aju -ftC +uoZ aor tKa oRT @@ -97196,7 +96364,7 @@ bCt aYI aOC aIk -fMe +syy atZ aOC aOC @@ -97453,7 +96621,7 @@ acw acu iKz tif -bEz +nbU bcO emD emD @@ -97468,7 +96636,7 @@ emD mvO emD emD -gmu +emD ibq dhs aKQ @@ -97710,7 +96878,7 @@ aYK hsp arW bcJ -lBv +bcK vjj kah kah @@ -97947,7 +97115,7 @@ vxy axH aKJ kLa -asm +vxy rWs nJU taw @@ -97984,7 +97152,7 @@ mUy kah nXx arc -xgn +sPZ aKQ aaa aaa @@ -98460,9 +97628,9 @@ hgF hgF hgF hgF -fEa -hgF -hgF +iSr +gre +mhm hgF pim ruM @@ -98755,11 +97923,11 @@ dJO kah arZ arc -sSY +sPZ aeR +unu +acW jdH -iSh -ndM wnd wnd wnd @@ -99015,8 +98183,8 @@ pjX eva kah kah -kxL -uqL +aAe +ndM wnd fwh fwh @@ -99272,18 +98440,18 @@ aly aqB arO kah -adm -aaW -aaW -aaW -aaW -aaW -aaW -aaW -aaW -aaW -aaW -aaW +ada +qdB +qdB +qdB +qdB +qdB +qdB +qdB +qdB +qdB +qdB +qdB bfL bfK bfJ @@ -99530,18 +98698,18 @@ ahm aky kzC agz -iMC -aaX -abh -abh -abh -abh -abS -abh +pVU +afv +afv +kjC +adQ +axu +dAS +afv +afv abh -aea -acL -aaa +acS +afD aaa aaa aaa @@ -99785,20 +98953,20 @@ aeO afq aft amC -hZk -agy +kzC +ahK msf -aaY -abT -pKD -afA -afA -afA -pKD +awR abT -mCt +qcB +afb +mZW +mZW +awR +awR +awR acM -yfL +afD yfL yfL yfL @@ -100044,18 +99212,18 @@ ahF amP kzC agz -iMC -abb -abj -abj -abj -abj -ter -acj +pVU +sBO +llJ +llJ +nGC +jNg abj +llJ +llJ aed acN -aaa +afD aaa aaa aaa @@ -100280,7 +99448,7 @@ oaQ aHC lDm nQp -bIA +vaM kah kah brd @@ -100298,20 +99466,20 @@ anb anb apS aqD -asd +anb kah -cIF -aaW -aaW +iMC +qdB +qdB ail +qdB ail ail +qdB ail -aaW -aaW -qNA -qNA -aaW +ail +qdB +qdB bfL bfK bfJ @@ -100566,7 +99734,7 @@ ahX gjF aaW adE -gYY +adD acF qNA fwh @@ -101051,7 +100219,7 @@ grM aJq arZ ecH -xfl +lZe kah brd aeD @@ -101071,7 +100239,7 @@ hmw nqC brd cNT -bgw +vMD aaW abg abR @@ -101080,8 +100248,8 @@ gNf uJD aaW svV -aid -acK +ael +acF qNA fwh fwh @@ -101326,20 +100494,20 @@ aud aud aud avK -awK +aud kah -clE -aaW -aaW +twc +qdB +qdB ail +qdB ail ail +qdB ail -aaW -aaW -qNA -qNA -aaW +ail +qdB +qdB bfL bfK bfJ @@ -101588,16 +100756,16 @@ kzC bgy pVU aaX -tfa -tfa -tfa -tfa +afv +afv +adQ +adQ dcS -acC -tfa -ahK +kjC +afv +abh acS -aaa +afD aaa aaa aaa @@ -101841,20 +101009,20 @@ afb afb afr afH -hZk -bgz -fqG -aaY +kzC +acL +msf awR -pKD -afD -afD -afD -pKD +abT +qcB +afb +mZW +mZW awR -mCt -acW -gMU +awR +awR +acM +cpb gMU gMU gMU @@ -102079,7 +101247,7 @@ axS axS rgX fUF -qDW +nUm kah bey afV @@ -102099,19 +101267,19 @@ oHC euv ahH kzC -bgA +bgy pVU -abb -xMK -xMK -xMK -xMK -xMK -xMK -xMK +sBO +llJ +llJ +nGC +nGC +abj +llJ +llJ ahL -ada -aaa +acN +afD aaa aaa aaa @@ -102356,18 +101524,18 @@ avf awb avf kah -ckt -aaW -aaW -ail -ail +iMC +qdB +qdB ail ail ail +qdB +qdB +qdB ail -aaW -aaW -aaW +qdB +qdB bfL bfK bfJ @@ -102570,10 +101738,10 @@ xKk vJT wfr aYK -aTo -aTo -aTo -aTo +nQg +nQg +nQg +nQg jkQ aYK aTo @@ -102827,11 +101995,11 @@ xKk omQ tOb vtK -aTo -aTo -aTo -aTo -aTo +nQg +nQg +nQg +nQg +nQg lhw aTo dZq @@ -102850,7 +102018,7 @@ oGn aHB bks ecH -gso +nFL xNb iYh iYh @@ -102870,18 +102038,18 @@ brd mLP rmD kah -jsv -adq -adq -adI -adI -adI -adI -adI -adI -adq -adq -adq +iMC +qdB +qdB +ail +qdB +ail +qdB +qdB +qdB +ail +qdB +qdB bfL bfK bfJ @@ -103084,11 +102252,11 @@ nth nth nth nth -aTo -aTo -aTo -aTo -aTo +nQg +nQg +nQg +nQg +nQg nth nth nth @@ -103125,21 +102293,21 @@ aeY aeY aeY ahm -afv -jVf -qVv -ufV +awr +aih +fpq +pVU adA -abp -abp -abp -abp +afv +kjC adQ -abp -abp -ahS -aes -aaa +adQ +dAS +kjC +afv +abh +aex +afD aaa aaa aaa @@ -103341,11 +102509,11 @@ aaa abx apQ xKk -aTo -aTo -aTo -aTo -aTo +nQg +nQg +nQg +nQg +nQg nth yfL yfL @@ -103364,7 +102532,7 @@ aWd bbV aOc amO -msm +teS tEa brd afU @@ -103383,20 +102551,20 @@ afb afb afr afH -jIZ -ebZ -qdB -adC -awT -lCT -aDX -aDX -aDX -lCT -awT -vKA +aih +asd +msf +awR +abT +qcB +afb +mZW +mZW +awR +awR +awR aet -gMU +cpb gMU gMU gMU @@ -103598,11 +102766,11 @@ aaa abx apQ xKk -aTo -aTo -aTo -aTo -aTo +nQg +nQg +nQg +nQg +nQg nth yfL aaa @@ -103639,21 +102807,21 @@ mZW mZW mZW afz -ayw -jVf +afH +aih fpq -ufV -adD -adL -adL -adL -adL -jNg -aeh -adL +pVU +sBO +llJ +llJ +nGC +nGC +abj +llJ +llJ ahT -aew -aaa +aeA +afD aaa aaa aaa @@ -103855,17 +103023,17 @@ aaa abx apQ xKk -aTo -aTo -aTo -aTo -aTo +nQg +nQg +nQg +nQg +nQg nth yfL yfL yfL fxl -pQI +dDq rWn ape aYL @@ -103896,20 +103064,20 @@ afC afC afC afJ -axu +afC kah twc -adq -adq -adI -adI -adI -adI -adq -adq -kVX -kVX -adq +qdB +qdB +ail +qdB +ail +qdB +qdB +ail +ail +qdB +qdB bfL bfK bfJ @@ -104112,17 +103280,17 @@ aaa abx apQ xKk -aTo -aTo -gVS nQg -aTo +nQg +nQg +nQg +nQg nth aaa yfL aaa fxl -jCV +uHX rWn ape aYL @@ -104165,7 +103333,7 @@ goH adq aei gYY -aen +aer kVX fwh fwh @@ -104369,11 +103537,11 @@ aaa abx apQ xKk -aTo -jnm -swX -aTo -aTo +nQg +nQg +nQg +nQg +nQg nth aaa yfL @@ -104411,7 +103579,7 @@ miI hmw cOx rmD -vRj +jsv nyw bal adG @@ -104626,11 +103794,11 @@ aaa abx apQ xKk -aTo -aTo -sPZ -aTo -aTo +nQg +nQg +nQg +nQg +nQg nth yfL yfL @@ -104678,7 +103846,7 @@ xCd nWp adq hYn -aid +ebZ aer kVX fwh @@ -104883,11 +104051,11 @@ aaa abx apQ xKk -aTo -aTo -sPZ -aTo -aTo +nQg +nQg +nQg +nQg +nQg nth aaa yfL @@ -104924,20 +104092,20 @@ azY azY azY aAd -aAe +azY kah -xXH -adq -adq -adI -adI -adI -adI -adq -adq -kVX -kVX -adq +iMC +qdB +qdB +ail +qdB +ail +ail +qdB +ail +ail +qdB +qdB bfL bfK bfJ @@ -105163,7 +104331,7 @@ oPG aJQ aoZ aKY -oxL +akh tEa brd afd @@ -105181,21 +104349,21 @@ afn afn afn axV -ayQ -jVf -jTY -fJM -adA -adP -adP -adP -adP +afH +aih +fpq +pph +afA +afv +kjC +adQ +adQ dAS -ael -adP -ahU -aex -aaa +afv +afv +abh +acS +afD aaa aaa aaa @@ -105399,7 +104567,7 @@ aeX tVt ows dXo -oyZ +aoW aVi rab nth @@ -105439,20 +104607,20 @@ aeO aeO afy afH -jIZ -jVG -pph -adC -adS -lCT -aEK -aEK -aEK -lCT +aih +asd +msf +awR adS -vKA -aey -gMU +awR +afb +afb +afb +awR +awR +awR +acM +cpb gMU gMU gMU @@ -105695,21 +104863,21 @@ afu afu afu afa -afF -jVf -jTY -fJM -adD -eIP -eIP -eIP -eIP -eIP -pHJ -eIP -unu -aeA -aaa +agp +aih +fpq +pVU +sBO +llJ +llJ +nGC +jNg +swX +aeh +llJ +ahT +acN +afD aaa aaa aaa @@ -105934,7 +105102,7 @@ uOV aHB aVa ecH -xfl +lZe kah brd guL @@ -105948,24 +105116,24 @@ hRC eaZ aaw uER -brd +sQx tRz utk -sQx kah kah -qYe -adq -adq -adq -adq -adq -adq -adq -adq -adq -adq -adq +kah +ada +qdB +qdB +qdB +qdB +qdB +qdB +qdB +qdB +qdB +qdB +qdB bfL bfK bfJ @@ -106209,11 +105377,11 @@ kah kah kah kah -kah +aew gCm -iKg -kJP -cpb +acK +dOG +aad kKP spY fwh @@ -106448,26 +105616,26 @@ aqf aHB voL mes -kjB +clE uXJ -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad -aad +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF +afF roi dOG dQI @@ -106705,7 +105873,7 @@ uEh bcj krB rgk -llD +bde qwo qwo qwo @@ -106962,7 +106130,7 @@ eHR aHB tbn ecH -trS +awE aXq axo kNM @@ -107476,7 +106644,7 @@ rXA aHB aPy wsa -ezy +agS atb aFR aFR @@ -107733,7 +106901,7 @@ aVW aVW beP ain -sHc +aBp aTP aTJ apE @@ -107990,7 +107158,7 @@ kfy aVW arZ ecH -iXg +pfm aXq aKk iEX @@ -108247,7 +107415,7 @@ ehQ aVW arZ awP -dLi +uCd aUN aUN aUN @@ -108504,7 +107672,7 @@ pkS xFl fEP oQU -bmM +aeZ aUN aIo noo @@ -108543,7 +107711,7 @@ kvD aqU aKm fqA -vEJ +etq fqA adB aOz @@ -108802,7 +107970,7 @@ aNU ack xRZ ack -vwl +eur aOz ayF aCj @@ -109316,7 +108484,7 @@ bcP ack xRZ anc -mPc +tBS aOz azA aCJ @@ -109532,7 +108700,7 @@ afl iNb fWk kqX -cmS +fXB hci oGK oGK @@ -110046,7 +109214,7 @@ kTK aIs own aGh -oBO +uWf aUN aXL aXw @@ -110303,7 +109471,7 @@ anP kTK dpx aGh -iIe +vkq aUN aUN aUN @@ -110560,7 +109728,7 @@ hQy kTK dpx aGh -xfl +lZe aNA gvZ lJi @@ -111047,7 +110215,7 @@ avF avF avF aJK -rMz +tsZ fYU aji aWv @@ -111289,9 +110457,9 @@ aaa abx aeX tVt -aoW -aoW -gsZ +gOJ +gOJ +ayV jle aba aXE @@ -111546,10 +110714,10 @@ aaa abx aeX tVt -aoW -aoW -gsZ -aoW +gOJ +gOJ +ayV +gOJ aba aXE aHg @@ -111588,7 +110756,7 @@ nZB kTK nUp asr -bAX +aDM aaV bEN aRX @@ -111803,10 +110971,10 @@ aaa abx aeX tVt -aoW -aoW -gsZ -aoW +gOJ +gOJ +ayV +gOJ aba aYH aHg @@ -111831,7 +110999,7 @@ jtd kDc arv tUx -mTD +acA xWG xWG xWG @@ -111845,7 +111013,7 @@ arv arv oui jio -lsw +vgq aNA aNA aNA @@ -112060,10 +111228,10 @@ aaa abx aeX tVt -aoW -aoW -gsZ -aoW +gOJ +gOJ +ayV +gOJ aba eHs aHg @@ -112102,7 +111270,7 @@ ygv arv kjB iGo -lbu +iVe eza ias ias @@ -112317,10 +111485,10 @@ aaa abx aeX tVt -aoW -aoW -gsZ -aoW +gOJ +gOJ +ayV +gOJ aba acf aHg @@ -112347,19 +111515,19 @@ tUx sMJ arv arv -tFS -bAB -pay -bna -oKo -mxh -wcD -eTE -eTE -nzP -kZy -uxa -iIe +aJl +aMf +aGL +whO +sPg +adT +rTK +ajK +ajK +hxp +aCp +atf +vkq aQg aQg aQg @@ -112603,20 +111771,20 @@ tUx sMJ arv arv -lIs -iRO -eqG -gvd -opo -eoH -iTr -oFv -vuj -vuj -oQf -bKO -pKX -bEz +acU +eah +ahR +atp +dQS +fnb +iDr +bTF +vpq +vpq +hLX +gHQ +jtI +nbU emD emD jKA @@ -112859,9 +112027,9 @@ tUx sMJ arv arv -cqj +aaG afw -nPj +lqb oFa aOy afw @@ -113377,10 +112545,10 @@ nXY nXY oSJ jWq -vPL +rOM afw afw -pzi +aBe arv arv aFe @@ -113633,7 +112801,7 @@ bzA azO azO azO -oZg +aDh aIp dnv afw @@ -114151,7 +113319,7 @@ ari azO aUE afw -qNu +xLf arv xfz aFe @@ -114660,12 +113828,12 @@ aYN afw afw afw -qjT +aux afw ezn afw afw -psK +omF arv xfz aFe @@ -114913,7 +114081,7 @@ nGf huh arv arv -lNu +czU afw afw afw @@ -114922,7 +114090,7 @@ afw afw afw afw -fVr +hGw arv xfz aFe @@ -115169,18 +114337,18 @@ auh arv iPD arv -gQc -uQz -eho -pND -dnG -gQc -fVm -eho -gQc -gQc -gQc -uWK +lNu +kyI +aar +aee +ajz +lNu +aUq +aar +lNu +lNu +lNu +imu xfz aOA aOA @@ -115426,17 +114594,17 @@ ykO arv iPD arv -gQc -gQc +lNu +lNu aQv -gQc -gQc -gQc -lEQ +lNu +lNu +lNu +bsn aQv -gQc -gQc -gQc +lNu +lNu +lNu arv xfz aOA @@ -115683,18 +114851,18 @@ auh arv gbL arv -gQc -uQz -eho -gQc -oNL -gQc -gQc -eho -gQc -gQc -gQc -uWK +lNu +kyI +aar +lNu +anB +lNu +lNu +aar +lNu +lNu +lNu +imu xfz aOA axe @@ -115940,17 +115108,17 @@ wyF arv gbL arv -gQc -eZK +lNu +lkP aQv -nCL -xyQ -oeK +aTN +rFp +aDV dfg aQv -eZK -gQc -gQc +lkP +lNu +lNu arv xfz aOA diff --git a/_maps/map_files/Instanced/HomeOne.json b/_maps/map_files/Instanced/HomeOne.json new file mode 100644 index 00000000000..682dd7ced48 --- /dev/null +++ b/_maps/map_files/Instanced/HomeOne.json @@ -0,0 +1,7 @@ +{ + "map_name": "HomeOne", + "map_path": "map_files/Instanced/map_files", + "map_file": ["HomeOne.dmm"], + "traits": [{"Linkage": "Self", "Boardable Ship": 1}], + "ship_type": "/obj/structure/overmap/spacepirate/HomeOne" +} diff --git a/_maps/map_files/Instanced/elcoPT.json b/_maps/map_files/Instanced/elcoPT.json new file mode 100644 index 00000000000..3f8c790b8c8 --- /dev/null +++ b/_maps/map_files/Instanced/elcoPT.json @@ -0,0 +1,13 @@ +{ + "map_name": "SSV Elco", + "map_path": "map_files/Instanced/map_files", + "map_file": ["NSVElcoPT.dmm"], + "traits": [ + { + "Linkage": "Self", + "Syndicate Ship": 1, + "Boardable Ship": 1 + } + ], + "ship_type": "/obj/structure/overmap/syndicate/pvp/elco" +} diff --git a/_maps/map_files/Instanced/map_files/Babylon2.dmm b/_maps/map_files/Instanced/map_files/Babylon2.dmm index 12ffed62a38..c15891698d4 100644 --- a/_maps/map_files/Instanced/map_files/Babylon2.dmm +++ b/_maps/map_files/Instanced/map_files/Babylon2.dmm @@ -2719,15 +2719,15 @@ "cGz" = ( /obj/structure/table, /obj/item/clipboard, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = 6; pixel_y = 5 }, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = -4; pixel_y = 7 }, -/obj/item/cartridge/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster, /obj/item/coin/silver, /turf/open/floor/plasteel/tech/grid, /area/quartermaster/pvp) @@ -11919,7 +11919,6 @@ /area/quartermaster/pvp) "kIH" = ( /obj/structure/table/wood, -/obj/item/modular_computer/laptop/preset/civillian, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, @@ -11929,6 +11928,7 @@ /obj/structure/cable{ icon_state = "1-4" }, +/obj/machinery/coffeemaker, /turf/open/floor/mineral/plastitanium/red, /area/crew_quarters/bar/pvp) "kJu" = ( @@ -13570,6 +13570,7 @@ /obj/machinery/power/apc/auto_name/west{ req_access = list(150) }, +/obj/machinery/coffeemaker/pendulum, /turf/open/floor/plasteel/tech/grid, /area/bridge/pvp) "mks" = ( @@ -20407,11 +20408,22 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech/grid, /area/engine/engineering/pvp) +"svI" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/clothing/mask/cigarette/cigar, +/obj/item/nullrod/fedora, +/turf/open/floor/mineral/plastitanium/red, +/area/crew_quarters/bar/pvp) "sxc" = ( /turf/open/floor/plasteel, /area/quartermaster/pvp) "sxo" = ( -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -23724,13 +23736,12 @@ /area/bridge/pvp) "voB" = ( /obj/structure/table/wood, -/obj/item/clothing/mask/cigarette/cigar, -/obj/item/nullrod/fedora, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, +/obj/item/modular_computer/laptop/preset/civillian, /turf/open/floor/mineral/plastitanium/red, /area/crew_quarters/bar/pvp) "vqc" = ( @@ -24218,6 +24229,11 @@ }, /turf/open/floor/wood, /area/hallway/pvp) +"vPc" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/coffee_condi_display, +/turf/open/floor/mineral/plastitanium/red, +/area/crew_quarters/bar/pvp) "vPe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -25488,6 +25504,12 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/plasteel/white, /area/medical/medbay/pvp) +"wZP" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/coffee_condi_display, +/obj/item/storage/box/coffeepack/robusta, +/turf/open/floor/plasteel/tech/grid, +/area/bridge/pvp) "xaj" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 @@ -62230,7 +62252,7 @@ iAi jxM pwS iUo -fGT +wZP mjG qxQ oUp @@ -65345,10 +65367,10 @@ eJJ vfV rpt pPA -pPA +svI voB kIH -fHk +vPc fJp fJp enS diff --git a/_maps/map_files/Instanced/map_files/Hammurabi1.dmm b/_maps/map_files/Instanced/map_files/Hammurabi1.dmm index ed97cca6cd8..4080cbdf9bd 100644 --- a/_maps/map_files/Instanced/map_files/Hammurabi1.dmm +++ b/_maps/map_files/Instanced/map_files/Hammurabi1.dmm @@ -390,6 +390,11 @@ "mv" = ( /turf/closed/wall/r_wall, /area/hammurabi/maintenance/secondary) +"na" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/coffee_condi_display, +/turf/open/floor/mineral/plastitanium/red, +/area/hammurabi/bar) "nk" = ( /obj/structure/cable{ icon_state = "1-4" @@ -794,6 +799,11 @@ /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/plating, /area/hammurabi/maintenance/secondary) +"AB" = ( +/obj/structure/table/wood, +/obj/machinery/coffeemaker, +/turf/open/floor/mineral/plastitanium/red, +/area/hammurabi/bar) "AR" = ( /obj/machinery/vending/boozeomat/syndicate_access{ payment_department = "SYN" @@ -28547,7 +28557,7 @@ mv mv kw aG -Tk +AB EU UR ki @@ -28804,7 +28814,7 @@ mv AR UR UR -Tk +na EU UR ki diff --git a/_maps/map_files/Instanced/map_files/HomeOne.dmm b/_maps/map_files/Instanced/map_files/HomeOne.dmm new file mode 100644 index 00000000000..ba3b3cec26c --- /dev/null +++ b/_maps/map_files/Instanced/map_files/HomeOne.dmm @@ -0,0 +1,70943 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ac" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ae" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"ag" = ( +/obj/machinery/computer/rdconsole/core{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"am" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"aq" = ( +/obj/structure/sign/directions/science{ + dir = 4; + pixel_y = 4 + }, +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = -3 + }, +/obj/structure/sign/directions/command{ + dir = 4; + pixel_y = 10 + }, +/turf/closed/wall/steel, +/area/ruin/unpowered/boarding_interior) +"at" = ( +/obj/structure/hull_plate, +/turf/open/space/basic, +/area/space/nearstation) +"ay" = ( +/obj/machinery/missile_builder/assembler, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"aH" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"aI" = ( +/obj/machinery/light, +/obj/structure/spider/stickyweb, +/obj/structure/spider/spiderling, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"aL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ + dir = 8 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"aM" = ( +/obj/effect/decal/cleanable/vomit, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"aX" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 5 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"ba" = ( +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"bd" = ( +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"bf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"bj" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"bm" = ( +/obj/machinery/missile_builder/welder, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"bp" = ( +/obj/structure/glowshroom/single, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"bq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"br" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"bs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"bz" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"bD" = ( +/obj/structure/filingcabinet, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"bS" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"bU" = ( +/turf/closed/wall/ship, +/area/space/nearstation) +"bV" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/maintenance, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"bW" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/engine/n2/light, +/area/ruin/unpowered/boarding_interior) +"bX" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"cb" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"cd" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"cj" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"ck" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"cp" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/radbgone, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"cq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"cv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"cA" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"cC" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"cI" = ( +/obj/structure/sign/directions/plaque/munitions{ + dir = 4 + }, +/turf/closed/wall/steel, +/area/ruin/unpowered/boarding_interior) +"cK" = ( +/turf/open/floor/engine/air/light, +/area/ruin/unpowered/boarding_interior) +"cR" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"cU" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"cX" = ( +/obj/machinery/airalarm/all_access{ + pixel_y = 23 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"db" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"dh" = ( +/obj/structure/fluff/support_beam{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"do" = ( +/obj/effect/spawner/room/tenxfive, +/turf/template_noop, +/area/ruin/unpowered/boarding_interior) +"dt" = ( +/obj/structure/particle_accelerator/particle_emitter/center{ + anchored = 1; + construction_state = 1; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"dv" = ( +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 4 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"dw" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"dx" = ( +/obj/structure/table/wood/bar, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"dA" = ( +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/rods, +/obj/item/stack/tile/durasteel/techfloor, +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/item/pipe_dispenser, +/obj/item/stack/cable_coil/blue, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"dH" = ( +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"dK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/rack, +/obj/item/ammo_box/magazine/tommygunm45, +/obj/item/ammo_box/magazine/tommygunm45, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"dM" = ( +/obj/machinery/armour_plating_nanorepair_pump/forward_port, +/obj/structure/table, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"dT" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"dV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/fluff/broken_flooring{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"eb" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/air_sensor/atmos/toxin_tank, +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input{ + dir = 1 + }, +/turf/open/floor/engine/plasma/light, +/area/ruin/unpowered/boarding_interior) +"ec" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/particle_accelerator/control_box{ + anchored = 1; + construction_state = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"eh" = ( +/obj/machinery/computer/ship/salvage, +/turf/closed/wall/r_wall/ship, +/area/ruin/unpowered/boarding_interior) +"ej" = ( +/turf/open/floor/plating/airless, +/area/space/nearstation) +"em" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"eo" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"es" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, +/obj/item/gun/ballistic/revolver/reverse, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ex" = ( +/obj/machinery/missile_builder/assembler, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ey" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"eB" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"eC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"eD" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "bottom_torp" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"eF" = ( +/obj/machinery/modular_fabricator/autolathe, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"eH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"eK" = ( +/obj/item/clothing/suit/space/pirate/boarder, +/obj/structure/table, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/eva, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"eL" = ( +/turf/open/floor/engine/n2o/light, +/area/ruin/unpowered/boarding_interior) +"eM" = ( +/obj/machinery/door/airlock/ship/external, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"eQ" = ( +/obj/machinery/door/airlock/ship/external{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"eS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/advanced_airlock_controller/directional/west{ + req_access = null + }, +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"eV" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"eW" = ( +/obj/machinery/door/poddoor/ship{ + id = "PirateSTBDbay" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"eX" = ( +/obj/machinery/computer/atmos_control/tank/air_tank, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"eZ" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/o2, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"ff" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"fg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"fh" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"fi" = ( +/obj/machinery/atmospherics/pipe/manifold/purple/visible/layer2{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"fm" = ( +/obj/machinery/door/airlock/ship, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"fo" = ( +/obj/structure/hull_plate/end{ + dir = 1 + }, +/turf/open/space/basic, +/area/space/nearstation) +"fs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"fy" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "top_torp" + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"fz" = ( +/obj/machinery/computer/ship/navigation{ + dir = 1; + req_access = null; + req_one_access_txt = "31;48" + }, +/turf/closed/wall/r_wall/ship, +/area/ruin/unpowered/boarding_interior) +"fA" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "bottom_torp" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"fC" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"fE" = ( +/turf/template_noop, +/area/ruin/unpowered/boarding_interior) +"fF" = ( +/obj/structure/sign/directions/plaque/hangar{ + dir = 8 + }, +/turf/closed/wall/steel, +/area/ruin/unpowered/boarding_interior) +"fG" = ( +/obj/machinery/door/airlock/ship/external, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"fI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"fQ" = ( +/obj/machinery/door/airlock/ship{ + dir = 4 + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"fW" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/regular, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"gf" = ( +/obj/item/storage/backpack, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"gk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"gp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"gs" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/maintenance/seven, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"gy" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer2, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"gG" = ( +/obj/structure/rack, +/obj/item/ammo_box/magazine/m45, +/obj/item/ammo_box/magazine/m45, +/obj/item/ammo_box/magazine/m45, +/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"gI" = ( +/obj/machinery/chem_master, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"gS" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/ship_weapon/vls, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"gZ" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input, +/turf/open/floor/engine/n2/light, +/area/ruin/unpowered/boarding_interior) +"he" = ( +/obj/machinery/door/airlock/ship{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"hl" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"hn" = ( +/obj/structure/munitions_trolley, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"hr" = ( +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"hu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"hH" = ( +/obj/machinery/light, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"hM" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"hN" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"hR" = ( +/obj/structure/sign/directions/medical{ + dir = 4 + }, +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_y = 6 + }, +/obj/structure/sign/directions/security{ + dir = 4; + pixel_y = -6 + }, +/turf/closed/wall/steel, +/area/ruin/unpowered/boarding_interior) +"hT" = ( +/obj/machinery/door/poddoor/ship{ + id = "PiratePortBay" + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"hV" = ( +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/structure/closet/crate{ + name = "PDC Ammunition" + }, +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"hX" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "top_torp" + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"hY" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/ruinloot/armory, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"hZ" = ( +/obj/structure/particle_accelerator/fuel_chamber{ + anchored = 1; + construction_state = 1; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"ic" = ( +/obj/machinery/ship_weapon/gauss_gun/east, +/obj/structure/hull_plate, +/obj/structure/hull_plate, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"ih" = ( +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/structure/closet/crate{ + name = "railgun projectile crate" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ii" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"il" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ + dir = 5 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"io" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"iy" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"iz" = ( +/obj/item/control_rod, +/obj/item/control_rod, +/obj/item/control_rod, +/obj/item/control_rod, +/obj/item/control_rod, +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"iA" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"iK" = ( +/obj/structure/rack, +/obj/item/clothing/gloves/color/yellow, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"iN" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"iV" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"iX" = ( +/obj/structure/table/wood/bar, +/obj/item/storage/box/donkpockets, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"jc" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/obj/item/inducer/eng, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"jf" = ( +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"jh" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "bottom_torp" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"jj" = ( +/obj/machinery/button/crematorium{ + id = "crematoriumChapel"; + pixel_x = -26 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"jo" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"jr" = ( +/obj/item/stack/tile/durasteel/techfloor, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"js" = ( +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"jt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/closet/radiation, +/obj/machinery/airalarm/all_access{ + pixel_y = 23 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"jw" = ( +/obj/machinery/rnd/production/techfab, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"jy" = ( +/obj/machinery/computer/operating{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"jJ" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"jK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"jN" = ( +/turf/open/floor/plating/rusty_techgrid, +/area/space/nearstation) +"jO" = ( +/obj/structure/table/wood/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"jT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"jV" = ( +/obj/structure/rack, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"jX" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"kb" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/unpowered/boarding_interior) +"ki" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"kl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"kn" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"kr" = ( +/obj/machinery/ammo_sorter{ + dir = 4; + id = "torp"; + name = "Torp Factory Input 2" + }, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"kt" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"kz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/rack, +/obj/item/storage/belt/utility/full/engi, +/obj/item/storage/belt/utility/full/engi, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"kA" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"kC" = ( +/obj/machinery/computer/ship/navigation/astrometrics{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"kD" = ( +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"kE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"kJ" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"la" = ( +/obj/structure/fluff/bleepypanel{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/computer/ship/helm{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"lb" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"lj" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"ln" = ( +/obj/structure/bodycontainer/crematorium{ + dir = 4; + id = "crematoriumChapel" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"lr" = ( +/obj/structure/sign/directions/plaque/munitions{ + dir = 1 + }, +/turf/closed/wall/steel, +/area/ruin/unpowered/boarding_interior) +"lu" = ( +/obj/machinery/missile_builder{ + dir = 1 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"lA" = ( +/obj/machinery/chem_dispenser, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"lE" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"lG" = ( +/obj/structure/particle_accelerator/particle_emitter/right{ + anchored = 1; + construction_state = 1; + dir = 8 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"lI" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"lL" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/light, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"lU" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"lX" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"ma" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/ruinloot, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"mb" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"md" = ( +/obj/machinery/door/poddoor/ship{ + id = "PirateSTBDbay" + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"me" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"mf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/rack, +/obj/item/storage/box/breacherslug, +/obj/item/storage/box/breacherslug, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"ml" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/fluff/support_beam{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"mn" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/foamedmetal, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"mo" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/ruin/unpowered/boarding_interior) +"mp" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"mr" = ( +/obj/machinery/door/airlock/ship, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ms" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"mu" = ( +/obj/structure/table/wood/bar, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"mx" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"my" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/button/door{ + id = "PiratePortBay"; + name = "Pod Bay Doors"; + pixel_y = -28 + }, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"mz" = ( +/obj/machinery/missile_builder/assembler{ + dir = 1 + }, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"mD" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/air_sensor/atmos/carbon_tank, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/engine/co2/light, +/area/ruin/unpowered/boarding_interior) +"mG" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"mN" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/item/reagent_containers/glass/bottle{ + list_reagents = list(/datum/resl=30); + name = "oil bottle"; + pixel_x = 1; + pixel_y = 4 + }, +/obj/item/reagent_containers/glass/bottle{ + list_reagents = list(/datum/resl=30); + name = "oil bottle"; + pixel_x = 1; + pixel_y = 4 + }, +/obj/item/reagent_containers/glass/bottle{ + list_reagents = list(/datum/resl=30); + name = "oil bottle"; + pixel_x = 1; + pixel_y = 4 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"mO" = ( +/obj/structure/lattice, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"mP" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/engine/o2/light, +/area/ruin/unpowered/boarding_interior) +"mS" = ( +/obj/machinery/missile_builder/wirer, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ne" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"nj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"nl" = ( +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"no" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/engine/plasma/light, +/area/ruin/unpowered/boarding_interior) +"np" = ( +/obj/structure/table/wood/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/chem_dispenser/drinks, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"ns" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"nv" = ( +/obj/machinery/light, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"nw" = ( +/obj/structure/table/wood/bar, +/obj/machinery/reagentgrinder, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"ny" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"nA" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"nB" = ( +/obj/structure/closet/secure_closet/miner/unlocked, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"nF" = ( +/obj/structure/hull_plate/end{ + dir = 5 + }, +/turf/open/space/basic, +/area/space/nearstation) +"nG" = ( +/obj/structure/closet/secure_closet/engineering_personal{ + locked = 0; + req_access = null + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"nJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/obj/machinery/door/airlock/ship, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"nO" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/advanced_airlock_controller/directional/north{ + req_access = null + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"nQ" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"nT" = ( +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/obj/machinery/door/airlock/ship, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"nY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"ob" = ( +/obj/machinery/door/airlock/ship{ + dir = 4 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"of" = ( +/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer2{ + dir = 4; + target_pressure = 1500; + node1_concentration = 0.67; + node2_concentration = 0.33 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"og" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"oj" = ( +/obj/structure/munitions_trolley, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"or" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/fire, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"ow" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"oy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"oz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"oB" = ( +/obj/structure/filingcabinet, +/obj/item/storage/backpack, +/obj/item/storage/box/ids, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"oE" = ( +/obj/structure/particle_accelerator/power_box{ + anchored = 1; + construction_state = 1; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ + dir = 10 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"oL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/computer/ship/reactor_control_computer{ + dir = 1; + reactor_id = "apirateslifeforme"; + req_access = null + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"oN" = ( +/obj/effect/spawner/room/fivexfour, +/turf/template_noop, +/area/ruin/unpowered/boarding_interior) +"oR" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"oV" = ( +/obj/structure/table/wood/bar, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"oZ" = ( +/obj/structure/table/wood/bar, +/obj/item/storage/box/ids, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"pe" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 4 + }, +/obj/machinery/computer/atmos_control/tank/nitrogen_tank, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"po" = ( +/obj/machinery/deepfryer, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"pq" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/space/nearstation) +"pt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"pv" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/engine/air/light, +/area/ruin/unpowered/boarding_interior) +"pw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"pD" = ( +/obj/structure/hull_plate, +/obj/structure/hull_plate, +/turf/open/floor/plating, +/area/space/nearstation) +"pE" = ( +/obj/structure/rack, +/obj/machinery/light, +/obj/item/gun/ballistic/revolver, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"pR" = ( +/obj/machinery/atmospherics/pipe/manifold/purple/visible/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"qa" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"qf" = ( +/obj/structure/table, +/obj/item/storage/firstaid/random, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"qk" = ( +/obj/machinery/button/door{ + id = "PiratePortBay"; + name = "Pod Bay Doors"; + pixel_y = -28 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"qm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"qn" = ( +/turf/closed/wall/r_wall/ship, +/area/space/nearstation) +"qo" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/filingcabinet, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"qr" = ( +/obj/machinery/missile_builder{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"qs" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"qx" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"qC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"qD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"qH" = ( +/obj/structure/grille, +/turf/open/space/basic, +/area/space) +"qK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"qY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"rc" = ( +/obj/structure/hull_plate, +/obj/structure/hull_plate, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"rr" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/twenty, +/obj/item/stack/cable_coil/pink, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"rx" = ( +/obj/machinery/door/airlock/ship/external{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"rE" = ( +/obj/machinery/door/airlock/ship, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"rG" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"rI" = ( +/obj/structure/fluff/support_beam{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"rP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"rU" = ( +/obj/structure/rack, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"rV" = ( +/obj/structure/fluff/bleepypanel, +/turf/closed/wall/r_wall/ship, +/area/ruin/unpowered/boarding_interior) +"rX" = ( +/obj/machinery/door/airlock/ship, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"sa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output, +/turf/open/floor/engine/air/light, +/area/ruin/unpowered/boarding_interior) +"sb" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"sm" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input, +/turf/open/floor/engine/o2/light, +/area/ruin/unpowered/boarding_interior) +"so" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/rack, +/obj/item/storage/box/lethalshot, +/obj/item/storage/box/lethalshot, +/obj/item/gun/ballistic/shotgun/lethal, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"sp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output, +/turf/open/floor/engine/co2/light, +/area/ruin/unpowered/boarding_interior) +"sq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"sr" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 4 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"sz" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/ruinloot/armory, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"sB" = ( +/obj/structure/closet/radiation, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"sN" = ( +/obj/structure/rack, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"sO" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"sQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"tb" = ( +/obj/structure/sign/directions/plaque/hangar{ + dir = 8 + }, +/turf/closed/wall/r_wall, +/area/ruin/unpowered/boarding_interior) +"te" = ( +/obj/item/ship_weapon/ammunition/torpedo/proto_disruption, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"tf" = ( +/turf/closed/wall/steel, +/area/ruin/unpowered/boarding_interior) +"th" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/fluff/broken_flooring, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"ti" = ( +/turf/closed/wall/r_wall, +/area/ruin/unpowered/boarding_interior) +"tn" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"ts" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ + dir = 8 + }, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"tz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/obj/machinery/door/airlock/ship, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"tC" = ( +/turf/open/floor/plating, +/area/space/nearstation) +"tD" = ( +/obj/structure/hull_plate, +/obj/structure/hull_plate, +/turf/open/space/basic, +/area/space/nearstation) +"tF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"tQ" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 8; + piping_layer = 2 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"tR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"tT" = ( +/obj/structure/overmap/small_craft/transport/sabre/mining{ + faction = "pirate"; + name = "Stolen Su-437 Sabre"; + random_name = 0; + req_one_access = null + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"tU" = ( +/obj/machinery/ship_weapon/hybrid_rail{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"tZ" = ( +/obj/structure/rack, +/obj/item/storage/belt/utility/full/engi, +/obj/item/storage/belt/utility/full/engi, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"ud" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ue" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"uk" = ( +/obj/machinery/door/airlock/ship, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"um" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ + dir = 4 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"uo" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/ruinloot/science, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ur" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ut" = ( +/obj/machinery/missile_builder/assembler{ + dir = 1 + }, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"uv" = ( +/obj/machinery/iv_drip, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"uw" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"uy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"uC" = ( +/obj/structure/table, +/obj/item/stack/sheet/mineral/titanium/fifty, +/obj/item/stack/sheet/duranium/fifty, +/obj/item/stack/sheet/mineral/plasma/twenty, +/obj/item/stack/sheet/mineral/silver/twenty, +/obj/item/stack/sheet/mineral/titanium/twenty, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"uE" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"uF" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"uG" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"uH" = ( +/obj/machinery/door/airlock/ship/external, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"uI" = ( +/turf/closed/wall/r_wall, +/area/space/nearstation) +"uK" = ( +/obj/machinery/atmospherics/components/binary/magnetic_constrictor{ + dir = 8; + piping_layer = 2 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"uM" = ( +/obj/machinery/armour_plating_nanorepair_pump/aft_port, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"uP" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ve" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"vf" = ( +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"vi" = ( +/obj/structure/particle_accelerator/end_cap{ + anchored = 1; + construction_state = 1; + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"vl" = ( +/obj/structure/sign/directions/command{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/ruin/unpowered/boarding_interior) +"vG" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"vJ" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"vK" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"vO" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"vQ" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc/auto_name/west, +/obj/structure/fluff/support_beam{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"vS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"vW" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"vX" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "top_torp" + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"wd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"wr" = ( +/obj/structure/sign/directions/science{ + dir = 4; + pixel_y = 4 + }, +/obj/structure/sign/directions/engineering{ + dir = 1; + pixel_y = -3 + }, +/obj/structure/sign/directions/command{ + dir = 4; + pixel_y = 10 + }, +/turf/closed/wall/steel, +/area/ruin/unpowered/boarding_interior) +"ws" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"wu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/ruinloot, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"wx" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ + dir = 5 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"wB" = ( +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 6 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"wC" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer2{ + dir = 8; + node1_concentration = 0.21; + node2_concentration = 0.79; + target_pressure = 1500 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"wK" = ( +/obj/machinery/gravity_generator/main/station, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"wQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"wV" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/air_sensor/atmos/air_tank, +/turf/open/floor/engine/air/light, +/area/ruin/unpowered/boarding_interior) +"wX" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"wY" = ( +/obj/structure/lattice, +/obj/machinery/button/door{ + id = "PirateSTBDbay"; + name = "Pod Bay Doors"; + pixel_y = 32 + }, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"wZ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"xc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"xi" = ( +/obj/item/ship_weapon/ammunition/torpedo/hull_shredder, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"xl" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"xm" = ( +/obj/machinery/door/airlock/ship{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"xo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"xp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrous_output, +/turf/open/floor/engine/n2o/light, +/area/ruin/unpowered/boarding_interior) +"xy" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 10 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"xC" = ( +/obj/machinery/door/airlock/ship/external, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"xE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"xF" = ( +/obj/structure/fluff/bleepypanel{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/computer/ship/dradis/mining{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"xI" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "top_torp" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"xM" = ( +/obj/machinery/mineral/ore_redemption{ + input_dir = 4; + output_dir = 8 + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"xN" = ( +/obj/structure/closet/crate, +/obj/item/circuitboard/machine/rdserver, +/obj/item/circuitboard/machine/mechfab, +/obj/item/circuitboard/machine/cell_charger, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"xP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"xS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/light, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"xU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"xV" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/brute, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"xX" = ( +/obj/machinery/door/airlock/ship, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"yb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/fluff/broken_flooring{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"yd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"ye" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"yf" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm/all_access{ + pixel_y = 23 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"yg" = ( +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"yk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"yl" = ( +/obj/machinery/chem_heater, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"yo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"yp" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/ruinloot/medical, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"yu" = ( +/obj/structure/fluff/support_beam{ + color = "#787878" + }, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"yE" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"yK" = ( +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/rods, +/obj/item/stack/tile/durasteel/techfloor, +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/item/pipe_dispenser, +/obj/item/stack/cable_coil/blue, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"yL" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"yQ" = ( +/obj/item/clothing/suit/space/pirate/boarder, +/obj/structure/table, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/eva, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"yT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/obj/machinery/door/airlock/ship, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"yU" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"yW" = ( +/obj/machinery/suit_storage_unit/mining/eva, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"zd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"ze" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"zf" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm/all_access{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"zk" = ( +/turf/closed/wall/r_wall/ship, +/area/ruin/unpowered/boarding_interior) +"zn" = ( +/obj/machinery/conveyor_switch{ + id = "bottom_torp" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"zs" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/machinery/air_sensor/atmos/nitrogen_tank, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/engine/n2/light, +/area/ruin/unpowered/boarding_interior) +"zv" = ( +/obj/machinery/suit_storage_unit/mining/eva, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"zy" = ( +/obj/structure/sign/directions/plaque/munitions{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ruin/unpowered/boarding_interior) +"zM" = ( +/obj/structure/sign/directions/plaque/munitions{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/ruin/unpowered/boarding_interior) +"zP" = ( +/obj/machinery/door/airlock/ship/external, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"zY" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Af" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Ap" = ( +/obj/structure/table/wood/bar, +/obj/structure/etherealball, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"Aq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"At" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Au" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Av" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/airlock/ship, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"AC" = ( +/obj/machinery/door/airlock/ship, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"AO" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/ruinloot, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"AU" = ( +/obj/effect/decal/cleanable/vomit, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"AW" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"AX" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"AZ" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/rifle/boltaction, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Bb" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Bg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/maintenance/seven, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Bi" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Bj" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Bm" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"By" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/closet/radiation, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"BH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output{ + dir = 8 + }, +/turf/open/floor/engine/plasma/light, +/area/ruin/unpowered/boarding_interior) +"BS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"BU" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"BW" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"Ca" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/toxin, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"Cc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Cd" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/advanced_airlock_controller/directional/west{ + req_access = null + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Ce" = ( +/obj/machinery/missile_builder, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Ck" = ( +/obj/machinery/ammo_sorter{ + dir = 4; + id = "torp2"; + name = "Torp Factory Output 2" + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Cm" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Co" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Cp" = ( +/obj/structure/chair/fancy/shuttle{ + color = "#696969"; + dir = 8; + name = "captain's chair" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Cu" = ( +/obj/effect/decal/cleanable/oil/streak, +/obj/machinery/computer/ammo_sorter{ + id = "torp2"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Cx" = ( +/obj/machinery/door/airlock/ship{ + dir = 4 + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Cy" = ( +/obj/structure/fluff/broken_flooring, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Cz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"CF" = ( +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"CG" = ( +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"CL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"CR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"CT" = ( +/turf/open/floor/plasteel/techmaint{ + initial_gas_mix = "TEMP=2.7" + }, +/area/space/nearstation) +"CU" = ( +/obj/machinery/smartfridge/chemistry/preloaded, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"CZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/item/clothing/head/helmet/decktech, +/obj/item/clothing/head/helmet/decktech, +/obj/item/clothing/head/helmet/decktech, +/obj/item/clothing/head/helmet/decktech, +/obj/structure/rack, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Dd" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/maintenance/seven, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Df" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Di" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 8 + }, +/obj/structure/fluff/broken_flooring{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Dj" = ( +/obj/machinery/computer/scan_consolenew{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"Ds" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/engine/co2/light, +/area/ruin/unpowered/boarding_interior) +"Dw" = ( +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/structure/closet/crate{ + name = "PDC Ammunition" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Dy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Dz" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"DD" = ( +/obj/machinery/ship_weapon/vls, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"DF" = ( +/obj/structure/fluff/bleepypanel{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/computer/ship/tactical{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"DH" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input, +/turf/open/floor/engine/air/light, +/area/ruin/unpowered/boarding_interior) +"DK" = ( +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 1 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"DM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"DN" = ( +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"DO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"DY" = ( +/obj/item/stack/sheet/mineral/wood/ten, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Ec" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"En" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Eq" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input, +/turf/open/floor/engine/co2/light, +/area/ruin/unpowered/boarding_interior) +"Er" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Es" = ( +/obj/structure/sign/directions/security{ + pixel_y = -19 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Ey" = ( +/obj/structure/munitions_trolley, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"EA" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"ED" = ( +/obj/structure/shuttle/engine/huge{ + dir = 8 + }, +/turf/open/space/basic, +/area/space/nearstation) +"EE" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"EH" = ( +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 4 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"EL" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/random, +/obj/item/storage/firstaid/random, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"EN" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"ER" = ( +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + name = "Nitrogen to Air Mix"; + target_pressure = 2000 + }, +/obj/machinery/atmospherics/components/binary/pump, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump/layer4{ + target_pressure = 1500 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ES" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Fo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Fp" = ( +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/item/ship_weapon/ammunition/railgun_ammo, +/obj/structure/closet/crate{ + name = "railgun projectile crate" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Fs" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Ft" = ( +/obj/structure/overmap/small_craft/transport/sabre/mining{ + faction = "pirate"; + name = "Stolen Su-437 Sabre"; + random_name = 0; + req_one_access = null + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"FB" = ( +/obj/structure/rack, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"FJ" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"FP" = ( +/obj/machinery/light, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"FR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"FU" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Gg" = ( +/obj/structure/table/wood/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/donkpockets, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Gk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Gm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"Go" = ( +/obj/machinery/suit_storage_unit/pirate, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Gp" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Gt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Gw" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/obj/machinery/atmospherics/components/binary/pump/layer2{ + target_pressure = 1500 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Gy" = ( +/obj/machinery/missile_builder/screwdriver, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"GI" = ( +/turf/closed/wall/r_wall/ship, +/area/space) +"GM" = ( +/obj/structure/hull_plate, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"GR" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 4 + }, +/obj/machinery/computer/atmos_control/tank/carbon_tank, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"GT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"GY" = ( +/turf/open/space/basic, +/area/space) +"Hb" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "bottom_torp" + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Hd" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrous_input, +/turf/open/floor/engine/n2o/light, +/area/ruin/unpowered/boarding_interior) +"Ho" = ( +/obj/machinery/computer/ams{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Hq" = ( +/obj/structure/girder, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Hz" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/fluff/broken_flooring{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"HE" = ( +/obj/structure/grille, +/turf/open/space/basic, +/area/space/nearstation) +"HI" = ( +/obj/structure/rack, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"HK" = ( +/obj/machinery/missile_builder/screwdriver, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"HM" = ( +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/unpowered/boarding_interior) +"HN" = ( +/turf/open/space/basic, +/area/space/nearstation) +"HR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output, +/turf/open/floor/engine/o2/light, +/area/ruin/unpowered/boarding_interior) +"HU" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/rods, +/obj/item/stack/tile/durasteel/techfloor, +/obj/item/pipe_dispenser, +/obj/item/stack/cable_coil/blue, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"HW" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "top_torp" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Id" = ( +/obj/machinery/missile_builder, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Ig" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/machinery/computer/ship/munitions_computer/west{ + pixel_x = -8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Ik" = ( +/turf/open/floor/engine/o2/light, +/area/ruin/unpowered/boarding_interior) +"Ip" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 9 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Iq" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"Is" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"Iv" = ( +/obj/machinery/door/airlock/ship, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Iz" = ( +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/decal/cleanable/blood/gibs/limb, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"IA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"IB" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"IC" = ( +/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer4{ + dir = 8; + node1_concentration = 1.0; + node2_concentration = 0.0; + target_pressure = 1500 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"IE" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table/wood/bar, +/obj/item/storage/backpack, +/obj/item/storage/backpack, +/obj/item/storage/backpack, +/obj/item/storage/backpack, +/obj/item/storage/backpack, +/obj/item/storage/backpack, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"IG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"IK" = ( +/obj/structure/fluff/broken_flooring{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"IN" = ( +/obj/structure/grille/broken, +/turf/open/space/basic, +/area/space) +"IP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"IT" = ( +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"IU" = ( +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"IY" = ( +/obj/machinery/computer/ship/dradis, +/turf/closed/wall/r_wall/ship, +/area/ruin/unpowered/boarding_interior) +"Jh" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Jt" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"JA" = ( +/obj/machinery/missile_builder/assembler, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"JD" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"JG" = ( +/obj/structure/munitions_trolley, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"JK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/clothing/gloves/color/yellow, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"JM" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"JO" = ( +/obj/machinery/door/poddoor/ship{ + id = "PirateSTBDbay" + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"JP" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"JR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"JT" = ( +/obj/structure/fluff/broken_flooring{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"JW" = ( +/obj/effect/spawner/lootdrop/armory_contraband, +/obj/structure/rack, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Ka" = ( +/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer4{ + dir = 8; + target_pressure = 1500s + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Kc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Kh" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/obj/structure/lattice/catwalk, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Kj" = ( +/obj/structure/table, +/obj/item/storage/backpack/duffelbag/med/surgery, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"Kk" = ( +/turf/open/floor/engine/plasma/light, +/area/ruin/unpowered/boarding_interior) +"Ko" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Ks" = ( +/obj/machinery/airalarm/all_access{ + pixel_y = 23 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Kx" = ( +/obj/structure/sign/directions/medical{ + dir = 8 + }, +/obj/structure/sign/directions/supply{ + dir = 8; + pixel_y = 6 + }, +/obj/structure/sign/directions/security{ + dir = 4; + pixel_y = -6 + }, +/turf/closed/wall/steel, +/area/ruin/unpowered/boarding_interior) +"Ky" = ( +/obj/machinery/armour_plating_nanorepair_pump/aft_starboard, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"KI" = ( +/obj/machinery/armour_plating_nanorepair_well{ + apnw_id = "poolnoodles" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"KJ" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"KK" = ( +/obj/structure/closet/secure_closet/engineering_welding{ + locked = 0 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"KM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"KR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/structure/table, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"KV" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/air_sensor/atmos/oxygen_tank, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/engine/o2/light, +/area/ruin/unpowered/boarding_interior) +"Ll" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Ln" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Lo" = ( +/obj/structure/foamedmetal, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Ly" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"LA" = ( +/obj/machinery/door/airlock/ship/external{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"LB" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"LJ" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/button/door{ + id = "PirateSTBDbay"; + name = "Pod Bay Doors"; + pixel_y = 32 + }, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"LK" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "bottom_torp" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"LN" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"LO" = ( +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + name = "Oxygen to Air Mix"; + target_pressure = 2000 + }, +/obj/machinery/atmospherics/components/binary/pump, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump/layer4{ + target_pressure = 1500 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"LR" = ( +/obj/machinery/clonepod/prefilled, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"LS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"LW" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"LZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Mc" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Mf" = ( +/obj/machinery/door/airlock/ship/external{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Mh" = ( +/obj/structure/hull_plate/end{ + dir = 6 + }, +/turf/open/space/basic, +/area/space/nearstation) +"Mj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Ml" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Mp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Mx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"MB" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"MH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"MJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"MV" = ( +/obj/machinery/light, +/turf/open/floor/engine/plasma/light, +/area/ruin/unpowered/boarding_interior) +"Na" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Nd" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Ni" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Nm" = ( +/obj/item/ship_weapon/ammunition/torpedo/hull_shredder, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Nn" = ( +/obj/structure/closet/crate{ + name = "Stolen Ore Silo Construction Crate" + }, +/obj/item/circuitboard/machine/ore_silo, +/obj/item/stack/sheet/iron/ten, +/obj/item/stack/cable_coil/blue, +/obj/item/multitool, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Nx" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/fluff/support_beam{ + color = "#787878" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"NA" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"NC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ND" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"NE" = ( +/obj/machinery/airalarm/all_access{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"NG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"NJ" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"NK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"NO" = ( +/obj/effect/landmark/asteroid_spawn, +/turf/open/space/basic, +/area/space/nearstation) +"NP" = ( +/obj/machinery/dna_scannernew, +/obj/machinery/light, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"NR" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"NS" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"NU" = ( +/obj/machinery/missile_builder{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"NW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/maintenance/seven, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"NX" = ( +/obj/structure/rack, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"NY" = ( +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"NZ" = ( +/obj/structure/sign/directions/plaque/munitions{ + dir = 1 + }, +/turf/closed/wall/r_wall/ship, +/area/ruin/unpowered/boarding_interior) +"Oa" = ( +/obj/machinery/missile_builder/welder{ + dir = 1 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Od" = ( +/obj/structure/chair/fancy/shuttle{ + color = "#696969"; + dir = 4; + name = "captain's chair" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Oj" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Oo" = ( +/obj/structure/sign/directions/medical{ + dir = 1 + }, +/obj/structure/sign/directions/supply{ + pixel_y = 6 + }, +/obj/structure/sign/directions/security{ + dir = 4; + pixel_y = -6 + }, +/turf/closed/wall/steel, +/area/ruin/unpowered/boarding_interior) +"Oq" = ( +/obj/machinery/door/airlock/ship/external, +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Ou" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Oy" = ( +/obj/item/ship_weapon/ammunition/torpedo/proto_disruption, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"OC" = ( +/obj/structure/rack, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"OD" = ( +/obj/machinery/atmospherics/components/binary/pump, +/obj/machinery/atmospherics/components/binary/pump/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ON" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"OP" = ( +/obj/structure/reagent_dispensers/fueltank/cryogenic_fuel, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"OQ" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/ruinloot/important, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"OW" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"OX" = ( +/obj/machinery/missile_builder/screwdriver{ + dir = 1 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Pb" = ( +/obj/item/clothing/suit/space/pirate/boarder/lead, +/obj/structure/table/wood/bar, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/head/helmet/space/eva, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"Pk" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Pm" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Po" = ( +/obj/machinery/missile_builder/assembler{ + dir = 1 + }, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Ps" = ( +/obj/structure/fluff/broken_flooring{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"Pu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Pv" = ( +/obj/machinery/door/airlock/ship/external, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Pw" = ( +/obj/machinery/door/airlock/ship/external{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Py" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Pz" = ( +/obj/machinery/light, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"PB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"PC" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"PE" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 8 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"PI" = ( +/obj/machinery/computer/ship/ftl_computer{ + req_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"PL" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"PM" = ( +/obj/structure/closet/secure_closet/atmospherics{ + req_access = null + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"PO" = ( +/obj/structure/table/wood/bar, +/obj/effect/spawner/lootdrop/donkpockets, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"PP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"PQ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"PV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Qc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"Qe" = ( +/obj/machinery/missile_builder/assembler, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Qg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Qj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Qm" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 4; + pixel_y = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Qn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/machinery/computer/ship/munitions_computer/west{ + pixel_x = -8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Qo" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/fluff/support_beam, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Qs" = ( +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Qy" = ( +/obj/machinery/armour_plating_nanorepair_pump/forward_starboard, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"QA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"QK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output, +/turf/open/floor/engine/n2/light, +/area/ruin/unpowered/boarding_interior) +"QN" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"QP" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/engine/n2/light, +/area/ruin/unpowered/boarding_interior) +"QQ" = ( +/obj/structure/cable/yellow, +/obj/machinery/atmospherics/components/binary/stormdrive_reactor{ + reactor_id = "apirateslifeforme" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"QR" = ( +/obj/machinery/computer/ship/munitions_computer/west{ + pixel_x = -8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"QT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/costume, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"QV" = ( +/obj/effect/spawner/room/threexfive, +/turf/template_noop, +/area/ruin/unpowered/boarding_interior) +"QW" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Rb" = ( +/obj/structure/hull_plate/end, +/turf/open/space/basic, +/area/space/nearstation) +"Rc" = ( +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/obj/structure/fluff/fokoff_sign, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Re" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Ri" = ( +/obj/machinery/missile_builder/screwdriver{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Rj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Rl" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Rp" = ( +/obj/structure/rack, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Rt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Rz" = ( +/obj/machinery/airalarm/all_access{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"RA" = ( +/obj/structure/particle_accelerator/particle_emitter/left{ + anchored = 1; + construction_state = 1; + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/boarding_interior) +"RD" = ( +/obj/machinery/light, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"RI" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/advanced_airlock_controller/directional/north{ + req_access = null + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"RJ" = ( +/obj/structure/sign/directions/science{ + dir = 1; + pixel_y = 4 + }, +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = -3 + }, +/obj/structure/sign/directions/command{ + dir = 4; + pixel_y = 10 + }, +/turf/closed/wall/steel, +/area/ruin/unpowered/boarding_interior) +"RK" = ( +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/unpowered/boarding_interior) +"RP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/fluff/broken_flooring, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"RT" = ( +/obj/machinery/computer/atmos_control/tank/oxygen_tank, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"RY" = ( +/obj/structure/rack, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Sa" = ( +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Se" = ( +/obj/machinery/door/airlock/ship/external, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Sg" = ( +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Sj" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Sx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Sz" = ( +/obj/structure/closet/secure_closet/medical1{ + req_access = null + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"SB" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"SC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"SH" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"SN" = ( +/obj/structure/closet/crate, +/obj/item/clothing/suit/space/pirate/boarder/lead, +/obj/item/melee/transforming/energy/sword/pirate, +/obj/item/clothing/head/pirate/captain, +/obj/item/gun/ballistic/automatic/pistol/deagle/gold, +/obj/item/ammo_box/magazine/m50, +/obj/item/clothing/head/helmet/space/eva, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"SP" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"SQ" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/costume, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"SY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/fluff/broken_flooring{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Tb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Th" = ( +/obj/structure/lattice, +/obj/structure/overmap/small_craft/transport/sabre/mining{ + faction = "pirate"; + name = "Stolen Su-437 Sabre"; + random_name = 0; + req_one_access = null + }, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"Tk" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/unpowered/boarding_interior) +"Tm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ + dir = 4 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Tt" = ( +/obj/structure/lattice, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"Ty" = ( +/obj/item/defibrillator/loaded, +/obj/structure/closet/secure_closet/medical3{ + req_access = null + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"TK" = ( +/obj/effect/decal/cleanable/vomit, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"TO" = ( +/obj/machinery/computer/ship/mineral_magnet{ + density = 0; + pixel_y = 26; + req_access = null + }, +/obj/structure/lattice/catwalk, +/obj/machinery/light{ + dir = 4; + pixel_x = 32 + }, +/obj/machinery/computer/ship/mineral_magnet{ + density = 0; + pixel_y = 26; + req_access = null + }, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"TP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"TS" = ( +/obj/structure/hull_plate, +/obj/machinery/gauss_dispenser, +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"TT" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"TU" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/computer/atmos_control/tank/nitrous_tank, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"TX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/decal/cleanable/vomit, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Ud" = ( +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Uf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Ui" = ( +/obj/item/control_rod, +/obj/item/control_rod, +/obj/item/control_rod, +/obj/item/control_rod, +/obj/item/control_rod, +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Ul" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"Uq" = ( +/obj/machinery/door/airlock/ship/external{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Ur" = ( +/obj/structure/table, +/obj/item/storage/box/beakers{ + pixel_x = 3 + }, +/obj/item/storage/box/bodybags, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"Us" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Uu" = ( +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Uv" = ( +/obj/machinery/door/airlock/ship{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"UC" = ( +/obj/structure/rack, +/obj/item/ammo_box/magazine/m45, +/obj/item/ammo_box/magazine/m45, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"UD" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/engine/n2o/light, +/area/ruin/unpowered/boarding_interior) +"UE" = ( +/obj/machinery/ammo_sorter{ + dir = 4; + id = "torp"; + name = "Torp Factory Input 1" + }, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"UI" = ( +/obj/machinery/computer/ship/munitions_computer/west{ + pixel_x = -8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"UK" = ( +/obj/structure/table/wood/bar, +/obj/item/bedsheet/double/red, +/obj/item/toy/plush/carpplushie, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"UM" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/engine/co2/light, +/area/ruin/unpowered/boarding_interior) +"US" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"UU" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/machinery/air_sensor/atmos/nitrous_tank, +/turf/open/floor/engine/n2o/light, +/area/ruin/unpowered/boarding_interior) +"UZ" = ( +/obj/machinery/ship_weapon/vls, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Vg" = ( +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/obj/machinery/door/airlock/ship, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Vj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Vp" = ( +/obj/structure/table/reinforced, +/obj/machinery/reagentgrinder, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Vq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Vs" = ( +/obj/machinery/computer/ammo_sorter{ + id = "torp" + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Vu" = ( +/obj/item/stack/sheet/mineral/wood/ten, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Vw" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Vx" = ( +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 9 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"Vz" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"VB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"VM" = ( +/obj/structure/fluff/broken_flooring{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"VN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"VO" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/obj/item/ammo_box/a762, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"VS" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"VZ" = ( +/turf/closed/wall/ship, +/area/ruin/unpowered/boarding_interior) +"Wc" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Wh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Wl" = ( +/obj/machinery/vending/boozeomat, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Wp" = ( +/obj/machinery/missile_builder, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Wr" = ( +/obj/machinery/missile_builder/assembler{ + dir = 1 + }, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Wt" = ( +/obj/structure/closet/crate{ + name = "Damage Control Crate" + }, +/obj/effect/spawner/lootdrop/ruinloot/basic, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Wu" = ( +/obj/structure/fluff/support_beam{ + dir = 4 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Wx" = ( +/obj/machinery/ship_weapon/pdc_mount/north, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Wz" = ( +/obj/machinery/ammo_sorter{ + dir = 4; + id = "torp2"; + name = "Torp Factory Output 1" + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"WA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"WB" = ( +/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer4{ + dir = 8; + node1_concentration = 1; + node2_concentration = 0.0; + target_pressure = 1500 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"WE" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"WG" = ( +/obj/machinery/door/airlock/ship{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"WJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"WM" = ( +/obj/machinery/vendor/mining, +/obj/machinery/light, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"WX" = ( +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/obj/structure/fluff/support_beam{ + color = "#787878"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Xb" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Xe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/carpet/grimy, +/area/ruin/unpowered/boarding_interior) +"Xg" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"Xj" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/tommygun, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Xn" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Xs" = ( +/obj/machinery/missile_builder/wirer{ + dir = 1 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Xx" = ( +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"XF" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"XH" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"XI" = ( +/obj/machinery/atmospherics/components/binary/pump/on/layer2, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"XM" = ( +/obj/structure/table, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"XO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"XR" = ( +/obj/machinery/stasis, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"XS" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"XT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Yj" = ( +/obj/structure/closet/secure_closet/engineering_personal{ + locked = 0; + req_access = null + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Yn" = ( +/obj/machinery/door/airlock/ship{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Yz" = ( +/obj/machinery/conveyor/slow{ + dir = 4; + id = "bottom_torp" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"YF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"YP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/advanced_airlock_controller/directional/west{ + req_access = null + }, +/obj/structure/fluff/support_beam{ + color = "#787878" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"YS" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ + dir = 9 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"YT" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste, +/turf/open/space/basic, +/area/ruin/unpowered/boarding_interior) +"YV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/boarding_interior) +"YW" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"YZ" = ( +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Ze" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"Zf" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/glass/bottle{ + list_reagents = list(/datum/resl=30); + name = "oil bottle"; + pixel_x = 1; + pixel_y = 4 + }, +/obj/item/reagent_containers/glass/bottle{ + list_reagents = list(/datum/resl=30); + name = "oil bottle"; + pixel_x = 1; + pixel_y = 4 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/boarding_interior) +"Zi" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Zl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Zp" = ( +/obj/machinery/door/poddoor/ship{ + id = "PiratePortBay" + }, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"Zs" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"Zt" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ + dir = 6 + }, +/obj/machinery/computer/atmos_control/tank/toxin_tank{ + dir = 8 + }, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"Zw" = ( +/obj/machinery/door/airlock/ship, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/heavy{ + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"Zz" = ( +/obj/structure/hull_plate/end{ + dir = 4 + }, +/turf/open/space/basic, +/area/space/nearstation) +"ZB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"ZD" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) +"ZF" = ( +/obj/machinery/conveyor_switch{ + id = "top_torp" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ZG" = ( +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plating/rusty_techgrid, +/area/ruin/unpowered/boarding_interior) +"ZI" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/open/floor/plasteel, +/area/ruin/unpowered/boarding_interior) +"ZV" = ( +/obj/item/stack/sheet/mineral/wood, +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/monotile/steel, +/area/ruin/unpowered/boarding_interior) +"ZX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/plasteel/techmaint, +/area/ruin/unpowered/boarding_interior) + +(1,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(2,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(3,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(4,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(5,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(6,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(7,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(8,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(9,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(10,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(11,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(12,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(13,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(14,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(15,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(16,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(17,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(18,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(19,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(20,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(21,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(22,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(23,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(24,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(25,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(26,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(27,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(28,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(29,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(30,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(31,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(32,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(33,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(34,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(35,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(36,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(37,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(38,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(39,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(40,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(41,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(42,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(43,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(44,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(45,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(46,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(47,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(48,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(49,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(50,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(51,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(52,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(53,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(54,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(55,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(56,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(57,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(58,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(59,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(60,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(61,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +NO +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(62,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(63,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(64,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(65,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(66,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(67,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(68,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(69,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(70,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(71,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(72,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(73,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(74,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(75,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(76,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(77,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(78,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(79,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(80,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(81,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(82,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(83,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(84,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(85,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(86,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(87,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(88,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(89,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(90,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(91,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(92,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(93,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(94,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(95,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(96,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(97,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(98,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +XS +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(99,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(100,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +HN +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(101,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +CT +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(102,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +CT +XS +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(103,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +BW +BW +BW +BW +BW +ej +BW +BW +BW +BW +BW +BW +BW +uI +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +BW +uI +BW +BW +BW +BW +BW +BW +ej +BW +XS +BW +BW +BW +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(104,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HN +BW +uI +BW +HN +BW +bU +pq +pq +BW +zk +PL +LA +PL +zk +BW +HE +HE +HE +HE +HE +BW +uI +BW +HN +HN +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(105,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HN +BW +uI +BW +HN +BW +VZ +TO +BW +jN +PL +nl +Fs +nl +PL +BW +qn +qn +qn +qn +qn +BW +uI +BW +HN +HN +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(106,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +BW +BW +BW +BW +uI +BW +BW +BW +VZ +tC +XS +tC +zk +nO +Fo +Fs +zk +BW +BW +BW +BW +BW +BW +BW +uI +BW +BW +BW +BW +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(107,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +iA +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +Cc +Pw +Cc +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +iA +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(108,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +my +zk +NY +NY +NY +Tt +NY +Bm +NY +zk +yW +jf +jf +XT +uw +Uf +YZ +NY +nB +zk +jf +jf +Bm +Bi +jf +jf +jf +zk +wY +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(109,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +BW +hT +Bm +iA +jf +jf +Ft +iA +NY +zk +zv +Ec +MJ +eC +Qj +fI +nj +qC +WM +zk +jf +iA +CF +CF +tT +Bm +NY +md +BW +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(110,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +BW +Zp +jf +jf +CF +CF +CF +jf +Bm +zk +yW +YZ +jf +NY +Fo +jf +NY +NY +nB +zk +jf +CF +CF +CF +CF +jf +NY +md +BW +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(111,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +BW +Zp +iA +jf +CF +CF +CF +jf +Pz +zk +ti +ti +ti +Cx +XO +Cx +xM +ti +ti +zk +mO +CF +CF +CF +CF +jf +iA +JO +BW +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(112,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +BW +Zp +jf +Bm +jf +jf +iA +jf +NY +PL +OP +jf +Uu +Uu +Fo +jf +Uu +jf +OP +PL +jf +NY +iA +jf +jf +iA +jf +JO +XS +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(113,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +BW +Zp +jf +jf +CF +jf +Th +jf +iA +PL +jf +Gt +nj +fI +Vw +em +eC +ze +OP +PL +jf +NY +Bm +jf +tT +CF +jf +JO +BW +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(114,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +BW +Zp +jf +iA +CF +jf +CF +CF +NY +PL +fh +YZ +NY +NY +tR +jf +Uu +Uu +qx +PL +jf +NY +jf +jf +CF +CF +um +JO +BW +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(115,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HN +iA +hT +NY +CF +CF +jf +CF +CF +qk +ti +ti +ti +ti +yf +Fo +jf +zk +zk +zk +zk +wY +NY +jf +jf +jf +jf +Sa +eW +iA +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(116,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HN +my +zk +NY +iA +NY +Ln +iA +NY +jN +Oq +Gp +eS +fG +Wh +uw +Wh +fG +eS +sb +Oq +jf +wB +vf +vf +dH +DK +Vx +zk +LJ +HN +HN +HN +HN +HN +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(117,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +ED +YT +Kh +zk +zk +zk +zk +zk +zk +zk +zk +zk +rG +Qs +zk +jf +Fo +jf +zk +Qs +rG +zk +PL +og +PL +zk +zk +zk +zk +zk +iA +HN +HN +HN +HN +ED +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(118,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HN +zk +JM +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +Cx +XO +Cx +zk +zk +zk +zk +ba +RK +ba +ba +ti +ti +ti +zk +zk +zk +zk +HN +HN +HN +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(119,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HN +HN +zk +wQ +mn +Nx +cj +XF +Bj +NY +ye +ye +ow +En +FJ +tf +YZ +fs +YZ +tb +JD +Sj +hl +mo +HM +CF +IT +tf +tf +tf +ti +ti +ti +zk +HN +HN +HN +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(120,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +qn +qn +qn +zk +ti +tf +tf +tf +tf +mG +NY +YZ +ye +ZI +En +FJ +tf +YZ +fs +LW +ti +rx +ti +Is +Tk +QQ +kb +ba +tf +CF +CF +CF +bp +ti +zk +qn +qn +bU +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(121,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +qn +qn +zk +ti +tf +tf +tf +tf +hM +YZ +YZ +Gt +Mp +il +YZ +tf +NY +fs +YZ +cd +Us +cd +Ui +mo +bz +kb +DN +tf +QW +CF +wK +CF +ti +tf +qn +qn +HN +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(122,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +qn +zk +ti +sm +KV +mP +Co +io +RT +Vz +YZ +Uu +kE +LW +tf +NY +At +pw +cd +Pu +cd +iz +lj +eV +ba +ba +tf +CF +CF +CF +CF +ti +zk +qn +HN +HE +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(123,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +zk +ti +Ik +HR +mP +Co +LO +sO +Jt +dT +CF +ue +YZ +tf +Ks +ey +am +tf +eQ +ti +cd +cd +vK +PL +PL +tf +lX +PC +fQ +CF +ti +zk +HN +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(124,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +qH +qH +HN +HN +zk +ti +PL +PL +PL +PL +hM +lU +vJ +vO +YZ +aL +IU +tf +YZ +dV +YZ +tf +WE +Uu +Uu +Ps +cC +ba +ba +YZ +YZ +YZ +YZ +YZ +ti +zk +XS +XS +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(125,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +GI +qH +XS +XS +zk +ti +gZ +zs +bW +ne +lb +pe +ZD +BU +hu +ue +YZ +tf +Re +ey +jf +tf +kl +jo +Uu +ba +Xn +YZ +YZ +YZ +YZ +GT +YZ +YZ +ti +zk +HN +HN +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(126,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +qH +HN +HN +zk +ti +QP +QK +bW +Co +ER +wC +uF +Ka +uy +kE +YZ +tf +jf +fs +YZ +tf +tF +mp +Gk +RA +dt +lG +YZ +NY +Vz +cv +YZ +YZ +tf +zk +XS +XS +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(127,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +qH +XS +XS +zk +ti +PL +PL +PL +PL +iV +iN +vJ +cU +uy +kE +YZ +tf +YZ +fs +YZ +tf +YV +mp +eH +oL +oE +iy +yL +AX +CF +ae +NY +LW +tf +zk +HN +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(128,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +IN +HN +HN +zk +ti +Hd +UU +UD +Co +Cz +TU +LB +jT +Nd +hN +bf +mr +Kc +OW +DM +Zw +Rl +Vj +lI +ec +hZ +FR +IG +Tm +Tb +Qg +qD +Vz +tf +zk +HN +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(129,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +GI +qH +HN +HN +zk +ti +eL +xp +UD +ne +OD +ms +Pm +IC +xE +aL +uy +hR +YZ +Mj +LW +tf +By +WE +CR +tn +vi +jJ +YZ +nQ +YZ +YZ +uy +YZ +tf +zk +XS +XS +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(130,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +qH +XS +XS +zk +ti +PL +PL +PL +PL +YZ +lU +vJ +vO +uy +aL +uy +wr +jf +qK +CF +tf +jt +WE +CR +NY +Uu +vW +NY +of +fi +wx +xE +IK +tf +zk +HN +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(131,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +GI +qH +HN +HN +zk +ti +Eq +mD +Ds +Co +YZ +GR +vJ +Di +uy +kE +xS +cI +YZ +Na +VM +fF +Xg +Py +ae +Uu +Uu +Uu +YZ +nQ +uK +uK +uy +YZ +tf +zk +XS +XS +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(132,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +qH +XS +XS +zk +ti +UM +sp +Ds +Co +OD +ms +Pm +WB +TP +ts +eH +tf +BS +Oj +YZ +tf +FU +Zs +CR +vW +CF +CF +YZ +iV +pR +mb +uy +NY +tf +zk +HN +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(133,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HE +HE +HE +HN +HN +zk +ti +PL +PL +PL +PL +YZ +sr +PE +vO +YZ +ue +uy +tf +YZ +Na +YZ +tf +Mc +Zs +db +YZ +NY +YZ +NY +vO +nQ +YZ +LN +YZ +tf +zk +HN +HN +HE +HE +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(134,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HN +HN +HN +HN +HN +zk +ti +cK +DH +pv +Co +kJ +uG +PE +xy +EN +Au +yU +KJ +jX +xl +jX +KJ +jc +TT +AW +ur +fC +Zt +Gw +Zi +mb +Vz +YZ +FP +tf +zk +HN +HN +HN +HN +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(135,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HN +ED +HN +HN +ED +zk +ti +cK +wV +cK +PL +eX +CF +vJ +oy +Vz +ue +uy +cd +YZ +Mj +YZ +cd +Uu +mp +NA +zk +PL +eB +PL +zk +YZ +IK +YZ +YZ +tf +zk +HN +HN +ED +HN +HN +ED +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(136,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HN +HN +HN +HN +HN +zk +ti +cK +sa +pv +ne +XI +WJ +yE +cb +Ko +YS +wX +NS +JP +kt +JP +NS +ve +cA +Ip +PL +Kk +BH +MV +zk +Re +YZ +CF +YZ +tf +zk +HN +HN +HN +HN +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(137,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +HN +HN +HN +HN +HN +zk +ti +ti +ti +ti +ti +NE +tQ +Bb +PM +cv +YZ +uy +tf +YZ +Mj +YZ +tf +Wc +mp +Uu +Co +no +eb +Kk +zk +YZ +YZ +YZ +YZ +tf +zk +HN +HN +HN +HN +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(138,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +bU +zk +zk +zk +zk +zk +zk +ti +ti +ti +ti +ti +tf +lX +lX +PC +xm +lX +Hq +tf +Cx +MH +Cx +tf +tf +WG +ti +zk +zk +zk +zk +zk +tf +tf +Cx +tf +tf +zk +zk +zk +zk +zk +bU +bU +GY +GY +qH +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(139,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +bU +zk +fE +fE +fE +fE +QV +ti +fW +eZ +xV +ti +sB +Uu +ck +cR +CR +Uu +eH +tf +NE +qK +gf +tf +uC +Af +NY +Uu +NY +YZ +Uu +zk +YZ +YZ +Uu +kA +tf +tf +tf +tf +tf +zk +bU +BW +GY +GY +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(140,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +zk +fE +fE +fE +fE +fE +xX +hr +Qc +hr +ti +KK +SC +kz +fI +Er +iK +JK +cd +YZ +qK +YZ +tf +Ml +qa +Uu +uM +hu +Ky +Uu +zk +YZ +hu +NY +aI +tf +tf +zk +zk +zk +zk +BW +BW +oR +oR +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(141,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +zk +fE +fE +fE +fE +fE +ti +SP +Ul +CF +ti +Yj +YZ +tZ +Uu +NC +eC +qY +cd +YZ +SH +bq +fm +Vq +KI +dw +QA +ff +QA +QA +rE +QA +ff +cq +ZX +Uu +bs +uE +Cd +EE +PL +BW +BW +GY +GY +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(142,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +zk +tf +tf +tf +Cx +ti +ti +Rz +Ul +hr +ti +nG +Uu +Uu +lE +YZ +XH +Qm +tf +Re +qK +Hz +tf +NE +Uu +KR +dM +Uu +Qy +NY +zk +Uu +NY +CF +JR +qm +gy +xC +cq +nA +uH +BW +BW +oR +oR +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(143,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +zk +fE +fE +fE +oN +ti +or +hr +Ul +hr +zk +ti +ti +ti +ti +zk +zk +tf +ti +Gt +NR +me +tf +YZ +Uu +kn +Uu +Uu +YZ +YZ +zk +kn +Uu +Uu +Uu +YF +JR +uE +eo +EE +PL +BW +HN +GY +GY +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(144,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +zk +fE +fE +fE +fE +ti +Ca +CF +Ul +hr +ti +aH +jy +hr +jj +ln +hr +Iq +ti +YZ +Df +me +tf +tf +tf +tf +Cx +zk +zk +zk +zk +tf +tf +Cx +ti +zk +zk +zk +zk +zk +zk +BW +HN +qH +IN +qH +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(145,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +zk +fE +fE +fE +fE +ti +EL +hr +ae +hr +cd +aX +bd +bd +Iz +NJ +hr +Ni +cd +NY +Na +WE +ti +NY +NY +NY +YZ +IK +YZ +YZ +NY +gs +NY +NY +sz +zk +fE +fE +fE +oN +PL +BW +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(146,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +qH +qH +HN +HN +zk +fE +fE +fE +fE +ti +cp +hr +Ul +hr +cd +XM +DO +NY +CF +jf +jf +hr +cd +YZ +Mj +me +ti +NY +Wt +YZ +OQ +YZ +yp +YZ +uo +YZ +YZ +YZ +NY +zk +fE +fE +fE +fE +PL +BW +XS +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(147,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +qH +XS +XS +zk +fE +fE +fE +fE +ti +eZ +CF +sq +xc +tz +xc +Gm +xc +cq +Wh +br +xc +rE +Kc +PQ +me +xX +NY +YZ +oy +YZ +YZ +NY +YZ +aM +IK +yp +YZ +NY +AC +fE +fE +fE +fE +PL +BW +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(148,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +qH +HN +HN +zk +tf +tf +Cx +tf +ti +ti +uv +zd +hr +cd +jf +hr +CF +VM +NY +wd +NP +cI +YZ +Mj +hH +tf +VS +NY +Bg +YZ +gs +VM +ma +YZ +hu +Dd +YZ +NY +zk +fE +fE +fE +fE +PL +BW +XS +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(149,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +GI +qH +XS +XS +zk +jV +JG +Uu +Uu +FB +ti +Xx +xP +CF +ti +Rz +IK +hr +hr +ki +yo +Dj +cd +YZ +Df +me +tf +NY +hY +yd +YZ +YZ +YZ +Dd +YZ +wu +NY +NY +gs +zk +fE +fE +fE +fE +PL +BW +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(150,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +qH +HN +HN +zk +OC +Uu +Uu +Uu +Rp +ti +Ze +Kj +qf +ti +Ty +Ty +Ur +XR +ac +wd +LR +cd +YZ +Mj +me +fF +YZ +jf +QT +CF +ma +YZ +YZ +CF +ny +Pz +ti +ti +zk +zk +Cx +zk +zk +zk +BW +XS +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(151,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +IN +HN +HN +zk +HI +Uu +rU +Uu +HI +ti +ti +ti +ti +ti +tf +tf +tf +tf +tf +yT +tf +Oo +VS +Mj +Af +tf +SQ +jf +yd +CF +CF +CF +AU +AO +ny +NY +tf +fE +fE +fE +fE +do +zk +iA +BW +HN +qH +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(152,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +qH +XS +XS +zk +NX +Uu +Uu +Uu +Uu +kn +yu +Uu +nT +kD +qs +Pb +tf +lA +yl +wd +Zf +aq +Cy +Ll +ws +rE +ZB +Wh +vG +NW +TX +cq +cq +xU +NK +NY +tf +fE +fE +fE +fE +fE +zk +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(153,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +IN +HN +HN +zk +tf +tf +tf +Cx +tf +tf +tf +tf +tf +bD +nY +oB +tf +vS +xo +Aq +US +cd +YZ +Mj +Af +tf +VS +jf +pt +jf +jf +oZ +ZV +Gg +PO +mu +ti +fE +fE +fE +fE +fE +zk +HN +HN +qH +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(154,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +GI +qH +XS +XS +zk +YZ +YZ +YZ +NY +NY +YZ +YZ +YZ +tf +qo +ND +UK +tf +gI +Vp +VB +hr +cd +YZ +Na +me +tf +YW +sz +NY +IE +NY +Uu +CF +yd +jf +Wl +ti +fE +fE +fE +fE +fE +zk +HN +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(155,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +qH +qH +HN +HN +zk +YZ +ZF +UE +YZ +YZ +kr +zn +NY +tf +SN +Xe +Ap +tf +Sz +hr +hr +NY +CU +CF +Mj +me +ti +ti +ti +ob +ti +ti +Uu +Sg +np +jf +Uu +ti +fE +fE +fE +fE +fE +zk +XS +XS +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(156,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +zk +NY +Qe +hX +Vs +Uu +Hb +Po +YZ +ti +ti +Uv +tf +tf +tf +tf +tf +tf +tf +YZ +SY +RD +tf +zY +bj +YZ +Lo +ti +Uu +Vu +jO +jf +TK +Iv +fE +fE +fE +fE +fE +zk +HN +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(157,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +qH +GY +HN +HN +zk +Re +Ce +hX +Mx +NY +Hb +NU +LW +tf +xN +Fo +Bi +jf +jf +SB +PI +YZ +Kx +jf +bX +ws +uk +Wh +LS +pw +Lo +ti +NY +jf +DY +CF +NY +ti +fE +fE +fE +fE +fE +zk +XS +XS +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(158,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +GY +XS +XS +zk +YZ +ex +vX +PB +CF +Hb +Wr +jf +tf +rr +fs +NY +Uu +Uu +Cp +NY +NY +RJ +jf +qK +me +tf +jf +PB +NY +jf +ti +Ks +CF +nw +jf +NY +ti +fE +fE +fE +fE +fE +zk +HN +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(159,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +GI +GY +HN +HN +zk +YZ +HK +hX +RP +NY +Hb +Ri +jf +lr +jf +IP +NY +Uu +Uu +Gk +Uu +jf +tf +NE +Mj +Af +tf +jw +ny +jf +yK +ti +Uu +oV +iX +dx +Pz +ti +fE +fE +fE +fE +fE +zk +XS +XS +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(160,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +GY +XS +XS +zk +YZ +ay +HW +PV +QA +Yz +mz +Kc +Av +Wh +ES +QA +QA +ZB +ii +ZB +Wh +tz +Kc +wZ +Af +tf +eF +pt +jr +dA +ti +NY +jf +Sg +jf +NY +ti +fE +fE +fE +fE +fE +zk +HN +HN +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(161,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +GY +HN +HN +zk +jf +Gy +fy +CF +Cy +LK +OX +YZ +tf +cX +Sx +YZ +Uu +Uu +YZ +Uu +Ly +cI +NY +Na +me +tf +Nn +NY +mx +HU +ti +NY +po +bV +bV +NY +ti +tf +tf +fQ +tf +zk +zk +XS +XS +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(162,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +GI +GY +XS +XS +zk +jf +JA +fy +Cy +CF +LK +ut +YZ +tf +jf +YZ +ag +kC +jf +mx +jf +qx +tf +Ec +IA +me +ti +ti +ti +ti +ti +ti +ti +ti +ti +ti +ti +ti +fE +fE +fE +oN +zk +HN +HN +GY +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(163,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +qH +GY +HN +HN +zk +YZ +Wp +hX +Uu +ZG +eD +lu +NY +ti +ti +ti +zk +rV +Yn +zk +zk +ti +ti +Re +Df +me +nT +YZ +eK +RY +sN +VO +AZ +AZ +AZ +AZ +ti +ti +fE +fE +fE +fE +zk +HN +HN +GY +qH +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(164,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +zk +Re +mS +hX +Uu +Uu +LK +Xs +LW +ti +IB +CG +NZ +Xb +YZ +js +vQ +jf +vl +YZ +Mj +Es +ti +zf +YZ +YZ +jf +jf +CF +CF +CF +CF +ti +ti +fE +fE +fE +fE +zk +HN +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(165,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +qH +GY +GY +GY +HN +HN +zk +jf +Id +fy +Uu +jf +fA +qr +jf +ti +Wx +YZ +Vg +SC +Rj +Rt +ml +oz +nJ +DM +Dz +yk +VN +Kc +Kc +gp +so +mf +dK +Xj +Go +pE +ti +ti +fE +fE +fE +fE +zk +HN +HN +GY +GY +qH +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(166,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +oR +oR +oR +XS +XS +zk +jf +bm +fy +Uu +NY +Hb +Oa +YZ +ti +Wx +Uu +IY +Uu +Uu +YZ +zk +NY +zy +NY +ey +me +Rc +jf +Uu +Uu +Uu +Uu +Uu +Uu +Uu +YZ +ti +ti +fE +fE +fE +fE +zk +HN +HN +GY +GY +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(167,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +GI +GY +GY +HN +BW +BW +zk +YZ +YZ +xI +YZ +YZ +jh +YZ +NY +ti +EH +hV +eh +Od +jf +Od +fz +dv +ti +YZ +fs +me +WX +yQ +UC +Pk +sN +JW +yQ +gG +gG +es +ti +ti +tf +tf +tf +tf +zk +HN +HN +GY +GY +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(168,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +oR +oR +XS +BW +zk +zk +zk +zk +Wz +ti +Cx +Ck +ti +ti +ti +ti +ti +rV +DF +xF +la +rV +ti +ti +Cx +XO +he +ti +ti +ti +ti +ti +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +qn +XS +oR +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(169,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +GY +GY +HN +BW +Se +Qo +YP +eM +ON +SB +jf +jf +YZ +Cu +YZ +YZ +ns +zk +zk +zk +zk +zk +CF +SB +YZ +CZ +MB +Sj +Ou +Cm +Kc +Kc +zP +eS +sb +Pv +pD +pD +GM +GM +GM +GM +GM +GM +GM +qn +HN +GY +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(170,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +GI +oR +oR +XS +BW +zk +zk +zk +zk +Dy +YZ +jf +PP +YZ +CF +YZ +YZ +Uu +jf +gk +Ey +Ho +zM +YZ +hu +YZ +fs +CF +YZ +fs +WA +YZ +YZ +zk +Qs +rG +zk +TS +rc +rc +rc +rc +rc +rc +rc +GM +qn +XS +oR +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(171,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +GY +GY +HN +BW +BW +zk +oj +NY +bS +cq +Kc +CL +Kc +Kc +ZB +Kc +QA +sQ +uP +Kc +Kc +rX +Kc +th +cq +ud +Zl +Zl +KM +me +CF +LW +zk +zk +zk +zk +TS +rc +rc +rc +rc +rc +rc +rc +GM +qn +HN +GY +qH +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(172,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +oR +oR +oR +XS +XS +zk +YZ +YZ +yb +YZ +NY +YZ +YZ +CF +YZ +VM +YZ +uy +VB +CF +YZ +ti +hn +CF +CF +tR +NY +YZ +YZ +mN +YZ +Ud +YZ +YZ +Fp +PL +GM +rc +rc +rc +rc +rc +rc +rc +GM +qn +HN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(173,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +qH +GY +GY +GY +HN +HN +zk +YZ +YZ +fg +YZ +YZ +NY +NY +YZ +CF +jf +NY +uy +CF +JT +YZ +ti +Dw +YZ +YZ +fs +YZ +Cy +YZ +tU +YZ +YZ +Cy +YZ +ih +PL +GM +rc +rc +rc +rc +rc +rc +rc +GM +qn +HN +GY +qH +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(174,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +HN +HN +zk +QN +Uu +rP +CF +CF +YZ +Uu +YZ +jf +jf +YZ +uy +jf +jf +nv +ti +Dw +Gt +fI +Vw +jK +MJ +MJ +MJ +MJ +LZ +EA +YZ +ih +PL +GM +rc +ic +rc +rc +rc +ic +rc +GM +qn +HN +GY +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(175,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +qH +GY +HN +HN +zk +YZ +Oy +Qn +CF +te +QR +Uu +xi +UI +YZ +xi +Ig +YZ +Nm +UI +ti +Dw +YZ +CF +fs +CF +YZ +YZ +YZ +YZ +YZ +YZ +Ud +ih +PL +GM +rc +rc +rc +rc +rc +rc +rc +GM +qn +XS +oR +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(176,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +oR +XS +XS +zk +dh +YZ +gS +dh +YZ +UZ +rI +YZ +gS +dh +YZ +DD +Wu +NY +UZ +ti +hn +mx +NG +ud +ON +YZ +YZ +YZ +mx +ih +ih +ih +ih +PL +GM +rc +rc +rc +rc +rc +rc +rc +GM +qn +HN +GY +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(177,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +GI +GY +HN +HN +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +zk +Cc +Mf +Cc +zk +zk +zk +zk +zk +zk +zk +zk +zk +GM +GM +GM +GM +GM +GM +GM +GM +GM +qn +XS +oR +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(178,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +GY +HN +HN +fo +at +at +at +at +at +at +at +at +at +tD +tD +tD +tD +tD +tD +tD +tD +zk +RI +ey +lL +zk +at +at +at +at +at +at +at +at +at +at +at +at +at +at +at +at +at +Rb +HN +GY +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(179,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +oR +XS +XS +fo +at +at +at +at +at +at +at +at +at +tD +tD +tD +tD +tD +tD +tD +tD +zk +yg +Jh +yg +zk +at +at +at +at +at +at +at +at +at +at +at +at +at +at +at +at +at +Rb +XS +oR +GI +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(180,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +IN +qH +GY +HN +HN +nF +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +zk +PL +Uq +PL +zk +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Zz +Mh +GY +GY +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(181,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +oR +GY +oR +GY +GY +GY +GY +GY +oR +GY +oR +GY +GY +GY +GY +HN +BW +BW +BW +BW +BW +BW +BW +HN +GY +GY +GY +GY +oR +GY +GY +oR +GY +GY +GY +GY +oR +GY +GY +oR +GY +GY +qH +IN +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(182,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +oR +GY +oR +GY +GY +GY +GY +GY +oR +GY +oR +GY +GY +GY +GY +HN +HN +XS +HN +HN +HN +XS +HN +HN +GY +GY +GY +GY +oR +GY +GY +oR +GY +GY +GY +GY +oR +GY +GY +oR +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(183,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +GI +GI +GI +GI +GI +qH +GY +qH +GI +GI +GI +GI +GI +IN +GY +GY +HN +HN +XS +HN +HN +HN +XS +HN +HN +GY +GY +qH +GI +GI +GI +GI +GI +GI +qH +GY +qH +GI +GI +GI +GI +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(184,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +IN +qH +qH +qH +IN +qH +GY +qH +qH +IN +qH +qH +IN +qH +GY +qH +GI +GI +GI +GI +GI +GI +GI +GI +GI +qH +GY +qH +qH +IN +qH +qH +IN +qH +qH +GY +qH +qH +qH +qH +qH +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(185,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +qH +IN +qH +qH +qH +qH +qH +qH +IN +qH +qH +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(186,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(187,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(188,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(189,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(190,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(191,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(192,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(193,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(194,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(195,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(196,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(197,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(198,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(199,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(200,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(201,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(202,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(203,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(204,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(205,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(206,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(207,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(208,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(209,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(210,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(211,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(212,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(213,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(214,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(215,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(216,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(217,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(218,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(219,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(220,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(221,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(222,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(223,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(224,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(225,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(226,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(227,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(228,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(229,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(230,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(231,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(232,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(233,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(234,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(235,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(236,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(237,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(238,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(239,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(240,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(241,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(242,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(243,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(244,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(245,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(246,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(247,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(248,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(249,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(250,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(251,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(252,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(253,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(254,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} +(255,1,1) = {" +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +GY +"} diff --git a/_maps/map_files/Instanced/map_files/NSVElcoPT.dmm b/_maps/map_files/Instanced/map_files/NSVElcoPT.dmm new file mode 100644 index 00000000000..290c2792411 --- /dev/null +++ b/_maps/map_files/Instanced/map_files/NSVElcoPT.dmm @@ -0,0 +1,69139 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ac" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 1; + pixel_y = 11 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/engine/airless, +/area/space) +"ai" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"al" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/missile_builder/assembler{ + dir = 4 + }, +/obj/item/ship_weapon/parts/missile/warhead, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"ay" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 4; + pixel_x = 10 + }, +/turf/open/floor/engine/airless, +/area/space) +"aD" = ( +/obj/structure/railing, +/obj/effect/turf_decal/loading_area/white{ + dir = 8; + pixel_x = 5 + }, +/turf/open/floor/engine/airless, +/area/space) +"aJ" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/wooden, +/obj/item/storage/box, +/obj/item/storage/box, +/obj/item/flashlight/glowstick/orange, +/obj/item/flashlight/glowstick/orange, +/obj/item/flashlight/glowstick/orange, +/obj/item/flashlight/glowstick/orange, +/obj/item/flashlight/glowstick/orange, +/obj/item/flashlight/glowstick/orange, +/obj/item/flashlight/glowstick/yellow, +/obj/item/flashlight/glowstick/yellow, +/obj/item/flashlight/glowstick/yellow, +/obj/item/flashlight/glowstick/yellow, +/obj/item/flashlight/glowstick/yellow, +/obj/item/flashlight/glowstick/yellow, +/obj/item/flashlight/glowstick/red, +/obj/item/flashlight/glowstick/red, +/obj/item/flashlight/glowstick/red, +/obj/item/flashlight/glowstick/red, +/obj/item/flashlight/glowstick/red, +/obj/item/flashlight/glowstick/red, +/turf/open/floor/engine/airless, +/area/space) +"aM" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/dorms) +"aS" = ( +/obj/machinery/computer/ship/helm{ + dir = 8 + }, +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"aU" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/missile_builder/screwdriver, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"bc" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/obj/item/flashlight/lantern, +/turf/open/floor/engine/airless, +/area/space) +"bf" = ( +/obj/structure/railing{ + dir = 9 + }, +/obj/item/organ/eyes/robotic/flashlight, +/turf/open/floor/engine/airless, +/area/space) +"bi" = ( +/obj/machinery/suit_storage_unit/ce, +/obj/item/tank/jetpack/oxygen/harness, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"bo" = ( +/obj/structure/closet/crate/radiation, +/obj/machinery/ship_weapon/pdc_mount/north, +/obj/item/clothing/suit/radiation, +/obj/item/clothing/head/radiation, +/obj/item/shovel, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"bu" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/space/basic, +/area/space) +"bv" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/mineral/titanium/fifty, +/obj/item/stack/sheet/duranium/fifty, +/obj/item/stack/sheet/mineral/silver/fifty, +/turf/open/floor/monotile/dark/airless, +/area/space) +"bA" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"bF" = ( +/obj/machinery/armour_plating_nanorepair_pump/forward_port{ + apnw_id = "pleaseSendHelp"; + armour_allocation = 12.5; + pixel_x = -5; + structure_allocation = 12.5; + pixel_y = -16 + }, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"bJ" = ( +/obj/structure/railing, +/obj/effect/turf_decal/loading_area/white{ + dir = 8; + pixel_x = -10 + }, +/turf/open/floor/engine/airless, +/area/space) +"bK" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/layer2{ + dir = 1; + name = "emergency airlock port" + }, +/obj/machinery/light, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"bT" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/space) +"cb" = ( +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/munitions) +"cc" = ( +/obj/structure/lattice, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/space/basic, +/area/space) +"cj" = ( +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"cA" = ( +/obj/effect/turf_decal/caution/red{ + pixel_y = -21 + }, +/turf/open/floor/engine/airless, +/area/space) +"cB" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/machinery/light/small{ + brightness = 3; + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"cF" = ( +/obj/structure/fighter_launcher{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"cJ" = ( +/obj/structure/tank_dispenser/plasma{ + name = "plasmaman tank dispenser" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"cP" = ( +/obj/structure/bed/pod, +/obj/structure/railing, +/obj/effect/landmark/start/munitions_tech, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"cT" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"dc" = ( +/obj/machinery/computer/ship/tactical{ + dir = 8 + }, +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"di" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"dm" = ( +/obj/machinery/computer/operating, +/turf/open/floor/monotile/light, +/area/awaymission/badmiral/dorms) +"dr" = ( +/obj/structure/railing, +/obj/structure/closet/toolcloset, +/turf/open/floor/engine/airless, +/area/space) +"dv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/ship/command/glass{ + name = "Bridge"; + req_one_access_txt = "109" + }, +/obj/structure/cable{ + icon_state = "6-8" + }, +/turf/open/floor/carpet/ship/blue{ + color = "#9999DD"; + name = "nanoweave carpet (bluer)" + }, +/area/awaymission/badmiral/bridge) +"dw" = ( +/obj/structure/bed/pod, +/obj/structure/railing, +/obj/item/bedsheet/ce, +/obj/effect/landmark/start/chief_engineer, +/obj/machinery/power/apc/auto_name/west, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"dO" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"dV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"et" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/computer/ship/ftl_computer, +/obj/structure/railing, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"eu" = ( +/obj/machinery/advanced_airlock_controller/directional/east, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/grid/steel, +/area/awaymission/badmiral/lounge) +"eD" = ( +/obj/effect/turf_decal/delivery/red, +/obj/machinery/light/small, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"eF" = ( +/obj/structure/bed/pod{ + pixel_y = 14 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/landmark/start/cargo_technician, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"eX" = ( +/obj/structure/chair/fancy/shuttle{ + color = "#696969"; + dir = 4; + name = "weapon officer" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"fc" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/lounge) +"fe" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/central) +"fC" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/monotile/dark/airless, +/area/space) +"fY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/airalarm/directional/west, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"gb" = ( +/obj/machinery/door/window/southright, +/turf/open/floor/monotile/light, +/area/awaymission/badmiral/dorms) +"gi" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Bridge"; + departmentType = 5; + name = "Bridge RC"; + pixel_x = -32 + }, +/obj/machinery/firealarm/directional/north, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/bed/pod{ + pixel_y = 14 + }, +/obj/item/bedsheet/nanotrasen{ + pixel_y = 14 + }, +/obj/effect/landmark/start/bridge, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"gk" = ( +/obj/structure/chair/fancy/shuttle{ + color = "#696969"; + dir = 4; + name = "captain's chair" + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"gp" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/space/basic, +/area/space) +"gx" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/railing, +/turf/open/floor/engine/airless, +/area/space) +"gz" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/loading_area/white{ + pixel_y = -11 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine/airless, +/area/space) +"gF" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"gG" = ( +/obj/effect/turf_decal/loading_area/white{ + dir = 4; + pixel_x = -10 + }, +/turf/open/floor/engine/airless, +/area/space) +"gI" = ( +/obj/effect/turf_decal/caution/stand_clear/red{ + pixel_y = 11 + }, +/turf/open/floor/engine/airless, +/area/space) +"gO" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/light/small, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"gP" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"gT" = ( +/obj/machinery/power/port_gen/pacman/mrs, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/item/stack/sheet/mineral/diamond/fifty, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"gW" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/monotile/dark/airless, +/area/space) +"he" = ( +/obj/machinery/armour_plating_nanorepair_pump/forward_starboard{ + apnw_id = "pleaseSendHelp"; + armour_allocation = 12.5; + pixel_x = -25; + structure_allocation = 12.5; + pixel_y = -16 + }, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"hg" = ( +/obj/structure/railing, +/turf/open/floor/engine/airless, +/area/space) +"hh" = ( +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/engine/airless, +/area/space) +"hv" = ( +/obj/structure/table/glass, +/obj/item/surgical_drapes, +/obj/item/surgical_processor, +/turf/open/floor/monotile/light, +/area/awaymission/badmiral/dorms) +"hw" = ( +/obj/structure/bed/pod, +/obj/structure/railing{ + dir = 6 + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"hG" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space) +"hZ" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/computer/ship/dradis/minor/cargo{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"ie" = ( +/obj/effect/turf_decal/loading_area/white{ + dir = 1; + pixel_y = 10 + }, +/turf/open/floor/engine/airless, +/area/space) +"if" = ( +/obj/effect/turf_decal/loading_area/white{ + pixel_y = -11 + }, +/turf/open/floor/engine/airless, +/area/space) +"il" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"in" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/secure/weapon{ + name = "misc warheads crate" + }, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/hellfire, +/obj/item/ship_weapon/parts/missile/warhead/probe, +/obj/item/ship_weapon/parts/missile/warhead/proto_disruption, +/obj/item/ship_weapon/parts/missile/warhead/freight, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/ammo_box/magazine/nsv/pdc, +/turf/open/floor/engine/airless, +/area/space) +"ix" = ( +/obj/structure/ship_weapon/torpedo_launcher_assembly/cargo{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"iO" = ( +/obj/structure/railing, +/obj/machinery/missile_builder{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"iR" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/space/basic, +/area/space) +"iT" = ( +/obj/structure/closet/secure_closet/captains, +/obj/item/megaphone/command{ + pixel_y = -6 + }, +/obj/item/stamp/captain, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"iX" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"iY" = ( +/obj/machinery/gauss_dispenser, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"ja" = ( +/obj/structure/railing, +/obj/structure/hull_plate, +/turf/open/floor/engine/airless, +/area/space) +"jr" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/railing/corner, +/turf/open/floor/engine/airless, +/area/space) +"jz" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/space) +"jI" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/rack, +/turf/open/floor/engine/airless, +/area/space) +"jL" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/rack, +/obj/item/storage/toolbox/electrical, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/belt/utility/full/engi, +/turf/open/floor/engine/airless, +/area/space) +"jU" = ( +/obj/machinery/computer/ship/munitions_computer/east{ + dir = 1; + pixel_y = 6 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"jW" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 1; + pixel_y = -6 + }, +/turf/open/floor/engine/airless, +/area/space) +"kb" = ( +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = -6 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 2 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 9 + }, +/obj/machinery/power/apc/auto_name/west, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"ke" = ( +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"kf" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"kt" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/grid/steel, +/area/awaymission/badmiral/lounge) +"ky" = ( +/obj/structure/closet/secure_closet/bridge, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"kM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine/airless, +/area/space) +"kR" = ( +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/engine/airless, +/area/space) +"kV" = ( +/obj/structure/closet/secure_closet/engineering_welding{ + anchored = 1; + name = "pitstop locker"; + req_access = null; + req_one_access_txt = "48" + }, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/engine/airless, +/area/space) +"lc" = ( +/obj/structure/chair/shuttlecraft_chair{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/monotile/dark/airless, +/area/space) +"ld" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 1 + }, +/obj/machinery/light/small, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"lk" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/dorms) +"lt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"lK" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"mb" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"ml" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/dorms) +"mp" = ( +/turf/open/space/basic, +/area/space) +"ms" = ( +/turf/closed/wall/steel, +/area/awaymission/badmiral/dorms) +"mD" = ( +/obj/machinery/vendor/mining, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"mK" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/dorms) +"mQ" = ( +/obj/structure/sign/ship/nosmoking{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/bridge) +"mT" = ( +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = -6 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 2 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 9 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"mX" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 8; + pixel_x = 5 + }, +/turf/open/floor/engine/airless, +/area/space) +"na" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/central) +"ng" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/engine/airless, +/area/space) +"nk" = ( +/obj/machinery/door/airlock/ship/external/glass{ + name = "External Storeroom" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"ny" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"nB" = ( +/obj/structure/railing, +/obj/structure/munitions_trolley, +/turf/open/floor/engine/airless, +/area/space) +"nG" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/storage/lockbox/medal/cargo, +/obj/item/storage/firstaid/regular, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"nH" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/rack, +/turf/open/floor/engine/airless, +/area/space) +"nL" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing, +/turf/open/floor/engine/airless, +/area/space) +"nR" = ( +/obj/structure/railing, +/obj/machinery/computer/ammo_sorter{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"od" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"oq" = ( +/obj/structure/railing{ + dir = 9 + }, +/obj/structure/rack, +/turf/open/floor/engine/airless, +/area/space) +"os" = ( +/obj/structure/reagent_dispensers/fueltank/cryogenic_fuel, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/engine/airless, +/area/space) +"oy" = ( +/obj/machinery/atmospherics/components/unary/tank, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"oz" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing/corner, +/turf/open/floor/engine/airless, +/area/space) +"oD" = ( +/obj/machinery/armour_plating_nanorepair_well{ + apnw_id = "pleaseSendHelp"; + pixel_x = -15 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"oO" = ( +/obj/structure/closet/secure_closet/engineering_chief, +/obj/structure/railing{ + dir = 6 + }, +/obj/item/megaphone/command{ + pixel_y = -6 + }, +/obj/item/stamp/chief_engineer, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"oR" = ( +/obj/machinery/door/airlock/ship/external/glass{ + name = "Flight deck access"; + req_one_access_txt = "79;13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/lounge) +"oS" = ( +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/bridge) +"pv" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/engine/airless, +/area/space) +"px" = ( +/obj/structure/bed/pod, +/obj/structure/railing{ + dir = 10 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"py" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 8; + pixel_x = -10 + }, +/turf/open/floor/engine/airless, +/area/space) +"pE" = ( +/obj/structure/closet/secure_closet/munitions_technician, +/obj/item/clothing/accessory/armband/munitions, +/obj/structure/railing, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"pR" = ( +/obj/machinery/light_switch/west{ + pixel_x = -19 + }, +/obj/machinery/holopad, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"qc" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"qg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"qh" = ( +/obj/structure/closet/wardrobe/cargotech, +/obj/structure/railing{ + dir = 1 + }, +/obj/item/clothing/accessory/armband/cargo, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"qt" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"qz" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/monotile/dark/airless, +/area/space) +"qJ" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"qN" = ( +/turf/closed/wall/steel, +/area/awaymission/badmiral/central) +"ra" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/secure/weapon{ + name = "thrusters crate" + }, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/turf/open/floor/engine/airless, +/area/space) +"rd" = ( +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/power/port_gen/pacman, +/obj/structure/railing{ + dir = 10 + }, +/obj/item/stack/sheet/mineral/plasma/fifty, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"ru" = ( +/obj/structure/bed/pod, +/obj/structure/railing, +/obj/effect/landmark/start/cargo_technician, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"rx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/firedoor/window, +/obj/machinery/door/poddoor/shutters/ship/preopen{ + id = "EBridge"; + name = "bridge shutters" + }, +/turf/open/floor/plating, +/area/awaymission/badmiral/bridge) +"ry" = ( +/obj/structure/rack, +/obj/structure/railing{ + dir = 8 + }, +/obj/item/tank/jetpack/oxygen, +/obj/item/tank/jetpack/oxygen, +/obj/item/tank/jetpack/oxygen, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"rH" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"rM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/railing, +/turf/open/floor/engine/airless, +/area/space) +"rS" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/dorms) +"rY" = ( +/obj/structure/closet/radiation, +/obj/item/shovel, +/obj/item/tank/internals/emergency_oxygen/double, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"rZ" = ( +/obj/machinery/suit_storage_unit/mining/eva, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"si" = ( +/obj/machinery/ship_weapon/pdc_mount/south, +/obj/item/ammo_box/magazine/nsv/pdc, +/obj/item/flashlight/lantern, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"sk" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space) +"sn" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 1; + pixel_y = -5 + }, +/turf/open/floor/engine/airless, +/area/space) +"st" = ( +/obj/effect/turf_decal/loading_area/white, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/space) +"sC" = ( +/obj/machinery/computer/ship/dradis{ + dir = 8 + }, +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"sL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 4; + pixel_x = -6 + }, +/turf/open/floor/engine/airless, +/area/space) +"sO" = ( +/obj/machinery/door/airlock/ship/external/glass{ + name = "Flight deck access"; + req_one_access_txt = "79;13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"sU" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"sX" = ( +/obj/structure/railing, +/obj/effect/turf_decal/loading_area/white{ + dir = 8; + pixel_x = 5 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"sY" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"tc" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"td" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/grid/steel, +/area/awaymission/badmiral/lounge) +"te" = ( +/obj/structure/railing, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"tk" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine/airless, +/area/space) +"tA" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing, +/obj/effect/turf_decal/loading_area/white{ + dir = 4; + pixel_x = -6 + }, +/turf/open/floor/engine/airless, +/area/space) +"tC" = ( +/obj/structure/railing, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine/airless, +/area/space) +"tL" = ( +/obj/structure/ore_box, +/obj/structure/railing, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/engine/airless, +/area/space) +"tP" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/railing, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"tT" = ( +/obj/machinery/computer/communications{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"un" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/central) +"uo" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"uu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/central) +"uy" = ( +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = -6 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 2 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 9 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"uG" = ( +/obj/structure/railing, +/obj/effect/turf_decal/loading_area/white{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/engine/airless, +/area/space) +"va" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/engine/airless, +/area/space) +"vd" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/engine/airless, +/area/space) +"vg" = ( +/obj/structure/rack, +/obj/item/fighter_component/fuel_tank, +/obj/item/fighter_component/fuel_tank, +/obj/item/fighter_component/engine, +/obj/item/fighter_component/engine, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/engine/airless, +/area/space) +"vh" = ( +/obj/effect/turf_decal/loading_area/white{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/engine/airless, +/area/space) +"vj" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"vu" = ( +/obj/machinery/door/airlock/ship/external/glass{ + name = "Flight deck access"; + req_one_access_txt = "79;13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"vB" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/item/flashlight/lantern, +/turf/open/floor/engine/airless, +/area/space) +"vM" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/loading_area/white{ + pixel_y = 6 + }, +/turf/open/floor/engine/airless, +/area/space) +"vR" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/engine/airless, +/area/space) +"vZ" = ( +/obj/structure/bed/pod{ + pixel_y = 14 + }, +/obj/item/bedsheet/captain{ + pixel_y = 14 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/landmark/start/captain, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"wh" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"wq" = ( +/obj/machinery/door/airlock/ship/external/glass{ + name = "Flight deck access"; + req_one_access_txt = "79;13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"ws" = ( +/obj/structure/bed/pod{ + pixel_y = 14 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/item/bedsheet/red{ + pixel_y = 14; + name = "master at arm's bedsheet" + }, +/obj/effect/landmark/start/master_at_arms, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"wL" = ( +/obj/structure/railing/corner{ + dir = 4; + pixel_y = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"wS" = ( +/obj/machinery/armour_plating_nanorepair_pump/aft_starboard{ + apnw_id = "pleaseSendHelp"; + armour_allocation = 12.5; + pixel_x = -25; + structure_allocation = 12.5 + }, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"wU" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/railing, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"xg" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"xl" = ( +/obj/machinery/atmospherics/components/unary/tank{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"xv" = ( +/obj/structure/lattice, +/obj/structure/railing, +/turf/open/space/basic, +/area/space) +"xw" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"xS" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/monotile/dark/airless, +/area/space) +"xU" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/space/basic, +/area/space) +"yg" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/space) +"yh" = ( +/obj/effect/turf_decal/caution/stand_clear{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space) +"yj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "EBridge"; + name = "Bridge Shutters"; + pixel_x = -9; + pixel_y = 2 + }, +/obj/item/radio/intercom{ + pixel_x = 6; + pixel_y = -1 + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"yq" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor/window, +/obj/machinery/door/poddoor/shutters/ship/preopen{ + dir = 4; + id = "EBridge"; + name = "bridge shutters" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/awaymission/badmiral/bridge) +"yI" = ( +/obj/structure/hull_plate/end{ + dir = 1 + }, +/obj/effect/turf_decal/loading_area/red{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"yJ" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/space) +"yK" = ( +/obj/effect/turf_decal/bot_red, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"yT" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"yW" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/machinery/ammo_sorter{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"zq" = ( +/obj/structure/railing{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/engine/airless, +/area/space) +"zr" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"zz" = ( +/obj/structure/overmap/small_craft/transport/sabre/mining, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"zD" = ( +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/engine/airless, +/area/space) +"zZ" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/ammo_sorter, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"Aa" = ( +/obj/machinery/computer/ship/salvage{ + dir = 8 + }, +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"Ad" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"Am" = ( +/obj/machinery/door/airlock/ship/public/glass{ + aiControlDisabled = "18"; + name = "EVA Storage"; + req_one_access_txt = "18" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/dorms) +"Ap" = ( +/obj/effect/turf_decal/loading_area/white, +/turf/open/floor/engine/airless, +/area/space) +"Aq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"AE" = ( +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = -6 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 2 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 9 + }, +/obj/structure/railing, +/turf/open/floor/engine/airless, +/area/space) +"AG" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"AN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/meter/atmos/distro_loop{ + target_layer = 2 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"AS" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"AT" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/space/basic, +/area/space) +"AX" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/dorms) +"Bc" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/engine/airless, +/area/space) +"Bk" = ( +/turf/open/floor/engine/airless, +/area/space) +"Bl" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"BF" = ( +/obj/structure/railing/corner, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space) +"BJ" = ( +/obj/structure/railing, +/obj/effect/turf_decal/loading_area/white{ + dir = 8; + pixel_x = 5 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"BK" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/structure/railing, +/obj/item/clothing/accessory/armband/cargo, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"BO" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/bridge) +"BP" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/computer/ammo_sorter, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"BY" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/monotile/dark/airless, +/area/space) +"Cm" = ( +/obj/structure/railing{ + dir = 9 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"Cn" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/monotile/dark/airless, +/area/space) +"Cy" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/monotile/dark/airless, +/area/space) +"CI" = ( +/obj/machinery/door/airlock/ship/external/glass{ + name = "External Storeroom" + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"CO" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"CQ" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/monotile/dark/airless, +/area/space) +"CZ" = ( +/obj/structure/table/glass, +/obj/item/stack/medical/ointment, +/obj/item/stack/medical/ointment, +/obj/item/stack/medical/bruise_pack{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/stack/medical/bruise_pack{ + pixel_x = 7; + pixel_y = 7 + }, +/turf/open/floor/monotile/light, +/area/awaymission/badmiral/dorms) +"Da" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/monotile/dark/airless, +/area/space) +"Du" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"DX" = ( +/obj/item/ship_weapon/ammunition/torpedo/freight, +/turf/open/floor/engine/airless, +/area/space) +"DY" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/item/storage/box/snappops, +/turf/open/floor/engine/airless, +/area/space) +"DZ" = ( +/obj/machinery/suit_storage_unit/captain, +/obj/item/tank/jetpack/oxygen/captain, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"Eg" = ( +/obj/machinery/light, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"El" = ( +/obj/structure/sign/ship/securearea{ + dir = 8 + }, +/turf/closed/wall/steel, +/area/awaymission/badmiral/bridge) +"Em" = ( +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/power/port_gen/pacman, +/obj/structure/railing{ + dir = 8 + }, +/obj/item/stack/sheet/mineral/plasma/fifty, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"Es" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"Ex" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/open/floor/monotile/dark/airless, +/area/space) +"EB" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"EC" = ( +/obj/structure/railing, +/obj/machinery/missile_builder/welder{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"EQ" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"ER" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"ES" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space) +"EV" = ( +/obj/item/storage/lockbox/medal, +/obj/structure/table/reinforced, +/obj/structure/railing{ + dir = 8 + }, +/obj/item/storage/firstaid/regular, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"EW" = ( +/obj/machinery/door/airlock/ship/external/glass{ + name = "Flight deck access"; + req_one_access_txt = "79;13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/lounge) +"Fd" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"Fe" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/space) +"Ff" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"Fh" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/space/basic, +/area/space) +"Fo" = ( +/obj/machinery/armour_plating_nanorepair_pump/aft_port{ + apnw_id = "pleaseSendHelp"; + armour_allocation = 12.5; + pixel_x = -5; + structure_allocation = 12.5 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"Fs" = ( +/obj/machinery/atmospherics/components/unary/tank/air, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"FA" = ( +/obj/structure/lattice, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/space/basic, +/area/space) +"FD" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/engine/airless, +/area/space) +"FG" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"FT" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/item/flashlight/lantern, +/turf/open/floor/engine/airless, +/area/space) +"FY" = ( +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = -6 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 2 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 9 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"Ga" = ( +/obj/structure/table/reinforced, +/obj/structure/railing, +/obj/item/paper_bin, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/item/pen/fourcolor, +/obj/item/pen/fountain/captain, +/obj/item/pen, +/obj/item/toy/crayon/rainbow, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"Gc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"Gd" = ( +/obj/structure/bed/pod, +/obj/structure/railing, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"Gg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"Gl" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"GA" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing, +/turf/open/floor/engine/airless, +/area/space) +"GD" = ( +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/central) +"GP" = ( +/obj/structure/rack, +/obj/structure/railing{ + dir = 10 + }, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/obj/item/tank/internals/plasmaman/belt/full, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"GY" = ( +/obj/machinery/computer/ship/munitions_computer/east{ + dir = 2; + pixel_y = 6 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"Hj" = ( +/obj/effect/turf_decal/loading_area/red{ + pixel_y = -4 + }, +/obj/structure/hull_plate/end, +/turf/open/floor/engine/airless, +/area/space) +"Hl" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/central) +"HG" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom, +/obj/item/storage/firstaid/regular, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"HH" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/missile_builder, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"HQ" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/space/basic, +/area/space) +"HS" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/medical, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/toxin, +/obj/item/storage/firstaid/toxin, +/obj/item/storage/firstaid/o2, +/obj/item/storage/firstaid/o2, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/item/storage/bag/tray{ + desc = "A metal tray to lay bits on."; + name = "surgical tray" + }, +/obj/item/defibrillator/loaded, +/obj/item/storage/box/bodybags, +/turf/open/floor/engine/airless, +/area/space) +"Is" = ( +/obj/item/flashlight/lantern, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"Iu" = ( +/obj/structure/hull_plate, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/engine/airless, +/area/space) +"ID" = ( +/obj/effect/turf_decal/loading_area/white{ + dir = 8; + pixel_x = 10 + }, +/turf/open/floor/engine/airless, +/area/space) +"IL" = ( +/obj/machinery/computer/ship/munitions_computer/east, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"IP" = ( +/obj/structure/railing, +/obj/machinery/light/small{ + brightness = 3; + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"IT" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space) +"Jb" = ( +/obj/machinery/vending/engivend, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"Jc" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/structure/railing, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"Jd" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/engine/airless, +/area/space) +"Jr" = ( +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/loading_area/red{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/space) +"Js" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/engine/airless, +/area/space) +"Jy" = ( +/obj/effect/turf_decal/bot_red, +/turf/open/floor/engine/airless, +/area/space) +"JW" = ( +/obj/machinery/ammo_sorter{ + dir = 1 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"Kb" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/railing, +/turf/open/floor/engine/airless, +/area/space) +"Kk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"Km" = ( +/obj/effect/turf_decal/bot_red, +/obj/structure/railing, +/turf/open/floor/engine/airless, +/area/space) +"Ko" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"Kv" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"KE" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"KG" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/munitions_trolley, +/turf/open/floor/engine/airless, +/area/space) +"KH" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/missile_builder/assembler{ + dir = 4 + }, +/obj/item/ship_weapon/parts/missile/iff_card, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"KT" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"Lt" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 4; + pixel_x = -6 + }, +/obj/machinery/light/small, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"Ly" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/hull_plate, +/turf/open/floor/engine/airless, +/area/space) +"Lz" = ( +/obj/structure/railing{ + dir = 9 + }, +/obj/machinery/ammo_sorter, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"LL" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"LR" = ( +/obj/item/ammo_box/magazine/nsv/pdc, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"LT" = ( +/obj/structure/railing/corner, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"LW" = ( +/obj/machinery/stasis, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/monotile/light, +/area/awaymission/badmiral/dorms) +"Mj" = ( +/obj/machinery/power/port_gen/pacman/mrs, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/obj/item/stack/sheet/mineral/diamond/fifty, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"Mk" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/dorms) +"MX" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/lounge) +"Ng" = ( +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/engine/airless, +/area/space) +"Nj" = ( +/obj/structure/lattice, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/space/basic, +/area/space) +"Nk" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/computer/cargo/express, +/obj/item/stack/spacecash/c1000, +/obj/item/stack/spacecash/c1000, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"Nm" = ( +/obj/structure/railing/corner, +/turf/open/floor/engine/airless, +/area/space) +"Nn" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space) +"Ns" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/wooden, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/storage/box, +/obj/item/storage/box, +/obj/item/flashlight/flare, +/turf/open/floor/engine/airless, +/area/space) +"Ny" = ( +/obj/structure/railing, +/obj/effect/turf_decal/loading_area/white{ + dir = 8; + pixel_x = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine/airless, +/area/space) +"NO" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"NU" = ( +/obj/machinery/ship_weapon/torpedo_launcher/east, +/obj/structure/hull_plate, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"NW" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/space) +"Oa" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"Of" = ( +/obj/structure/window, +/obj/structure/table/glass, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/apron/surgical, +/turf/open/floor/monotile/light, +/area/awaymission/badmiral/dorms) +"Oi" = ( +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/bed/pod, +/obj/item/bedsheet/nanotrasen, +/obj/effect/landmark/start/bridge, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"Oj" = ( +/obj/machinery/rnd/production/techfab, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"Ol" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/janitorialcart, +/obj/item/mop, +/turf/open/floor/engine/airless, +/area/space) +"On" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/secure/weapon{ + name = "transponders crate" + }, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/turf/open/floor/engine/airless, +/area/space) +"Oo" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/layer2{ + name = "emergency airlock port" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"Ot" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"OP" = ( +/obj/effect/turf_decal/bot, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/rglass{ + amount = 30; + pixel_x = 2; + pixel_y = -2 + }, +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/mineral/plasma/twenty, +/obj/item/stack/sheet/mineral/diamond/twenty, +/obj/item/storage/box/smart_metal_foam, +/turf/open/floor/engine/airless, +/area/space) +"OU" = ( +/obj/structure/bed/pod, +/obj/item/bedsheet/hop, +/obj/structure/railing, +/obj/effect/landmark/start/head_of_personnel{ + name = "Executive Officer" + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"OZ" = ( +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"Pi" = ( +/obj/structure/lattice, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/space/basic, +/area/space) +"Pu" = ( +/obj/structure/closet/secure_closet/munitions_technician, +/obj/item/clothing/accessory/armband/munitions, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"PA" = ( +/obj/structure/closet/secure_closet/hop, +/obj/item/megaphone/command{ + pixel_y = -6 + }, +/obj/item/stamp/head_of_personnel{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"PF" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/engine/airless, +/area/space) +"PP" = ( +/obj/structure/bed/pod{ + pixel_y = 14 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/landmark/start/munitions_tech, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"PT" = ( +/obj/structure/railing/corner, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"PX" = ( +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"PY" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/engine/airless, +/area/space) +"Qp" = ( +/obj/machinery/mineral/ore_redemption, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"Qw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine/airless, +/area/space) +"QE" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 4; + pixel_x = -6 + }, +/turf/open/floor/engine/airless, +/area/space) +"QQ" = ( +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/power/port_gen/pacman, +/obj/structure/railing{ + dir = 9 + }, +/obj/item/stack/sheet/mineral/plasma/fifty, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"Rf" = ( +/obj/machinery/button/door{ + id = "EBridge"; + name = "Bridge Shutters"; + pixel_x = 24 + }, +/obj/machinery/computer/ship/dradis{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/bridge) +"Rh" = ( +/obj/machinery/door/airlock/ship/command/glass{ + name = "Bridge"; + req_one_access_txt = "109" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/central) +"Rl" = ( +/obj/effect/turf_decal/bot, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/plasteel/fifty, +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/mineral/titanium/fifty, +/obj/item/stack/sheet/mineral/titanium/fifty, +/obj/item/stack/sheet/duranium/fifty, +/obj/item/stack/sheet/duranium/fifty, +/obj/item/stack/sheet/mineral/silver/fifty, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/engine/airless, +/area/space) +"Rr" = ( +/obj/machinery/conveyor_switch/oneway, +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"Rv" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"Ry" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/power/apc/auto_name/west, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"RB" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"RD" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing/corner, +/turf/open/floor/engine/airless, +/area/space) +"RE" = ( +/obj/item/tank/jetpack/oxygen/harness, +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"RF" = ( +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = -6 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 2 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 9 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"RL" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/item/tank/jetpack/oxygen/harness, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"RM" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"RS" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"RZ" = ( +/obj/structure/railing, +/obj/machinery/computer/bounty{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"Sa" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/engine/airless, +/area/space) +"Se" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/missile_builder/assembler, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"Sg" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/missile_builder/assembler, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/machinery/light/small{ + brightness = 3; + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"Sm" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/railing, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"SC" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/missile_builder/screwdriver{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"SL" = ( +/obj/machinery/vending/engineering, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"SN" = ( +/obj/structure/railing, +/obj/machinery/ammo_sorter{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"SO" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"SP" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"SU" = ( +/obj/machinery/ship_weapon/torpedo_launcher/east{ + pixel_y = -92 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"SW" = ( +/obj/structure/closet/wardrobe/cargotech, +/obj/structure/railing, +/obj/item/clothing/accessory/armband/cargo, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"SZ" = ( +/obj/structure/closet/crate{ + opened = 1 + }, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/item/ship_weapon/ammunition/gauss, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"Tm" = ( +/obj/machinery/power/apc/auto_name/west, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"To" = ( +/obj/structure/lattice, +/obj/structure/railing/corner, +/turf/open/space/basic, +/area/space) +"TJ" = ( +/obj/machinery/modular_fabricator/autolathe, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"TS" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"Uh" = ( +/obj/structure/closet/secure_closet/master_at_arms, +/obj/structure/railing{ + dir = 5 + }, +/obj/item/megaphone/command{ + pixel_y = -6 + }, +/obj/item/stamp/maa, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"Uj" = ( +/obj/structure/railing, +/turf/open/floor/monotile/dark/airless, +/area/space) +"Up" = ( +/obj/machinery/ship_weapon/pdc_mount/south, +/obj/item/ammo_box/magazine/nsv/pdc, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) +"Ut" = ( +/obj/item/storage/secure/safe/caps_spare{ + pixel_x = 32 + }, +/obj/structure/bed/dogbed/ian, +/mob/living/simple_animal/pet/dog/corgi/Ian, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"Uu" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/open/floor/monotile/dark/airless, +/area/space) +"UD" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"UF" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/secure/weapon{ + name = "warheads crate" + }, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/obj/item/ship_weapon/parts/missile/warhead/torpedo, +/turf/open/floor/engine/airless, +/area/space) +"UJ" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"UL" = ( +/obj/machinery/ship_weapon/gauss_gun{ + dir = 4; + pixel_x = -1; + pixel_y = -52 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"US" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space) +"UT" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/secure/weapon{ + name = "gymbals crate" + }, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/turf/open/floor/engine/airless, +/area/space) +"Va" = ( +/turf/closed/wall/steel, +/area/awaymission/badmiral/bridge) +"Vr" = ( +/obj/effect/turf_decal/loading_area/white{ + dir = 8; + pixel_x = -10 + }, +/turf/open/floor/engine/airless, +/area/space) +"Vs" = ( +/obj/structure/rack, +/obj/structure/railing{ + dir = 9 + }, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"VF" = ( +/obj/structure/chair/fancy/shuttle{ + color = "#696969"; + dir = 4; + name = "helm officer" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"VG" = ( +/obj/structure/railing, +/obj/machinery/missile_builder/wirer{ + dir = 1 + }, +/obj/machinery/light/small, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"VJ" = ( +/obj/structure/railing, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/space) +"VS" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"VU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/modular_computer/console/preset/command{ + dir = 8 + }, +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"VX" = ( +/obj/machinery/computer/ship/navigation{ + dir = 8 + }, +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/glass/reinforced, +/area/awaymission/badmiral/bridge) +"VZ" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"Wc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"Wd" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/space) +"Wf" = ( +/turf/closed/wall/r_wall, +/area/space) +"Wk" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/structure/railing{ + dir = 9 + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"Wz" = ( +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/loading_area/red{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space) +"WA" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/structure/railing, +/obj/machinery/light/small, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/engineering) +"WT" = ( +/obj/structure/bed/pod, +/obj/structure/railing, +/obj/effect/landmark/start/medical_doctor, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"WX" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine/airless, +/area/space) +"Xb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/dorms) +"Xj" = ( +/obj/machinery/door/firedoor/border_only/directional/east, +/obj/machinery/door/firedoor/border_only/directional/west, +/obj/machinery/door/airlock/ship/command/glass{ + name = "Bridge"; + req_one_access_txt = "109" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/carpet/ship/blue{ + color = "#9999DD"; + name = "nanoweave carpet (bluer)" + }, +/area/awaymission/badmiral/bridge) +"Xl" = ( +/obj/machinery/computer/ammo_sorter{ + dir = 8; + pixel_x = 4; + pixel_y = -5 + }, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"Xq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-9" + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/bridge) +"Xr" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/firedoor/window, +/obj/machinery/door/poddoor/shutters/ship/preopen{ + id = "EBridge"; + name = "bridge shutters" + }, +/turf/open/floor/plating, +/area/awaymission/badmiral/bridge) +"Xt" = ( +/obj/structure/railing, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"Xy" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/closet/toolcloset, +/turf/open/floor/engine/airless, +/area/space) +"XC" = ( +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/engineering) +"XN" = ( +/obj/structure/window, +/obj/structure/table/glass, +/obj/item/stack/medical/gauze/adv{ + pixel_x = -2; + pixel_y = 7 + }, +/obj/item/stack/medical/gauze/adv, +/turf/open/floor/monotile/light, +/area/awaymission/badmiral/dorms) +"XR" = ( +/obj/structure/bed/pod, +/obj/structure/railing, +/obj/effect/landmark/start/assistant, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"XU" = ( +/obj/structure/closet/secure_closet/miner, +/obj/structure/railing{ + dir = 1 + }, +/obj/item/clothing/accessory/armband/cargo, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"Yc" = ( +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"Yf" = ( +/obj/effect/turf_decal/bot_red, +/obj/effect/turf_decal/loading_area/red, +/turf/open/floor/engine/airless, +/area/space) +"Yn" = ( +/obj/structure/lattice/catwalk/over/ship/dark, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"Yo" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/space) +"Yv" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/loading_area/white{ + pixel_y = 5 + }, +/turf/open/floor/engine/airless, +/area/space) +"YA" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 1; + pixel_y = -5 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space) +"YF" = ( +/obj/machinery/door/window/southleft, +/turf/open/floor/monotile/light, +/area/awaymission/badmiral/dorms) +"YK" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/awaymission/badmiral/lounge) +"YQ" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/engineering) +"YT" = ( +/turf/closed/wall/r_wall, +/area/awaymission/badmiral/lounge) +"Zd" = ( +/obj/machinery/rnd/production/techfab/department/munitions, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"Zj" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"Zn" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"Zp" = ( +/obj/structure/bed/pod{ + pixel_y = 14 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/landmark/start/shaft_miner, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/dorms) +"Zs" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/loading_area/white{ + dir = 4; + pixel_x = -6 + }, +/turf/open/floor/engine/airless, +/area/space) +"Zz" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over/ship/dark, +/turf/open/floor/engine/airless, +/area/awaymission/badmiral/munitions) +"ZE" = ( +/obj/machinery/door/airlock/ship/external/glass{ + name = "Flight deck access"; + req_one_access_txt = "79;13" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/lounge) +"ZI" = ( +/obj/item/ship_weapon/ammunition/torpedo/hellfire/antonio{ + name = "Ol' Dusty"; + pixel_y = 1 + }, +/obj/structure/bed/dogbed{ + name = "Dusty's bed" + }, +/turf/open/floor/monotile/dark, +/area/awaymission/badmiral/central) +"ZK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/meter/atmos/distro_loop{ + target_layer = 2 + }, +/turf/open/floor/monotile/steel, +/area/awaymission/badmiral/lounge) +"ZY" = ( +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = -6 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 2 + }, +/obj/item/ship_weapon/ammunition/torpedo{ + pixel_y = 9 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/monotile/dark/airless, +/area/awaymission/badmiral/munitions) + +(1,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(2,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(3,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(4,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(5,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(6,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(7,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(8,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(9,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(10,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(11,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(12,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(13,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(14,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(15,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(16,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(17,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(18,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(19,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(20,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(21,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(22,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(23,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(24,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(25,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(26,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(27,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(28,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(29,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(30,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(31,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(32,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(33,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(34,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(35,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(36,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(37,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(38,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(39,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(40,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(41,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(42,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(43,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(44,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(45,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(46,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(47,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(48,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(49,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(50,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(51,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(52,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(53,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(54,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(55,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(56,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(57,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(58,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(59,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(60,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(61,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(62,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(63,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(64,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(65,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(66,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(67,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(68,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(69,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(70,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(71,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(72,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(73,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(74,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(75,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(76,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(77,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(78,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(79,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(80,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(81,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(82,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(83,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +To +gp +gp +FA +Zn +Zn +Zn +Zn +Zn +Zn +Zn +Zn +Zn +Zn +Zn +Zn +Zn +Zn +Zn +To +gp +gp +FA +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(84,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +To +gp +HQ +kR +hh +zD +hG +hG +hG +hG +BF +sk +Bk +Bk +Bk +Nm +BF +hG +hG +Bk +hG +Ng +kR +hh +Pi +gp +FA +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(85,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +kR +jz +NO +hg +oq +KH +SC +al +nH +Bl +ny +VZ +cF +VZ +te +Bl +kR +jz +Bk +jz +hh +sU +Wd +jz +hh +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(86,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +To +gp +HQ +sU +Bk +Bk +hg +sU +Jy +Yf +Jy +hg +Bl +ny +VZ +VZ +zz +te +Bl +sU +Bk +Bk +Bk +hg +sU +Bk +Bk +hg +Pi +gp +FA +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(87,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +bf +jz +NO +Bk +Bk +hg +aU +Km +Bl +yK +iO +Bl +ny +VZ +VZ +VZ +te +Bl +sU +DX +ix +DX +hg +sU +Bk +Bk +Wd +jz +Ol +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(88,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +hg +Sg +Jr +Bk +Wz +VG +Bl +ny +VZ +VZ +VZ +te +Bl +sU +Bk +Bk +Bk +hg +sU +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(89,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +To +HQ +sU +Bk +Bk +Bk +Bk +hg +HH +Km +Rr +yK +iO +Bl +ny +VZ +VZ +VZ +te +Bl +sU +Bk +IL +Bk +hg +sU +Bk +Bk +Bk +Bk +hg +Pi +FA +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(90,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +kR +NO +Bk +Bk +Bk +Bk +hg +Se +Jr +Xl +Wz +EC +Bl +cT +VZ +VZ +VZ +RB +Bl +Nk +Bk +Bk +Bk +RZ +sU +Bk +Bk +Bk +Bk +Wd +hh +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(91,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +jI +ID +JW +Bk +jL +nL +os +VZ +VZ +VZ +tL +Bl +zD +ID +hZ +Bk +Ng +zD +hG +hG +hG +hG +sk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(92,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +Lz +Bk +IT +gG +yW +nL +kV +sk +qJ +Nm +vg +nL +kR +Bk +st +gG +hh +kR +jz +jz +jz +hh +sU +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(93,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +BP +Bk +Zd +Bk +nR +Fe +hh +sU +mD +hg +kR +gx +sU +in +bc +HS +hg +sU +Bk +Bk +Bk +hg +sU +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(94,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +zZ +Bk +IT +Bk +SN +sU +hg +sU +FT +hg +sU +hg +sU +UF +Bk +aJ +Bk +gI +Bk +hG +sk +hg +sU +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(95,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +KG +Vr +Oj +vh +nB +sU +hg +sU +Qp +hg +sU +hg +py +On +ld +OP +uG +sU +cA +eD +sU +hg +sU +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(96,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +FY +Bk +IT +Bk +AE +sU +hg +sU +AG +hg +sU +hg +sU +UT +Bk +Ns +Bk +gI +Bk +jz +NO +hg +sU +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(97,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +PF +Bk +TJ +Bk +dr +sU +hg +zD +Bk +Ng +sU +hg +sU +ra +bc +Rl +hg +sU +Bk +Bk +Bk +hg +sU +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(98,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +Js +ID +bT +Bk +Xy +sU +Wd +jz +yh +jz +NO +hg +zD +ID +hG +Bk +Ng +zD +hG +hG +hG +Ng +sU +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(99,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +Wd +jz +Bk +kf +gG +jz +NO +Nm +hG +hG +hG +sk +Wd +jz +Bk +AG +gG +jz +jz +jz +jz +jz +jz +NO +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(100,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +hg +Sa +sU +hG +Yv +hg +QQ +Em +rd +sU +hG +vM +Bk +hG +Bk +hG +vM +Bk +hG +sk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(101,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +jW +jz +Bk +BY +BY +BY +Bk +sn +RD +hG +IT +hG +YA +IT +sk +hh +sU +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(102,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +hg +Sa +sU +Bk +Bk +hg +YQ +AS +wU +sU +Bk +hg +bF +Cy +gT +bv +Fo +sU +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(103,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +bJ +Sa +ay +Bk +Bk +hg +iX +gP +et +sU +Bk +hg +fC +CQ +Cn +Uu +Uj +sU +aD +sU +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(104,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +hg +Sa +sU +Bk +Bk +hg +qz +lc +Es +sU +Bk +Bk +CQ +CQ +oD +xS +CQ +Bk +hg +QE +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(105,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +zD +hG +hG +sk +Nm +sk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Wd +jz +Qw +jz +NO +Bk +hg +fC +CQ +Ex +gW +Uj +PT +sk +Nm +hG +hG +Ng +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(106,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +va +yg +yg +KE +te +EQ +Bk +Bk +hg +Sa +sU +Nm +hG +Bk +hG +gz +hG +Bk +hG +Kb +he +Da +Mj +Da +wS +Bl +KT +yJ +Yo +Yo +tc +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(107,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +KT +VZ +oz +UJ +te +sU +Bk +Bk +bJ +Sa +ay +hg +zq +kM +WX +ac +WX +kM +Jd +Fe +bT +NW +jz +jz +jz +VJ +KT +oz +US +VZ +te +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(108,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +NU +VZ +GA +ny +te +sU +Bk +Bk +hg +Sa +bA +kM +pv +YK +YK +YK +YK +YK +ng +kM +Jd +sU +Bk +Bk +Bk +hg +KT +te +ny +SU +ja +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(109,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +yI +GY +WA +ny +te +sU +Bk +Bk +Bk +Ap +Qw +YK +YK +YK +Vs +ry +GP +YK +YK +YK +Qw +Bk +Bk +Bk +Bk +hg +KT +te +cB +jU +Hj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(110,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +yI +VZ +GA +ny +te +sU +Bk +Bk +hg +Sa +tk +YK +Fs +il +PX +PX +PX +Kv +FG +YK +tC +sU +hG +sk +Bk +hg +KT +te +ny +VZ +Hj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(111,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +Iu +ES +vR +ny +te +zD +sk +aD +bA +Ff +MX +YK +oy +EB +SO +xg +tP +mb +xl +YK +fc +kM +Jd +sU +Nm +Ng +KT +te +CO +TS +Ly +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(112,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Nj +Fh +va +yg +Rv +zr +tc +sU +hg +sL +YT +YT +YT +Oo +Oa +vj +cJ +Jc +Yn +bK +YT +YT +YT +rM +sU +hg +va +Rv +zr +Yo +tc +Cm +Fd +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(113,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +KT +VZ +oz +UJ +zr +NO +hG +Qw +wq +kt +oR +ZK +ER +PX +PX +PX +LL +AN +vu +td +EW +Qw +hG +Wd +Rv +oz +US +VZ +te +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(114,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +NU +VZ +GA +ny +LT +sk +jz +ng +sO +eu +ZE +uo +dO +qt +xw +Sm +Ko +Kk +sO +eu +ZE +FD +vd +Nm +US +te +ny +SU +ja +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(115,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +yI +GY +WA +ny +te +sX +sU +cb +cb +ke +ke +ke +Am +ms +ms +ms +Am +ke +cb +cb +XC +cb +Ny +nL +KT +te +cB +jU +Hj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(116,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +yI +VZ +GA +ny +te +Bl +Lt +cb +RF +ke +hv +Of +lk +Yc +rH +Yc +Xb +ke +Jb +mT +kb +cb +IP +tA +KT +te +ny +VZ +Hj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(117,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +Iu +ES +vR +KT +VZ +Rv +VZ +CI +Up +ke +LW +YF +lk +Wk +Yc +px +lk +ke +bo +LR +Is +nk +PY +yJ +Rv +te +UD +TS +Ly +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(118,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Nj +AT +va +yg +Ad +oz +US +VZ +CI +si +ke +dm +gb +lk +di +Yc +XR +lk +ke +bo +LR +lt +CI +VZ +oz +US +zr +Yo +tc +Cm +Fd +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(119,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +KT +VZ +oz +wh +mX +gO +cb +mT +ke +CZ +XN +lk +di +Yc +WT +lk +ke +SL +ZY +uy +cb +BJ +nL +Bc +US +VZ +te +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(120,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +NU +VZ +GA +kR +VJ +QE +cb +cb +ke +ke +ke +Gl +SP +Yc +hw +AX +ke +ke +ke +cb +cb +hg +Zs +hh +ny +SU +ja +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(121,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +yI +GY +WA +sU +hg +zD +Bk +rS +ke +ml +Ry +RM +Yc +Yc +Yc +lK +fY +mK +ke +rS +Bk +Ng +sU +hg +cB +jU +Hj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(122,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +yI +VZ +GA +sU +Wd +jz +hg +sU +ke +lk +Wk +Yc +Du +Yc +Wk +Yc +Du +lk +ke +hg +sU +jz +NO +hg +ny +VZ +Hj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(123,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +Iu +ES +vR +sU +Bk +Bk +Bk +Bk +ke +lk +PP +Yc +cP +Yc +eF +Yc +ru +lk +ke +Bk +Bk +Bk +Bk +hg +CO +TS +Ly +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(124,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +kR +jz +jz +NO +Bk +Bk +aD +sU +ke +lk +Pu +Yc +pE +Yc +qh +Yc +SW +lk +ke +aD +sU +Bk +Bk +Wd +jz +jz +hh +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(125,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +QE +ke +lk +Pu +Yc +pE +Yc +XU +Yc +BK +lk +ke +hg +QE +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(126,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +ke +lk +PP +Yc +cP +Yc +Zp +Yc +Gd +lk +ke +Bk +Bk +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(127,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +sU +ke +lk +SP +Yc +gF +Yc +rZ +Yc +gF +lk +ke +hg +sU +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(128,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +Bk +hg +sU +ke +Mk +od +Gc +od +dV +od +ai +od +aM +ke +hg +sU +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(129,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +GD +GD +GD +Rh +qN +qN +qN +Rh +GD +GD +GD +Bk +Bk +Bk +Bk +Bk +Bk +Bk +hg +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(130,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +hg +zD +Hl +GD +GD +na +ws +ZI +dw +uu +GD +GD +Hl +Ng +sU +Bk +Bk +Bk +Bk +Bk +hg +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(131,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +zD +wL +Bk +Bk +Bk +Bk +Wd +jz +Bk +GD +RE +un +OZ +OZ +yT +fe +bi +GD +Bk +jz +NO +Bk +Bk +Bk +Bk +Nm +Ng +Zj +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(132,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +RS +sY +sU +Bk +Bk +Bk +Bk +Bk +hg +sU +GD +GD +un +Uh +nG +oO +un +GD +GD +hg +sU +Bk +Bk +Bk +Bk +Bk +hg +Cm +Fd +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(133,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +hg +sU +GD +GD +un +iT +EV +PA +un +GD +GD +hg +sU +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(134,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +GD +DZ +un +OZ +OZ +OZ +un +RL +GD +Bk +Bk +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(135,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +aD +sU +GD +GD +na +vZ +Ut +OU +uu +GD +GD +aD +sU +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(136,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +hg +QE +oS +oS +dv +El +Va +El +Xj +oS +oS +hg +QE +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(137,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +oS +gi +Aq +Xq +pR +Tm +Gg +Oi +oS +Bk +Bk +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(138,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +hg +sU +rx +ky +qg +yj +gk +Ga +Wc +ky +Xr +hg +sU +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(139,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +hg +sU +oS +rY +cj +VU +tT +sC +cj +rY +mQ +hg +sU +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(140,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +oS +oS +Ot +eX +HG +VF +Eg +oS +oS +Bk +Bk +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(141,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +sU +Bk +Bk +Bk +Bk +Bk +hg +zD +BO +oS +dc +Aa +Rf +VX +aS +oS +BO +Ng +sU +Bk +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(142,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Xt +zD +wL +Bk +Bk +Bk +Bk +Wd +jz +Bk +oS +yq +yq +oS +yq +yq +oS +Bk +jz +NO +Bk +Bk +Bk +Bk +Nm +Ng +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(143,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +RS +sY +sU +Bk +Bk +Bk +Bk +Bk +hg +zD +Bk +hG +hG +if +hG +hG +Bk +Ng +sU +Bk +Bk +Bk +Bk +Bk +hg +iR +cc +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(144,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +zD +sk +Bk +Bk +Bk +Bk +Wd +jz +Bk +jz +jz +ie +jz +jz +Bk +jz +NO +Bk +Bk +Bk +Bk +Nm +Ng +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(145,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Nj +Fh +sU +Bk +Bk +Bk +Bk +Nm +hG +hG +hG +Bk +hG +Bk +hG +hG +hG +sk +Bk +Bk +Bk +Bk +hg +iR +cc +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(146,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +hg +kR +jz +jz +Bk +vB +Bk +jz +jz +hh +sU +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(147,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +sU +Bk +Bk +Bk +Bk +hg +sU +Bk +hG +Bk +SZ +Bk +hG +Bk +hg +sU +Bk +Bk +Bk +Bk +hg +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(148,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +zD +sk +Bk +Bk +Bk +jr +cb +iY +jz +Nm +cb +iY +jz +Nm +Wf +Nn +Bk +Bk +Bk +Nm +Ng +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(149,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Nj +Fh +sU +Bk +Bk +Bk +Wd +jz +qc +UL +Zz +jz +qc +UL +Zz +jz +NO +Bk +Bk +Bk +hg +iR +cc +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(150,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +zD +sk +Bk +Bk +Bk +Bk +VS +VS +VS +Bk +VS +VS +VS +Bk +Bk +Bk +Bk +Nm +Ng +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(151,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Nj +Fh +sU +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +hg +iR +cc +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(152,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +xv +zD +sk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Nm +Ng +bu +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(153,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Nj +Fh +zD +hG +hG +hG +hG +hG +hG +DY +hG +hG +hG +hG +hG +hG +Ng +iR +cc +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(154,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +Nj +xU +xU +xU +xU +xU +xU +xU +xU +xU +xU +xU +xU +xU +xU +xU +cc +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(155,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(156,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(157,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(158,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(159,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(160,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(161,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(162,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(163,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(164,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(165,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(166,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(167,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(168,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(169,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(170,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(171,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(172,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(173,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(174,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(175,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(176,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(177,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(178,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(179,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(180,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(181,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(182,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(183,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(184,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(185,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(186,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(187,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(188,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(189,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(190,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(191,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(192,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(193,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(194,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(195,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(196,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(197,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(198,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(199,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(200,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(201,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(202,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(203,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(204,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(205,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(206,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(207,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(208,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(209,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(210,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(211,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(212,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(213,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(214,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(215,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(216,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(217,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(218,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(219,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(220,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(221,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(222,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(223,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(224,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(225,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(226,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(227,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(228,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(229,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(230,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(231,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(232,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(233,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(234,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(235,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(236,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(237,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(238,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(239,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(240,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(241,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(242,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(243,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(244,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(245,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(246,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(247,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(248,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(249,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(250,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(251,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(252,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(253,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(254,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} +(255,1,1) = {" +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +mp +"} diff --git a/_maps/map_files/Instanced/map_files/SpaceSHIP.dmm b/_maps/map_files/Instanced/map_files/SpaceSHIP.dmm index 90f6114c8f8..259ee20079e 100644 --- a/_maps/map_files/Instanced/map_files/SpaceSHIP.dmm +++ b/_maps/map_files/Instanced/map_files/SpaceSHIP.dmm @@ -7389,6 +7389,11 @@ }, /turf/open/floor/carpet/red, /area/nsv/hanger/pvp/marine) +"rn" = ( +/obj/structure/table/reinforced, +/obj/machinery/coffeemaker, +/turf/open/floor/wood, +/area/crew_quarters/bar/pvp) "ro" = ( /obj/machinery/camera/syndicate{ c_tag = "Chief Medical Officer's Office"; @@ -8080,7 +8085,7 @@ dir = 1 }, /obj/item/paper{ - info = "You know, some people say we never abandoned the Astraeus, and that it was always there waiting to be needed again. Thank you for your service, ye most faithful of all ships."; + default_raw_text = "You know, some people say we never abandoned the Astraeus, and that it was always there waiting to be needed again. Thank you for your service, ye most faithful of all ships."; name = "The legacy" }, /turf/open/floor/plating, @@ -10601,7 +10606,7 @@ /obj/item/stock_parts/cell, /obj/item/assembly/prox_sensor, /obj/item/paper/fluff{ - info = "IF YOU MAKE A BORG, BE SURE TO EMAG IT! We're using stolen NT borg tech so it'll have their stupid laws. - Steve"; + default_raw_text = "IF YOU MAKE A BORG, BE SURE TO EMAG IT! We're using stolen NT borg tech so it'll have their stupid laws. - Steve"; name = "Note from Steve the scientist" }, /obj/machinery/ecto_sniffer, @@ -18373,7 +18378,7 @@ /obj/structure/table/reinforced, /obj/item/modular_computer/tablet/preset/advanced, /obj/item/paper{ - info = "If your coolant temperature gets too high, try reducing your coolant in / outlet pumps to a lower kPa (800 works nicely). We didn't have the space to fit a full coolant loop - Engineer Gregg"; + default_raw_text = "If your coolant temperature gets too high, try reducing your coolant in / outlet pumps to a lower kPa (800 works nicely). We didn't have the space to fit a full coolant loop - Engineer Gregg"; name = "In case of inadequate cooling..." }, /turf/open/floor/engine, @@ -20674,7 +20679,7 @@ /turf/open/floor/plasteel/tech/grid, /area/hallway/pvp) "WU" = ( -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /turf/open/floor/carpet/red, /area/crew_quarters/heads/captain/pvp) "WV" = ( @@ -21708,6 +21713,11 @@ }, /turf/open/floor/durasteel/lino, /area/crew_quarters/heads/captain/pvp/admiral) +"Zv" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/coffee_condi_display, +/turf/open/floor/wood, +/area/crew_quarters/bar/pvp) "Zw" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8 @@ -61218,8 +61228,8 @@ jg fx WN jg -jg -jg +rn +Zv oY Ae jn diff --git a/_maps/map_files/Mining/nsv13/Rocinante.dmm b/_maps/map_files/Mining/nsv13/Rocinante.dmm index 1b45be057b4..0708dc8fe0f 100644 --- a/_maps/map_files/Mining/nsv13/Rocinante.dmm +++ b/_maps/map_files/Mining/nsv13/Rocinante.dmm @@ -1963,7 +1963,7 @@ }, /obj/effect/turf_decal/tile/green, /obj/item/paper{ - info = "Place patient into stasis bed and attempt to apply first aid. Seek immediate professional medical help and ensure that the stasis unit remains active. Remain calm, do not attempt complex procedures by yourselves."; + default_raw_text = "Place patient into stasis bed and attempt to apply first aid. Seek immediate professional medical help and ensure that the stasis unit remains active. Remain calm, do not attempt complex procedures by yourselves."; name = "Dublanc Mining Corporation Medical Procedures" }, /turf/open/floor/plasteel/techmaint, diff --git a/_maps/map_files/Mining/nsv13/ruins/mining4.dmm b/_maps/map_files/Mining/nsv13/ruins/mining4.dmm index a85a6c7acdf..947342fd7b9 100644 --- a/_maps/map_files/Mining/nsv13/ruins/mining4.dmm +++ b/_maps/map_files/Mining/nsv13/ruins/mining4.dmm @@ -25,7 +25,7 @@ /area/ruin/powered) "g" = ( /obj/item/shovel, -/obj/item/pda/engineering, +/obj/item/modular_computer/tablet/pda/engineering, /turf/open/floor/plating, /area/ruin/powered) "h" = ( @@ -34,7 +34,7 @@ /turf/open/floor/plating, /area/ruin/powered) "i" = ( -/obj/item/pda/janitor, +/obj/item/modular_computer/tablet/pda/janitor, /turf/open/floor/plating, /area/ruin/powered) "j" = ( diff --git a/_maps/map_files/Mining/nsv13/ruins/mining5.dmm b/_maps/map_files/Mining/nsv13/ruins/mining5.dmm index 4b281f01ac7..753f31d0c09 100644 --- a/_maps/map_files/Mining/nsv13/ruins/mining5.dmm +++ b/_maps/map_files/Mining/nsv13/ruins/mining5.dmm @@ -308,7 +308,7 @@ /area/ruin/unpowered) "aW" = ( /obj/item/paper/fluff/ruins/asteroid4/extraction{ - info = "It's been days since they evacuated and I have at this point. Blatantly nobody will miss me, so I have no request to a loved one.
I have but one request to you who are reading this: Do.
Not
Open
The
Sarcophagus"; + default_raw_text = "It's been days since they evacuated and I have at this point. Blatantly nobody will miss me, so I have no request to a loved one.
I have but one request to you who are reading this: Do.
Not
Open
The
Sarcophagus"; name = "last will" }, /turf/open/floor/plasteel/ship/padded, @@ -932,7 +932,7 @@ "cI" = ( /obj/structure/table/wood, /obj/item/paper/fluff/ruins/asteroid4/extraction{ - info = "Captain's orders:

Evacuate, and relocate the armoury to the exit point. We've lost a few heads already.

Burn the infected to hamper the disease."; + default_raw_text = "Captain's orders:

Evacuate, and relocate the armoury to the exit point. We've lost a few heads already.

Burn the infected to hamper the disease."; name = "captain's orders" }, /turf/open/floor/plasteel/ship, @@ -1552,7 +1552,7 @@ dir = 8 }, /obj/item/paper/fluff/ruins/asteroid4/extraction{ - info = "Captain's orders:

Evacuate, and relocate the armoury to the exit point. We've lost a few heads already.

Burn the infected to hamper the disease."; + default_raw_text = "Captain's orders:

Evacuate, and relocate the armoury to the exit point. We've lost a few heads already.

Burn the infected to hamper the disease."; name = "captain's orders" }, /turf/open/floor/plasteel/ship, @@ -1655,7 +1655,7 @@ /area/ruin/unpowered) "eO" = ( /obj/item/paper/fluff/ruins/asteroid4/extraction{ - info = "Captain's orders:

Evacuate, and relocate the armoury to the exit point. We've lost a few heads already.

Burn the infected to hamper the disease."; + default_raw_text = "Captain's orders:

Evacuate, and relocate the armoury to the exit point. We've lost a few heads already.

Burn the infected to hamper the disease."; name = "captain's orders" }, /obj/structure/table, @@ -1701,7 +1701,7 @@ "eV" = ( /obj/structure/table/glass, /obj/item/paper/fluff/ruins/asteroid4/extraction{ - info = "Captain's orders:

Evacuate, and relocate the armoury to the exit point. We've lost a few heads already.

Burn the infected to hamper the disease."; + default_raw_text = "Captain's orders:

Evacuate, and relocate the armoury to the exit point. We've lost a few heads already.

Burn the infected to hamper the disease."; name = "captain's orders" }, /turf/open/floor/plasteel/ship/padded, diff --git a/_maps/map_files/Serendipity/Serendipity1.dmm b/_maps/map_files/Serendipity/Serendipity1.dmm index e183ec9ffca..12fbc140913 100644 --- a/_maps/map_files/Serendipity/Serendipity1.dmm +++ b/_maps/map_files/Serendipity/Serendipity1.dmm @@ -3769,6 +3769,10 @@ }, /turf/closed/wall/ship, /area/maintenance/department/medical) +"mk" = ( +/obj/effect/landmark/latejoin, +/turf/open/floor/wood, +/area/crew_quarters/cryopods) "mm" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -5398,6 +5402,11 @@ /turf/open/floor/plasteel/tiled/light, /area/medical/apothecary) "sl" = ( +/obj/machinery/fax{ + fax_name = "Security"; + name = "Security Fax Machine" + }, +/obj/structure/table/glass/plasma, /turf/open/floor/carpet/ship/red_carpet, /area/security/brig) "sm" = ( @@ -7355,6 +7364,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, +/obj/effect/landmark/latejoin, /turf/open/floor/wood, /area/crew_quarters/cryopods) "yp" = ( @@ -7395,6 +7405,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 }, +/obj/effect/landmark/latejoin, /turf/open/floor/wood, /area/crew_quarters/cryopods) "yx" = ( @@ -10483,17 +10494,11 @@ /turf/open/floor/plasteel/tiled/light, /area/bridge/cic) "IQ" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 7; - height = 8; - id = "arrivals_stationary"; - name = "Serendipity Arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/serendipity; - width = 15 - }, -/turf/open/space/basic, -/area/space/nearstation) +/obj/machinery/recharge_station, +/obj/effect/landmark/start/cyborg, +/obj/effect/landmark/latejoin, +/turf/open/floor/wood, +/area/crew_quarters/cryopods) "IT" = ( /obj/structure/table/glass/plasma, /obj/item/paper_bin, @@ -11641,6 +11646,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/carpet, /area/crew_quarters/heads/xo) +"Mh" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/obj/effect/landmark/start/assistant, +/obj/effect/landmark/latejoin, +/turf/open/floor/wood, +/area/crew_quarters/cryopods) "Mi" = ( /obj/machinery/stasis, /obj/effect/turf_decal/tile/ship/blue{ @@ -13910,7 +13922,7 @@ /turf/open/floor/grass, /area/chapel) "TI" = ( -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /turf/open/floor/carpet, /area/crew_quarters/heads/xo) "TJ" = ( @@ -14495,6 +14507,11 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, +/obj/machinery/fax{ + name = "CIC Fax Machine"; + fax_name = "CIC" + }, +/obj/structure/table/glass/plasma, /turf/open/floor/plasteel/tiled/light, /area/bridge/cic) "VP" = ( @@ -14615,6 +14632,7 @@ pixel_y = -30 }, /obj/effect/landmark/start/assistant, +/obj/effect/landmark/latejoin, /turf/open/floor/wood, /area/crew_quarters/cryopods) "Wk" = ( @@ -36964,7 +36982,7 @@ zP zP zP zP -IQ +zP zP zP zP @@ -44680,8 +44698,8 @@ Gu Tc yw yo -Kf -Kf +mk +mk wF Vp Lr @@ -44935,9 +44953,9 @@ kG SB Fe mm -zw -Kf -zA +IQ +mk +Mh Wj vP Sf diff --git a/_maps/map_files/Serendipity/Serendipity2.dmm b/_maps/map_files/Serendipity/Serendipity2.dmm index 1762670a736..c4f5236b1c9 100644 --- a/_maps/map_files/Serendipity/Serendipity2.dmm +++ b/_maps/map_files/Serendipity/Serendipity2.dmm @@ -1418,10 +1418,13 @@ /area/engine/engine_room) "gs" = ( /obj/structure/table/wood, -/obj/item/pen/fourcolor, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/fax{ + name = "QM Office Fax Machine"; + fax_name = "Quartermaster" + }, /turf/open/floor/wood, /area/quartermaster/qm) "gt" = ( @@ -2146,6 +2149,7 @@ icon_state = "4-8" }, /obj/item/stamp/quartermaster, +/obj/item/pen/fourcolor, /turf/open/floor/wood, /area/quartermaster/qm) "jx" = ( @@ -3323,6 +3327,11 @@ /obj/structure/sign/poster/official/moth3{ pixel_x = 30 }, +/obj/machinery/fax{ + name = "Engineerings Fax Machine"; + fax_name = "Engineering" + }, +/obj/structure/table, /turf/open/floor/plasteel/dark/side{ dir = 8 }, @@ -3621,7 +3630,7 @@ /obj/item/stack/cable_coil/red, /obj/item/crowbar, /obj/item/paper{ - info = "

NOTE: The Dominion don't install gravity generators on their ships, we barely had enough time to install one but you're going to have to wire it to the power grid. Remember: Terminal to powerline, SMES to APC.

"; + default_raw_text = "

NOTE: The Dominion don't install gravity generators on their ships, we barely had enough time to install one but you're going to have to wire it to the power grid. Remember: Terminal to powerline, SMES to APC.

"; name = "READ ME." }, /obj/item/clothing/gloves/color/yellow, @@ -10063,6 +10072,11 @@ /obj/machinery/camera/autoname{ dir = 9 }, +/obj/machinery/fax{ + fax_name = "Law Office"; + name = "Law Office Fax Machine" + }, +/obj/structure/table/glass/plasma, /turf/open/floor/carpet/ship/beige_carpet, /area/hallway/nsv/deck1/hallway) "Us" = ( @@ -10486,7 +10500,7 @@ icon_state = "0-4" }, /obj/item/paper{ - info = "

NOTE: This ship is outfitted with a Tesla reactor. Take extra care to wrench everything down and weld what needs welding. If you want to upgrade the Tesla Coils, be sure to use the BSRPED in the CE's Office or unwrench the coil and take it away from the reactor before opening it up and upgrading it.

"; + default_raw_text = "

NOTE: This ship is outfitted with a Tesla reactor. Take extra care to wrench everything down and weld what needs welding. If you want to upgrade the Tesla Coils, be sure to use the BSRPED in the CE's Office or unwrench the coil and take it away from the reactor before opening it up and upgrading it.

"; name = "READ ME." }, /turf/open/floor/engine, diff --git a/_maps/map_files/Shrike/Shrike1.dmm b/_maps/map_files/Shrike/Shrike1.dmm index 1a7c4f609de..b7fc83f845e 100644 --- a/_maps/map_files/Shrike/Shrike1.dmm +++ b/_maps/map_files/Shrike/Shrike1.dmm @@ -504,7 +504,10 @@ "cu" = ( /obj/machinery/door/airlock/turbolift/ship, /turf/open/floor/monotile/dark, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "cv" = ( /turf/open/floor/plating, /area/maintenance/department/cargo) @@ -513,7 +516,10 @@ dir = 1 }, /turf/closed/wall/r_wall/ship, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "cy" = ( /obj/machinery/light{ color = "#c1e1ff"; @@ -694,7 +700,10 @@ /area/quartermaster/miningdock) "dx" = ( /turf/closed/wall/r_wall/ship, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "dy" = ( /obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ dir = 6 @@ -789,7 +798,10 @@ "dF" = ( /obj/machinery/light/floor, /turf/open/openspace, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "dI" = ( /obj/structure/table/reinforced, /obj/item/gun/grenadelauncher, @@ -952,7 +964,10 @@ dir = 8 }, /turf/open/openspace, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "ez" = ( /obj/machinery/door/airlock/ship/security{ dir = 4; @@ -976,7 +991,10 @@ /area/storage/tools) "eF" = ( /turf/open/openspace, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "eG" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -1048,6 +1066,9 @@ /area/maintenance/nsv/bridge) "eY" = ( /obj/machinery/atmospherics/pipe/simple/supply/visible/layer2, +/obj/machinery/light/small{ + dir = 4 + }, /turf/open/floor/plating/rusty_techgrid, /area/maintenance/department/cargo) "eZ" = ( @@ -1442,9 +1463,6 @@ /turf/open/floor/plating/rusty_techgrid, /area/engine/armour_pump) "gF" = ( -/obj/machinery/light/small{ - dir = 4 - }, /obj/structure/disposalpipe/segment{ dir = 6 }, @@ -3325,6 +3343,8 @@ /obj/item/circuitboard/machine/microwave, /obj/item/circuitboard/machine/hydroponics, /obj/item/circuitboard/machine/hydroponics, +/obj/item/circuitboard/machine/vendor, +/obj/item/circuitboard/machine/processor, /turf/open/floor/durasteel, /area/storage/tech) "pS" = ( @@ -4544,10 +4564,6 @@ }, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) -"vt" = ( -/obj/structure/foamedmetal, -/turf/closed/wall/ship, -/area/maintenance/nsv/deck1/starboard) "vu" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -5928,10 +5944,10 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/item/modular_computer/tablet/preset, -/obj/item/modular_computer/tablet/preset, /obj/structure/rack, -/obj/item/modular_computer/laptop/preset, +/obj/item/modular_computer/laptop/preset/civillian, +/obj/item/modular_computer/tablet, +/obj/item/modular_computer/tablet, /turf/open/floor/durasteel, /area/storage/tech) "Cl" = ( @@ -6329,6 +6345,7 @@ dir = 4 }, /obj/effect/spawner/lootdrop/maintenance/two, +/obj/item/circuitboard/machine/processor/slime, /turf/open/floor/plating, /area/maintenance/nsv/deck1/starboard) "El" = ( @@ -8596,7 +8613,7 @@ /turf/closed/wall/ship, /area/hallway/nsv/deck1/frame1/starboard) "NR" = ( -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /turf/open/floor/plasteel/ridged/steel, /area/bridge{ lighting_colour_bulb = "#c1e1ff"; @@ -41452,9 +41469,9 @@ qQ vG vG bw -vt -vt -vt +Ep +Ep +Ep iL cF li @@ -41711,7 +41728,7 @@ jf wS rt yU -vt +Ep iL cF li @@ -41968,7 +41985,7 @@ NX El rt dV -vt +Ep iL cF li @@ -42225,7 +42242,7 @@ jf WA rt kq -vt +Ep iL cF li @@ -42482,7 +42499,7 @@ ck WA rt pZ -vt +Ep iL li li diff --git a/_maps/map_files/Shrike/Shrike2.dmm b/_maps/map_files/Shrike/Shrike2.dmm index 062109c1137..e4598daf2d4 100644 --- a/_maps/map_files/Shrike/Shrike2.dmm +++ b/_maps/map_files/Shrike/Shrike2.dmm @@ -117,10 +117,6 @@ }, /turf/open/floor/plating/rusty_techgrid, /area/engine/stormdrive) -"av" = ( -/obj/structure/foamedmetal, -/turf/closed/wall/ship, -/area/maintenance/department/crew_quarters/bar) "aw" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -399,7 +395,7 @@ }) "bl" = ( /obj/structure/foamedmetal, -/turf/open/space/basic, +/turf/open/floor/plating/foam, /area/maintenance/department/crew_quarters/bar) "bm" = ( /obj/machinery/airalarm/directional/west, @@ -656,7 +652,10 @@ }) "bZ" = ( /turf/closed/wall/r_wall/ship, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "cd" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -895,6 +894,22 @@ }, /turf/open/floor/plasteel/dark, /area/science/lab) +"cP" = ( +/obj/effect/turf_decal/guideline/guideline_out/blue{ + dir = 6 + }, +/obj/effect/turf_decal/guideline/guideline_in/red{ + dir = 6 + }, +/obj/effect/landmark/latejoin, +/turf/open/floor/monofloor/corner{ + dir = 1 + }, +/area/hallway/nsv/deck2/frame1/starboard{ + lighting_colour_bulb = "#c1e1ff"; + lighting_colour_night = "#c1e1ff"; + lighting_colour_tube = "#c1e1ff" + }) "cQ" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/vending/cola/random, @@ -1367,6 +1382,7 @@ /obj/structure/cable/green{ icon_state = "1-2" }, +/obj/effect/landmark/latejoin, /turf/open/floor/plating/rusty_techgrid, /area/hallway/nsv/deck2/frame1/starboard{ lighting_colour_bulb = "#c1e1ff"; @@ -1467,6 +1483,16 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/plating/rusty_techgrid, /area/engine/atmos/starboard_atmos) +"eG" = ( +/obj/effect/turf_decal/box, +/obj/effect/landmark/trader_drop_point, +/obj/structure/closet/crate/medical, +/obj/item/reagent_containers/pill/patch/silver_sulf, +/obj/item/reagent_containers/pill/patch/styptic, +/obj/item/reagent_containers/pill/floorpill, +/obj/item/reagent_containers/pill/floorpill, +/turf/open/floor/monotile/steel, +/area/quartermaster/storage) "eH" = ( /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner/west, @@ -1595,7 +1621,10 @@ dir = 8 }, /turf/open/floor/monotile/dark, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "fg" = ( /obj/effect/landmark/zebra_interlock_point, /obj/machinery/door/firedoor/border_only/directional/west, @@ -1604,7 +1633,10 @@ /area/quartermaster/storage) "fi" = ( /turf/open/floor/monotile/dark, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "fj" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -1852,7 +1884,10 @@ /area/crew_quarters/bar/mess_hall) "fU" = ( /turf/open/floor/monotile/steel, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "fV" = ( /obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ dir = 8 @@ -1969,10 +2004,15 @@ "gn" = ( /obj/machinery/lazylift/master{ pixel_x = 30; - pixel_y = 1 + pixel_y = 1; + play_voice_lines = 0; + use_music = 0 }, /turf/open/floor/monotile/dark, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "go" = ( /obj/machinery/light{ dir = 8 @@ -2074,6 +2114,22 @@ }, /turf/open/floor/plating/rusty_techgrid, /area/crew_quarters/bar/mess_hall) +"gB" = ( +/obj/effect/turf_decal/guideline/guideline_out/blue{ + dir = 8 + }, +/obj/effect/turf_decal/guideline/guideline_in/red{ + dir = 8 + }, +/obj/effect/landmark/latejoin, +/turf/open/floor/monofloor{ + dir = 4 + }, +/area/hallway/nsv/deck2/frame1/starboard{ + lighting_colour_bulb = "#c1e1ff"; + lighting_colour_night = "#c1e1ff"; + lighting_colour_tube = "#c1e1ff" + }) "gC" = ( /turf/open/floor/plating, /area/nsv/weapons/gauss/battery/deck2/port{ @@ -2277,7 +2333,10 @@ "hm" = ( /obj/machinery/light/floor, /turf/open/floor/monotile/dark, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "ho" = ( /obj/effect/turf_decal/ship/delivery/yellow, /obj/machinery/ship_weapon/torpedo_launcher/cargo/north{ @@ -2944,7 +3003,10 @@ "jR" = ( /obj/machinery/lazylift_button, /turf/closed/wall/r_wall/ship, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "jS" = ( /obj/structure/grille, /obj/structure/cable/white{ @@ -2962,18 +3024,21 @@ lighting_colour_tube = "#c1e1ff" }) "jT" = ( -/obj/effect/turf_decal/box, -/obj/structure/closet/crate/large, -/obj/item/stack/sheet/glass{ - amount = 10 +/obj/machinery/status_display/supply/west{ + pixel_y = 16 }, -/obj/effect/landmark/trader_drop_point, -/turf/open/floor/monotile/steel, -/area/quartermaster/storage) +/turf/open/floor/monotile/dark, +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "jV" = ( /obj/machinery/door/airlock/turbolift/ship, /turf/open/floor/monotile, -/area/shuttle/turbolift/shaft) +/area/shuttle/turbolift/shaft{ + ambient_buzz = null; + ambientsounds = null + }) "jW" = ( /obj/structure/fluff/support_beam{ dir = 4 @@ -3436,6 +3501,7 @@ /obj/item/clipboard, /obj/item/clipboard, /obj/item/export_scanner, +/obj/machinery/status_display/supply/west, /turf/open/floor/plating/rusty_techgrid, /area/quartermaster/storage) "lt" = ( @@ -3715,8 +3781,10 @@ "mQ" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate/large, -/obj/effect/spawner/lootdrop/costume, /obj/effect/landmark/trader_drop_point, +/obj/item/stack/sheet/mineral/copper{ + amount = 10 + }, /turf/open/floor/monotile/steel, /area/quartermaster/storage) "mS" = ( @@ -3741,12 +3809,9 @@ /area/quartermaster/storage) "mX" = ( /obj/effect/turf_decal/box, -/obj/item/stack/sheet/iron/ten, -/obj/item/stack/sheet/mineral/copper{ - amount = 5 - }, /obj/structure/closet/crate/large, /obj/effect/landmark/trader_drop_point, +/obj/item/stack/sheet/iron/twenty, /turf/open/floor/monotile/steel, /area/quartermaster/storage) "mY" = ( @@ -3789,9 +3854,12 @@ /area/crew_quarters/kitchen) "nf" = ( /obj/effect/turf_decal/box, -/obj/structure/closet/crate/medical, -/obj/item/reagent_containers/pill/patch/styptic, -/obj/item/reagent_containers/pill/patch/silver_sulf, +/obj/effect/landmark/trader_drop_point, +/obj/structure/closet/crate/internals, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen/double/empty, /turf/open/floor/monotile/steel, /area/quartermaster/storage) "ng" = ( @@ -4202,6 +4270,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, +/obj/structure/closet/crate/mail, /turf/open/floor/plating, /area/quartermaster/sorting) "oF" = ( @@ -4575,7 +4644,8 @@ /area/space/nearstation) "pS" = ( /obj/effect/turf_decal/box, -/obj/structure/closet/cardboard, +/obj/structure/closet/crate/large, +/obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/monotile/steel, /area/quartermaster/storage) "pT" = ( @@ -4591,17 +4661,26 @@ /turf/open/floor/plating/rusty_techgrid, /area/quartermaster/storage) "pX" = ( -/obj/docking_port/stationary{ - dir = 4; - dwidth = 3; - height = 12; - id = "arrivals_stationary"; - name = "Deck 2 Arrivals Port"; - roundstart_template = /datum/map_template/shuttle/arrival/shrike; - width = 7 +/obj/structure/cable/green{ + icon_state = "4-8" }, -/turf/open/space/basic, -/area/space) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/landmark/latejoin, +/turf/open/floor/plating/rusty_techgrid, +/area/hallway/nsv/deck2/frame1/starboard{ + lighting_colour_bulb = "#c1e1ff"; + lighting_colour_night = "#c1e1ff"; + lighting_colour_tube = "#c1e1ff" + }) "pY" = ( /obj/structure/fluff/support_beam, /turf/open/floor/plating, @@ -5015,24 +5094,18 @@ }) "rl" = ( /obj/effect/turf_decal/box, +/obj/effect/landmark/trader_drop_point, +/obj/structure/closet/cardboard, +/turf/open/floor/monotile/steel, +/area/quartermaster/storage) +"rm" = ( +/obj/effect/turf_decal/box, /obj/structure/closet/crate, /obj/item/stack/sheet/cardboard, /obj/item/stack/sheet/cardboard, /obj/item/stack/sheet/cardboard, /obj/item/stack/sheet/cardboard, /obj/item/stack/sheet/cardboard, -/obj/effect/landmark/trader_drop_point, -/turf/open/floor/monotile/steel, -/area/quartermaster/storage) -"rm" = ( -/obj/effect/turf_decal/box, -/obj/structure/closet/crate/radiation, -/obj/item/control_rod/inferior{ - icon_state = "irradiated"; - name = "Irradiated Reactor Control Rod"; - rod_effectiveness = 0.1; - rod_integrity = 5 - }, /turf/open/floor/monotile/steel, /area/quartermaster/storage) "rn" = ( @@ -5069,10 +5142,9 @@ }) "ru" = ( /obj/effect/turf_decal/box, -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/glowstick, -/obj/effect/spawner/lootdrop/glowstick, /obj/effect/landmark/trader_drop_point, +/obj/structure/closet/crate/hydroponics, +/obj/effect/spawner/lootdrop/random_seeds, /turf/open/floor/monotile/steel, /area/quartermaster/storage) "rv" = ( @@ -6103,7 +6175,10 @@ }) "uA" = ( /obj/effect/turf_decal/box, -/obj/structure/closet/crate, +/obj/structure/closet/crate/medical, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, +/obj/item/reagent_containers/blood/random, /turf/open/floor/monotile/steel, /area/quartermaster/storage) "uB" = ( @@ -6163,6 +6238,7 @@ /obj/structure/cable/green{ icon_state = "2-8" }, +/obj/effect/landmark/latejoin, /turf/open/floor/plating/rusty_techgrid, /area/crew_quarters/cryopods) "uS" = ( @@ -7773,6 +7849,13 @@ }, /turf/open/floor/plating/rusty_techgrid, /area/maintenance/nsv/deck2/starboard) +"zG" = ( +/obj/effect/turf_decal/box, +/obj/effect/landmark/trader_drop_point, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/seven, +/turf/open/floor/monotile/steel, +/area/quartermaster/storage) "zH" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 10 @@ -9249,6 +9332,7 @@ /obj/machinery/camera/autoname, /obj/effect/turf_decal/guideline/guideline_out/blue, /obj/effect/turf_decal/guideline/guideline_in/red, +/obj/effect/landmark/latejoin, /turf/open/floor/monofloor{ dir = 1 }, @@ -9392,6 +9476,7 @@ /obj/effect/turf_decal/guideline/guideline_in_arrow_con_alt/red{ dir = 5 }, +/obj/effect/landmark/latejoin, /turf/open/floor/monofloor{ dir = 1 }, @@ -10319,7 +10404,9 @@ "HA" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate/large, -/obj/effect/spawner/lootdrop/maintenance/four, +/obj/item/stack/sheet/glass{ + amount = 20 + }, /turf/open/floor/monotile/steel, /area/quartermaster/storage) "HB" = ( @@ -11278,7 +11365,11 @@ /turf/open/floor/monofloor{ dir = 8 }, -/area/space) +/area/hallway/nsv/deck2/frame2/starboard{ + lighting_colour_bulb = "#c1e1ff"; + lighting_colour_night = "#c1e1ff"; + lighting_colour_tube = "#c1e1ff" + }) "Kj" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -11401,6 +11492,11 @@ /obj/machinery/power/apc/auto_name/south, /turf/open/floor/plating/rusty_techgrid, /area/science/robotics) +"KB" = ( +/turf/closed/indestructible/fakeglass{ + alpha = 0 + }, +/area/space) "KC" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/structure/window/reinforced/spawner, @@ -16128,9 +16224,10 @@ /area/security/main) "XW" = ( /obj/effect/turf_decal/box, -/obj/structure/closet/crate/medical, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, +/obj/structure/closet/crate/radiation, +/obj/item/reagent_containers/food/snacks/burrito, +/obj/item/reagent_containers/food/snacks/burrito, +/obj/item/reagent_containers/food/snacks/burrito, /turf/open/floor/monotile/steel, /area/quartermaster/storage) "XX" = ( @@ -16261,6 +16358,7 @@ icon_state = "1-2" }, /obj/structure/lattice/catwalk/over/ship, +/obj/effect/landmark/latejoin, /turf/open/floor/plating/rusty_techgrid, /area/hallway/nsv/deck2/frame1/starboard{ lighting_colour_bulb = "#c1e1ff"; @@ -20654,7 +20752,7 @@ gi gi gi gi -gi +KB gi gi gi @@ -46841,9 +46939,9 @@ mQ HA mX UP -rl -UP aK +uA +eG Wn tX vq @@ -47346,18 +47444,18 @@ ay bZ hm fi -fi +jT hm jV Nv -aK nf +UP QO UP aK rm -aK -uA +zG +UP oR tX vn @@ -48123,9 +48221,9 @@ jV Nv ku UP -aK +rl pS -jT +aK UP tN XW @@ -48882,7 +48980,7 @@ gi gi KI KI -av +bl bl As bZ @@ -52053,7 +52151,7 @@ KI KI KI gi -pX +gi gi gi gi @@ -52805,7 +52903,7 @@ qo qo qo Eh -YT +pX HE eP eP @@ -53062,7 +53160,7 @@ qo RD IG Ey -YT +pX bs LA Vt @@ -53575,8 +53673,8 @@ KI qo Bo IG -yY -rk +cP +gB rk cY yI diff --git a/_maps/map_files/Snake/snake_lower.dmm b/_maps/map_files/Snake/snake_lower.dmm index afbf2490835..e31e5eb53b5 100644 --- a/_maps/map_files/Snake/snake_lower.dmm +++ b/_maps/map_files/Snake/snake_lower.dmm @@ -34,15 +34,17 @@ /turf/open/floor/plasteel/dark, /area/hallway/primary/fore) "ag" = ( -/obj/structure/frame/computer{ - dir = 1 - }, /obj/structure/cable{ icon_state = "2-8" }, /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/fax{ + name = "CIC Fax Machine"; + fax_name = "CIC" + }, +/obj/structure/table/reinforced, /turf/open/floor/plasteel/dark/side{ dir = 1 }, @@ -564,7 +566,7 @@ "ce" = ( /obj/machinery/ammo_sorter{ dir = 8; - id = "atlas1"; + id = "snake"; name = "AP shells" }, /obj/item/ship_weapon/ammunition/naval_artillery/ap, @@ -763,7 +765,7 @@ /turf/open/floor/plasteel, /area/security/brig) "cO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos{ +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{ dir = 8 }, /turf/open/floor/engine/air, @@ -794,6 +796,10 @@ /area/engine/engineering/reactor_core) "cW" = ( /obj/structure/table/reinforced, +/obj/machinery/fax{ + name = "Engineerings Fax Machine"; + fax_name = "Engineering" + }, /obj/item/binoculars, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_control) @@ -1063,8 +1069,6 @@ /obj/structure/disposalpipe/segment, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 4; - freq = 1400; location = "Security"; name = "Delivery Security" }, @@ -1808,7 +1812,8 @@ /area/space/nearstation) "gK" = ( /obj/machinery/computer/ammo_sorter{ - dir = 1 + dir = 1; + id = "snake" }, /obj/item/multitool, /turf/open/floor/engine, @@ -1897,14 +1902,6 @@ /turf/open/floor/plasteel, /area/janitor) "gY" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -1; - pixel_y = 4 - }, -/obj/item/restraints/handcuffs{ - pixel_y = 3 - }, /obj/machinery/light, /obj/effect/turf_decal/tile/ship/brown{ dir = 1 @@ -1912,6 +1909,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/conquest_beacon/nanotrasen, /turf/open/floor/plasteel/dark/side{ dir = 1 }, @@ -2146,6 +2144,7 @@ /area/lawoffice) "hM" = ( /obj/machinery/airalarm/directional/south, +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel, /area/crew_quarters/cryopods) "hO" = ( @@ -2482,9 +2481,6 @@ dir = 5 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, /turf/open/floor/plasteel/dark/side, /area/bridge/cic) "iU" = ( @@ -2554,16 +2550,15 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/door/airlock/ship/command/glass{ - name = "Combat Information Center"; - req_one_access_txt = "19" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/mapping_helpers/airlock/unres, /obj/machinery/door/firedoor/border_only/directional/north, /obj/machinery/door/firedoor/border_only/directional/south, -/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/ship/command/glass{ + name = "Combat Information Center"; + req_one_access_txt = "19" + }, /turf/open/floor/plasteel, /area/bridge/cic) "jn" = ( @@ -2758,8 +2753,6 @@ "jW" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 4; - freq = 1400; location = "Engineering"; name = "Delivery Engineering" }, @@ -2804,10 +2797,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -1; + pixel_y = 4 + }, +/obj/item/restraints/handcuffs{ + pixel_y = 3 }, -/obj/machinery/disposal/bin, /turf/open/floor/plasteel/dark/side, /area/bridge/cic) "ke" = ( @@ -3155,7 +3152,7 @@ /turf/open/floor/engine, /area/nsv/weapons/fore) "ls" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/mix_output{ dir = 4 }, /turf/open/floor/engine/airless, @@ -3801,9 +3798,9 @@ /turf/open/floor/plasteel/white, /area/science/lab) "nL" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/mix_input{ dir = 8; - name = "Fuel Mix Injector" + piping_layer = 4 }, /turf/open/floor/engine/airless, /area/engine/atmos) @@ -4026,10 +4023,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"oD" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/lawoffice) "oF" = ( /obj/machinery/light{ dir = 8 @@ -4726,6 +4719,12 @@ /obj/machinery/light_switch/north, /turf/open/floor/engine, /area/security/execution/transfer) +"ru" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nucleium_output{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos) "rv" = ( /obj/machinery/light_switch/north, /turf/open/floor/plasteel/dark/side, @@ -5408,7 +5407,7 @@ "ui" = ( /obj/machinery/ammo_sorter{ dir = 8; - id = "atlas1"; + id = "snake"; name = "Standard Shells #2" }, /obj/item/ship_weapon/ammunition/naval_artillery, @@ -5449,8 +5448,8 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/disposalpipe/junction/flip{ + dir = 8 }, /turf/open/floor/plasteel/dark, /area/hallway/primary/fore) @@ -5900,7 +5899,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/dark/side{ dir = 1 }, @@ -6213,7 +6211,7 @@ "wC" = ( /obj/machinery/ammo_sorter{ dir = 8; - id = "atlas1"; + id = "snake"; name = "Gunpowder #2" }, /obj/item/powder_bag, @@ -6302,6 +6300,9 @@ dir = 4 }, /obj/item/radio/intercom/directional/south, +/obj/machinery/computer/atmos_control/tank/nucleium_tank{ + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/engine/atmos) "wV" = ( @@ -6447,6 +6448,14 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering/reactor_core) +"xv" = ( +/obj/structure/table/wood, +/obj/machinery/fax{ + fax_name = "Law Office"; + name = "Law Office Fax Machine" + }, +/turf/open/floor/wood, +/area/lawoffice) "xw" = ( /obj/structure/chair/office{ dir = 8 @@ -6941,7 +6950,6 @@ /turf/open/floor/carpet/orange, /area/nsv/crew_quarters/heads/maa) "zj" = ( -/obj/structure/closet/secure_closet/brig, /obj/effect/turf_decal/tile/ship/red{ dir = 1 }, @@ -6949,6 +6957,11 @@ dir = 4 }, /obj/machinery/firealarm/directional/north, +/obj/machinery/fax{ + fax_name = "Wardens Office"; + name = "Wardens Office Fax Machine" + }, +/obj/structure/table, /turf/open/floor/plasteel/dark/side{ dir = 1 }, @@ -6970,6 +6983,9 @@ dir = 8 }, /obj/effect/landmark/start/scientist, +/obj/structure/disposalpipe/junction{ + dir = 1 + }, /turf/open/floor/plasteel/white, /area/science/lab) "zm" = ( @@ -7770,8 +7786,6 @@ "BI" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; - dir = 1; - freq = 1400; location = "KItchen"; name = "Delivery Kitchen" }, @@ -8119,6 +8133,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/dark/side{ dir = 1 }, @@ -8265,17 +8280,12 @@ /turf/open/floor/plasteel/chapel, /area/chapel/main) "Dn" = ( -/obj/docking_port/stationary{ - dir = 4; - dwidth = 3; - height = 15; - id = "arrivals_stationary"; - name = "arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/box; - width = 7 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 }, -/turf/open/space/basic, -/area/space/nearstation) +/obj/effect/landmark/latejoin, +/turf/open/floor/plasteel, +/area/crew_quarters/cryopods) "Dp" = ( /turf/open/floor/engine/n2o, /area/engine/atmos) @@ -8839,6 +8849,7 @@ /obj/machinery/computer/cryopod{ pixel_y = 32 }, +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel, /area/crew_quarters/cryopods) "Fz" = ( @@ -9237,6 +9248,12 @@ }, /turf/open/floor/plasteel/dark, /area/engine/atmos) +"GQ" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nucleium_input{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/engine/atmos) "GS" = ( /obj/structure/kitchenspike, /obj/machinery/camera/autoname, @@ -10199,8 +10216,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/hallway/primary/fore) @@ -10330,6 +10347,11 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, +/obj/machinery/fax{ + fax_name = "Medical"; + name = "Medical Fax Machine" + }, +/obj/structure/table, /turf/open/floor/plasteel/white, /area/medical/sleeper) "KC" = ( @@ -10853,8 +10875,6 @@ /obj/structure/disposalpipe/segment, /obj/machinery/navbeacon{ codes_txt = "delivery;dir="; - dir = 4; - freq = 1400; location = "Medbay"; name = "Delivery Medbay" }, @@ -10910,6 +10930,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel, /area/crew_quarters/cryopods) "Mu" = ( @@ -11098,7 +11119,7 @@ "MW" = ( /obj/machinery/ammo_sorter{ dir = 8; - id = "atlas1"; + id = "snake"; name = "Standard Shells #1" }, /obj/item/ship_weapon/ammunition/naval_artillery, @@ -13070,12 +13091,16 @@ /area/security/brig) "TL" = ( /obj/machinery/light/small, +/obj/machinery/air_sensor/atmos/nucleium_tank, +/obj/machinery/portable_atmospherics/canister/nucleium{ + filled = 0 + }, /turf/open/floor/engine/vacuum, /area/engine/atmos) "TP" = ( /obj/machinery/ammo_sorter{ dir = 8; - id = "atlas1"; + id = "snake"; name = "Gunpowder #1" }, /obj/item/powder_bag, @@ -13155,7 +13180,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /obj/machinery/light_switch/south, /turf/open/floor/wood, /area/crew_quarters/heads/hop{ @@ -13368,7 +13393,6 @@ }, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; - freq = 1400; location = "Munitions"; name = "Delivery Munitions" }, @@ -14194,6 +14218,7 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/effect/landmark/latejoin, /turf/open/floor/plasteel, /area/crew_quarters/cryopods) "Xj" = ( @@ -14661,8 +14686,6 @@ "YU" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 4; - freq = 1400; location = "Bar"; name = "Delivery Bar" }, @@ -40503,7 +40526,7 @@ NS Ly IV hP -Hg +ru Hg ge ge @@ -41017,7 +41040,7 @@ iB yL xe hP -Hg +GQ Hg ge oe @@ -41280,7 +41303,7 @@ ge aJ aJ aJ -Dn +aJ aJ aJ aJ @@ -43590,7 +43613,7 @@ xW Ur jy kJ -gb +aJ aJ aJ aJ @@ -52323,9 +52346,9 @@ lK Ip Xc Gr -ht +xv if -oD +ht OB BT aJ @@ -62335,7 +62358,7 @@ ee vc PH Fv -ww +Dn hM ih eE diff --git a/_maps/map_files/Snake/snake_upper.dmm b/_maps/map_files/Snake/snake_upper.dmm index c7f7cfd9972..526d1ec8dfc 100644 --- a/_maps/map_files/Snake/snake_upper.dmm +++ b/_maps/map_files/Snake/snake_upper.dmm @@ -1401,7 +1401,6 @@ /obj/structure/disposalpipe/segment, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; - freq = 1400; location = "Hangar"; name = "Delivery Hangar" }, @@ -5054,6 +5053,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) "EC" = ( +/mob/living/simple_animal/hostile/retaliate/bat/sgt_araneus, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) "EG" = ( @@ -7061,6 +7061,11 @@ /obj/machinery/light{ dir = 8 }, +/obj/machinery/fax{ + name = "Cargo Fax Machine"; + fax_name = "Cargo" + }, +/obj/structure/table/reinforced, /turf/open/floor/plasteel, /area/quartermaster/storage) "OV" = ( @@ -7571,12 +7576,12 @@ /area/maintenance/central) "RR" = ( /obj/structure/table/reinforced, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = -4; pixel_y = 7 }, -/obj/item/cartridge/quartermaster, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = 6; pixel_y = 5 }, diff --git a/_maps/map_files/Tycoon/Tycoon1.dmm b/_maps/map_files/Tycoon/Tycoon1.dmm index 8d8be5b396c..86ca4501530 100644 --- a/_maps/map_files/Tycoon/Tycoon1.dmm +++ b/_maps/map_files/Tycoon/Tycoon1.dmm @@ -108,7 +108,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/monotile/steel, +/turf/open/floor/monotile/dark, /area/nsv/hanger/deck3{ name = "Air traffic control pod" }) @@ -310,6 +310,7 @@ department = "Captain's Desk"; departmentType = 5; name = "Captain RC"; + payment_department = "CIV"; pixel_y = 26 }, /turf/open/floor/monotile/steel, @@ -375,6 +376,9 @@ /area/crew_quarters/heads/captain) "bg" = ( /obj/structure/closet/secure_closet/captains, +/obj/machinery/light{ + dir = 4 + }, /turf/open/floor/carpet/ship, /area/crew_quarters/heads/captain) "bh" = ( @@ -406,7 +410,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/turf/open/floor/monotile/steel, +/turf/open/floor/monotile/dark, /area/nsv/hanger/deck3{ name = "Air traffic control pod" }) @@ -616,6 +620,11 @@ /obj/machinery/light{ dir = 1 }, +/obj/machinery/requests_console{ + department = "Pilot Ready Room"; + payment_department = "MUN"; + pixel_x = 30 + }, /turf/open/floor/monotile/steel, /area/nsv/hanger/deck3{ name = "Air traffic control pod" @@ -1437,7 +1446,7 @@ /obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/monotile/dark/airless, /area/quartermaster/miningdock) "dV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -1465,7 +1474,6 @@ "dX" = ( /obj/structure/table/reinforced, /obj/item/storage/lockbox/medal, -/obj/machinery/camera/autoname, /turf/open/floor/carpet/ship, /area/crew_quarters/heads/captain) "dY" = ( @@ -1859,6 +1867,7 @@ department = "Executive Officer's Desk"; departmentType = 5; name = "Executive Officer RC"; + payment_department = "CIV"; pixel_y = 26 }, /turf/open/floor/monotile/steel, @@ -1971,7 +1980,7 @@ name = "Executive officer's Office" }) "fi" = ( -/obj/machinery/vending/cart, +/obj/machinery/vending/job_disk, /obj/machinery/keycard_auth{ pixel_x = -26 }, @@ -3385,7 +3394,7 @@ /obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/turf/open/floor/plasteel/grid/steel, +/turf/open/floor/monotile/dark/airless, /area/nsv/hanger/deck3{ name = "Air traffic control pod" }) @@ -5179,7 +5188,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/turf/open/floor/plasteel/grid/steel, +/turf/open/floor/monotile/steel, /area/nsv/hanger/deck3{ name = "Air traffic control pod" }) @@ -5764,10 +5773,8 @@ /turf/open/floor/monotile/dark, /area/space/nearstation) "nl" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/monotile/dark/airless, +/obj/machinery/light/floor, +/turf/open/floor/engine/airless, /area/space/nearstation) "nm" = ( /obj/effect/turf_decal/delivery/white, @@ -5799,8 +5806,11 @@ /turf/open/floor/monotile/dark/airless, /area/space/nearstation) "nr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/obj/effect/turf_decal/bot_white, +/obj/structure/ship_weapon/artillery_frame{ + dir = 4; + pixel_x = -30; + pixel_y = -42 }, /turf/open/floor/engine/airless, /area/space/nearstation) @@ -5990,6 +6000,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, +/obj/effect/turf_decal/tile/neutral/tile_full, /turf/open/floor/monotile/dark, /area/quartermaster/miningdock) "oW" = ( @@ -6272,6 +6283,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/effect/turf_decal/tile/neutral/tile_full, /turf/open/floor/monotile/dark, /area/quartermaster/miningdock) "sj" = ( @@ -6684,7 +6696,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/layer_manifold, -/turf/open/floor/monotile/steel, +/turf/open/floor/monotile/dark/airless, /area/hallway/nsv/deck1/hallway) "yF" = ( /obj/structure/extinguisher_cabinet{ @@ -6800,7 +6812,7 @@ "Ba" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/monotile/steel, +/turf/open/floor/monotile/dark, /area/nsv/hanger/deck3{ name = "Air traffic control pod" }) @@ -6869,7 +6881,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/grid/steel, /area/quartermaster/miningdock) "Da" = ( /obj/machinery/camera/autoname{ @@ -6922,6 +6934,12 @@ }, /turf/open/floor/monotile/dark, /area/hallway/nsv/deck1/hallway) +"Ew" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/space/nearstation) "Ey" = ( /obj/structure/overmap/small_craft/combat/light, /turf/open/floor/engine/airless, @@ -7100,7 +7118,7 @@ dir = 8 }, /obj/machinery/light/small, -/turf/open/floor/plating, +/turf/open/floor/plasteel/grid/steel, /area/quartermaster/miningdock) "GS" = ( /obj/structure/table/reinforced, @@ -7228,7 +7246,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/turf/open/floor/monotile/steel, +/turf/open/floor/monotile/dark/airless, /area/hallway/nsv/deck1/hallway) "IJ" = ( /obj/effect/turf_decal/tile/neutral{ @@ -7333,6 +7351,7 @@ name = "Air traffic control pod" }) "Kc" = ( +/obj/effect/turf_decal/tile/neutral/tile_full, /turf/open/floor/monotile/dark, /area/quartermaster/miningdock) "Kn" = ( @@ -7362,9 +7381,10 @@ name = "Air traffic control pod" }) "Kz" = ( -/obj/structure/fighter_frame, -/obj/effect/turf_decal/ship/delivery/yellow, -/turf/open/floor/monotile/dark/airless, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/engine/airless, /area/space/nearstation) "KD" = ( /obj/structure/disposalpipe/segment, @@ -7404,6 +7424,12 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck1/hallway) +"KV" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/monotile/dark/airless, +/area/space/nearstation) "Ld" = ( /obj/effect/turf_decal/stripes/box, /obj/machinery/porta_turret/ai, @@ -7476,6 +7502,15 @@ }, /turf/open/floor/monotile/dark, /area/ai_monitored/turret_protected/aisat) +"LQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor/carpet/ship, +/area/crew_quarters/heads/captain) "Mb" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7769,6 +7804,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, +/obj/effect/turf_decal/tile/neutral/tile_full, /turf/open/floor/monotile/dark, /area/quartermaster/miningdock) "Qn" = ( @@ -7782,6 +7818,7 @@ }, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/tile_full, /turf/open/floor/monotile/dark, /area/quartermaster/miningdock) "Qq" = ( @@ -7807,7 +7844,7 @@ /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/grid/steel, /area/quartermaster/miningdock) "Qx" = ( /obj/structure/table, @@ -7975,7 +8012,7 @@ dir = 5 }, /obj/machinery/advanced_airlock_controller/directional/west, -/turf/open/floor/monotile/steel, +/turf/open/floor/plasteel/grid/steel, /area/hallway/nsv/deck1/hallway) "Sg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -8046,7 +8083,7 @@ /turf/open/floor/monotile/dark, /area/ai_monitored/turret_protected/aisat) "SF" = ( -/turf/open/floor/plating, +/turf/open/floor/plasteel/grid/steel, /area/quartermaster/miningdock) "Tl" = ( /obj/structure/rack, @@ -8193,7 +8230,7 @@ dir = 10 }, /obj/machinery/atmospherics/components/binary/dp_vent_pump, -/turf/open/floor/monotile/steel, +/turf/open/floor/plasteel/grid/steel, /area/hallway/nsv/deck1/hallway) "Vp" = ( /obj/effect/turf_decal/bot_white, @@ -8365,6 +8402,11 @@ }, /turf/open/floor/monotile/dark/airless, /area/space/nearstation) +"Zh" = ( +/obj/structure/fighter_frame, +/obj/effect/turf_decal/ship/delivery/yellow, +/turf/open/floor/monotile/dark/airless, +/area/space/nearstation) "Zm" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28861,8 +28903,8 @@ iC ie no hR -it -ac +iu +Ew ac ac ac @@ -29118,9 +29160,9 @@ iC ie no ax +ax iu -au -ac +Ew ac ac ac @@ -29374,7 +29416,7 @@ hA iC ie iC -no +ns ax ax it @@ -36799,14 +36841,14 @@ ax ax ax rQ -ax iy iC +Xp iC aQ bc kV -kY +LQ bJ bE xy @@ -37056,9 +37098,9 @@ ax ax ax rQ -ax iy iC +Xp iC aQ bd @@ -37313,9 +37355,9 @@ ax ax ax rQ -ax iy iC +Xp iC aQ dX @@ -37570,9 +37612,9 @@ ax ax ax nJ -ax iy iC +Xp iC aQ bf @@ -37602,7 +37644,7 @@ iC no ax iu -ac +Ew ac ac ac @@ -37827,9 +37869,9 @@ ax ax ax nJ -ax iy iC +Xp iC aQ bg @@ -37859,8 +37901,8 @@ iC no ax ax -it -ac +iu +Ew ac ac ac @@ -38116,6 +38158,7 @@ eG iC no ax +ax it ac ac @@ -38142,7 +38185,6 @@ ac ac ac ac -ac aa aa aa @@ -38371,7 +38413,8 @@ RM fM gZ iC -no +iC +ns ax it ac @@ -38399,7 +38442,6 @@ ac ac ac ac -ac aa aa aa @@ -38597,8 +38639,8 @@ nH ax nH ax -nJ -iy +iw +iC iC aQ aV @@ -38628,6 +38670,7 @@ fj eY gZ iC +Xp no ax it @@ -38656,7 +38699,6 @@ ac ac ac ac -ac aa aa aa @@ -38854,8 +38896,8 @@ nJ ax nJ ax -nJ iy +Xp iC aQ aV @@ -38885,6 +38927,7 @@ fj eY gZ iC +Xp no ax it @@ -38913,7 +38956,6 @@ ac ac ac ac -ac aa aa aa @@ -39111,8 +39153,8 @@ nH ax nH ax -nJ iy +Xp iC aQ aV @@ -39142,6 +39184,7 @@ fj eY gZ iC +Xp no ax it @@ -39170,7 +39213,6 @@ ac ac ac ac -ac aa aa aa @@ -39368,8 +39410,8 @@ nJ ax nJ ax -nJ iy +Xp iC aQ aW @@ -39399,6 +39441,7 @@ fj fN gZ iC +Xp no ax it @@ -39427,7 +39470,6 @@ ac ac ac ac -ac aa aa aa @@ -39625,8 +39667,8 @@ nH ax nH ax -nJ iy +Xp iC aQ bC @@ -39656,6 +39698,7 @@ fj eY gZ iC +Xp no ax it @@ -39684,7 +39727,6 @@ ac ac ac ac -ac aa aa aa @@ -39882,8 +39924,8 @@ nJ nJ nJ nJ -nJ iy +Xp iC aQ aV @@ -39913,6 +39955,7 @@ fj eY gZ iC +Xp no ax it @@ -39941,7 +39984,6 @@ ac ac ac ac -ac aa aa aa @@ -40139,8 +40181,8 @@ nJ ax ax ax -nJ -iy +iz +iC iC aQ aV @@ -40170,6 +40212,7 @@ jI jV gZ iC +Xp no ax it @@ -40198,7 +40241,6 @@ ac ac ac ac -ac aa aa aa @@ -40427,6 +40469,7 @@ jT jW gZ iC +iC no ax it @@ -40455,7 +40498,6 @@ ac ac ac ac -ac aa aa aa @@ -40684,6 +40726,7 @@ jU jU eG nq +iC no ax it @@ -40712,7 +40755,6 @@ ac ac ac ac -ac aa aa aa @@ -40941,6 +40983,7 @@ fd fd Wi iC +Xp no ax it @@ -40969,7 +41012,6 @@ ac ac ac ac -ac aa aa aa @@ -41198,6 +41240,7 @@ fK fd Wi iC +Xp no ax iu @@ -41225,7 +41268,6 @@ au au au au -au ac aa aa @@ -41455,6 +41497,7 @@ fd fd Wi iC +Xp no ax ax @@ -41482,7 +41525,6 @@ ax ax ax ax -ax ac aa aa @@ -41712,8 +41754,8 @@ iF yZ yZ iC -no -ax +iC +np ax ax ax @@ -41969,10 +42011,7 @@ mU Gv iC iC -no -ax -ax -ax +np ax ax ax @@ -41983,6 +42022,9 @@ ax ax ax ax +Xp +Xp +Xp ax ax ax @@ -42504,10 +42546,10 @@ Ml HK Jp ax -ax -ax -ax -ax +Xp +Xp +Xp +Xp ax ax ax @@ -43736,6 +43778,7 @@ ax ax ax ax +ax ac ax nJ @@ -43744,7 +43787,6 @@ ax ax ax ax -ax iy iC yZ @@ -43991,9 +44033,10 @@ nJ ac qr ac -Ne +nl ac -UW +ac +nr ac nJ lI @@ -44001,7 +44044,6 @@ lJ lJ lI ax -ax iy iC yZ @@ -44250,10 +44292,10 @@ QF ax ax ax -QF ax -nJ +ac ax +nJ ax ax ax @@ -44506,12 +44548,12 @@ ac Mt ac ax +nJ ac -QF ac -hA -hA -hA +ac +nJ +ax hA hA hA @@ -44763,17 +44805,17 @@ ax QF ax ax +nJ ax -QF +ac +ax +nJ ax hA -nr +Kz bW aK hA -nr -bW -aK iy iC dS @@ -45020,17 +45062,17 @@ ac qr ac Ne -ac -UW -ac +nJ +nJ +nJ +nJ +nJ +ax hA it -Kz +Zh af hA -it -Kz -af iy iC dS @@ -45277,17 +45319,17 @@ ax ac ax ax +nJ ax -ac +ax +Ne +nJ ax hA it Mt af hA -it -Mt -af iy iC dT @@ -45534,17 +45576,17 @@ ac ax ac ax -ac +nJ +ax +ax +ax +nJ ax -ac hA iu au ba hA -iu -au -ba iy iC dT @@ -45590,7 +45632,7 @@ Jp ax ax ax -ax +Xp ac ac aa @@ -45847,7 +45889,7 @@ Jp ax ax ax -ax +Xp ax ac aa @@ -46074,7 +46116,7 @@ aF dT no ax -ax +Xp ax ax ax @@ -46104,7 +46146,7 @@ Jp ax ax ax -ax +Xp ac ac aa @@ -46331,7 +46373,7 @@ eE dT no ax -ax +Xp ax ax ax @@ -46361,7 +46403,7 @@ sm ax ax ax -ax +Xp ax ac aa @@ -46588,6 +46630,7 @@ eE dT no ax +Xp ax ax ax @@ -46617,8 +46660,7 @@ ax ax ax ax -ax -ax +Xp ac ac aa @@ -46845,7 +46887,7 @@ eE dT no ax -ax +Xp ax ax ax @@ -46875,7 +46917,7 @@ hX ax ax ax -ax +Xp ax ac aa @@ -47102,7 +47144,7 @@ eE dT no ax -ax +Xp ax ax ax @@ -47132,7 +47174,7 @@ ax ax ax ax -ax +Xp ac ac aa @@ -47359,7 +47401,7 @@ eE dS no ax -ax +Xp ax ax ax @@ -47389,7 +47431,7 @@ ax ax ax ax -ax +Xp ax ac aa @@ -48157,7 +48199,7 @@ ax ax ax ax -ax +Xp ax ac aa @@ -48414,7 +48456,7 @@ ax ax ax ax -ax +Xp ac ac aa @@ -48632,15 +48674,15 @@ ax ax iz jj -jj -jj -jj -jj -jj -jj -jj -jj -jj +iC +Xp +Xp +Xp +Xp +Xp +Xp +Xp +iC jj np ax @@ -48671,7 +48713,7 @@ ax ax hX ax -ax +Xp ax ac aa @@ -48889,15 +48931,15 @@ ax ax ax ax -ax -ax -ax -ax -nl -ax -ax -ax -ax +iz +jj +jj +jj +jj +jj +jj +jj +np ax ax ax @@ -48928,7 +48970,7 @@ ax hX ae hX -ax +Xp ac ac aa @@ -49150,7 +49192,7 @@ ax ax ax ax -ax +KV ax ax ax @@ -49185,7 +49227,7 @@ ax ax hX ax -ax +Xp ax ac aa @@ -49442,7 +49484,7 @@ ax ax ax ax -ax +Xp ac ac aa @@ -50211,7 +50253,7 @@ ax ax ax ax -ax +Xp ax ac aa @@ -50467,8 +50509,8 @@ lI lI ax ax -ax -ax +Xp +Xp ac ac aa @@ -50725,7 +50767,7 @@ ax ax ax ax -ax +Xp ax ac aa diff --git a/_maps/map_files/Tycoon/Tycoon2.dmm b/_maps/map_files/Tycoon/Tycoon2.dmm index 615cdf85cf1..dc8b53d913a 100644 --- a/_maps/map_files/Tycoon/Tycoon2.dmm +++ b/_maps/map_files/Tycoon/Tycoon2.dmm @@ -230,19 +230,26 @@ /turf/open/floor/monotile/dark, /area/nsv/hanger/deck2) "aaF" = ( -/turf/open/floor/plasteel/tech/grid, -/area/nsv/hanger/deck2) -"aaG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/lattice/catwalk/over/ship, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/fore) +"aaG" = ( /obj/structure/closet/secure_closet/engineering_welding{ anchored = 1; name = "munitions welding supplies locker"; req_access = null; req_one_access_txt = "69" }, -/turf/open/floor/plating, +/obj/effect/turf_decal/tile/orange, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/turf/open/floor/monotile/dark, /area/nsv/hanger/deck2) "aaH" = ( /turf/open/floor/carpet/ship, @@ -318,10 +325,11 @@ /obj/item/ammo_box/magazine/nsv/light_cannon, /obj/item/ammo_box/magazine/nsv/light_cannon, /obj/structure/rack, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/effect/turf_decal/tile/orange, +/obj/effect/turf_decal/tile/orange{ + dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/monotile/dark, /area/nsv/hanger/deck2) "aaS" = ( /obj/structure/disposalpipe/segment, @@ -486,13 +494,12 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/effect/turf_decal/ship/delivery/yellow, -/turf/open/floor/monotile/dark, +/turf/open/floor/monotile/steel, /area/nsv/weapons/fore) "abw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plasteel/tech/grid, +/turf/open/floor/monotile/steel, /area/nsv/hanger/deck2) "abx" = ( /turf/open/floor/monotile/steel, @@ -500,7 +507,13 @@ "aby" = ( /obj/structure/munitions_trolley, /obj/structure/munitions_trolley, -/turf/open/floor/plasteel/tech/grid, +/obj/effect/turf_decal/tile/orange{ + dir = 1 + }, +/obj/effect/turf_decal/tile/orange{ + dir = 8 + }, +/turf/open/floor/monotile/dark, /area/nsv/hanger/deck2) "abz" = ( /obj/structure/sign/ship/nosmoking, @@ -530,7 +543,7 @@ }, /obj/machinery/camera/autoname, /obj/structure/munitions_trolley, -/turf/open/floor/plasteel/tech/grid, +/turf/open/floor/monotile/steel, /area/nsv/hanger/deck2) "abE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -671,17 +684,10 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "abW" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 15; - id = "arrivals_stationary"; - name = "arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/box; - width = 7 - }, -/turf/open/space/basic, -/area/space/nearstation) +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/latejoin, +/turf/open/floor/carpet/ship, +/area/crew_quarters/dorms) "abX" = ( /obj/structure/rack, /obj/item/storage/box/teargas, @@ -1509,12 +1515,10 @@ /area/hallway/nsv/deck2/frame1/central) "adX" = ( /obj/machinery/computer/lore_terminal, -/obj/structure/table/reinforced, -/obj/item/paper_bin, +/obj/item/paper_bin/construction, /obj/item/pen/fountain, -/obj/item/multitool, -/obj/item/multitool, /obj/item/key/fighter_tug, +/obj/structure/table/reinforced, /turf/open/floor/carpet/red, /area/nsv/weapons/fore) "adY" = ( @@ -1649,6 +1653,10 @@ req_one_access_txt = "69" }, /obj/machinery/camera/autoname, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, /turf/open/floor/carpet/red, /area/nsv/weapons/fore) "ael" = ( @@ -1760,6 +1768,12 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 3; + name = "Engineering RC"; + pixel_x = 32 + }, /turf/open/floor/monotile/dark, /area/engine/engineering) "aeB" = ( @@ -1833,6 +1847,9 @@ id = "naval"; name = "Feed Into Gun Room" }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, /turf/open/floor/carpet/red, /area/nsv/weapons/fore) "aeO" = ( @@ -1913,7 +1930,6 @@ /obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, /obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, /obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, /turf/open/floor/carpet/red, /area/nsv/weapons/fore) "aeW" = ( @@ -2392,7 +2408,7 @@ dir = 1 }, /obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/tech/grid, +/turf/open/floor/monotile/steel, /area/nsv/hanger/deck2) "agc" = ( /obj/structure/bodycontainer/morgue, @@ -2539,6 +2555,12 @@ }, /obj/effect/turf_decal/tile/neutral, /obj/structure/lattice/catwalk/over/ship, +/obj/machinery/requests_console{ + department = "NAC Bay"; + departmentType = 1; + payment_department = "MUN"; + pixel_x = 30 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "agu" = ( @@ -2612,7 +2634,7 @@ /obj/effect/turf_decal/tile/orange{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "agD" = ( /obj/effect/turf_decal/tile/yellow{ @@ -3472,6 +3494,7 @@ "aiJ" = ( /obj/machinery/camera/autoname, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) "aiK" = ( @@ -4760,11 +4783,11 @@ /area/crew_quarters/heads/cmo) "alI" = ( /obj/machinery/camera/autoname, +/obj/effect/turf_decal/tile/orange, /obj/machinery/computer/ship/viewscreen, /obj/effect/turf_decal/tile/orange{ dir = 8 }, -/obj/effect/turf_decal/tile/orange, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/frame1/central) "alJ" = ( @@ -4991,6 +5014,13 @@ dir = 8 }, /obj/machinery/holopad, +/obj/machinery/requests_console{ + department = "Medbay Clinic"; + departmentType = 1; + name = "Medbay RC"; + payment_department = "MED"; + pixel_x = -32 + }, /turf/open/floor/engine, /area/medical/medbay/lobby) "ami" = ( @@ -5197,6 +5227,7 @@ /obj/machinery/requests_console{ department = "Bar"; departmentType = 2; + payment_department = "CIV"; pixel_y = 30; receive_ore_updates = 1 }, @@ -5246,6 +5277,7 @@ "amY" = ( /obj/item/reagent_containers/food/drinks/beer, /obj/structure/table, +/obj/item/storage/box/lights/mixed, /turf/open/floor/monotile/steel, /area/hallway/secondary/service) "ana" = ( @@ -5278,22 +5310,6 @@ }, /turf/open/floor/monotile/steel, /area/medical/virology) -"ani" = ( -/obj/item/cartridge/engineering{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/cartridge/engineering{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/cartridge/engineering{ - pixel_x = 3 - }, -/obj/structure/table/reinforced, -/obj/item/cartridge/atmos, -/turf/open/floor/carpet/blue, -/area/crew_quarters/heads/chief) "anj" = ( /turf/closed/wall/r_wall/ship, /area/engine/engineering/hangar) @@ -5435,13 +5451,6 @@ }, /turf/open/floor/monotile/light, /area/medical/virology) -"anF" = ( -/obj/structure/table/glass, -/obj/item/cartridge/lawyer, -/obj/item/taperecorder, -/obj/item/reagent_containers/food/drinks/solgovcup, -/turf/open/floor/carpet/blue, -/area/lawoffice) "anG" = ( /obj/machinery/computer/station_alert{ dir = 4 @@ -5578,16 +5587,6 @@ }, /turf/open/floor/monotile/dark, /area/tcommsat/computer) -"anY" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/layer_manifold, -/turf/open/floor/monotile/steel, -/area/engine/engineering) "aoa" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -5697,6 +5696,7 @@ /obj/machinery/requests_console{ department = "Virology"; name = "Virology Requests Console"; + payment_department = "MED"; pixel_x = 29; receive_ore_updates = 1 }, @@ -6031,15 +6031,15 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, /obj/structure/cable{ icon_state = "0-8" }, /obj/machinery/power/apc/auto_name/north{ pixel_y = 24 }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/engine/atmos) "apg" = ( @@ -6226,7 +6226,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, /turf/open/floor/monotile/dark, @@ -6522,6 +6522,7 @@ /obj/machinery/requests_console{ department = "Kitchen"; departmentType = 2; + payment_department = "CIV"; pixel_x = 30 }, /turf/open/floor/monotile/light, @@ -6798,6 +6799,7 @@ }, /obj/machinery/requests_console{ department = "Law office"; + payment_department = "SEC"; pixel_y = -32 }, /turf/open/floor/monotile/dark, @@ -6834,7 +6836,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, /turf/open/floor/monotile/dark, @@ -7035,6 +7037,10 @@ /area/crew_quarters/dorms) "ash" = ( /obj/structure/table/glass, +/obj/machinery/fax{ + fax_name = "Law Office"; + name = "Law Office Fax Machine" + }, /turf/open/floor/carpet/blue, /area/lawoffice) "asm" = ( @@ -7125,9 +7131,8 @@ /obj/effect/turf_decal/bot, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Engineering" + location = "Engineering"; + name = "navigation beacon (Engineering Delivery)" }, /turf/open/floor/monotile/dark, /area/engine/break_room) @@ -7220,10 +7225,10 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/monotile/dark, /area/engine/atmos) "asN" = ( @@ -7363,6 +7368,7 @@ department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; + payment_department = "MED"; pixel_x = 30 }, /mob/living/simple_animal/pet/cat/Runtime, @@ -7561,16 +7567,17 @@ /obj/item/radio/intercom{ pixel_y = 28 }, -/obj/machinery/pipedispenser/disposal/transit_tube, /obj/effect/turf_decal/stripes/line{ dir = 6 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, +/obj/machinery/pipedispenser/disposal/transit_tube, /turf/open/floor/monotile/dark, /area/engine/atmos) "atZ" = ( @@ -8305,11 +8312,11 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ dir = 1 }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/monotile/dark, /area/engine/atmos) "axU" = ( @@ -8378,22 +8385,6 @@ }, /turf/open/floor/plating, /area/engine/storage) -"ayv" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/airlock/ship/command{ - name = "Gravity Generator"; - req_one_access_txt = "56" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/monotile/steel, -/area/engine/gravity_generator) "ayE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/structure/cable{ @@ -8710,7 +8701,10 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/engine/atmos) "azx" = ( @@ -8815,6 +8809,15 @@ /obj/machinery/camera/autoname{ dir = 4 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "azQ" = ( @@ -8830,6 +8833,12 @@ /obj/structure/cable{ icon_state = "0-4" }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "azS" = ( @@ -8838,6 +8847,12 @@ }, /obj/structure/reagent_dispensers/fueltank, /obj/item/storage/toolbox/emergency, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "azT" = ( @@ -8845,6 +8860,13 @@ icon_state = "2-8" }, /obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "azU" = ( @@ -8855,6 +8877,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "azV" = ( @@ -9345,6 +9376,11 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "aBd" = ( @@ -9400,6 +9436,17 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "aBj" = ( @@ -9457,6 +9504,12 @@ dir = 4 }, /obj/structure/lattice/catwalk/over/ship, +/obj/machinery/requests_console{ + department = "Missile Factory"; + departmentType = 1; + payment_department = "MUN"; + pixel_x = 30 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "aBs" = ( @@ -9497,16 +9550,6 @@ }, /turf/open/floor/monotile/dark, /area/engine/engineering) -"aBv" = ( -/obj/machinery/deck_turret/powder_gate, -/obj/effect/turf_decal/tile/orange{ - dir = 4 - }, -/obj/effect/turf_decal/tile/orange{ - dir = 1 - }, -/turf/open/floor/plating, -/area/nsv/weapons/fore) "aBw" = ( /turf/open/floor/durasteel, /area/engine/engineering) @@ -9519,6 +9562,16 @@ dir = 1; id = "incineratorturbine" }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "aBy" = ( @@ -11131,7 +11184,6 @@ /turf/open/floor/monotile/steel, /area/security/execution/transfer) "aFv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/deck_turret/autoelevator, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -11143,7 +11195,7 @@ /obj/effect/turf_decal/tile/orange{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "aFw" = ( /turf/open/floor/monotile/dark, @@ -11749,7 +11801,7 @@ /obj/effect/turf_decal/tile/orange{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "aGR" = ( /obj/effect/turf_decal/stripes/line{ @@ -12050,10 +12102,9 @@ /area/engine/engineering) "aHx" = ( /obj/structure/table/reinforced, -/obj/item/modular_computer/tablet/preset/advanced, -/obj/item/geiger_counter{ - desc = "It's capped at 3.6 Roentgen. Not great, not terrible."; - name = "\improper Dossimiter" +/obj/machinery/fax{ + fax_name = "Engineering"; + name = "Engineerings Fax Machine" }, /turf/open/floor/durasteel/lino, /area/engine/engineering/reactor_control) @@ -12079,6 +12130,7 @@ /obj/machinery/requests_console{ department = "Security"; departmentType = 7; + payment_department = "SEC"; pixel_x = -32 }, /obj/structure/sign/nanotrasen{ @@ -12205,6 +12257,7 @@ /obj/machinery/requests_console{ department = "Security"; departmentType = 5; + payment_department = "SEC"; pixel_y = 30 }, /obj/machinery/computer/security, @@ -12392,6 +12445,7 @@ "aIq" = ( /obj/machinery/requests_console{ department = "Detective's office"; + payment_department = "SEC"; pixel_x = -30 }, /turf/open/floor/carpet/red, @@ -13169,12 +13223,11 @@ /turf/open/floor/monotile/dark, /area/science) "aKk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +/obj/structure/cable/yellow{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) @@ -13334,16 +13387,12 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/frame1/central) "aKD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/lattice/catwalk/over/ship, /obj/machinery/deck_turret/powder_gate, /obj/effect/turf_decal/tile/orange{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "aKE" = ( /obj/structure/chair/stool, @@ -13385,6 +13434,7 @@ department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; + payment_department = "SCI"; pixel_x = -30; pixel_y = 30; receive_ore_updates = 1 @@ -13730,12 +13780,6 @@ /turf/open/floor/wood, /area/library) "aLt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, /obj/structure/lattice/catwalk/over/ship, /obj/machinery/camera/autoname{ dir = 8 @@ -13776,6 +13820,7 @@ department = "Science"; departmentType = 2; name = "Science Requests Console"; + payment_department = "SCI"; pixel_y = -30; receive_ore_updates = 1 }, @@ -13864,6 +13909,7 @@ department = "Science"; departmentType = 2; name = "Science Requests Console"; + payment_department = "SCI"; pixel_x = 32; receive_ore_updates = 1 }, @@ -14262,6 +14308,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, +/obj/effect/landmark/latejoin, /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) "aMC" = ( @@ -14378,8 +14425,12 @@ /turf/open/floor/monotile/steel, /area/security/brig) "aMM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) @@ -14772,6 +14823,7 @@ department = "Robotics"; departmentType = 2; name = "Robotics RC"; + payment_department = "SCI"; pixel_x = -31; receive_ore_updates = 1 }, @@ -15067,21 +15119,6 @@ }, /turf/open/space/basic, /area/space/nearstation) -"aOj" = ( -/obj/structure/table/reinforced, -/obj/item/cartridge/quartermaster{ - pixel_x = -4; - pixel_y = 7 - }, -/obj/item/cartridge/quartermaster, -/obj/item/cartridge/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/reagent_containers/food/drinks/solgovcup, -/obj/item/clothing/ears/earmuffs, -/turf/open/floor/carpet/ship, -/area/quartermaster/qm) "aOk" = ( /obj/structure/cable{ icon_state = "1-2" @@ -15877,10 +15914,10 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/monotile/dark, /area/engine/atmos) "aQi" = ( @@ -16959,35 +16996,17 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "aSE" = ( -/obj/structure/rack, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, -/obj/item/ship_weapon/parts/missile/propulsion_system, -/obj/item/ship_weapon/parts/missile/propulsion_system, -/obj/item/ship_weapon/parts/missile/propulsion_system, -/obj/item/ship_weapon/parts/missile/guidance_system, -/obj/item/ship_weapon/parts/missile/guidance_system, -/obj/item/ship_weapon/parts/missile/guidance_system, -/obj/item/ship_weapon/parts/missile/iff_card, -/obj/item/ship_weapon/parts/missile/iff_card, -/obj/item/ship_weapon/parts/missile/iff_card, -/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, -/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, -/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, +/obj/effect/turf_decal/tile/orange, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "aSG" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -17034,7 +17053,7 @@ }, /obj/item/ship_weapon/ammunition/naval_artillery, /obj/item/ship_weapon/ammunition/naval_artillery, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "aSK" = ( /obj/structure/cable{ @@ -17102,7 +17121,14 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/frame1/central) "aST" = ( -/turf/open/floor/plating, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "aSV" = ( /obj/effect/turf_decal/stripes/line{ @@ -17119,17 +17145,11 @@ /turf/open/floor/monotile/dark, /area/nsv/hanger/deck2) "aSY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, /obj/machinery/deck_turret/powder_gate, /obj/effect/turf_decal/tile/orange{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "aTb" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -17146,16 +17166,11 @@ /area/nsv/hanger/deck2) "aTd" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/apc/auto_name/west{ - pixel_x = -24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" + dir = 4 }, -/turf/open/floor/monotile/dark, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "aTe" = ( /obj/structure/cable{ @@ -17199,21 +17214,13 @@ /turf/open/floor/monotile/steel, /area/nsv/hanger/deck2) "aTk" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/structure/lattice/catwalk/over/ship, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "aTl" = ( /obj/structure/extinguisher_cabinet{ @@ -17228,22 +17235,14 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/frame1/central) "aTm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/orange{ dir = 8 }, -/obj/effect/turf_decal/tile/orange, -/turf/open/floor/monotile/steel, -/area/nsv/weapons/fore) -"aTp" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/turf/open/floor/monotile/dark, +/obj/effect/landmark/start/munitions_tech, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "aTq" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ @@ -17272,20 +17271,10 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss) "aTu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/structure/sign/ship/securearea{ + dir = 4 }, -/turf/open/floor/monotile/dark, +/turf/closed/wall/ship, /area/nsv/weapons/fore) "aTv" = ( /obj/item/radio/intercom{ @@ -17315,6 +17304,22 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/iff_card, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/propulsion_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/guidance_system, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, +/obj/item/ship_weapon/parts/missile/warhead/bunker_buster, /turf/open/floor/carpet/red, /area/nsv/weapons/fore) "aTB" = ( @@ -18502,10 +18507,20 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons/gauss) "aWm" = ( -/obj/machinery/light{ - dir = 8 +/obj/machinery/power/apc/auto_name/west{ + pixel_x = -24 }, -/turf/open/floor/plating, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/computer/ammo_sorter{ + dir = 4; + id = "comedy" + }, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "aWo" = ( /turf/open/floor/monotile/steel, @@ -19788,13 +19803,15 @@ /turf/open/floor/plating, /area/maintenance/port) "aZk" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -27 +/obj/machinery/conveyor/slow{ + id = "torp" }, -/obj/machinery/camera/autoname{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/structure/munitions_trolley, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "aZl" = ( @@ -20054,17 +20071,17 @@ /turf/open/floor/monotile/steel, /area/crew_quarters/dorms) "aZK" = ( -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/obj/effect/turf_decal/tile/orange{ - dir = 1 - }, /obj/machinery/conveyor_switch/oneway{ id = "atlas_specialshells"; name = "Load AP shells" }, -/turf/open/floor/monotile/steel, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/effect/turf_decal/tile/orange, +/turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "aZL" = ( /obj/structure/cable{ @@ -20181,7 +20198,7 @@ /obj/item/ship_weapon/ammunition/naval_artillery/ap, /obj/item/ship_weapon/ammunition/naval_artillery/ap, /obj/item/ship_weapon/ammunition/naval_artillery/ap, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "bad" = ( /obj/structure/cable{ @@ -20225,6 +20242,8 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "bah" = ( @@ -20272,12 +20291,13 @@ /turf/open/floor/monotile/dark, /area/security/brig) "bam" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/loading_area{ - dir = 8 +/obj/effect/turf_decal/tile/orange{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "bao" = ( /obj/structure/chair/fancy/shuttle{ @@ -20385,7 +20405,7 @@ dir = 9 }, /obj/effect/turf_decal/tile/orange, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "baw" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -22663,6 +22683,11 @@ pixel_x = 6; pixel_y = 2 }, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = 3; + pixel_y = -2 + }, +/obj/item/reagent_containers/dropper, /turf/open/floor/engine, /area/medical/medbay/lobby) "beI" = ( @@ -23011,9 +23036,11 @@ /area/crew_quarters/dorms) "bfs" = ( /obj/structure/lattice/catwalk/over/ship, -/obj/machinery/conveyor_switch/oneway{ - id = "naval"; - name = "Feed Into Gun Room" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) @@ -23671,11 +23698,6 @@ }, /turf/open/floor/monotile/dark, /area/security/brig) -"bgL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/deck_turret, -/turf/open/floor/plating, -/area/nsv/weapons/fore) "bgN" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 @@ -23776,11 +23798,10 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 3; - pixel_y = -2 +/obj/machinery/fax{ + fax_name = "Medical"; + name = "Medical Cryo Fax Machine" }, -/obj/item/reagent_containers/dropper, /turf/open/floor/engine, /area/medical/medbay/lobby) "bha" = ( @@ -24513,7 +24534,7 @@ dir = 4; pixel_x = -22 }, -/turf/open/floor/monotile/dark, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "biF" = ( /obj/structure/cable{ @@ -24524,12 +24545,6 @@ /turf/open/floor/monotile/dark, /area/security/brig) "biG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, /obj/effect/landmark/start/munitions_tech, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) @@ -24623,6 +24638,12 @@ icon_state = "4-8" }, /obj/structure/lattice/catwalk/over/ship, +/obj/machinery/requests_console{ + department = "Bridge"; + departmentType = 1; + payment_department = "CIV"; + pixel_y = 26 + }, /turf/open/floor/monotile/dark, /area/bridge{ name = "CIC" @@ -25057,9 +25078,6 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "bjJ" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, @@ -25070,6 +25088,9 @@ pixel_y = 23 }, /obj/structure/tank_dispenser, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/engine/atmos) "bjK" = ( @@ -25284,6 +25305,7 @@ /obj/machinery/requests_console{ department = "Hydroponics"; departmentType = 2; + payment_department = "CIV"; pixel_x = -31; pixel_y = -2 }, @@ -25434,7 +25456,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bkv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -25529,7 +25551,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, /turf/open/floor/monotile/dark, @@ -25930,7 +25952,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, /turf/open/floor/monotile/dark, @@ -25983,6 +26005,10 @@ "blF" = ( /obj/structure/table/reinforced, /obj/structure/disposalpipe/segment, +/obj/machinery/fax{ + fax_name = "Wardens Office"; + name = "Wardens Office Fax Machine" + }, /turf/open/floor/carpet/red, /area/security/warden) "blG" = ( @@ -26805,6 +26831,7 @@ /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; + payment_department = "CAR"; pixel_y = 30 }, /turf/open/floor/plasteel/grid/steel, @@ -31264,30 +31291,6 @@ }, /turf/open/floor/monotile/light, /area/crew_quarters/heads/cmo) -"bwd" = ( -/obj/structure/table/glass, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/item/cartridge/medical, -/obj/item/cartridge/medical{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/cartridge/medical{ - pixel_x = -2; - pixel_y = 6 - }, -/obj/item/cartridge/chemistry{ - pixel_y = 2 - }, -/obj/item/clothing/glasses/hud/health, -/turf/open/floor/carpet/blue, -/area/crew_quarters/heads/cmo) "bwe" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -32263,10 +32266,10 @@ /turf/open/floor/plasteel/tech/grid, /area/chapel/main) "byb" = ( -/obj/structure/table/wood, /obj/item/storage/book/bible, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/altar_of_gods, /turf/open/floor/monotile/dark, /area/chapel/main) "byc" = ( @@ -33302,12 +33305,6 @@ /turf/open/floor/monotile/steel, /area/engine/engineering) "bAs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, /obj/structure/cable{ icon_state = "4-8" }, @@ -33315,6 +33312,11 @@ /obj/machinery/atmospherics/pipe/simple/brown/hidden{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/monotile/steel, /area/engine/engineering) "bAt" = ( @@ -33336,9 +33338,6 @@ /obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/brown/hidden{ dir = 4 }, @@ -33679,7 +33678,7 @@ }) "bBb" = ( /obj/machinery/deck_turret, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "bBc" = ( /obj/structure/cable{ @@ -33691,13 +33690,9 @@ }) "bBd" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, /obj/effect/landmark/start/munitions_tech, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "bBe" = ( @@ -33808,10 +33803,6 @@ /turf/open/floor/monotile/dark, /area/hallway/nsv/deck2/frame1/central) "bBq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/deck_turret/powder_gate, /obj/effect/turf_decal/tile/orange{ dir = 4 @@ -33819,7 +33810,7 @@ /obj/effect/turf_decal/tile/orange{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "bBr" = ( /obj/structure/lattice/catwalk/over/ship, @@ -33845,13 +33836,13 @@ name = "Munitions Control Room" }) "bBs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/ship/delivery/yellow, -/obj/machinery/conveyor{ - dir = 8; - id = "naval" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "bBt" = ( @@ -33870,10 +33861,16 @@ name = "Munitions Control Room" }) "bBv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/monotile/dark, +/obj/effect/turf_decal/tile/orange{ + dir = 8 + }, +/obj/effect/turf_decal/tile/orange{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "bBw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -33974,7 +33971,7 @@ /area/nsv/hanger/deck2) "bBD" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel/tech/grid, +/turf/open/floor/monotile/steel, /area/nsv/hanger/deck2) "bBE" = ( /obj/machinery/light{ @@ -34167,15 +34164,12 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/frame1/central) "bBY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/conveyor/slow{ - id = "torp" +/obj/structure/lattice/catwalk/over/ship, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "bBZ" = ( @@ -34187,12 +34181,6 @@ name = "Munitions Control Room" }) "bCa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -34720,6 +34708,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, +/mob/living/simple_animal/hostile/retaliate/bat/sgt_araneus, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) "bDa" = ( @@ -35063,7 +35052,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bDG" = ( /obj/effect/turf_decal/tile/neutral{ @@ -35089,10 +35078,12 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/lattice/catwalk/over/ship, /obj/structure/cable/yellow{ icon_state = "2-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "bDK" = ( @@ -36941,14 +36932,16 @@ name = "Munitions Control Room" }) "bHr" = ( -/obj/structure/sign/directions/medical{ - dir = 8 +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/structure/sign/directions/science{ - dir = 8; - pixel_y = -9 +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/ship/delivery/yellow, +/obj/machinery/door/airlock/highsecurity/ship{ + name = "Naval Artillery"; + req_one_access_txt = "69" }, -/turf/closed/wall/r_wall/ship, +/turf/open/floor/monotile/steel, /area/nsv/weapons/fore) "bHs" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -36979,11 +36972,9 @@ /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/frame1/central) "bHu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment, /obj/machinery/ammo_sorter{ - id = "atlas_missilebay"; + id = "tycoon_missilebay"; name = "Missile Casings" }, /obj/item/ship_weapon/ammunition/missile/missile_casing, @@ -36996,6 +36987,12 @@ /obj/item/ship_weapon/ammunition/missile/missile_casing, /obj/item/ship_weapon/ammunition/missile/missile_casing, /obj/item/ship_weapon/ammunition/missile/missile_casing, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "bHv" = ( @@ -37346,7 +37343,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/tile/blue{ dir = 1 }, /turf/open/floor/monotile/dark, @@ -37390,9 +37387,6 @@ /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) "bIy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, /obj/structure/extinguisher_cabinet{ pixel_y = 26 }, @@ -37400,7 +37394,11 @@ /obj/item/storage/belt/utility/full, /obj/item/storage/belt/utility/full, /obj/item/key/fighter_tug, -/turf/open/floor/plating, +/obj/effect/turf_decal/tile/orange, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/turf/open/floor/monotile/dark, /area/nsv/hanger/deck2) "bIz" = ( /obj/effect/turf_decal/tile/neutral, @@ -37621,7 +37619,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bJg" = ( /obj/docking_port/stationary{ @@ -37652,6 +37650,12 @@ dir = 4; pixel_x = -23 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "bJj" = ( @@ -37660,6 +37664,7 @@ department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; + payment_department = "SEC"; pixel_y = 26 }, /turf/open/floor/monotile/steel, @@ -37987,6 +37992,12 @@ /obj/machinery/missile_builder/welder{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "bJZ" = ( @@ -38106,8 +38117,7 @@ /turf/open/floor/monotile/steel, /area/science) "bKv" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/monotile/dark, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "bKw" = ( /obj/structure/cable{ @@ -38363,7 +38373,7 @@ /obj/item/radio/intercom{ pixel_y = 26 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bLi" = ( /obj/machinery/disposal/bin, @@ -38827,7 +38837,7 @@ /obj/structure/cable{ icon_state = "1-4" }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bMg" = ( /obj/structure/lattice, @@ -38906,7 +38916,7 @@ /obj/effect/turf_decal/tile/orange{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "bRy" = ( /obj/item/beacon, @@ -38947,7 +38957,7 @@ /area/maintenance/starboard/fore) "bUM" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -39105,18 +39115,22 @@ /turf/closed/wall/ship, /area/nsv/weapons/gauss) "bYn" = ( -/obj/machinery/newscaster{ - pixel_x = 32 +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, -/turf/closed/wall/ship, -/area/nsv/weapons/gauss) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/fore) "bYo" = ( /obj/machinery/gauss_dispenser, /obj/structure/closet/crate{ opened = 1 }, /obj/effect/turf_decal/stripes/line, -/turf/open/floor/monotile/dark, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bYp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -39128,7 +39142,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/turf/open/floor/monotile/dark, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bYr" = ( /obj/machinery/gauss_dispenser, @@ -39138,7 +39152,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/turf/open/floor/monotile/dark, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bYs" = ( /obj/structure/disposalpipe/segment, @@ -39149,7 +39163,7 @@ dir = 1 }, /obj/machinery/computer/ship/viewscreen, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bYD" = ( /obj/structure/cable{ @@ -39180,17 +39194,32 @@ /turf/open/floor/monotile/steel, /area/nsv/weapons/gauss) "bYI" = ( -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/obj/effect/turf_decal/tile/orange, -/turf/open/floor/monotile/steel, +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/monotile/dark, /area/nsv/weapons/fore) +"bYJ" = ( +/obj/structure/table/reinforced, +/obj/item/computer_hardware/hard_drive/role/quartermaster{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/item/computer_hardware/hard_drive/role/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/solgovcup, +/obj/item/clothing/ears/earmuffs, +/turf/open/floor/carpet/ship, +/area/quartermaster/qm) "bYK" = ( -/obj/structure/sign/ship/securearea{ - dir = 8 +/obj/machinery/conveyor_switch/oneway{ + id = "naval"; + name = "Feed Into Gun Room" }, -/turf/closed/wall/ship, +/obj/effect/turf_decal/ship/outline, +/turf/open/floor/monotile/steel, /area/nsv/weapons/fore) "bYL" = ( /obj/structure/cable{ @@ -39205,7 +39234,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bYN" = ( /obj/effect/turf_decal/stripes/line{ @@ -39219,7 +39248,7 @@ /obj/item/ship_weapon/ammunition/gauss{ pixel_y = 6 }, -/turf/open/floor/monotile/steel, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bYS" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -39236,7 +39265,7 @@ pixel_y = 6 }, /obj/machinery/light, -/turf/open/floor/monotile/steel, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "bYU" = ( /obj/machinery/door/firedoor/border_only{ @@ -39776,10 +39805,8 @@ /turf/open/floor/monotile/steel, /area/nsv/hanger/deck2) "cfg" = ( -/obj/machinery/airalarm{ - pixel_y = 26 - }, /obj/structure/lattice/catwalk/over/ship, +/obj/structure/extinguisher_cabinet/north, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "cfh" = ( @@ -39883,7 +39910,7 @@ /obj/machinery/atmospherics/pipe/manifold/yellow/visible{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -39956,7 +39983,7 @@ dir = 8 }, /obj/structure/window/reinforced/spawner/east, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -40005,7 +40032,7 @@ dir = 8 }, /obj/structure/window/reinforced/spawner/east, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -40013,7 +40040,7 @@ /obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2{ dir = 8 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -40096,6 +40123,11 @@ }, /obj/effect/mapping_helpers/airlock/abandoned, /obj/structure/barricade/wooden/crude, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/durasteel, /area/engine/engine_room) "ctT" = ( @@ -40104,16 +40136,6 @@ }, /turf/open/floor/durasteel, /area/security/prison) -"cve" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/obj/effect/turf_decal/tile/orange, -/turf/open/floor/monotile/steel, -/area/nsv/weapons/fore) "cvM" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -40327,8 +40349,8 @@ /obj/effect/turf_decal/bot, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; - freq = 1400; - location = "Research Division" + location = "Research Division"; + name = "navigation beacon (Research Delivery)" }, /turf/open/floor/monotile/dark, /area/science) @@ -40464,7 +40486,7 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 9 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -40482,7 +40504,7 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ dir = 6 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -40548,14 +40570,17 @@ /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering/reactor_core) "ddD" = ( -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, /obj/machinery/conveyor_switch/oneway{ id = "atlas_standardshell"; name = "Load Standard Shells" }, -/turf/open/floor/monotile/steel, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/effect/turf_decal/tile/orange, +/turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "ddW" = ( /turf/open/floor/plating, @@ -40641,9 +40666,10 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "dmS" = ( -/obj/machinery/computer/ship/munitions_computer/east, -/obj/effect/turf_decal/ship/delivery/yellow, -/turf/open/floor/monotile/dark, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/monotile/steel, /area/nsv/weapons/fore) "dnd" = ( /obj/machinery/gateway{ @@ -40707,6 +40733,22 @@ }, /turf/closed/wall/r_wall/ship, /area/engine/atmospherics_engine) +"dwf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/airlock/ship/command{ + name = "Gravity Generator"; + req_one_access_txt = "56" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/monotile/steel, +/area/engine/gravity_generator) "dyj" = ( /obj/structure/bookcase/manuals/medical, /obj/machinery/camera/autoname{ @@ -40902,9 +40944,8 @@ /obj/effect/turf_decal/bot, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "Munitions" + location = "Munitions"; + name = "navigation beacon (Munitions Delivery)" }, /obj/machinery/door/window/brigdoor/westright{ req_access_txt = "69" @@ -40925,6 +40966,12 @@ dir = 4 }, /obj/effect/turf_decal/ship/delivery/yellow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "dSD" = ( @@ -40975,7 +41022,7 @@ dir = 4; name = "CO2 Moderator Mixer" }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -41033,7 +41080,13 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/floor/plasteel/tech/grid{ +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -41093,7 +41146,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/monotile/dark, /area/engine/atmos) "edO" = ( @@ -41121,13 +41174,13 @@ /turf/open/floor/engine/airless, /area/space/nearstation) "efA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/obj/effect/turf_decal/tile/orange{ - dir = 1 + dir = 4 }, -/turf/open/floor/monotile/steel, +/obj/effect/turf_decal/tile/orange, +/turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "egh" = ( /obj/effect/turf_decal/tile/ship/orange, @@ -41290,6 +41343,16 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/plating, /area/crew_quarters/dorms) +"eoI" = ( +/obj/machinery/requests_console{ + department = "Surgery"; + departmentType = 1; + name = "Medbay RC"; + payment_department = "MED"; + pixel_y = -30 + }, +/turf/open/floor/monotile/dark, +/area/medical/surgery) "eoU" = ( /obj/structure/cable{ icon_state = "1-2" @@ -41492,6 +41555,16 @@ /area/bridge{ name = "CIC" }) +"eCK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/effect/turf_decal/tile/orange, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/fore) "eCP" = ( /obj/structure/cable{ icon_state = "1-2" @@ -41558,7 +41631,7 @@ dir = 1; name = "Fuel Mixer" }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -41611,7 +41684,7 @@ /area/engine/engineering/hangar) "eKA" = ( /obj/machinery/atmospherics/pipe/manifold4w/orange/visible/layer2, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -41728,7 +41801,7 @@ id = "comedy"; name = "Gunpowder #3" }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "eTv" = ( /obj/effect/turf_decal/tile/yellow{ @@ -42201,14 +42274,9 @@ /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "fJR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/monotile/dark, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/obscuring/grey, +/turf/open/floor/plating, /area/nsv/weapons/fore) "fJZ" = ( /obj/structure/cable{ @@ -42241,7 +42309,7 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -42284,10 +42352,17 @@ /obj/machinery/atmospherics/components/unary/outlet_injector{ name = "Purge Mixline" }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) +"fQR" = ( +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/conquest_beacon/nanotrasen, +/turf/open/floor/monotile/dark, +/area/bridge{ + name = "CIC" + }) "fSF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 @@ -42578,7 +42653,7 @@ dir = 1 }, /obj/structure/window/reinforced/spawner, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -42587,7 +42662,7 @@ /obj/machinery/atmospherics/pipe/manifold/yellow/visible{ dir = 1 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -42804,7 +42879,10 @@ "gFO" = ( /obj/effect/turf_decal/delivery/red, /obj/effect/decal/cleanable/blood/tracks, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, /turf/open/floor/engine, /area/engine/engine_room) "gGP" = ( @@ -42868,9 +42946,8 @@ "gIQ" = ( /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "Security" + location = "Security"; + name = "navigation beacon (Security Delivery)" }, /obj/effect/turf_decal/bot, /obj/machinery/door/window/brigdoor/westright{ @@ -42926,7 +43003,8 @@ /obj/machinery/requests_console{ department = "Medbay"; departmentType = 1; - name = "Medbay RC" + name = "Medbay RC"; + payment_department = "MED" }, /turf/closed/wall/ship, /area/medical/medbay/central) @@ -43144,7 +43222,7 @@ name = "Atmospherics Storage"; req_one_access_txt = "10; 24" }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -43178,7 +43256,7 @@ piping_layer = 2 }, /obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -43299,7 +43377,7 @@ dir = 8 }, /obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -43334,6 +43412,22 @@ /obj/machinery/newscaster/security_unit, /turf/closed/wall/ship, /area/security/brig) +"hrK" = ( +/obj/item/computer_hardware/hard_drive/role/engineering{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/computer_hardware/hard_drive/role/engineering{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/computer_hardware/hard_drive/role/engineering{ + pixel_x = 3 + }, +/obj/structure/table/reinforced, +/obj/item/computer_hardware/hard_drive/role/atmos, +/turf/open/floor/carpet/blue, +/area/crew_quarters/heads/chief) "hsX" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -43386,7 +43480,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/visible{ dir = 5 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -43421,9 +43515,8 @@ /obj/effect/turf_decal/bot, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=1"; - dir = 1; - freq = 1400; - location = "Kitchen" + location = "Kitchen"; + name = "navigation beacon (Kitchen Delivery)" }, /obj/machinery/door/window/eastright{ dir = 1; @@ -43458,17 +43551,14 @@ }, /area/maintenance/department/medical) "hxW" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/structure/sign/directions/medical{ + dir = 8 }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/ship/delivery/yellow, -/obj/machinery/door/airlock/highsecurity/ship{ - name = "Naval Artillery"; - req_one_access_txt = "69" +/obj/structure/sign/directions/science{ + dir = 8; + pixel_y = -9 }, -/obj/effect/landmark/zebra_interlock_point, -/turf/open/floor/monotile/steel, +/turf/closed/wall/r_wall/ship, /area/nsv/weapons/fore) "hyv" = ( /obj/machinery/ship_weapon/vls, @@ -43498,7 +43588,7 @@ /obj/effect/turf_decal/tile/orange{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "hzP" = ( /obj/structure/table/glass, @@ -43627,7 +43717,7 @@ /obj/machinery/atmospherics/pipe/manifold/purple/visible/layer2{ dir = 1 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -43694,7 +43784,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -43813,7 +43903,7 @@ /area/engine/engine_smes) "hXQ" = ( /obj/machinery/atmospherics/pipe/manifold4w/yellow/visible, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -43824,7 +43914,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -43887,7 +43977,10 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, -/obj/item/storage/box/lights/mixed, +/obj/machinery/fax{ + fax_name = "Service"; + name = "Service Fax Machine" + }, /turf/open/floor/monotile/dark, /area/hallway/secondary/service) "ihA" = ( @@ -43909,7 +44002,7 @@ /area/maintenance/department/cargo) "iiq" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -43982,7 +44075,7 @@ }, /obj/machinery/computer/deckgun, /obj/effect/turf_decal/tile/orange, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "irj" = ( /obj/effect/spawner/structure/window/reinforced/ship, @@ -44069,6 +44162,11 @@ /turf/open/floor/monotile/dark, /area/security/checkpoint/engineering) "ixq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering) "ixD" = ( @@ -44109,6 +44207,30 @@ /obj/machinery/disposal/bin, /turf/open/floor/plasteel/grid/steel, /area/quartermaster/storage) +"iBz" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/item/computer_hardware/hard_drive/role/medical, +/obj/item/computer_hardware/hard_drive/role/medical{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/computer_hardware/hard_drive/role/medical{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/computer_hardware/hard_drive/role/chemistry{ + pixel_y = 2 + }, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/carpet/blue, +/area/crew_quarters/heads/cmo) "iCC" = ( /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, @@ -44226,7 +44348,15 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ + initial_gas_mix = "TEMP=2.7" + }, +/area/engine/atmos) +"iJr" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -44237,6 +44367,17 @@ }, /turf/open/space/basic, /area/engine/engineering/reactor_core) +"iJS" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/durasteel/techfloor{ + initial_gas_mix = "TEMP=2.7" + }, +/area/engine/atmos) "iLi" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 5 @@ -44442,6 +44583,16 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/monotile/steel, /area/crew_quarters/bar) +"iVx" = ( +/obj/structure/table/reinforced, +/obj/machinery/fax{ + fax_name = "CIC"; + name = "CIC Fax Machine" + }, +/turf/open/floor/monotile/dark, +/area/bridge{ + name = "CIC" + }) "iVI" = ( /turf/open/floor/engine, /area/engine/engineering) @@ -44452,6 +44603,17 @@ }, /turf/open/floor/durasteel, /area/engine/engineering) +"iWF" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/durasteel/techfloor{ + initial_gas_mix = "TEMP=2.7" + }, +/area/engine/atmos) "iXF" = ( /obj/effect/turf_decal/delivery, /obj/machinery/power/terminal, @@ -44476,9 +44638,6 @@ dir = 8; name = "emergency shower" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, /turf/open/floor/plasteel/techmaint, /area/engine/engine_room) "jbq" = ( @@ -44500,6 +44659,9 @@ dir = 8; name = "emergency shower" }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, /turf/open/floor/plasteel/techmaint, /area/engine/engine_room) "jbU" = ( @@ -44535,22 +44697,6 @@ /obj/effect/spawner/structure/window/reinforced/ship, /turf/open/floor/plating, /area/security/prison) -"jgf" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/effect/landmark/start/munitions_tech, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/monotile/dark, -/area/nsv/weapons/fore) "jha" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -44663,7 +44809,7 @@ }, /obj/machinery/computer/ammo_sorter{ dir = 8; - id = "atlas_missilebay" + id = "tycoon_missilebay" }, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) @@ -44689,7 +44835,7 @@ pixel_y = 2 }, /obj/item/ship_weapon/ammunition/missile, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/hanger/deck2) "jqT" = ( /obj/effect/decal/cleanable/dirt/dust, @@ -44726,8 +44872,8 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow, /obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/monotile/dark, /area/engine/atmos) "jtu" = ( @@ -44794,7 +44940,7 @@ /obj/item/powder_bag, /obj/item/powder_bag, /obj/item/powder_bag, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "jxT" = ( /obj/machinery/light{ @@ -44852,7 +44998,7 @@ /obj/machinery/meter{ target_layer = 2 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -44926,6 +45072,7 @@ department = "Science"; departmentType = 2; name = "Science Requests Console"; + payment_department = "SCI"; pixel_y = -30; receive_ore_updates = 1 }, @@ -45029,6 +45176,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard) +"jYf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 3; + name = "Engineering RC"; + pixel_x = 32 + }, +/turf/open/floor/plasteel/ridged/steel, +/area/engine/engineering) "jYn" = ( /obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/pipe/simple/green/visible{ @@ -45083,7 +45244,7 @@ /obj/effect/turf_decal/tile/orange{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "jZR" = ( /obj/machinery/door/airlock/ship/public{ @@ -45119,7 +45280,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 5 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -45169,7 +45330,7 @@ piping_layer = 2; pixel_x = -5 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -45192,21 +45353,30 @@ /area/maintenance/starboard/secondary{ name = "Munitions Projects" }) +"keK" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/latejoin, +/turf/open/floor/carpet/ship, +/area/crew_quarters/dorms) "keO" = ( /turf/open/floor/plating, /area/maintenance/nsv/hangar) "kfl" = ( -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, -/obj/effect/turf_decal/tile/orange{ - dir = 1 - }, /obj/machinery/conveyor_switch/oneway{ id = "atlas_powder"; name = "Feed Powder Racks" }, -/turf/open/floor/monotile/steel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/effect/turf_decal/tile/orange, +/turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "kgo" = ( /obj/effect/turf_decal/ship/delivery/yellow, @@ -45222,7 +45392,7 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -45273,7 +45443,7 @@ /obj/machinery/meter{ target_layer = 2 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -45292,6 +45462,14 @@ }, /turf/open/floor/durasteel, /area/engine/engineering) +"kjj" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/durasteel/techfloor{ + initial_gas_mix = "TEMP=2.7" + }, +/area/engine/atmos) "kkz" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 @@ -45324,7 +45502,7 @@ /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2{ dir = 5 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -45490,7 +45668,7 @@ /obj/machinery/air_sensor/atmos{ id_tag = "FTLsensor" }, -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engineering/reactor_core) "kuw" = ( /obj/machinery/light{ @@ -45685,7 +45863,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -45759,7 +45937,7 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ dir = 10 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -45856,7 +46034,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ dir = 6 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -46076,7 +46254,7 @@ /obj/item/powder_bag, /obj/item/powder_bag, /obj/item/powder_bag, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "lkt" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -46152,7 +46330,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/visible{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -46500,13 +46678,13 @@ pixel_y = 2 }, /obj/item/ship_weapon/ammunition/missile, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/hanger/deck2) "lOx" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible/layer2{ dir = 10 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -46547,7 +46725,7 @@ /area/maintenance/department/science) "lUk" = ( /obj/machinery/atmospherics/pipe/manifold/purple/visible/layer2, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -46693,7 +46871,7 @@ /obj/effect/turf_decal/tile/orange{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "mfa" = ( /obj/structure/disposalpipe/segment, @@ -46723,9 +46901,8 @@ /obj/effect/turf_decal/bot, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=4"; - dir = 4; - freq = 1400; - location = "Medbay" + location = "Medbay"; + name = "navigation beacon (Medbay Delivery)" }, /turf/open/floor/monotile/light, /area/medical/medbay/lobby) @@ -46936,7 +47113,7 @@ /area/engine/engineering/hangar) "myk" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -46953,7 +47130,8 @@ "mzP" = ( /obj/machinery/requests_console{ department = "Chapel"; - departmentType = 2 + departmentType = 2; + payment_department = "CIV" }, /turf/closed/wall/ship, /area/chapel/office) @@ -47030,7 +47208,7 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -47126,7 +47304,7 @@ /obj/machinery/atmospherics/pipe/manifold/yellow/visible{ dir = 8 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -47146,7 +47324,7 @@ /area/maintenance/department/medical) "mMg" = ( /obj/machinery/atmospherics/components/binary/valve, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -47271,6 +47449,11 @@ }, /turf/template_noop, /area/maintenance/department/science) +"mRK" = ( +/obj/structure/closet/secure_closet/munitions_technician, +/obj/effect/turf_decal/ship/delivery/yellow, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/fore) "mRZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -47322,7 +47505,7 @@ /obj/machinery/atmospherics/pipe/manifold/yellow/visible{ dir = 8 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -47392,9 +47575,6 @@ /turf/open/floor/monotile/steel, /area/engine/engineering/reactor_core) "naO" = ( -/obj/machinery/firealarm{ - pixel_y = 24 - }, /obj/machinery/camera/autoname, /obj/item/ship_weapon/ammunition/naval_artillery, /obj/item/ship_weapon/ammunition/naval_artillery, @@ -47407,7 +47587,7 @@ }, /obj/item/ship_weapon/ammunition/naval_artillery, /obj/item/ship_weapon/ammunition/naval_artillery, -/turf/open/floor/monotile/dark, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "nbH" = ( /obj/effect/decal/cleanable/dirt/dust, @@ -47504,7 +47684,7 @@ /obj/machinery/atmospherics/components/unary/portables_connector{ dir = 1 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -47557,7 +47737,7 @@ "npw" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -47597,7 +47777,7 @@ "nqT" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -47605,6 +47785,13 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/ship, /area/hallway/nsv/deck2/frame2/port) +"nuc" = ( +/obj/effect/turf_decal/delivery/red, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engine_room) "nus" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ dir = 4 @@ -47627,7 +47814,7 @@ dir = 8; name = "Mix to distro" }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -47755,13 +47942,14 @@ /turf/open/floor/carpet/red, /area/nsv/weapons/fore) "nEK" = ( -/obj/effect/turf_decal/stripes/corner{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 +/obj/effect/turf_decal/tile/orange{ + dir = 4 }, -/obj/effect/landmark/start/munitions_tech, +/obj/effect/turf_decal/tile/orange, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "nFf" = ( @@ -47783,8 +47971,14 @@ /turf/open/floor/monotile/dark, /area/science/research) "nHQ" = ( -/obj/machinery/ship_weapon/torpedo_launcher/west, -/turf/open/floor/plating, +/obj/effect/turf_decal/tile/orange{ + dir = 1 + }, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "nII" = ( /obj/structure/lattice/catwalk, @@ -47889,7 +48083,7 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -48068,6 +48262,7 @@ dir = 1; id = "naval" }, +/obj/machinery/firealarm/directional/east, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "ocV" = ( @@ -48079,6 +48274,16 @@ }, /turf/open/floor/monotile/steel, /area/nsv/weapons/fore) +"ogB" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/dark, +/area/engine/engineering) "ohf" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -48118,6 +48323,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/durasteel/lino, /area/engine/engine_room) "ohW" = ( @@ -48172,9 +48380,18 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "opF" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/landmark/start/munitions_tech, +/obj/effect/turf_decal/tile/orange{ + dir = 8 + }, +/obj/effect/turf_decal/tile/orange{ + dir = 1 + }, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/fore) "opK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -48211,7 +48428,7 @@ "otV" = ( /obj/machinery/portable_atmospherics/canister/water_vapor, /obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -48495,7 +48712,7 @@ /obj/structure/grille, /obj/structure/lattice, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "oUM" = ( /obj/structure/extinguisher_cabinet{ pixel_y = -27 @@ -48687,8 +48904,8 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 }, /turf/open/floor/durasteel/lino, /area/engine/engine_room) @@ -48739,6 +48956,12 @@ }, /turf/open/floor/monotile/steel, /area/science/xenobiology) +"ppG" = ( +/obj/structure/closet/secure_closet/munitions_technician, +/obj/machinery/light, +/obj/effect/turf_decal/ship/delivery/yellow, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/fore) "pqr" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -48779,16 +49002,6 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, /area/nsv/weapons/fore) -"prR" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/monotile/dark, -/area/engine/engineering) "psx" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -48818,6 +49031,18 @@ }, /turf/open/floor/carpet/ship, /area/crew_quarters/dorms) +"pwJ" = ( +/obj/effect/turf_decal/tile/orange{ + dir = 1 + }, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/south, +/turf/open/floor/monotile/dark, +/area/nsv/hanger/storage{ + name = "Munitions Control Room" + }) "pxf" = ( /obj/structure/cable{ icon_state = "4-8" @@ -48958,7 +49183,7 @@ /obj/item/ship_weapon/ammunition/missile{ pixel_y = 2 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/hanger/deck2) "pFX" = ( /obj/structure/disposalpipe/segment, @@ -49004,7 +49229,7 @@ dir = 8 }, /obj/structure/window/reinforced/spawner/east, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -49013,7 +49238,7 @@ /obj/machinery/meter{ target_layer = 2 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -49044,6 +49269,7 @@ /area/engine/engineering/reactor_core) "pKc" = ( /obj/machinery/suit_storage_unit/pilot, +/obj/structure/extinguisher_cabinet/east, /turf/open/floor/plasteel/tech/grid, /area/nsv/weapons/fore) "pLa" = ( @@ -49075,7 +49301,7 @@ /obj/machinery/atmospherics/pipe/manifold/yellow/visible{ dir = 1 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -49111,7 +49337,7 @@ /obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2{ dir = 1 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -49128,14 +49354,12 @@ }, /obj/machinery/navbeacon{ codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; location = "QM #2" }, /mob/living/simple_animal/bot/mulebot{ - desc = "Some kind of weird cube. Sometimes it changes colors or shapes. We are not not sure what to think of it doing this, but it seems pretty harmless."; + desc = "For some reason this strange looking metal penguin seems to have a sticker attached to it with the word Mittens written on it!"; home_destination = "QM #2"; - name = "Mobility Cube" + name = "Mittens" }, /turf/open/floor/plasteel/grid/steel, /area/quartermaster/storage) @@ -49226,7 +49450,7 @@ /area/maintenance/central) "qcy" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -49259,6 +49483,11 @@ /obj/machinery/camera/autoname{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/ridged/steel, /area/engine/engineering) "qio" = ( @@ -49273,6 +49502,21 @@ }, /turf/open/floor/plasteel/grid/steel, /area/quartermaster/storage) +"qiA" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/door/airlock/ship/maintenance{ + req_one_access_txt = "10" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) "qjd" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -49306,6 +49550,7 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "qoc" = ( @@ -49342,12 +49587,12 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/stripes/corner{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/monotile/dark, /area/engine/atmos) "qrD" = ( @@ -49422,7 +49667,7 @@ id = "comedy"; name = "Gunpowder #4" }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "qzT" = ( /obj/effect/turf_decal/loading_area, @@ -49446,11 +49691,12 @@ /turf/open/floor/plating, /area/maintenance/starboard) "qBr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, /obj/structure/reagent_dispensers/fueltank/cryogenic_fuel, -/turf/open/floor/plating, +/obj/effect/turf_decal/tile/orange, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/turf/open/floor/monotile/dark, /area/nsv/hanger/deck2) "qBT" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ @@ -49553,6 +49799,18 @@ }, /turf/closed/wall/ship, /area/medical/medbay/lobby) +"qIl" = ( +/obj/structure/table/reinforced, +/obj/item/modular_computer/tablet/preset/advanced, +/obj/item/geiger_counter{ + desc = "It's capped at 3.6 Roentgen. Not great, not terrible."; + name = "\improper Dossimiter" + }, +/obj/item/paper/crumpled{ + default_raw_text = "
No. You do not deserve them


" + }, +/turf/open/floor/durasteel/lino, +/area/engine/engineering/reactor_control) "qIN" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 @@ -49589,15 +49847,12 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "qLS" = ( -/obj/effect/decal/cleanable/blood/tracks, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-8" }, /turf/open/floor/durasteel/lino, /area/engine/engine_room) @@ -49646,6 +49901,7 @@ /obj/machinery/requests_console{ department = "Custodial Closet"; departmentType = 3; + payment_department = "CIV"; pixel_x = -28 }, /turf/open/floor/monotile/steel, @@ -49706,13 +49962,11 @@ /turf/open/floor/monotile/dark, /area/gateway) "qRr" = ( -/obj/item/radio/intercom{ - pixel_y = 26 - }, /obj/effect/turf_decal/tile/orange, /obj/effect/turf_decal/tile/orange{ dir = 8 }, +/obj/item/radio/intercom/directional/north, /turf/open/floor/monotile/steel, /area/hallway/nsv/deck2/frame1/central) "qTu" = ( @@ -49733,15 +49987,11 @@ /turf/open/floor/monotile/dark, /area/engine/engineering/hangar) "qVj" = ( -/obj/effect/turf_decal/tile/orange{ - dir = 8 - }, /obj/effect/turf_decal/tile/orange, -/obj/machinery/computer/ammo_sorter{ - dir = 4; - id = "comedy" +/obj/effect/turf_decal/stripes/line{ + dir = 9 }, -/turf/open/floor/monotile/steel, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "qWB" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -49788,6 +50038,16 @@ }, /turf/open/floor/plating, /area/maintenance/department/medical) +"rbJ" = ( +/obj/structure/lattice/catwalk/over/ship, +/obj/machinery/requests_console{ + department = "VLS Bay"; + departmentType = 1; + payment_department = "MUN"; + pixel_x = 30 + }, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/fore) "rbR" = ( /obj/structure/cable{ icon_state = "2-8" @@ -49800,7 +50060,7 @@ "rbT" = ( /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /obj/effect/turf_decal/bot_red, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -49840,6 +50100,16 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"rfC" = ( +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/effect/turf_decal/tile/orange{ + dir = 4 + }, +/obj/effect/turf_decal/tile/orange, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/fore) "rfE" = ( /obj/structure/disposalpipe/segment, /obj/machinery/conveyor/slow{ @@ -49870,7 +50140,7 @@ "rhj" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/dark/visible/layer2, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -49954,6 +50224,7 @@ "rll" = ( /obj/structure/barricade/wooden, /obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel/techmaint, /area/engine/engine_room) "rnf" = ( @@ -50034,6 +50305,7 @@ /obj/effect/decal/cleanable/blood/tracks{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/engine, /area/engine/engine_room) "rsM" = ( @@ -50060,7 +50332,7 @@ name = "Air to Distro"; target_pressure = 2000 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -50102,7 +50374,13 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -50243,7 +50521,9 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, /turf/open/floor/engine, /area/engine/engine_room) "rEt" = ( @@ -50322,13 +50602,12 @@ color = "#696969"; name = "weapon officer" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/tile/orange{ dir = 8 }, /obj/effect/turf_decal/tile/orange, /obj/effect/landmark/start/munitions_tech, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "rJv" = ( /obj/machinery/door/airlock/ship/engineering/glass{ @@ -50406,6 +50685,13 @@ id = "spentfuel2" }, /area/engine/engineering/reactor_core) +"rOq" = ( +/obj/effect/turf_decal/delivery/red, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engine_room) "rSa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -50626,6 +50912,12 @@ }, /turf/open/floor/plasteel/airless/solarpanel, /area/engine/engineering/hangar) +"slq" = ( +/obj/structure/munitions_trolley, +/obj/effect/turf_decal/ship/delivery/yellow, +/obj/structure/extinguisher_cabinet/south, +/turf/open/floor/monotile/dark, +/area/nsv/weapons/fore) "smz" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plating, @@ -50765,7 +51057,7 @@ dir = 8; name = "Custom Moderator Input" }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -50793,12 +51085,19 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/monotile/dark, /area/engine/atmospherics_engine) "stP" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -50918,7 +51217,9 @@ icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, /turf/open/floor/monotile/dark, /area/engine/engine_room) "sFd" = ( @@ -50930,6 +51231,16 @@ id = "spentfuel2" }, /area/engine/engineering/reactor_core) +"sHl" = ( +/obj/machinery/requests_console{ + department = "Medbay Clinic"; + departmentType = 1; + name = "Medbay RC"; + payment_department = "MED"; + pixel_x = -32 + }, +/turf/open/floor/monotile/light, +/area/medical/medbay/lobby) "sIU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/light{ @@ -50980,8 +51291,10 @@ dir = 8 }, /obj/effect/turf_decal/tile/orange, -/obj/effect/landmark/start/munitions_tech, -/turf/open/floor/monotile/steel, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "sOm" = ( /obj/effect/turf_decal/stripes/line{ @@ -51050,7 +51363,7 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 5 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -51101,7 +51414,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/visible{ dir = 8 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -51181,6 +51494,7 @@ /obj/machinery/requests_console{ department = "Genetics"; name = "Genetics Requests Console"; + payment_department = "MED"; pixel_y = -30 }, /turf/open/floor/monotile/light, @@ -51221,7 +51535,7 @@ id_tag = "FTLoutput"; on = 0 }, -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engineering/reactor_core) "tmT" = ( /obj/effect/turf_decal/ship/delivery/yellow, @@ -51307,6 +51621,7 @@ /obj/machinery/requests_console{ department = "Chemistry"; departmentType = 2; + payment_department = "MED"; pixel_x = -30; receive_ore_updates = 1 }, @@ -51331,7 +51646,7 @@ c_tag = "Atmos - Storage #1"; dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -51434,7 +51749,13 @@ dir = 8; name = "Mix to Incinerator" }, -/turf/open/floor/plasteel/tech/grid{ +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -51448,7 +51769,7 @@ /obj/effect/turf_decal/tile/orange{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "tBW" = ( /obj/structure/table, @@ -51571,7 +51892,7 @@ dir = 1 }, /obj/structure/window/reinforced/spawner, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -51647,7 +51968,7 @@ /obj/machinery/camera/autoname{ dir = 4 }, -/turf/open/floor/monotile/steel, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "tNT" = ( /obj/structure/lattice/catwalk, @@ -51693,6 +52014,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/monotile/steel, /area/engine/engine_room) "tRQ" = ( @@ -51745,6 +52069,17 @@ /obj/machinery/status_display/supply, /turf/closed/wall/ship, /area/quartermaster/storage) +"tXv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/monotile/steel, +/area/engine/engineering) "tXO" = ( /obj/effect/turf_decal/tile/purple{ dir = 1 @@ -51767,7 +52102,7 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 8 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -51797,7 +52132,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/monotile/dark, /area/engine/atmos) "udH" = ( @@ -51805,10 +52140,6 @@ /turf/open/floor/monotile/steel, /area/gateway) "udK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, /obj/machinery/camera/autoname{ dir = 4 }, @@ -51816,7 +52147,13 @@ dir = 4; pixel_x = -22 }, -/turf/open/floor/monotile/dark, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/computer/ship/ordnance{ + dir = 4 + }, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "udN" = ( /obj/machinery/door/airlock/ship/public/glass{ @@ -51895,7 +52232,7 @@ /area/science/mixing/chamber) "ufS" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -51961,7 +52298,7 @@ /area/library) "uju" = ( /obj/machinery/atmospherics/pipe/layer_manifold/visible, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -51978,11 +52315,24 @@ /obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/space/basic, /area/space/nearstation) +"uoi" = ( +/obj/effect/turf_decal/delivery/red, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engine_room) "uoW" = ( /turf/closed/wall/ship, /area/maintenance/nsv/weapons) "upe" = ( /obj/effect/landmark/start/munitions_tech, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "uqe" = ( @@ -52014,20 +52364,6 @@ /obj/machinery/light, /turf/open/floor/engine, /area/engine/engineering/reactor_core) -"urL" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/monotile/steel, -/area/engine/engineering) "uti" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -52041,6 +52377,20 @@ }, /turf/open/floor/monotile/dark, /area/hallway/secondary/exit) +"utB" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/monotile/steel, +/area/engine/engineering) "uyI" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -52061,7 +52411,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/gauss) "uBx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -52082,7 +52432,7 @@ dir = 4; piping_layer = 2 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -52095,6 +52445,7 @@ department = "Master at Arms"; departmentType = 5; name = "Master at Arms RC"; + payment_department = "MUN"; pixel_x = -32 }, /turf/open/floor/carpet/ship, @@ -52110,7 +52461,7 @@ dir = 4 }, /obj/machinery/portable_atmospherics/canister, -/turf/open/floor/monotile/dark, +/turf/open/floor/durasteel/techfloor, /area/engine/atmospherics_engine) "uKa" = ( /obj/machinery/airalarm{ @@ -52211,6 +52562,13 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/steel, /area/medical/medbay/lobby) +"uOT" = ( +/obj/structure/table/glass, +/obj/item/computer_hardware/hard_drive/role/lawyer, +/obj/item/taperecorder, +/obj/item/reagent_containers/food/drinks/solgovcup, +/turf/open/floor/carpet/blue, +/area/lawoffice) "uOY" = ( /obj/structure/closet/crate{ opened = 1 @@ -52218,11 +52576,21 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"uPh" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/monotile/steel, +/area/engine/engineering) "uRG" = ( /obj/machinery/atmospherics/components/unary/portables_connector/layer2{ dir = 8 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -52250,7 +52618,7 @@ /obj/machinery/door/airlock/ship/external/glass{ name = "Atmospherics Airlock" }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/engine/atmos) "uUs" = ( /obj/machinery/atmospherics/pipe/simple/purple/visible/layer2{ @@ -52307,6 +52675,23 @@ }, /turf/open/floor/monotile/steel, /area/engine/engineering/reactor_core) +"vbj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/machinery/fax{ + fax_name = "Cargo"; + name = "Cargo Fax Machine" + }, +/turf/open/floor/plasteel/grid/steel, +/area/space) "vbz" = ( /obj/machinery/door/poddoor/ship{ dir = 4; @@ -52360,7 +52745,7 @@ /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "vfz" = ( -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -52391,7 +52776,7 @@ /obj/machinery/camera/autoname{ dir = 1 }, -/turf/open/floor/engine/vacuum, +/turf/open/floor/engine/nucleium, /area/engine/engineering/reactor_core) "vii" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -52469,11 +52854,10 @@ /turf/open/floor/plating, /area/maintenance/nsv/weapons) "vly" = ( -/obj/machinery/computer/ship/munitions_computer/east, -/obj/effect/turf_decal/ship/delivery/yellow, /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/structure/lattice/catwalk/over/ship, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "vlL" = ( @@ -52510,10 +52894,8 @@ /area/maintenance/starboard/fore) "vse" = ( /obj/effect/spawner/lootdrop/minor/beret_or_rabbitears, -/obj/structure/curtain/obscuring/grey{ - open = 0 - }, /obj/structure/table/wood, +/obj/structure/curtain/obscuring/grey, /turf/open/floor/plating, /area/maintenance/starboard/fore) "vsn" = ( @@ -52803,7 +53185,13 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/floor/plasteel/tech/grid{ +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -52848,7 +53236,7 @@ "vWv" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, /obj/machinery/light/floor, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -52908,21 +53296,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"vZO" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/door/airlock/ship/maintenance{ - req_one_access_txt = "10" - }, -/turf/open/floor/plating, -/area/maintenance/department/engine) "wat" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ dir = 4 @@ -53031,11 +53404,14 @@ /obj/effect/decal/cleanable/blood/footprints{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" }, /turf/open/floor/durasteel/lino, /area/engine/engine_room) @@ -53348,7 +53724,7 @@ /obj/structure/lattice, /obj/structure/grille, /turf/open/space/basic, -/area/space) +/area/space/nearstation) "wKR" = ( /obj/machinery/computer/ship/munitions_computer/west, /turf/open/floor/monotile/dark, @@ -53527,6 +53903,15 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/disposal) +"wYJ" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/durasteel/techfloor{ + initial_gas_mix = "TEMP=2.7" + }, +/area/engine/atmos) "wZk" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -53570,7 +53955,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/visible{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -53616,10 +54001,10 @@ /turf/open/floor/durasteel, /area/engine/engineering) "xgv" = ( -/obj/effect/turf_decal/loading_area{ - dir = 8 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/turf/open/floor/plating, +/turf/open/floor/monotile/steel, /area/nsv/weapons/fore) "xhI" = ( /obj/effect/spawner/lootdrop/maintenance/six, @@ -54008,10 +54393,13 @@ }, /area/maintenance/starboard/fore) "xPq" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/effect/landmark/start/munitions_tech, +/obj/effect/turf_decal/tile/orange{ + dir = 8 + }, +/obj/effect/turf_decal/tile/orange{ dir = 1 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/monotile/dark, /area/nsv/weapons/fore) "xPD" = ( @@ -54103,7 +54491,7 @@ dir = 8 }, /obj/effect/landmark/start/munitions_tech, -/turf/open/floor/plating, +/turf/open/floor/durasteel/techfloor, /area/nsv/weapons/fore) "xWy" = ( /obj/machinery/door/airlock/ship/external/glass{ @@ -54258,7 +54646,7 @@ /obj/machinery/meter{ target_layer = 2 }, -/turf/open/floor/plasteel/tech/grid{ +/turf/open/floor/durasteel/techfloor{ initial_gas_mix = "TEMP=2.7" }, /area/engine/atmos) @@ -54269,6 +54657,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/maintenance/department/medical) +"ykz" = ( +/obj/effect/turf_decal/delivery/red, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engine_room) (1,1,1) = {" aaa @@ -64432,13 +64827,13 @@ aaJ fPU aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +oUI +oUI +oUI +oUI +oUI +oUI +oUI aaa aaa aaa @@ -64676,10 +65071,10 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa +wIM +wIM +wIM +wIM aaa aaJ aaJ @@ -64690,7 +65085,7 @@ aaJ aaa aaa aaa -aaa +jLQ aaa aaa aaa @@ -64934,8 +65329,8 @@ aaa aaa aaa aaa -aaa -aaa +jLQ +jLQ aaa aaa aaJ @@ -65190,8 +65585,8 @@ aaa aaa aaa aaa -aaa -aaa +jLQ +jLQ aXR aXR aXR @@ -65212,7 +65607,7 @@ bFt aFA jLQ aaa -aaa +oUI aaa aaa aaa @@ -65447,7 +65842,7 @@ aaa aaJ aaJ fPU -aaa +jLQ aXR aXR aHW @@ -65469,7 +65864,7 @@ aYj bFs jLQ jLQ -aaa +oUI aaa aaa aaa @@ -65726,7 +66121,7 @@ bFr jeX jLQ aaa -aaa +oUI aaa bAe aaa @@ -65983,7 +66378,7 @@ aYk bFu jLQ aaa -aaa +oUI aaa aaa aaa @@ -66240,7 +66635,7 @@ aYk aFA jLQ aaa -aaa +oUI aaa aaa aaa @@ -66496,8 +66891,8 @@ bEW aYk bFs jLQ -aaa -aaa +jLQ +oUI aaa aaa aaa @@ -66754,7 +67149,7 @@ bFr jeX jLQ aaa -aaa +oUI aaa aaa aaa @@ -79079,7 +79474,7 @@ aMs blb bwa bwc -bwd +iBz byY bCq acF @@ -80105,7 +80500,7 @@ bZl bwl bkC aKh -ahf +sHl bFU afV bin @@ -81882,7 +82277,7 @@ ahR amM amM amV -ahi +eoI aaK ahV aRL @@ -82201,8 +82596,8 @@ ahW bDw aNg aNk -opF -opF +jLQ +jLQ aaa aaa aaa @@ -82972,7 +83367,7 @@ aia ado ado aNk -opF +jLQ wIM aaa aaa @@ -83230,7 +83625,7 @@ aNb aNh aNk aaa -opF +jLQ aaa aaa aaa @@ -84719,7 +85114,7 @@ egh flG bMa rUi -bKH +pwJ bBu alI bbF @@ -85996,7 +86391,7 @@ abV lNT gGU abV -abV +rbJ abV abV ago @@ -86532,7 +86927,7 @@ buW cak bzO abG -bYf +iVx caG abG abG @@ -87062,7 +87457,7 @@ aaa aaa aaa aaa -abW +aaa aaa aaa aaa @@ -87294,7 +87689,7 @@ cbg aec aHk bgR -abH +abG biP byz bYh @@ -88328,7 +88723,7 @@ bBU wMJ nDn bmE -bmE +fQR bmE xvg bTi @@ -88566,8 +88961,8 @@ meb bax kbg tDG -bBY tDG +aZk rkQ abV dDv @@ -89079,12 +89474,12 @@ agy meb abV aBq -aKk -aLt -abV abV +aLt +bfs abV -bYn +bYI +dDv bLi bja aYL @@ -89336,14 +89731,14 @@ ago avz ago ago -aTk -ago +cfh +aTu dRf bLN ago ago +fJR ago -bYK ago ago agm @@ -89595,14 +89990,14 @@ iov aFv aKD kgo -abV +bfs qVj aSE aST aTd aWm udK -aST +ago agm gNA bcN @@ -89635,7 +90030,7 @@ ajl aes aes bcr -bqf +vbj aOo bcv aci @@ -89849,17 +90244,17 @@ aKi abV iFf rHI -bgL +bBb bBq kgo -abV +bBs sOg bKv nHQ -fJR -nHQ +abV +opF xPq -nHQ +mRK agm jZc bcq @@ -90108,15 +90503,15 @@ iFf meB bPF aSY -bBs +kgo aMM aTm bBv bam -aTu -xgv -xPq +abV xgv +bJX +ppG agm vOG bcq @@ -90362,18 +90757,18 @@ cff ago aek bDI -aHc -aHc -aHc +aaF +aKk +aTk bag -aHc -cve -aTp +bBY +vly +vly +vly vly -jgf -dmS -nEK dmS +bJX +slq agm qRr bcq @@ -90624,13 +91019,13 @@ hzO tBR kgo bfs -bYI -agy -agy -agy -agy -agy -aZk +bJX +bYK +bJX +abV +abV +abV +abV bHr vyU bcq @@ -90682,7 +91077,7 @@ aim hPI fLt aYI -opF +jLQ oUI aaa aaa @@ -90863,9 +91258,9 @@ keO xsc aam aby -aaF -aaF -aaF +abC +abC +abC aam adH fYQ @@ -90878,16 +91273,16 @@ aeO bXL xWj bBb -aBv +bBq kgo -abV +bYn ddD efA aZK -efA +nEK kfl -efA -efA +eCK +rfC hxW vyU bcq @@ -91120,7 +91515,7 @@ wfY xbj aam abD -aaF +abx bBD abw agb @@ -91197,7 +91592,7 @@ aij gbA aij aij -opF +jLQ aaa aaa aaa @@ -91968,7 +92363,7 @@ eLm eLm eLm aYI -opF +jLQ oUI aaa aaa @@ -93232,7 +93627,7 @@ ajp ajs aka akd -aOj +bYJ aOr phM aEf @@ -93438,7 +93833,7 @@ aRA aRq amq aui -anF +uOT asc ate avn @@ -95237,9 +95632,9 @@ mXe ahe eot aiJ -aln -aln -aln +abW +abW +abW eot ayG azW @@ -95493,10 +95888,10 @@ auR bAN aLZ jZR -afT -afT +keK +keK aMB -afT +keK fTr aZo aZw @@ -99646,7 +100041,7 @@ sIU uTH rhe vfz -vfz +wYJ kHI rbT rbT @@ -99903,7 +100298,7 @@ asG aml ska vfz -vfz +wYJ aml kHI kHI @@ -100117,7 +100512,7 @@ llg asL aqj aqh -ani +hrK aSm btq anp @@ -100160,15 +100555,15 @@ rhe rhe rhe vfz -vfz +iJr dXK +iWF +iWF vfz -vfz -vfz -vfz -vfz +iWF +iWF vST -rwL +iJS apG asG yeQ @@ -100682,7 +101077,7 @@ vfz vfz vfz fOF -rwL +kjj sRj aml yeQ @@ -100939,7 +101334,7 @@ vfz vfz vfz fOF -rwL +kjj azI aBP bIj @@ -101140,7 +101535,7 @@ amx aey aey aey -vZO +qiA aey aey aey @@ -101710,7 +102105,7 @@ fQD tar vfz fOF -rwL +kjj hQx aml yeQ @@ -101907,7 +102302,7 @@ anJ amx aHM aIy -ayv +dwf ieG wpa wpa @@ -102429,9 +102824,9 @@ iVI jrd tFb vYQ -anY -urL -prR +uPh +utB +ogB iVY gvQ kjd @@ -103185,7 +103580,7 @@ aaa arT anJ avO -aPW +rOq cSU aPW vbV @@ -103442,7 +103837,7 @@ aaa arT anJ atN -aPW +uoi rwm aPW vbV @@ -103453,11 +103848,11 @@ ctp ixq ixq ixq -ixq +jYf qhr ixq ixq -aQF +tXv bAs ayJ ayJ @@ -103699,7 +104094,7 @@ aaa arT anJ awg -aPW +uoi rwm aPW vIX @@ -103722,7 +104117,7 @@ nOu apt and amv -rpx +aHx ayJ gfj mWF @@ -103956,9 +104351,9 @@ aaa arT anJ awK -aPW +uoi rwm -aPW +ykz vbV chg cae @@ -104213,7 +104608,7 @@ aaa arT anJ awS -aPW +nuc rsK gFO sDP @@ -104745,7 +105140,7 @@ fBS azg bto ayJ -aHx +qIl pxL wvQ ana diff --git a/_maps/map_files/Vago/vagodeck1.dmm b/_maps/map_files/Vago/vagodeck1.dmm index 32fbfa20dd2..e3d3b1ce0ef 100644 --- a/_maps/map_files/Vago/vagodeck1.dmm +++ b/_maps/map_files/Vago/vagodeck1.dmm @@ -2525,12 +2525,12 @@ /obj/item/gps{ gpstag = "QM0" }, -/obj/item/cartridge/quartermaster, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster, +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = 6; pixel_y = 5 }, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = -4; pixel_y = 7 }, @@ -5212,12 +5212,12 @@ "mR" = ( /obj/structure/safe, /obj/item/storage/secure/briefcase{ - contents = newlist(/obj/item/clothing/suit/armor/vest,/obj/item/gun/ballistic/automatic/pistol,/obj/item/suppressor,/obj/item/melee/classic_baton/telescopic,/obj/item/clothing/mask/balaclava,/obj/item/bodybag,/obj/item/soap/nanotrasen) + contents = newlist(/obj/item/clothing/suit/armor/vest,/obj/item/gun/ballistic/automatic/pistol,/obj/item/suppressor,/obj/item/melee/classic_baton/police/telescopic,/obj/item/clothing/mask/balaclava,/obj/item/bodybag,/obj/item/soap/nanotrasen) }, /obj/item/storage/backpack/duffelbag/syndie/hitman, /obj/item/card/id/silver/reaper, /obj/item/lazarus_injector, -/obj/item/gun/energy/disabler, +/obj/item/gun/energy/e_gun/advtaser, /obj/item/gun/ballistic/revolver/russian, /obj/item/ammo_box/a357, /obj/item/clothing/neck/stethoscope, @@ -10236,18 +10236,6 @@ }, /turf/closed/wall/steel, /area/maintenance/department/cargo) -"yk" = ( -/obj/docking_port/stationary{ - dir = 4; - dwidth = 3; - height = 15; - id = "arrivals_stationary"; - name = "arrivals"; - roundstart_template = /datum/map_template/shuttle/arrival/box; - width = 7 - }, -/turf/open/space/basic, -/area/space) "ym" = ( /obj/structure/ladder, /obj/item/radio/intercom{ @@ -35170,7 +35158,7 @@ aa aa aa aa -yk +aa aa aa aa diff --git a/_maps/map_files/Vago/vagodeck2.dmm b/_maps/map_files/Vago/vagodeck2.dmm index 8da8b72f431..1047ef6bd51 100644 --- a/_maps/map_files/Vago/vagodeck2.dmm +++ b/_maps/map_files/Vago/vagodeck2.dmm @@ -146,6 +146,12 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/maintenance/nsv/deck2/airlock/forward/port) +"aV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/landmark/latejoin, +/turf/open/floor/plating/foam, +/area/hallway/nsv/deck2/frame2/port) "aX" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -2095,6 +2101,7 @@ "gT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/landmark/latejoin, /turf/open/floor/plating/foam, /area/crew_quarters/dorms) "gU" = ( @@ -4646,7 +4653,7 @@ }, /obj/item/pen, /obj/item/taperecorder, -/obj/item/cartridge/lawyer, +/obj/item/computer_hardware/hard_drive/role/lawyer, /obj/item/radio/intercom{ pixel_y = 23 }, @@ -8542,6 +8549,7 @@ dir = 1; pixel_y = -22 }, +/obj/effect/landmark/latejoin, /turf/open/floor/plating/foam, /area/crew_quarters/dorms) "xM" = ( @@ -8983,6 +8991,7 @@ /obj/machinery/light/small/broken{ dir = 8 }, +/obj/effect/landmark/latejoin, /turf/open/floor/plating/foam, /area/crew_quarters/dorms) "zL" = ( @@ -11059,15 +11068,15 @@ /area/hallway/nsv/deck2/frame2/port) "Jo" = ( /obj/structure/table/wood, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = -3; pixel_y = 2 }, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = -3; pixel_y = 2 }, -/obj/item/cartridge/engineering{ +/obj/item/computer_hardware/hard_drive/role/engineering{ pixel_x = -3; pixel_y = 2 }, @@ -13736,6 +13745,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, +/obj/effect/landmark/latejoin, /turf/open/floor/plating/foam, /area/crew_quarters/dorms) "WV" = ( @@ -42582,7 +42592,7 @@ aa My XW Ql -QD +aV gT WS zK diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 803d795c613..a2e3013a91e 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -4795,13 +4795,13 @@ /area/centcom/ferry) "pP" = ( /obj/structure/table/reinforced, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = -6 }, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_x = 6 }, -/obj/item/cartridge/quartermaster{ +/obj/item/computer_hardware/hard_drive/role/quartermaster{ pixel_y = 6 }, /obj/item/gps/mining, diff --git a/_maps/multiz_debug.json b/_maps/multiz_debug.json index 4b592267191..60e39b46605 100644 --- a/_maps/multiz_debug.json +++ b/_maps/multiz_debug.json @@ -6,5 +6,5 @@ "traits": [{"Up" : 1, "Linkage" : "Cross"}, {"Up" : 1, "Down" : -1, "Baseturf" : "/turf/open/openspace", "Linkage" : "Cross"}, {"Down" : -1, "Baseturf" : "/turf/open/openspace", "Linkage" : "Cross"}], "space_ruin_levels": -1, "space_empty_levels": 0, - "ship_type": "/obj/structure/overmap/nanotrasen/carrier/starter" + "ship_type": "/datum/overmap/ship/player" } diff --git a/_maps/runtimestation.json b/_maps/runtimestation.json index 57469de2a58..18c0c40ef01 100644 --- a/_maps/runtimestation.json +++ b/_maps/runtimestation.json @@ -6,5 +6,5 @@ "shuttles": { "cargo": "cargo_delta" }, - "ship_type": "/obj/structure/overmap/nanotrasen/carrier/starter" + "ship_type": "/datum/overmap/ship/player" } diff --git a/_maps/serendipity.json b/_maps/serendipity.json index c89ca7e18e3..ca3c594523b 100644 --- a/_maps/serendipity.json +++ b/_maps/serendipity.json @@ -1,19 +1,18 @@ { "map_name": "DLV Serendipity", - "map_link": "Serendipity", + "map_link": "serendipity", "map_path": "map_files/Serendipity", "map_file": ["Serendipity2.dmm", "Serendipity1.dmm"], "traits": [{"Up": 1, "Linkage": "Self"}, {"Down": -1, "Linkage": "Self"}], "space_ruin_levels": -1, "space_empty_levels": 0, "shuttles": { - "arrival": "arrival_serendipity", "cargo": "cargo_serendipity", "ferry": "ferry_fancy", "emergency": "emergency_celerity" }, "mine_disable": 1, - "ship_type": "/obj/structure/overmap/nanotrasen/serendipity/starter", + "ship_type": "/datum/overmap/ship/player", "starmap_path": "config/starmap/starmap.json", "map_description": "Serendipity vessels are small, light, and fast. Due to a recent amendment to The Dominion of Light’s involvement in the Federation, they now manufacture and sell Serendipity ships to WhiteRapids directly. Originally used for scientific and medical research, these ships are now outfitted with a light array of weapons and all the equipment necessary for QRF.", diff --git a/_maps/shrike.json b/_maps/shrike.json index 2ea65183416..03c517b46f2 100644 --- a/_maps/shrike.json +++ b/_maps/shrike.json @@ -1,6 +1,6 @@ { "map_name": "NSV Shrike", - "map_link": "Shrike", + "map_link": "shrike", "map_path": "map_files/Shrike", "map_file": ["Shrike2.dmm", "Shrike1.dmm"], "traits": [{"Up": 1, "Linkage": "Cross"}, {"Down": -1, "Linkage": "Cross"}], @@ -10,7 +10,7 @@ "ferry": "ferry_kilo", "emergency": "emergency_void"}, "mine_disable": 1, - "ship_type": "/obj/structure/overmap/nanotrasen/frigate/starter/shrike", + "ship_type": "/datum/overmap/ship/player", "starmap_path": "config/starmap/starmap.json", "map_description": "Shrike-class vessels were initially commissioned last century and served as light strike frigates before being retired to deep space shipyards in favour of more durable designs. Due to escalating conflict with the Syndicate, WhiteRapids looked to retrofitting decommissioned Shrike-class vessels as cheap alternative to production of brand-new warships. As a result, several more modern technologies are incompatible with the ageing hulls.", diff --git a/_maps/shuttles/exploration/exploration_delta.dmm b/_maps/shuttles/exploration/exploration_delta.dmm index 56f25edd328..31f42f1e53d 100644 --- a/_maps/shuttles/exploration/exploration_delta.dmm +++ b/_maps/shuttles/exploration/exploration_delta.dmm @@ -177,7 +177,7 @@ pixel_y = 11 }, /obj/item/paper/crumpled{ - info = "

I bought you some food, but I ate it all before you came, sorry.

- RTH

"; + default_raw_text = "

I bought you some food, but I ate it all before you came, sorry.

- RTH

"; name = "scribbled note" }, /turf/open/floor/mineral/titanium, diff --git a/_maps/snake.json b/_maps/snake.json index e68d1cf09fe..fa5fdcbc5b2 100644 --- a/_maps/snake.json +++ b/_maps/snake.json @@ -1,5 +1,6 @@ { "map_name": "NSV Snake", + "map_link": "snake", "map_path": "map_files/Snake", "map_file": [ "snake_lower.dmm", @@ -23,7 +24,7 @@ "ferry": "ferry_kilo" }, "mine_disable": 1, - "ship_type": "/obj/structure/overmap/nanotrasen/patrol_cruiser/starter", + "ship_type": "/datum/overmap/ship/player", "starmap_path": "config/starmap/starmap.json", "map_description": "Snake-Class vessels were designed with modularity in mind. A long strip of hallway with compartments well organized and aligned along this hallway leaves the ship relatively easy to navigate and repair in drydock. All of the ship’s maintenance is located on the upper deck with crew operations on the bottom. A medium-weight gunboat whose versatility leaves it universally accepted, and often used as QRF.", diff --git a/_maps/templates/boarding/syndicate/destroyer.dmm b/_maps/templates/boarding/syndicate/destroyer.dmm index 86453a743f6..49aa087563b 100644 --- a/_maps/templates/boarding/syndicate/destroyer.dmm +++ b/_maps/templates/boarding/syndicate/destroyer.dmm @@ -301,7 +301,7 @@ /obj/structure/table/reinforced, /obj/item/multitool, /obj/item/paper{ - info = "We've fitted your ship with an autopilot to counteract those idiots that fleet keeps sending to fly our birds. Multitool the helm console to toggle it on / off."; + default_raw_text = "We've fitted your ship with an autopilot to counteract those idiots that fleet keeps sending to fly our birds. Multitool the helm console to toggle it on / off."; name = "Note From Abassi Fleetyards" }, /turf/open/floor/mineral/plastitanium/red, diff --git a/_maps/templates/boarding/syndicate/mako.dmm b/_maps/templates/boarding/syndicate/mako.dmm index bf6b4c6c6b4..df6fdebbc90 100644 --- a/_maps/templates/boarding/syndicate/mako.dmm +++ b/_maps/templates/boarding/syndicate/mako.dmm @@ -817,7 +817,7 @@ /obj/structure/table/reinforced, /obj/item/multitool, /obj/item/paper{ - info = "We've fitted your ship with an autopilot to counteract those idiots that fleet keeps sending to fly our birds. Multitool the helm console to toggle it on / off."; + default_raw_text = "We've fitted your ship with an autopilot to counteract those idiots that fleet keeps sending to fly our birds. Multitool the helm console to toggle it on / off."; name = "Note From Abassi Fleetyards" }, /turf/open/floor/mineral/plastitanium/red, diff --git a/_maps/templates/boarding/syndicate/mako_carrier.dmm b/_maps/templates/boarding/syndicate/mako_carrier.dmm index f0c969cd3b7..aa4c289f6fc 100644 --- a/_maps/templates/boarding/syndicate/mako_carrier.dmm +++ b/_maps/templates/boarding/syndicate/mako_carrier.dmm @@ -841,7 +841,7 @@ /obj/structure/table/reinforced, /obj/item/multitool, /obj/item/paper{ - info = "We've fitted your ship with an autopilot to counteract those idiots that fleet keeps sending to fly our birds. Multitool the helm console to toggle it on / off."; + default_raw_text = "We've fitted your ship with an autopilot to counteract those idiots that fleet keeps sending to fly our birds. Multitool the helm console to toggle it on / off."; name = "Note From Abassi Fleetyards" }, /turf/open/floor/mineral/plastitanium/red, diff --git a/_maps/testship.json b/_maps/testship.json index bcd874413be..36fa6f771c7 100644 --- a/_maps/testship.json +++ b/_maps/testship.json @@ -11,5 +11,5 @@ "ferry": "ferry_fancy", "emergency": "emergency_donut"}, "mine_disable": 1, - "ship_type": "/obj/structure/overmap/nanotrasen/battlecruiser/starter" + "ship_type": "/datum/overmap/ship/player" } diff --git a/_maps/tycoon.json b/_maps/tycoon.json index 21e19e8bbeb..0dd1a903a1c 100644 --- a/_maps/tycoon.json +++ b/_maps/tycoon.json @@ -1,6 +1,6 @@ { "map_name": "NSV Tycoon", - "map_link": "Tycoon", + "map_link": "tycoon", "map_path": "map_files/Tycoon", "map_file": ["Tycoon2.dmm", "Tycoon1.dmm"], "traits": [{"Up": 1, "Linkage": "Self"}, {"Down": -1, "Linkage": "Self"}], @@ -11,7 +11,7 @@ "ferry": "ferry_kilo", "emergency": "emergency_donut"}, "mine_disable": 1, - "ship_type": "/obj/structure/overmap/nanotrasen/battlecruiser/starter", + "ship_type": "/datum/overmap/ship/player", "starmap_path": "config/starmap/starmap.json", "map_description": "Like a phoenix rising from the ashes, The Tycoon came about with the new need to combat the Syndicate threat from the wreckages of the SGC Enterprise. At the time, it was desperately needed and outfitted with the latest in armor plating technology which allowed WhiteRapids to make a foothold in combating the Syndicate, paving the way for new ships to fill in needed roles behind it.", diff --git a/_maps/vago.json b/_maps/vago.json index 2af7e428db2..caa973370bb 100644 --- a/_maps/vago.json +++ b/_maps/vago.json @@ -1,7 +1,7 @@ { "map_name": "NSV Vago", "map_path": "map_files/Vago", - "map_link": "Vago", + "map_link": "vago", "map_file": ["vagodeck2.dmm", "vagodeck1.dmm"], "traits": [{"Up": 1}, {"Down": -1}], "space_ruin_levels": -1, @@ -14,7 +14,7 @@ "mine_file": "FOB_Shuttle.dmm", "mine_path": "map_files/Mining/nsv13", "mine_traits": [{"Linkage": "Self"}], - "ship_type": "/obj/structure/overmap/nanotrasen/frigate/starter", + "ship_type": "/datum/overmap/ship/player", "mining_ship_type": "/obj/structure/overmap/nanotrasen/mining_cruiser/nostromo/fob", "map_description": "The basic hull design for Vago ships are no longer being manufactured and instead the existing ships are being maintained to the best of DDM’s capabilities. Vago vessels are often stripped for parts when repairing other ships which leaves what few Vago ships still in service in a sorry state. Pray you never serve upon a Vago vessel as they are only sent on QRF as a punishment for the crew or for the Brass’ sick laughs.", diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 3f36f5b2734..e9f370b32b2 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -76,6 +76,7 @@ #define ADMIN_PUNISHMENT_TOE "Stub Toe (Once)" #define ADMIN_PUNISHMENT_TOEPLUS "Stub Toe (Always)" #define ADMIN_PUNISHMENT_CRYO "Force Cryo" +#define ADMIN_PUNISHMENT_DOCK "Dock Pay" //NSV13 #define AHELP_UNCLAIMED 1 #define AHELP_ACTIVE 2 diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 6620df43f48..93f62654284 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -76,6 +76,11 @@ #define IS_HERETIC(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic)) #define IS_HERETIC_MONSTER(mob) (mob.mind?.has_antag_datum(/datum/antagonist/heretic_monster)) +#define FACTION_SYNDICATE "Syndicate" +#define FACTION_BLOB "Blob" +#define FACTION_ALIEN "Xenomorph" +#define FACTION_WIZARD "Wizard" + #define PATH_SIDE "Side" #define PATH_ASH "Ash" diff --git a/code/__DEFINES/async.dm b/code/__DEFINES/async.dm new file mode 100644 index 00000000000..c33f361b9a9 --- /dev/null +++ b/code/__DEFINES/async.dm @@ -0,0 +1,31 @@ + +/// Declars that a function is async, creates the task return type and will cause it to return the task +/// upon sleeping. +/// Place this as the first line in the body of the function, but after any other set X = val settings. +#define DECLARE_ASYNC set waitfor = FALSE; \ + RETURN_TYPE(/datum/task); \ + var/datum/task/created_task = new(); \ + . = created_task; + +/// Marks an async function as finished without returning any value. +/// Async version of return; +#define ASYNC_FINISH created_task.mark_completed(); \ + return; + +/// Marks an async function as completed and returns a result. +/// Async version of return value; +#define ASYNC_RETURN(value) created_task.mark_completed(value);\ + return; + +/// Waits for the provided task to be completed, or the timeout to expire. +/// Returns null if the timeout expires, or the task's result otherwise. +/// Note that if a task's result is null, then null will be returned. +#define AWAIT(TASK, TIMEOUT) get_result(TASK, TIMEOUT) + +/proc/get_result(datum/task/task, timeout) + if (!istype(task)) + return task + if (task.await(timeout)) + // Return the task result + return task.result + return null diff --git a/code/__DEFINES/bans.dm b/code/__DEFINES/bans.dm new file mode 100644 index 00000000000..2b958e2ba1a --- /dev/null +++ b/code/__DEFINES/bans.dm @@ -0,0 +1 @@ +#define BAN_OOC "OOC" diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index 21e4fb01714..367f632d33e 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -8,10 +8,13 @@ #define COLOR_DARKMODE_TEXT "#a4bad6" #define COLOR_WHITE "#EEEEEE" +#define COLOR_OFF_WHITE "#FFF5ED" #define COLOR_SILVER "#C0C0C0" #define COLOR_GRAY "#808080" #define COLOR_FLOORTILE_GRAY "#8D8B8B" +#define COLOR_WEBSAFE_DARK_GRAY "#484848" #define COLOR_ALMOST_BLACK "#333333" +#define COLOR_FULL_TONER_BLACK "#101010" #define COLOR_BLACK "#000000" #define COLOR_HALF_TRANSPARENT_BLACK "#0000007A" #define COLOR_RED "#FF0000" @@ -27,9 +30,11 @@ #define COLOR_BLUE_LIGHT "#33CCFF" #define COLOR_NAVY "#000080" #define COLOR_PINK "#FFC0CB" +#define COLOR_FADED_PINK "#ff80d5" #define COLOR_MAGENTA "#FF00FF" #define COLOR_PURPLE "#800080" #define COLOR_ORANGE "#FF9900" +#define COLOR_LIGHT_ORANGE "#ffc44d" #define COLOR_BEIGE "#CEB689" #define COLOR_BLUE_GRAY "#75A2BB" #define COLOR_BROWN "#BA9F6D" @@ -43,6 +48,7 @@ #define COLOR_PALE_RED_GRAY "#D59998" #define COLOR_PALE_PURPLE_GRAY "#CBB1CA" #define COLOR_PURPLE_GRAY "#AE8CA8" +#define COLOR_DARK_PURPLE "#551A8B" //Color defines used by the assembly detailer. #define COLOR_ASSEMBLY_BLACK "#545454" diff --git a/code/__DEFINES/dcs/signals/area_signals.dm b/code/__DEFINES/dcs/signals/signals_area.dm similarity index 100% rename from code/__DEFINES/dcs/signals/area_signals.dm rename to code/__DEFINES/dcs/signals/signals_area.dm diff --git a/code/__DEFINES/dcs/signals/atom_signals.dm b/code/__DEFINES/dcs/signals/signals_atom.dm similarity index 100% rename from code/__DEFINES/dcs/signals/atom_signals.dm rename to code/__DEFINES/dcs/signals/signals_atom.dm diff --git a/code/__DEFINES/dcs/signals/datum_signals/circuit_signals.dm b/code/__DEFINES/dcs/signals/signals_datum/signals_circuit.dm similarity index 100% rename from code/__DEFINES/dcs/signals/datum_signals/circuit_signals.dm rename to code/__DEFINES/dcs/signals/signals_datum/signals_circuit.dm diff --git a/code/__DEFINES/dcs/signals/datum_signals/datum_signals.dm b/code/__DEFINES/dcs/signals/signals_datum/signals_datum.dm similarity index 100% rename from code/__DEFINES/dcs/signals/datum_signals/datum_signals.dm rename to code/__DEFINES/dcs/signals/signals_datum/signals_datum.dm diff --git a/code/__DEFINES/dcs/signals/datum_signals/moveloop_signals.dm b/code/__DEFINES/dcs/signals/signals_datum/signals_moveloop.dm similarity index 100% rename from code/__DEFINES/dcs/signals/datum_signals/moveloop_signals.dm rename to code/__DEFINES/dcs/signals/signals_datum/signals_moveloop.dm diff --git a/code/__DEFINES/dcs/signals/datum_signals/nanite_signals.dm b/code/__DEFINES/dcs/signals/signals_datum/signals_nanite.dm similarity index 100% rename from code/__DEFINES/dcs/signals/datum_signals/nanite_signals.dm rename to code/__DEFINES/dcs/signals/signals_datum/signals_nanite.dm diff --git a/code/__DEFINES/dcs/signals/datum_signals/ntnet_signals.dm b/code/__DEFINES/dcs/signals/signals_datum/signals_ntnet.dm similarity index 100% rename from code/__DEFINES/dcs/signals/datum_signals/ntnet_signals.dm rename to code/__DEFINES/dcs/signals/signals_datum/signals_ntnet.dm diff --git a/code/__DEFINES/dcs/signals/datum_signals/storage_signals.dm b/code/__DEFINES/dcs/signals/signals_datum/signals_storage.dm similarity index 100% rename from code/__DEFINES/dcs/signals/datum_signals/storage_signals.dm rename to code/__DEFINES/dcs/signals/signals_datum/signals_storage.dm diff --git a/code/__DEFINES/dcs/signals/global_signals.dm b/code/__DEFINES/dcs/signals/signals_global.dm similarity index 100% rename from code/__DEFINES/dcs/signals/global_signals.dm rename to code/__DEFINES/dcs/signals/signals_global.dm diff --git a/code/__DEFINES/dcs/signals/lighting_signals.dm b/code/__DEFINES/dcs/signals/signals_lighting.dm similarity index 100% rename from code/__DEFINES/dcs/signals/lighting_signals.dm rename to code/__DEFINES/dcs/signals/signals_lighting.dm diff --git a/code/__DEFINES/dcs/signals/mob_signals/carbon_signals.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_carbon.dm similarity index 100% rename from code/__DEFINES/dcs/signals/mob_signals/carbon_signals.dm rename to code/__DEFINES/dcs/signals/signals_mob/signals_carbon.dm diff --git a/code/__DEFINES/dcs/signals/mob_signals/human_signals.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_human.dm similarity index 100% rename from code/__DEFINES/dcs/signals/mob_signals/human_signals.dm rename to code/__DEFINES/dcs/signals/signals_mob/signals_human.dm diff --git a/code/__DEFINES/dcs/signals/mob_signals/living_signals.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_living.dm similarity index 100% rename from code/__DEFINES/dcs/signals/mob_signals/living_signals.dm rename to code/__DEFINES/dcs/signals/signals_mob/signals_living.dm diff --git a/code/__DEFINES/dcs/signals/mob_signals/mob_signals.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob.dm similarity index 90% rename from code/__DEFINES/dcs/signals/mob_signals/mob_signals.dm rename to code/__DEFINES/dcs/signals/signals_mob/signals_mob.dm index 0e559b6b546..9d0e7dd169a 100644 --- a/code/__DEFINES/dcs/signals/mob_signals/mob_signals.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob.dm @@ -58,3 +58,12 @@ #define COMSIG_MOB_CLIENT_PRE_LIVING_MOVE "mob_client_pre_living_move" ///Called after a client connects to a mob and all UI elements have been setup #define COMSIG_MOB_CLIENT_LOGIN "comsig_mob_client_login" + +///NSV13 - Surgery QoL - Start +/// From /datum/surgery/New(): (datum/surgery/surgery, surgery_location (body zone), obj/item/bodypart/targeted_limb) +#define COMSIG_MOB_SURGERY_STARTED "mob_surgery_started" + +/// From /atom/movable/screen/zone_sel/proc/set_selected_zone. +/// Fires when the user has changed their selected body target. +#define COMSIG_MOB_SELECTED_ZONE_SET "mob_set_selected_zone" +///NSV13 - Surgery QoL - Stop diff --git a/code/__DEFINES/dcs/signals/mob_signals/silicon_signals.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_silicon.dm similarity index 100% rename from code/__DEFINES/dcs/signals/mob_signals/silicon_signals.dm rename to code/__DEFINES/dcs/signals/signals_mob/signals_silicon.dm diff --git a/code/__DEFINES/dcs/signals/mob_signals/simplemob_signals.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_simplemob.dm similarity index 100% rename from code/__DEFINES/dcs/signals/mob_signals/simplemob_signals.dm rename to code/__DEFINES/dcs/signals/signals_mob/signals_simplemob.dm diff --git a/code/__DEFINES/dcs/signals/mob_signals/xenobiology_signals.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_xenobiology.dm similarity index 100% rename from code/__DEFINES/dcs/signals/mob_signals/xenobiology_signals.dm rename to code/__DEFINES/dcs/signals/signals_mob/signals_xenobiology.dm diff --git a/code/__DEFINES/dcs/signals/movable_signals.dm b/code/__DEFINES/dcs/signals/signals_movable.dm similarity index 100% rename from code/__DEFINES/dcs/signals/movable_signals.dm rename to code/__DEFINES/dcs/signals/signals_movable.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/atmospheric_machine_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_atmospheric_machine.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/atmospheric_machine_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_atmospheric_machine.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/item_signals/clothing_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_clothing.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/item_signals/clothing_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_clothing.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/item_signals/grenade_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_grenade.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/item_signals/grenade_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_grenade.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/item_signals/implant_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_implant.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/item_signals/implant_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_implant.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/item_signals/item_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm similarity index 93% rename from code/__DEFINES/dcs/signals/obj_signals/item_signals/item_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm index 0d397364baf..ff100275b75 100644 --- a/code/__DEFINES/dcs/signals/obj_signals/item_signals/item_signals.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm @@ -50,9 +50,10 @@ // /obj/effect/mine signals #define COMSIG_MINE_TRIGGERED "minegoboom" ///from [/obj/effect/mine/proc/triggermine]: -// /obj/item/pda signals -#define COMSIG_PDA_CHANGE_RINGTONE "pda_change_ringtone" //! called on pda when the user changes the ringtone: (mob/living/user, new_ringtone) - #define COMPONENT_STOP_RINGTONE_CHANGE 1 +// /obj/item/modular_computer/tablet/pda signals +/// Called on tablet (PDA) when the user changes the ringtone: (mob/living/user, new_ringtone) +#define COMSIG_TABLET_CHANGE_RINGTONE "comsig_tablet_change_ringtone" + #define COMPONENT_STOP_RINGTONE_CHANGE (1<<0) // /obj/item/radio signals diff --git a/code/__DEFINES/dcs/signals/obj_signals/machine_signals/airlock_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_airlock.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/machine_signals/airlock_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_airlock.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/machine_signals/aquarium_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_aquarium.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/machine_signals/aquarium_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_aquarium.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/machine_signals/machinery_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_machinery.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/machine_signals/machinery_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_machinery.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/machine_signals/supermatter_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_supermatter.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/machine_signals/supermatter_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_supermatter.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/mech_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_mech.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/mech_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_mech.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/object_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/object_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_object.dm diff --git a/code/__DEFINES/dcs/signals/obj_signals/projectile_signals.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_projectile.dm similarity index 100% rename from code/__DEFINES/dcs/signals/obj_signals/projectile_signals.dm rename to code/__DEFINES/dcs/signals/signals_obj/signals_projectile.dm diff --git a/code/__DEFINES/dcs/signals/turf_signals.dm b/code/__DEFINES/dcs/signals/signals_turf.dm similarity index 100% rename from code/__DEFINES/dcs/signals/turf_signals.dm rename to code/__DEFINES/dcs/signals/signals_turf.dm diff --git a/code/__DEFINES/devices.dm b/code/__DEFINES/devices.dm new file mode 100644 index 00000000000..6fba8aa4f7e --- /dev/null +++ b/code/__DEFINES/devices.dm @@ -0,0 +1,106 @@ +// Role disk defines + +#define DISK_POWER (1<<0) +#define DISK_ATMOS (1<<1) +#define DISK_MED (1<<2) +#define DISK_CHEM (1<<3) +#define DISK_MANIFEST (1<<4) +#define DISK_NEWS (1<<5) +#define DISK_SIGNAL (1<<6) +#define DISK_STATUS (1<<7) +#define DISK_CARGO (1<<8) +#define DISK_ROBOS (1<<9) +#define DISK_JANI (1<<10) +#define DISK_SEC (1<<11) +#define DISK_BUDGET (1<<12) +#define DISK_REMOTE_AIRLOCK (1<<13) +#define DISK_SILO_LOG (1<<14) +#define DISK_HOP (1<<15) + +// Theme defines + +#define THEME_NTOS "ntos-default" +#define THEME_THINKTRONIC "thinktronic-classic" +#define THEME_NTOS_LIGHT "ntos-light" +#define THEME_NTOS_DARK "ntos-dark" +#define THEME_NTOS_RED "ntos-red" +#define THEME_NTOS_ORANGE "ntos-orange" +#define THEME_NTOS_YELLOW "ntos-yellow" +#define THEME_NTOS_OLIVE "ntos-olive" +#define THEME_NTOS_GREEN "ntos-green" +#define THEME_NTOS_TEAL "ntos-teal" +#define THEME_NTOS_BLUE "ntos-blue" +#define THEME_NTOS_VIOLET "ntos-violet" +#define THEME_NTOS_PURPLE "ntos-purple" +#define THEME_NTOS_PINK "ntos-pink" +#define THEME_NTOS_BROWN "ntos-brown" +#define THEME_NTOS_GREY "ntos-grey" +#define THEME_NTOS_CLOWN_PINK "ntos-clown-pink" +#define THEME_NTOS_CLOWN_YELLOW "ntos-clown-yellow" +#define THEME_NTOS_HACKERMAN "ntos-hackerman" +#define THEME_HACKERMAN "hackeros" +#define THEME_RETRO "retro" + +#define THEME_SYNDICATE "syndicate" + +/// Map of theme name -> theme ID +GLOBAL_LIST_INIT(ntos_device_themes_default, list( + "NtOS Default" = THEME_NTOS, + "Thinktronic Classic" = THEME_THINKTRONIC, + "NtOS Light" = THEME_NTOS_LIGHT, + "NtOS Dark" = THEME_NTOS_DARK, + "NtOS Red" = THEME_NTOS_RED, + "NtOS Orange" = THEME_NTOS_ORANGE, + "NtOS Yellow" = THEME_NTOS_YELLOW, + "NtOS Olive" = THEME_NTOS_OLIVE, + "NtOS Green" = THEME_NTOS_GREEN, + "NtOS Teal" = THEME_NTOS_TEAL, + "NtOS Blue" = THEME_NTOS_BLUE, + "NtOS Violet" = THEME_NTOS_VIOLET, + "NtOS Purple" = THEME_NTOS_PURPLE, + "NtOS Pink" = THEME_NTOS_PINK, + "NtOS Brown" = THEME_NTOS_BROWN, + "NtOS Grey" = THEME_NTOS_GREY, + "NtOS Clown Pink" = THEME_NTOS_CLOWN_PINK, + "NtOS Clown Yellow" = THEME_NTOS_CLOWN_YELLOW, + "NtOS Hackerman" = THEME_NTOS_HACKERMAN, + "Hackerman" = THEME_HACKERMAN, + "Retro" = THEME_RETRO +)) + +// I hate BYOND lists. just let me reverse the map please +/// Sanitization list for the database, allowed roundstart theme IDs +GLOBAL_LIST_INIT(ntos_device_themes_default_content, list( + THEME_NTOS, + THEME_THINKTRONIC, + THEME_NTOS_LIGHT, + THEME_NTOS_DARK, + THEME_NTOS_RED, + THEME_NTOS_ORANGE, + THEME_NTOS_YELLOW, + THEME_NTOS_OLIVE, + THEME_NTOS_GREEN, + THEME_NTOS_TEAL, + THEME_NTOS_BLUE, + THEME_NTOS_VIOLET, + THEME_NTOS_PURPLE, + THEME_NTOS_PINK, + THEME_NTOS_BROWN, + THEME_NTOS_GREY, + THEME_NTOS_CLOWN_PINK, + THEME_NTOS_CLOWN_YELLOW, + THEME_NTOS_HACKERMAN, + THEME_HACKERMAN, + THEME_RETRO +)) + +GLOBAL_LIST_INIT(ntos_device_themes_emagged, list( + "Syndix" = THEME_SYNDICATE +) + GLOB.ntos_device_themes_default) + +/// Reverse map of GLOB.ntos_device_themes_emagged +/proc/theme_name_for_id(id) + for(var/key in GLOB.ntos_device_themes_emagged) + if(GLOB.ntos_device_themes_emagged[key] == id) + return key + return null diff --git a/code/__DEFINES/fonts.dm b/code/__DEFINES/fonts.dm new file mode 100644 index 00000000000..9de897314f1 --- /dev/null +++ b/code/__DEFINES/fonts.dm @@ -0,0 +1,17 @@ +//FONTS: +// Used by Paper and PhotoCopier (and PaperBin once a year). +// Used by PDA's Notekeeper. +// Used by NewsCaster and NewsPaper. +// Used by Modular Computers +/// Font used by regular pens +#define PEN_FONT "Verdana" +/// Font used by fancy pens +#define FOUNTAIN_PEN_FONT "Segoe Script" +/// Font used by crayons +#define CRAYON_FONT "Comic Sans MS" +/// Font used by printers +#define PRINTER_FONT "Times New Roman" +/// Font used by charcoal pens +#define CHARCOAL_FONT "Candara" +/// Font used when signing on paper. +#define SIGNATURE_FONT "Segoe Script" diff --git a/code/__DEFINES/interaction_flags.dm b/code/__DEFINES/interaction_flags.dm index 9535a99fc2d..93b8d3695f0 100644 --- a/code/__DEFINES/interaction_flags.dm +++ b/code/__DEFINES/interaction_flags.dm @@ -8,6 +8,7 @@ #define INTERACT_ATOM_CHECK_GRAB (1<<6) //! incapacitated check checks grab #define INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND (1<<7) //! prevents leaving fingerprints automatically on attack_hand #define INTERACT_ATOM_NO_FINGERPRINT_INTERACT (1<<8) //! adds hiddenprints instead of fingerprints on interact +#define INTERACT_ATOM_ALLOW_USER_LOCATION (1<<9) //! allows this atom to skip the adjacency check #define INTERACT_ITEM_ATTACK_HAND_PICKUP (1<<0) //! attempt pickup on attack_hand for items diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 95c4e209ae5..4c28da23921 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -53,9 +53,11 @@ //Modular computer part defines #define MC_CPU "CPU" #define MC_HDD "HDD" +#define MC_HDD_JOB "HDD_JOB" #define MC_SDD "SDD" #define MC_CARD "CARD" #define MC_CARD2 "CARD2" +#define MC_CART "CART" #define MC_NET "NET" #define MC_PRINT "PRINT" #define MC_CELL "CELL" @@ -63,6 +65,7 @@ #define MC_AI "AI" #define MC_SENSORS "SENSORS" #define MC_SIGNALLER "SIGNALER" +#define MC_IDENTIFY "IDENTIFY" //! ## NTNet stuff, for modular computers //! **NTNet module-configuration values. Do not change these. If you need to add another use larger number (5..6..7 etc)** @@ -159,3 +162,18 @@ #define PLANT_GENE_EXTRACTABLE (1<<1) #define CLICKSOUND_INTERVAL (0.1 SECONDS) //clicky noises, how much time needed in between clicks on the machine for the sound to play on click again. + +// From code/game/machinery/computer/communications.dm +// --------------------------------------------------- + +// for setting status display. Used in modpc status app as well. +#define MAX_STATUS_LINE_LENGTH 40 +// approvied pictures, also used in modpc app +GLOBAL_LIST_INIT(approved_status_pictures, list( + "biohazard", + "blank", + "default", + "lockdown", + "redalert", + "shuttle", +)) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 412b1f80dec..6bf33c387bd 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -84,18 +84,6 @@ #define GAME_STATE_PLAYING 3 #define GAME_STATE_FINISHED 4 -//FONTS: -// Used by Paper and PhotoCopier (and PaperBin once a year). -// Used by PDA's Notekeeper. -// Used by NewsCaster and NewsPaper. -// Used by Modular Computers -#define PEN_FONT "Verdana" -#define FOUNTAIN_PEN_FONT "Segoe Script" -#define CRAYON_FONT "Comic Sans MS" -#define PRINTER_FONT "Times New Roman" -#define SIGNFONT "Times New Roman" -#define CHARCOAL_FONT "Candara" - #define RESIZE_DEFAULT_SIZE 1 //transfer_ai() defines. Main proc in ai_core.dm @@ -207,15 +195,6 @@ GLOBAL_LIST_INIT(ghost_accs_options, list(GHOST_ACCS_NONE, GHOST_ACCS_DIR, GHOST GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DEFAULT_SPRITE, GHOST_OTHERS_THEIR_SETTING)) //Same as ghost_accs_options. -//pda fonts -#define MONO "Monospaced" -#define VT "VT323" -#define ORBITRON "Orbitron" -#define SHARE "Share Tech Mono" - -GLOBAL_LIST_INIT(pda_styles, sortList(list(MONO, VT, ORBITRON, SHARE))) - - // Consider these images/atoms as part of the UI/HUD #define APPEARANCE_UI_IGNORE_ALPHA (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|RESET_ALPHA|PIXEL_SCALE) #define APPEARANCE_UI (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|PIXEL_SCALE) @@ -401,9 +380,6 @@ GLOBAL_LIST_INIT(pda_styles, sortList(list(MONO, VT, ORBITRON, SHARE))) #define EGG_LAYING_MESSAGES list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.") -// Used by PDA and cartridge code to reduce repetitiveness of spritesheets -#define PDAIMG(what) {""} - //Filters #define AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-2, size=4, color="#04080FAA") #define GAUSSIAN_BLUR(filter_size) filter(type="blur", size=filter_size) diff --git a/code/__DEFINES/nsv13.dm b/code/__DEFINES/nsv13.dm index 97df36bf81f..06cccd67441 100644 --- a/code/__DEFINES/nsv13.dm +++ b/code/__DEFINES/nsv13.dm @@ -31,6 +31,10 @@ #define CONQUEST_ROLE_LINECOOK "Line Cook" #define CONQUEST_ROLE_GRUNT "Autofill" +//Lizard hiss preference options +#define LIZARD_HISS_LEGACY "Legacy (s only)" +#define LIZARD_HISS_EXPANDED "Expanded (x and s)" + GLOBAL_DATUM_INIT(conquest_role_handler, /datum/conquest_role_handler, new) #define COMSIG_ATOM_DAMAGE_ACT "comsig_atom_damage_act" //Used when an atom takes damage. @@ -123,6 +127,14 @@ GLOBAL_DATUM_INIT(conquest_role_handler, /datum/conquest_role_handler, new) #define HOLOMAP_EXTRA_STATIONMAPAREAS "stationareas" #define HOLOMAP_EXTRA_STATIONMAPSMALL "stationmapsmall" +/// AI Hologram Related +#define DUMMY_HUMAN_SLOT_HOLOFORM "dummy_holoform_generation" //NSV13 - AI Custom Holographic Form + +#define CUSTOM_HOLOFORM_DELAY 10 SECONDS //prevents spamming to make lag. it's pretty expensive to do this. + +#define HOLOFORM_FILTER_AI "FILTER_AI" +#define HOLOFORM_FILTER_STATIC "FILTER_STATIC" + #define KM * 1000 #define JS_OVERMAP_TACMAP_SQUARE 2 #define JS_OVERMAP_TACMAP_TOTAL_SQUARES 26 diff --git a/code/__DEFINES/paper.dm b/code/__DEFINES/paper.dm new file mode 100644 index 00000000000..c331de6c8d4 --- /dev/null +++ b/code/__DEFINES/paper.dm @@ -0,0 +1,15 @@ +/// Maximum number of characters that we allow on paper. +#define MAX_PAPER_LENGTH 5000 +/// Max number of stamps that can be applied to the paper in tgui. +#define MAX_PAPER_STAMPS 30 +/// Max number of stamp overlays that we'll add to a piece of paper's icon. +#define MAX_PAPER_STAMPS_OVERLAYS 4 +/// Maximum length of input fields. Input fields greater than this length are clamped tgui-side. Input field text input greater than this length is rejected tgui-side, discarded + logged if it reaches DM-side. +#define MAX_PAPER_INPUT_FIELD_LENGTH MAX_NAME_LEN + +/// Should not be able to write on or stamp paper. +#define MODE_READING 0 +/// Should be able to write on paper. +#define MODE_WRITING 1 +/// Should be able to stamp paper. +#define MODE_STAMPING 2 diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 30c8a7613f7..7fc49bbf376 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -6,7 +6,7 @@ #define PREFTOGGLE_SOUND_LOBBY (1<<3) #define PREFTOGGLE_MEMBER_PUBLIC (1<<4) #define PREFTOGGLE_INTENT_STYLE (1<<5) -#define PREFTOGGLE_MIDROUND_ANTAG (1<<6) +//#define PREFTOGGLE_MIDROUND_ANTAG (1<<6) #define PREFTOGGLE_SOUND_INSTRUMENTS (1<<7) #define PREFTOGGLE_SOUND_SHIP_AMBIENCE (1<<8) #define PREFTOGGLE_SOUND_PRAYERS (1<<9) @@ -27,7 +27,7 @@ #define PREFTOGGLE_RUNECHAT_NONMOBS (1<<22) #define PREFTOGGLE_RUNECHAT_EMOTES (1<<23) -#define TOGGLES_DEFAULT (PREFTOGGLE_SOUND_ADMINHELP|PREFTOGGLE_SOUND_MIDI|PREFTOGGLE_SOUND_AMBIENCE|PREFTOGGLE_SOUND_LOBBY|PREFTOGGLE_MEMBER_PUBLIC|PREFTOGGLE_INTENT_STYLE|PREFTOGGLE_MIDROUND_ANTAG|PREFTOGGLE_SOUND_INSTRUMENTS|PREFTOGGLE_SOUND_SHIP_AMBIENCE|PREFTOGGLE_SOUND_PRAYERS|PREFTOGGLE_SOUND_ANNOUNCEMENTS|PREFTOGGLE_OUTLINE_ENABLED|PREFTOGGLE_RUNECHAT_GLOBAL|PREFTOGGLE_RUNECHAT_NONMOBS|PREFTOGGLE_RUNECHAT_EMOTES) +#define TOGGLES_DEFAULT (PREFTOGGLE_SOUND_ADMINHELP|PREFTOGGLE_SOUND_MIDI|PREFTOGGLE_SOUND_AMBIENCE|PREFTOGGLE_SOUND_LOBBY|PREFTOGGLE_MEMBER_PUBLIC|PREFTOGGLE_INTENT_STYLE|PREFTOGGLE_SOUND_INSTRUMENTS|PREFTOGGLE_SOUND_SHIP_AMBIENCE|PREFTOGGLE_SOUND_PRAYERS|PREFTOGGLE_SOUND_ANNOUNCEMENTS|PREFTOGGLE_OUTLINE_ENABLED|PREFTOGGLE_RUNECHAT_GLOBAL|PREFTOGGLE_RUNECHAT_NONMOBS|PREFTOGGLE_RUNECHAT_EMOTES) // You CANNOT go above 1<<23 in BYOND due to integer limits // Please add subsequent ones as PREFTOGGLE_2_[name] @@ -179,11 +179,11 @@ #define PREFERENCE_TAG_PIXELSIZE "19" #define PREFERENCE_TAG_SCALING_METHOD "20" #define PREFERENCE_TAG_TIP_DELAY "21" -#define PREFERENCE_TAG_PDA_STYLE "22" +#define PREFERENCE_TAG_PDA_THEME "22" #define PREFERENCE_TAG_PDA_COLOUR "23" #define PREFERENCE_TAG_KEYBINDS "24" #define PREFERENCE_TAG_PURCHASED_GEAR "25" -#define PREFERENCE_TAG_BE_SPECIAL "26" +#define PREFERENCE_TAG_ROLE_PREFERENCES "26" #define PREFERENCE_TAG_PREFERRED_SYNDIE_ROLE "27" //NSV13 - syndicate crew role // True value of max save slots (3 is default, 8 is byond member, +1 to either if you have the extra slot loadout entry). Potential max is 9 diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index adce3cc051d..de64aa18d8b 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -99,7 +99,7 @@ // This represents 1/8th of the available spectrum. #define FREQ_ATMOS_STORAGE 1441 -#define FREQ_NAV_BEACON 1445 +// #define FREQ_NAV_BEACON 1445 - NSV13 - Removed during the Murder of Navbeacons #define FREQ_AI_PRIVATE 1447 //! AI private comms frequency, magenta #define FREQ_PRESSURE_PLATE 1447 #define FREQ_AIRLOCK_CONTROL 1449 diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm index cee927d5466..5b72a067a01 100644 --- a/code/__DEFINES/robots.dm +++ b/code/__DEFINES/robots.dm @@ -2,6 +2,25 @@ #define DEFAULT_AI_LAWID "default" +//NSV13 - Borg Skin Framework - Start +#define SKIN_ICON "skin_icon" +#define SKIN_ICON_STATE "skin_icon_state" +#define SKIN_LIGHT_KEY "skin_light_key" +#define SKIN_HAT_OFFSET "skin_hat_offset" +#define SKIN_FEATURES "skin_features" //for the new system of borg making + +/// Cyborgs with unique sprites for when they get totally broken down. +#define R_TRAIT_UNIQUEWRECK "unique_wreck" + +/// To store all the different cyborg modules, instead of creating that for each cyborg. +GLOBAL_LIST_EMPTY(cyborg_module_list) +/// To store all of the different base cyborg module icons, instead of creating them every time the pick_module() proc is called. +GLOBAL_LIST_EMPTY(cyborg_base_modules_icon_list) +/// To store all of the different cyborg module icons, instead of creating them every time the be_transformed_to() proc is called. +GLOBAL_LIST_EMPTY(cyborg_all_modules_icon_list) + +//NSV13 - Borg Skin Framework - End + //Bot defines, placed here so they can be read by other things! #define BOT_STEP_DELAY 4 //Delay between movemements #define BOT_STEP_MAX_RETRIES 5 //Maximum times a bot will retry to step from its position @@ -50,3 +69,11 @@ #define ASSEMBLY_THIRD_STEP 2 #define ASSEMBLY_FOURTH_STEP 3 #define ASSEMBLY_FIFTH_STEP 4 + +//NSV13 - Start - Navbeacon Refactor +//bot navigation beacon defines +#define NAVBEACON_PATROL_MODE "patrol" +#define NAVBEACON_PATROL_NEXT "next_patrol" +#define NAVBEACON_DELIVERY_MODE "delivery" +#define NAVBEACON_DELIVERY_DIRECTION "dir" +//NSV13 - End diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index c5ba51036ad..c1da00441f8 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -4,21 +4,21 @@ +// Banning snowflake - global antag ban. Does not include ghost roles that aren't antagonists or forced antagonists +#define BAN_ROLE_ALL_ANTAGONISTS "All Antagonists" + //These are synced with the Database, if you change the values of the defines //then you MUST update the database! -#define ROLE_SYNDICATE "Syndicate" #define ROLE_TRAITOR "Traitor" -#define ROLE_OPERATIVE "Operative" +#define ROLE_OPERATIVE "Nuclear Operative" #define ROLE_CHANGELING "Changeling" #define ROLE_WIZARD "Wizard" -#define ROLE_MALF "Malf AI" +//#define ROLE_MALF "Malf AI" // Currently under traitor datum, so we can't have this separate. #define ROLE_INCURSION "Incursion Team" #define ROLE_EXCOMM "Excommunicated Syndicate Agent" #define ROLE_REV "Revolutionary" #define ROLE_REV_HEAD "Head Revolutionary" -#define ROLE_REV_SUCCESSFUL "Victorious Revolutionary" #define ROLE_ALIEN "Xenomorph" -#define ROLE_PAI "pAI" #define ROLE_CULTIST "Cultist" #define ROLE_SERVANT_OF_RATVAR "Servant of Ratvar" #define ROLE_HERETIC "Heretic" @@ -28,66 +28,222 @@ #define ROLE_REVENANT "Revenant" #define ROLE_DEVIL "Devil" #define ROLE_BROTHER "Blood Brother" -#define ROLE_BRAINWASHED "Brainwashed Victim" #define ROLE_OVERTHROW "Syndicate Mutineer" #define ROLE_HIVE "Hivemind Host" -#define ROLE_HIVE_VESSEL "Awakened Vessel" #define ROLE_OBSESSED "Obsessed" -#define ROLE_SENTIENCE "Sentience Potion Spawn" -#define ROLE_MIND_TRANSFER "Mind Transfer Potion" -#define ROLE_POSIBRAIN "Posibrain" -#define ROLE_DRONE "Drone" -#define ROLE_DEATHSQUAD "Deathsquad" -#define ROLE_LAVALAND "Lavaland" +#define ROLE_SPACE_DRAGON "Space Dragon" #define ROLE_INTERNAL_AFFAIRS "Internal Affairs Agent" #define ROLE_GANG "Gangster" #define ROLE_HOLOPARASITE "Holoparasite" #define ROLE_TERATOMA "Teratoma" - +#define ROLE_MORPH "Morph" +#define ROLE_NIGHTMARE "Nightmare" +#define ROLE_SPACE_PIRATE "Space Pirate" +#define ROLE_FUGITIVE "Fugitive" +#define ROLE_FUGITIVE_HUNTER "Fugitive Hunter" #define ROLE_SYNDI_CREW "Syndicate crew" //Nsv13 - added pvp role #define ROLE_BLOODLING "Bloodling" //Nsv13 - Bloodling #define ROLE_GHOSTSHIP "Ghost Ship" //NSV13 - Playable "NPC" ships -#define ROLE_EXPERIMENTAL_CLONE "Experimental Clone" +#define ROLE_SLAUGHTER_DEMON "Slaughter Demon" +#define ROLE_CONTRACTOR_SUPPORT_UNIT "Contractor Support Unit" +#define ROLE_PYRO_SLIME "Pyroclastic Anomaly Slime" -//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR. -//The gamemode specific ones are just so the gamemodes can query whether a player is old enough -//(in game days played) to play that role -GLOBAL_LIST_INIT(special_roles, list( - ROLE_TRAITOR = /datum/game_mode/traitor, - ROLE_BROTHER = /datum/game_mode/traitor/bros, - ROLE_INCURSION = /datum/game_mode/incursion, - ROLE_EXCOMM = /datum/game_mode/incursion, - ROLE_OPERATIVE = /datum/game_mode/nuclear, - ROLE_CHANGELING = /datum/game_mode/changeling, - ROLE_WIZARD = /datum/game_mode/wizard, - ROLE_MALF, - ROLE_REV = /datum/game_mode/revolution, +/// Roles that are antagonists, roundstart or not, and have passes to do.. antagonistry +GLOBAL_LIST_INIT(antagonist_bannable_roles, list( + ROLE_TRAITOR, + ROLE_OPERATIVE, + ROLE_CHANGELING, + ROLE_WIZARD, +// ROLE_MALF, + ROLE_INCURSION, + ROLE_EXCOMM, + ROLE_REV, + ROLE_REV_HEAD, ROLE_ALIEN, - ROLE_PAI, - ROLE_CULTIST = /datum/game_mode/cult, - ROLE_SERVANT_OF_RATVAR = /datum/game_mode/clockcult, + ROLE_CULTIST, + ROLE_SERVANT_OF_RATVAR, + ROLE_HERETIC, ROLE_BLOB, ROLE_NINJA, - ROLE_OBSESSED, - ROLE_REVENANT, ROLE_ABDUCTOR, - ROLE_DEVIL = /datum/game_mode/devil, - ROLE_OVERTHROW = /datum/game_mode/overthrow, - ROLE_HIVE = /datum/game_mode/hivemind, - ROLE_INTERNAL_AFFAIRS = /datum/game_mode/traitor/internal_affairs, - ROLE_SENTIENCE, - ROLE_GANG = /datum/game_mode/gang, + ROLE_REVENANT, + ROLE_DEVIL, + ROLE_BROTHER, + ROLE_OVERTHROW, + ROLE_HIVE, + ROLE_OBSESSED, + ROLE_SPACE_DRAGON, + ROLE_INTERNAL_AFFAIRS, + ROLE_GANG, ROLE_HOLOPARASITE, - ROLE_HERETIC = /datum/game_mode/heretics, - ROLE_SYNDI_CREW = /datum/game_mode/pvp, //NSV13 - ROLE_BLOODLING = /datum/game_mode/bloodling, //NSV13 + ROLE_MORPH, + ROLE_NIGHTMARE, + ROLE_SPACE_PIRATE, + ROLE_SYNDI_CREW, //NSV13 + ROLE_BLOODLING, //NSV13 ROLE_GHOSTSHIP, //NSV13 - ROLE_TERATOMA + ROLE_TERATOMA, + ROLE_FUGITIVE, + ROLE_FUGITIVE_HUNTER, + ROLE_SLAUGHTER_DEMON, + ROLE_CONTRACTOR_SUPPORT_UNIT, )) //nsv13 - pvp + bloodling modes added here +#define BAN_ROLE_FORCED_ANTAGONISTS "Forced Antagonists" + +#define ROLE_BRAINWASHED "Brainwashed Victim" +#define ROLE_HYPNOTIZED "Hypnotized Victim" +#define ROLE_HIVE_VESSEL "Awakened Vessel" + +/// Forced antagonist roles +GLOBAL_LIST_INIT(forced_bannable_roles, list( + ROLE_BRAINWASHED, + ROLE_HYPNOTIZED, + ROLE_HIVE_VESSEL, +)) + +#define BAN_ROLE_ALL_GHOST "Non-Antagonist Ghost Roles" + +#define ROLE_PAI "pAI" +#define ROLE_POSIBRAIN "Posibrain" +#define ROLE_DRONE "Drone" +#define ROLE_SENTIENCE "Sentience Potion Spawn" +#define ROLE_EXPERIMENTAL_CLONE "Experimental Clone" +#define ROLE_LAVALAND_ELITE "Lavaland Elite" +#define ROLE_SPECTRAL_BLADE "Spectral Blade" +#define ROLE_ASHWALKER "Ashwalker" +#define ROLE_LIFEBRINGER "Lifebringer" +#define ROLE_FREE_GOLEM "Free Golem" +#define ROLE_HERMIT "Hermit" +#define ROLE_TRANSLOCATED_VET "Translocated Vet" +#define ROLE_LAVALAND_ESCAPED_PRISONER "Lavaland Escaped Prisoner" +#define ROLE_BEACH_BUM "Beach Bum" +#define ROLE_HOTEL_STAFF "Hotel Staff" +#define ROLE_LAVALAND_SYNDICATE "Lavaland Syndicate" +#define ROLE_DEMONIC_FRIEND "Demonic Friend" +#define ROLE_ANCIENT_CREW "Ancient Crew" +#define ROLE_SKELETAL_REMAINS "Skeletal Remains" +#define ROLE_SENTIENT_ANIMAL "Sentient Animal" +#define ROLE_HOLY_SUMMONED "Holy Summoned" +#define ROLE_SURVIVALIST "Exploration Survivalist" +#define ROLE_EXPLORATION_VIP "Exploration VIP" +#define ROLE_SENTIENT_XENOARTIFACT "Sentient Xenoartifiact" + +/// Any ghost role that is not really an antagonist or doesn't antagonize (lavaland, sentience potion, etc) +GLOBAL_LIST_INIT(ghost_role_bannable_roles, list( + ROLE_PAI, + ROLE_POSIBRAIN, + ROLE_DRONE, + ROLE_SENTIENCE, + ROLE_EXPERIMENTAL_CLONE, + ROLE_LAVALAND_ELITE, + ROLE_SPECTRAL_BLADE, + ROLE_ASHWALKER, + ROLE_LIFEBRINGER, + ROLE_FREE_GOLEM, + ROLE_HERMIT, + ROLE_TRANSLOCATED_VET, + ROLE_LAVALAND_ESCAPED_PRISONER, + ROLE_BEACH_BUM, + ROLE_HOTEL_STAFF, + ROLE_LAVALAND_SYNDICATE, + ROLE_DEMONIC_FRIEND, + ROLE_ANCIENT_CREW, + ROLE_SKELETAL_REMAINS, + ROLE_SENTIENT_ANIMAL, + ROLE_HOLY_SUMMONED, +)) + +#define ROLE_IMAGINARY_FRIEND "Imaginary Friend" +#define ROLE_SPLIT_PERSONALITY "Split Personality" +#define ROLE_MIND_TRANSFER "Mind Transfer Potion" +#define ROLE_ERT "Emergency Response Team" + +/// Other roles that don't really fit any of the above, and probably shouldn't be banned with the others as a group +/// Little to no impact on anything +GLOBAL_LIST_INIT(other_bannable_roles, list( + ROLE_IMAGINARY_FRIEND, + ROLE_SPLIT_PERSONALITY, + ROLE_MIND_TRANSFER, + ROLE_ERT, +)) + +/// Do not ban this role. Oh my god. Please. +#define UNBANNABLE_ANTAGONIST "Unbannable" + +/client/proc/role_preference_enabled(role_preference_key) + if(!ispath(role_preference_key, /datum/role_preference)) + CRASH("Invalid role_preference_key [role_preference_key] passed to role_preference_enabled!") + if(!src.prefs) + return FALSE + var/list/source = src.prefs.role_preferences + var/datum/role_preference/pref = role_preference_key + if(initial(pref.per_character)) + source = src.prefs.active_character.role_preferences_character + var/role_preference_value = source["[role_preference_key]"] + if(isnum(role_preference_value) && !role_preference_value) // explicitly disabled and not null + return FALSE + return TRUE + +/// If the client given is fit for a given role based on the arguments passed +/// banning_key: ROLE_X used for this role - to check if the player is banned. +/// role_preference_key: The /datum/role_preference typepath to check if the player has the role enabled and would like to receive the poll. +/// poll_ignore_key: The POLL_IGNORE_X define for this role, used for temporarily disabling ghost polls for high volume roles. +/// req_hours: The amount of living hours required to receive this role. +/// feedback: if we should send a to_chat +/client/proc/should_include_for_role(banning_key = BAN_ROLE_ALL_ANTAGONISTS, role_preference_key = null, poll_ignore_key = null, req_hours = 0, feedback = FALSE) + if(QDELETED(src) || (poll_ignore_key && GLOB.poll_ignore[poll_ignore_key] && (src.ckey in GLOB.poll_ignore[poll_ignore_key]))) + return FALSE + if(role_preference_key) + if(!ispath(role_preference_key, /datum/role_preference)) + CRASH("Invalid role_preference_key [role_preference_key] passed to should_include_for_role!") + if(!src.role_preference_enabled(role_preference_key)) + return FALSE + if(banning_key) + if(is_banned_from(src.ckey, banning_key)) + if(feedback) + to_chat(src, "You are banned from this role!") + return FALSE + if(req_hours) //minimum living hour count + if((src.get_exp_living(TRUE)/60) < req_hours) + if(feedback) + to_chat(src, "You do not have enough living hours to take this role ([req_hours]hrs required)!") + return FALSE + return TRUE + +/client/proc/can_take_ghost_spawner(banning_key = BAN_ROLE_ALL_ANTAGONISTS, use_cooldown = TRUE, is_ghost_role = FALSE, is_admin_spawned = FALSE) + if(!istype(src)) + return FALSE + if(is_ghost_role && !(GLOB.ghost_role_flags & GHOSTROLE_SPAWNER) && !is_admin_spawned) + to_chat(src, "An admin has temporarily disabled non-admin ghost roles!") + return FALSE + if(!src.should_include_for_role( + banning_key = banning_key, + feedback = TRUE + )) + return FALSE + if(use_cooldown && src.next_ghost_role_tick > world.time) + to_chat(src, "You have died recently, you must wait [(src.next_ghost_role_tick - world.time)/10] seconds until you can use a ghost spawner.") + return FALSE + return TRUE + //Job defines for what happens when you fail to qualify for any job during job selection #define BEOVERFLOW 1 #define BERANDOMJOB 2 #define RETURNTOLOBBY 3 + +#define ROLE_PREFERENCE_CATEGORY_ANAGONIST "Antagonists" +#define ROLE_PREFERENCE_CATEGORY_MIDROUND_LIVING "Midrounds (Living)" +#define ROLE_PREFERENCE_CATEGORY_MIDROUND_GHOST "Midrounds (Ghost Poll)" + +GLOBAL_LIST_INIT(role_preference_entries, init_role_preference_entries()) + +/proc/init_role_preference_entries() + var/list/output = list() + for (var/datum/role_preference/preference_type as anything in subtypesof(/datum/role_preference)) + if (initial(preference_type.abstract_type) == preference_type) + continue + output[preference_type] = new preference_type + return output diff --git a/code/__DEFINES/rust_g.dm b/code/__DEFINES/rust_g.dm index e82dee47717..c6534a8a88d 100644 --- a/code/__DEFINES/rust_g.dm +++ b/code/__DEFINES/rust_g.dm @@ -38,6 +38,59 @@ #define RUST_G (__rust_g || __detect_rust_g()) #endif +// Handle 515 call() -> call_ext() changes +#if DM_VERSION >= 515 +#define RUSTG_CALL call_ext +#else +#define RUSTG_CALL call +#endif + +/// Gets the version of rust_g +/proc/rustg_get_version() return RUSTG_CALL(RUST_G, "get_version")() + + +/** + * Sets up the Aho-Corasick automaton with its default options. + * + * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call + * Arguments: + * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls + * * patterns - A non-associative list of strings to search for + * * replacements - Default replacements for this automaton, used with rustg_acreplace + */ +#define rustg_setup_acreplace(key, patterns, replacements) RUSTG_CALL(RUST_G, "setup_acreplace")(key, json_encode(patterns), json_encode(replacements)) + +/** + * Sets up the Aho-Corasick automaton using supplied options. + * + * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call + * Arguments: + * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls + * * options - An associative list like list("anchored" = 0, "ascii_case_insensitive" = 0, "match_kind" = "Standard"). The values shown on the example are the defaults, and default values may be omitted. See the identically named methods at https://docs.rs/aho-corasick/latest/aho_corasick/struct.AhoCorasickBuilder.html to see what the options do. + * * patterns - A non-associative list of strings to search for + * * replacements - Default replacements for this automaton, used with rustg_acreplace + */ +#define rustg_setup_acreplace_with_options(key, options, patterns, replacements) RUSTG_CALL(RUST_G, "setup_acreplace")(key, json_encode(options), json_encode(patterns), json_encode(replacements)) + +/** + * Run the specified replacement engine with the provided haystack text to replace, returning replaced text. + * + * Arguments: + * * key - The key for the automaton + * * text - Text to run replacements on + */ +#define rustg_acreplace(key, text) RUSTG_CALL(RUST_G, "acreplace")(key, text) + +/** + * Run the specified replacement engine with the provided haystack text to replace, returning replaced text. + * + * Arguments: + * * key - The key for the automaton + * * text - Text to run replacements on + * * replacements - Replacements for this call. Must be the same length as the set-up patterns + */ +#define rustg_acreplace_with_replacements(key, text, replacements) RUSTG_CALL(RUST_G, "acreplace_with_replacements")(key, text, json_encode(replacements)) + /** * This proc generates a cellular automata noise grid which can be used in procedural generation methods. * @@ -52,35 +105,58 @@ * * height: The height of the grid. */ #define rustg_cnoise_generate(percentage, smoothing_iterations, birth_limit, death_limit, width, height) \ - LIBCALL(RUST_G, "cnoise_generate")(percentage, smoothing_iterations, birth_limit, death_limit, width, height) + RUSTG_CALL(RUST_G, "cnoise_generate")(percentage, smoothing_iterations, birth_limit, death_limit, width, height) + +/** + * This proc generates a grid of perlin-like noise + * + * Returns a single string that goes row by row, with values of 1 representing an turned on cell, and a value of 0 representing a turned off cell. + * + * Arguments: + * * seed: seed for the function + * * accuracy: how close this is to the original perlin noise, as accuracy approaches infinity, the noise becomes more and more perlin-like + * * stamp_size: Size of a singular stamp used by the algorithm, think of this as the same stuff as frequency in perlin noise + * * world_size: size of the returned grid. + * * lower_range: lower bound of values selected for. (inclusive) + * * upper_range: upper bound of values selected for. (exclusive) + */ +#define rustg_dbp_generate(seed, accuracy, stamp_size, world_size, lower_range, upper_range) \ + RUSTG_CALL(RUST_G, "dbp_generate")(seed, accuracy, stamp_size, world_size, lower_range, upper_range) -#define rustg_dmi_strip_metadata(fname) LIBCALL(RUST_G, "dmi_strip_metadata")("[fname]") -#define rustg_dmi_create_png(path, width, height, data) LIBCALL(RUST_G, "dmi_create_png")(path, width, height, data) -#define rustg_dmi_resize_png(path, width, height, resizetype) LIBCALL(RUST_G, "dmi_resize_png")(path, width, height, resizetype) -#define rustg_file_read(fname) LIBCALL(RUST_G, "file_read")("[fname]") -#define rustg_file_exists(fname) LIBCALL(RUST_G, "file_exists")("[fname]") -#define rustg_file_write(text, fname) LIBCALL(RUST_G, "file_write")(text, "[fname]") -#define rustg_file_append(text, fname) LIBCALL(RUST_G, "file_append")(text, "[fname]") +#define rustg_dmi_strip_metadata(fname) RUSTG_CALL(RUST_G, "dmi_strip_metadata")("[fname]") +#define rustg_dmi_create_png(path, width, height, data) RUSTG_CALL(RUST_G, "dmi_create_png")(path, width, height, data) +#define rustg_dmi_resize_png(path, width, height, resizetype) RUSTG_CALL(RUST_G, "dmi_resize_png")(path, width, height, resizetype) + +#define rustg_file_read(fname) RUSTG_CALL(RUST_G, "file_read")("[fname]") +#define rustg_file_exists(fname) RUSTG_CALL(RUST_G, "file_exists")("[fname]") +#define rustg_file_write(text, fname) RUSTG_CALL(RUST_G, "file_write")(text, "[fname]") +#define rustg_file_append(text, fname) RUSTG_CALL(RUST_G, "file_append")(text, "[fname]") +#define rustg_file_get_line_count(fname) text2num(RUSTG_CALL(RUST_G, "file_get_line_count")("[fname]")) +#define rustg_file_seek_line(fname, line) RUSTG_CALL(RUST_G, "file_seek_line")("[fname]", "[line]") #ifdef RUSTG_OVERRIDE_BUILTINS - #define file2text(fname) rustg_file_read("[fname]") - #define text2file(text, fname) rustg_file_append(text, "[fname]") + #define file2text(fname) rustg_file_read("[fname]") + #define text2file(text, fname) rustg_file_append(text, "[fname]") #endif -#define rustg_git_revparse(rev) LIBCALL(RUST_G, "rg_git_revparse")(rev) -#define rustg_git_commit_date(rev) LIBCALL(RUST_G, "rg_git_commit_date")(rev) +#define rustg_git_revparse(rev) RUSTG_CALL(RUST_G, "rg_git_revparse")(rev) +#define rustg_git_commit_date(rev) RUSTG_CALL(RUST_G, "rg_git_commit_date")(rev) -#define rustg_hash_string(algorithm, text) LIBCALL(RUST_G, "hash_string")(algorithm, text) -#define rustg_hash_file(algorithm, fname) LIBCALL(RUST_G, "hash_file")(algorithm, "[fname]") +#define rustg_hash_string(algorithm, text) RUSTG_CALL(RUST_G, "hash_string")(algorithm, text) +#define rustg_hash_file(algorithm, fname) RUSTG_CALL(RUST_G, "hash_file")(algorithm, "[fname]") +#define rustg_hash_generate_totp(seed) RUSTG_CALL(RUST_G, "generate_totp")(seed) +#define rustg_hash_generate_totp_tolerance(seed, tolerance) RUSTG_CALL(RUST_G, "generate_totp_tolerance")(seed, tolerance) #define RUSTG_HASH_MD5 "md5" #define RUSTG_HASH_SHA1 "sha1" #define RUSTG_HASH_SHA256 "sha256" #define RUSTG_HASH_SHA512 "sha512" +#define RUSTG_HASH_XXH64 "xxh64" +#define RUSTG_HASH_BASE64 "base64" #ifdef RUSTG_OVERRIDE_BUILTINS -#define md5(thing) (isfile(thing) ? rustg_hash_file(RUSTG_HASH_MD5, "[thing]") : rustg_hash_string(RUSTG_HASH_MD5, thing)) + #define md5(thing) (isfile(thing) ? rustg_hash_file(RUSTG_HASH_MD5, "[thing]") : rustg_hash_string(RUSTG_HASH_MD5, thing)) #endif #define RUSTG_HTTP_METHOD_GET "get" @@ -89,35 +165,117 @@ #define RUSTG_HTTP_METHOD_PATCH "patch" #define RUSTG_HTTP_METHOD_HEAD "head" #define RUSTG_HTTP_METHOD_POST "post" -#define rustg_http_request_blocking(method, url, body, headers) LIBCALL(RUST_G, "http_request_blocking")(method, url, body, headers) -#define rustg_http_request_async(method, url, body, headers) LIBCALL(RUST_G, "http_request_async")(method, url, body, headers) -#define rustg_http_check_request(req_id) LIBCALL(RUST_G, "http_check_request")(req_id) +#define rustg_http_request_blocking(method, url, body, headers, options) RUSTG_CALL(RUST_G, "http_request_blocking")(method, url, body, headers, options) +#define rustg_http_request_async(method, url, body, headers, options) RUSTG_CALL(RUST_G, "http_request_async")(method, url, body, headers, options) +#define rustg_http_check_request(req_id) RUSTG_CALL(RUST_G, "http_check_request")(req_id) #define RUSTG_JOB_NO_RESULTS_YET "NO RESULTS YET" #define RUSTG_JOB_NO_SUCH_JOB "NO SUCH JOB" #define RUSTG_JOB_ERROR "JOB PANICKED" -#define rustg_json_is_valid(text) (LIBCALL(RUST_G, "json_is_valid")(text) == "true") +#define rustg_json_is_valid(text) (RUSTG_CALL(RUST_G, "json_is_valid")(text) == "true") + +#define rustg_log_write(fname, text, format) RUSTG_CALL(RUST_G, "log_write")("[fname]", text, format) +/proc/rustg_log_close_all() return RUSTG_CALL(RUST_G, "log_close_all")() + +#define rustg_noise_get_at_coordinates(seed, x, y) RUSTG_CALL(RUST_G, "noise_get_at_coordinates")(seed, x, y) + +/** + * Register a list of nodes into a rust library. This list of nodes must have been serialized in a json. + * Node {// Index of this node in the list of nodes + * unique_id: usize, + * // Position of the node in byond + * x: usize, + * y: usize, + * z: usize, + * // Indexes of nodes connected to this one + * connected_nodes_id: Vec} + * It is important that the node with the unique_id 0 is the first in the json, unique_id 1 right after that, etc. + * It is also important that all unique ids follow. {0, 1, 2, 4} is not a correct list and the registering will fail + * Nodes should not link across z levels. + * A node cannot link twice to the same node and shouldn't link itself either + */ +#define rustg_register_nodes_astar(json) RUSTG_CALL(RUST_G, "register_nodes_astar")(json) + +/** + * Add a new node to the static list of nodes. Same rule as registering_nodes applies. + * This node unique_id must be equal to the current length of the static list of nodes + */ +#define rustg_add_node_astar(json) RUSTG_CALL(RUST_G, "add_node_astar")(json) + +/**² + * Remove every link to the node with unique_id. Replace that node by null + */ +#define rustg_remove_node_astart(unique_id) RUSTG_CALL(RUST_G, "remove_node_astar")(unique_id) + +/** + * Compute the shortest path between start_node and goal_node using A*. Heuristic used is simple geometric distance + */ +#define rustg_generate_path_astar(start_node_id, goal_node_id) RUSTG_CALL(RUST_G, "generate_path_astar")(start_node_id, goal_node_id) + +#define RUSTG_REDIS_ERROR_CHANNEL "RUSTG_REDIS_ERROR_CHANNEL" -#define rustg_log_write(fname, text, format) LIBCALL(RUST_G, "log_write")("[fname]", text, format) -/proc/rustg_log_close_all() return LIBCALL(RUST_G, "log_close_all")() +#define rustg_redis_connect(addr) RUSTG_CALL(RUST_G, "redis_connect")(addr) +/proc/rustg_redis_disconnect() return RUSTG_CALL(RUST_G, "redis_disconnect")() +#define rustg_redis_subscribe(channel) RUSTG_CALL(RUST_G, "redis_subscribe")(channel) +/proc/rustg_redis_get_messages() return RUSTG_CALL(RUST_G, "redis_get_messages")() +#define rustg_redis_publish(channel, message) RUSTG_CALL(RUST_G, "redis_publish")(channel, message) -#define rustg_noise_get_at_coordinates(seed, x, y) LIBCALL(RUST_G, "noise_get_at_coordinates")(seed, x, y) +#define rustg_sql_connect_pool(options) RUSTG_CALL(RUST_G, "sql_connect_pool")(options) +#define rustg_sql_query_async(handle, query, params) RUSTG_CALL(RUST_G, "sql_query_async")(handle, query, params) +#define rustg_sql_query_blocking(handle, query, params) RUSTG_CALL(RUST_G, "sql_query_blocking")(handle, query, params) +#define rustg_sql_connected(handle) RUSTG_CALL(RUST_G, "sql_connected")(handle) +#define rustg_sql_disconnect_pool(handle) RUSTG_CALL(RUST_G, "sql_disconnect_pool")(handle) +#define rustg_sql_check_query(job_id) RUSTG_CALL(RUST_G, "sql_check_query")("[job_id]") -#define rustg_sql_connect_pool(options) LIBCALL(RUST_G, "sql_connect_pool")(options) -#define rustg_sql_query_async(handle, query, params) LIBCALL(RUST_G, "sql_query_async")(handle, query, params) -#define rustg_sql_query_blocking(handle, query, params) LIBCALL(RUST_G, "sql_query_blocking")(handle, query, params) -#define rustg_sql_connected(handle) LIBCALL(RUST_G, "sql_connected")(handle) -#define rustg_sql_disconnect_pool(handle) LIBCALL(RUST_G, "sql_disconnect_pool")(handle) -#define rustg_sql_check_query(job_id) LIBCALL(RUST_G, "sql_check_query")("[job_id]") +#define rustg_time_microseconds(id) text2num(RUSTG_CALL(RUST_G, "time_microseconds")(id)) +#define rustg_time_milliseconds(id) text2num(RUSTG_CALL(RUST_G, "time_milliseconds")(id)) +#define rustg_time_reset(id) RUSTG_CALL(RUST_G, "time_reset")(id) -#define rustg_unzip_download_async(url, unzip_directory) LIBCALL(RUST_G, "unzip_download_async")(url, unzip_directory) -#define rustg_unzip_check(job_id) LIBCALL(RUST_G, "unzip_check")("[job_id]") +/proc/rustg_unix_timestamp() + return text2num(RUSTG_CALL(RUST_G, "unix_timestamp")()) -#define rustg_url_encode(text) LIBCALL(RUST_G, "url_encode")(text) -#define rustg_url_decode(text) LIBCALL(RUST_G, "url_decode")(text) +#define rustg_raw_read_toml_file(path) json_decode(RUSTG_CALL(RUST_G, "toml_file_to_json")(path) || "null") + +/proc/rustg_read_toml_file(path) + var/list/output = rustg_raw_read_toml_file(path) + if (output["success"]) + return json_decode(output["content"]) + else + CRASH(output["content"]) + +#define rustg_raw_toml_encode(value) json_decode(RUSTG_CALL(RUST_G, "toml_encode")(json_encode(value))) + +/proc/rustg_toml_encode(value) + var/list/output = rustg_raw_toml_encode(value) + if (output["success"]) + return output["content"] + else + CRASH(output["content"]) + +#define rustg_unzip_download_async(url, unzip_directory) RUSTG_CALL(RUST_G, "unzip_download_async")(url, unzip_directory) +#define rustg_unzip_check(job_id) RUSTG_CALL(RUST_G, "unzip_check")("[job_id]") + +#define rustg_url_encode(text) RUSTG_CALL(RUST_G, "url_encode")("[text]") +#define rustg_url_decode(text) RUSTG_CALL(RUST_G, "url_decode")(text) #ifdef RUSTG_OVERRIDE_BUILTINS - #define url_encode(text) rustg_url_encode(text) - #define url_decode(text) rustg_url_decode(text) + #define url_encode(text) rustg_url_encode(text) + #define url_decode(text) rustg_url_decode(text) #endif + +/** + * This proc generates a noise grid using worley noise algorithm + * + * Returns a single string that goes row by row, with values of 1 representing an alive cell, and a value of 0 representing a dead cell. + * + * Arguments: + * * region_size: The size of regions + * * threshold: the value that determines wether a cell is dead or alive + * * node_per_region_chance: chance of a node existiing in a region + * * size: size of the returned grid + * * node_min: minimum amount of nodes in a region (after the node_per_region_chance is applied) + * * node_max: maximum amount of nodes in a region + */ +#define rustg_worley_generate(region_size, threshold, node_per_region_chance, size, node_min, node_max) \ + RUSTG_CALL(RUST_G, "worley_generate")(region_size, threshold, node_per_region_chance, size, node_min, node_max) diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index 80df9d1d54e..fdfec5e8ca0 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "6.3.1" +#define TGS_DMAPI_VERSION "7.0.2" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -12,8 +12,8 @@ // Comment this out once you've filled in the below. #error TGS API unconfigured -// Uncomment this if you wish to allow the game to interact with TGS 3. -// This will raise the minimum required security level of your game to TGS_SECURITY_TRUSTED due to it utilizing call()() +// Uncomment this if you wish to allow the game to interact with TGS 3.. +// This will raise the minimum required security level of your game to TGS_SECURITY_TRUSTED due to it utilizing call()(). //#define TGS_V3_API // Required interfaces (fill in with your codebase equivalent): @@ -52,44 +52,46 @@ // EVENT CODES -/// Before a reboot mode change, extras parameters are the current and new reboot mode enums +/// Before a reboot mode change, extras parameters are the current and new reboot mode enums. #define TGS_EVENT_REBOOT_MODE_CHANGE -1 -/// Before a port change is about to happen, extra parameters is new port +/// Before a port change is about to happen, extra parameters is new port. #define TGS_EVENT_PORT_SWAP -2 -/// Before the instance is renamed, extra parameter is the new name +/// Before the instance is renamed, extra parameter is the new name. #define TGS_EVENT_INSTANCE_RENAMED -3 -/// After the watchdog reattaches to DD, extra parameter is the new [/datum/tgs_version] of the server +/// After the watchdog reattaches to DD, extra parameter is the new [/datum/tgs_version] of the server. #define TGS_EVENT_WATCHDOG_REATTACH -4 +/// When the watchdog sends a health check to DD. No parameters. +#define TGS_EVENT_HEALTH_CHECK -5 -/// When the repository is reset to its origin reference. Parameters: Reference name, Commit SHA +/// When the repository is reset to its origin reference. Parameters: Reference name, Commit SHA. #define TGS_EVENT_REPO_RESET_ORIGIN 0 -/// When the repository performs a checkout. Parameters: Checkout git object +/// When the repository performs a checkout. Parameters: Checkout git object. #define TGS_EVENT_REPO_CHECKOUT 1 -/// When the repository performs a fetch operation. No parameters +/// When the repository performs a fetch operation. No parameters. #define TGS_EVENT_REPO_FETCH 2 -/// When the repository test merges. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user +/// When the repository test merges. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user. #define TGS_EVENT_REPO_MERGE_PULL_REQUEST 3 -/// Before the repository makes a sychronize operation. Parameters: Absolute repostiory path +/// Before the repository makes a sychronize operation. Parameters: Absolute repostiory path. #define TGS_EVENT_REPO_PRE_SYNCHRONIZE 4 -/// Before a BYOND install operation begins. Parameters: [/datum/tgs_version] of the installing BYOND -#define TGS_EVENT_BYOND_INSTALL_START 5 -/// When a BYOND install operation fails. Parameters: Error message -#define TGS_EVENT_BYOND_INSTALL_FAIL 6 -/// When the active BYOND version changes. Parameters: (Nullable) [/datum/tgs_version] of the current BYOND, [/datum/tgs_version] of the new BYOND -#define TGS_EVENT_BYOND_ACTIVE_VERSION_CHANGE 7 -/// When the compiler starts running. Parameters: Game directory path, origin commit SHA +/// Before a engine install operation begins. Parameters: Version string of the installing engine. +#define TGS_EVENT_ENGINE_INSTALL_START 5 +/// When a engine install operation fails. Parameters: Error message +#define TGS_EVENT_ENGINE_INSTALL_FAIL 6 +/// When the active engine version changes. Parameters: (Nullable) Version string of the current engine, version string of the new engine. +#define TGS_EVENT_ENGINE_ACTIVE_VERSION_CHANGE 7 +/// When the compiler starts running. Parameters: Game directory path, origin commit SHA. #define TGS_EVENT_COMPILE_START 8 -/// When a compile is cancelled. No parameters +/// When a compile is cancelled. No parameters. #define TGS_EVENT_COMPILE_CANCELLED 9 -/// When a compile fails. Parameters: Game directory path, [TRUE]/[FALSE] based on if the cause for failure was DMAPI validation +/// When a compile fails. Parameters: Game directory path, [TRUE]/[FALSE] based on if the cause for failure was DMAPI validation. #define TGS_EVENT_COMPILE_FAILURE 10 -/// When a compile operation completes. Note, this event fires before the new .dmb is loaded into the watchdog. Consider using the [TGS_EVENT_DEPLOYMENT_COMPLETE] instead. Parameters: Game directory path +/// When a compile operation completes. Note, this event fires before the new .dmb is loaded into the watchdog. Consider using the [TGS_EVENT_DEPLOYMENT_COMPLETE] instead. Parameters: Game directory path. #define TGS_EVENT_COMPILE_COMPLETE 11 -/// When an automatic update for the current instance begins. No parameters +/// When an automatic update for the current instance begins. No parameters. #define TGS_EVENT_INSTANCE_AUTO_UPDATE_START 12 -/// When the repository encounters a merge conflict: Parameters: Base SHA, target SHA, base reference, target reference +/// When the repository encounters a merge conflict: Parameters: Base SHA, target SHA, base reference, target reference. #define TGS_EVENT_REPO_MERGE_CONFLICT 13 -/// When a deployment completes. No Parameters +/// When a deployment completes. No Parameters. #define TGS_EVENT_DEPLOYMENT_COMPLETE 14 /// Before the watchdog shuts down. Not sent for graceful shutdowns. No parameters. #define TGS_EVENT_WATCHDOG_SHUTDOWN 15 @@ -104,6 +106,12 @@ #define TGS_EVENT_WORLD_PRIME 21 // DMAPI also doesnt implement this // #define TGS_EVENT_DREAM_DAEMON_LAUNCH 22 +/// After a single submodule update is performed. Parameters: Updated submodule name. +#define TGS_EVENT_REPO_SUBMODULE_UPDATE 23 +/// After CodeModifications are applied, before DreamMaker is run. Parameters: Game directory path, origin commit sha, version string of the used engine. +#define TGS_EVENT_PRE_DREAM_MAKER 24 +/// Whenever a deployment folder is deleted from disk. Parameters: Game directory path. +#define TGS_EVENT_DEPLOYMENT_CLEANUP 25 // OTHER ENUMS @@ -114,6 +122,7 @@ /// The watchdog will restart on reboot. #define TGS_REBOOT_MODE_RESTART 2 +// Note that security levels are currently meaningless in OpenDream /// DreamDaemon Trusted security level. #define TGS_SECURITY_TRUSTED 0 /// DreamDaemon Safe security level. @@ -121,6 +130,18 @@ /// DreamDaemon Ultrasafe security level. #define TGS_SECURITY_ULTRASAFE 2 +/// DreamDaemon public visibility level. +#define TGS_VISIBILITY_PUBLIC 0 +/// DreamDaemon private visibility level. +#define TGS_VISIBILITY_PRIVATE 1 +/// DreamDaemon invisible visibility level. +#define TGS_VISIBILITY_INVISIBLE 2 + +/// The Build Your Own Net Dream engine. +#define TGS_ENGINE_TYPE_BYOND 0 +/// The OpenDream engine. +#define TGS_ENGINE_TYPE_OPENDREAM 1 + //REQUIRED HOOKS /** @@ -146,7 +167,7 @@ #define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return /** - * Call this as late as possible in [world/proc/Reboot]. + * Call this as late as possible in [world/proc/Reboot] (BEFORE ..()). */ /world/proc/TgsReboot() return @@ -158,28 +179,28 @@ /datum/tgs_revision_information /// Full SHA of the commit. var/commit - /// ISO 8601 timestamp of when the commit was created + /// ISO 8601 timestamp of when the commit was created. var/timestamp /// Full sha of last known remote commit. This may be null if the TGS repository is not currently tracking a remote branch. var/origin_commit /// Represents a version. /datum/tgs_version - /// The suite/major version number + /// The suite/major version number. var/suite - // This group of variables can be null to represent a wild card - /// The minor version number. null for wildcards + // This group of variables can be null to represent a wild card. + /// The minor version number. null for wildcards. var/minor - /// The patch version number. null for wildcards + /// The patch version number. null for wildcards. var/patch - /// Legacy version number. Generally null + /// Legacy version number. Generally null. var/deprecated_patch - /// Unparsed string value + /// Unparsed string value. var/raw_parameter - /// String value minus prefix + /// String value minus prefix. var/deprefixed_parameter /** @@ -225,38 +246,43 @@ var/is_admin_channel /// [TRUE]/[FALSE] if the channel is a private message channel for a [/datum/tgs_chat_user]. var/is_private_channel - /// Tag string associated with the channel in TGS + /// Tag string associated with the channel in TGS. var/custom_tag - /// [TRUE]/[FALSE] if the channel supports embeds + /// [TRUE]/[FALSE] if the channel supports embeds. var/embeds_supported // Represents a chat user /datum/tgs_chat_user /// TGS internal user ID. var/id - // The user's display name. + /// The user's display name. var/friendly_name - // The string to use to ping this user in a message. + /// The string to use to ping this user in a message. var/mention - /// The [/datum/tgs_chat_channel] the user was from + /// The [/datum/tgs_chat_channel] the user was from. var/datum/tgs_chat_channel/channel +/// User definable handler for TGS events. +/datum/tgs_event_handler + /// If the handler receieves [TGS_EVENT_HEALTH_CHECK] events. + var/receive_health_checks = FALSE + /** * User definable callback for handling TGS events. * - * event_code - One of the TGS_EVENT_ defines. Extra parameters will be documented in each + * event_code - One of the TGS_EVENT_ defines. Extra parameters will be documented in each. */ /datum/tgs_event_handler/proc/HandleEvent(event_code, ...) set waitfor = FALSE return -/// User definable chat command +/// User definable chat command. /datum/tgs_chat_command - /// The string to trigger this command on a chat bot. e.g `@bot name ...` or `!tgs name ...` + /// The string to trigger this command on a chat bot. e.g `@bot name ...` or `!tgs name ...`. var/name = "" - /// The help text displayed for this command + /// The help text displayed for this command. var/help_text = "" - /// If this command should be available to game administrators only + /// If this command should be available to game administrators only. var/admin_only = FALSE /// A subtype of [/datum/tgs_chat_command] that is ignored when enumerating available commands. Use this to create shared base /datums for commands. var/ignore_type @@ -270,7 +296,7 @@ /datum/tgs_chat_command/proc/Run(datum/tgs_chat_user/sender, params) CRASH("[type] has no implementation for Run()") -/// User definable chat message +/// User definable chat message. /datum/tgs_message_content /// The tring content of the message. Must be provided in New(). var/text @@ -294,7 +320,7 @@ /// Timestamp must be encoded as: time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss"). Use the active timezone. var/timestamp - /// Colour must be #AARRGGBB or #RRGGBB hex string + /// Colour must be #AARRGGBB or #RRGGBB hex string. var/colour /// See https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure for details. @@ -312,7 +338,7 @@ var/list/datum/tgs_chat_embed/field/fields -/// Common datum for similar discord embed medias +/// Common datum for similar discord embed medias. /datum/tgs_chat_embed/media /// Must be set in New(). var/url @@ -390,16 +416,17 @@ // No function below this succeeds if it TgsAvailable() returns FALSE or if TgsNew() has yet to be called. /** - * Forces a hard reboot of DreamDaemon by ending the process. + * Forces a hard reboot of DreamDaemon by ending the process. This function may sleep! * * Unlike del(world) clients will try to reconnect. - * If TGS has not requested a [TGS_REBOOT_MODE_SHUTDOWN] DreamDaemon will be launched again + * If TGS has not requested a [TGS_REBOOT_MODE_SHUTDOWN] DreamDaemon will be launched again. */ /world/proc/TgsEndProcess() return /** - * Send a message to connected chats. + * Send a message to connected chats. This function may sleep! + * If TGS is offline when called, the message may be placed in a queue to be sent and this function will return immediately. Your message will be sent when TGS reconnects to the game. * * message - The [/datum/tgs_message_content] to send. * admin_only: If [TRUE], message will be sent to admin connected chats. Vice-versa applies. @@ -408,7 +435,8 @@ return /** - * Send a private message to a specific user. + * Send a private message to a specific user. This function may sleep! + * If TGS is offline when called, the message may be placed in a queue to be sent and this function will return immediately. Your message will be sent when TGS reconnects to the game. * * message - The [/datum/tgs_message_content] to send. * user: The [/datum/tgs_chat_user] to PM. @@ -416,10 +444,9 @@ /world/proc/TgsChatPrivateMessage(datum/tgs_message_content/message, datum/tgs_chat_user/user) return -// The following functions will sleep if a call to TgsNew() is sleeping - /** - * Send a message to connected chats that are flagged as game-related in TGS. + * Send a message to connected chats that are flagged as game-related in TGS. This function may sleep! + * If TGS is offline when called, the message may be placed in a queue to be sent and this function will return immediately. Your message will be sent when TGS reconnects to the game. * * message - The [/datum/tgs_message_content] to send. * channels - Optional list of [/datum/tgs_chat_channel]s to restrict the message to. @@ -427,38 +454,46 @@ /world/proc/TgsChatBroadcast(datum/tgs_message_content/message, list/channels = null) return -/// Returns the current [/datum/tgs_version] of TGS if it is running the server, null otherwise. +/// Returns the current [/datum/tgs_version] of TGS if it is running the server, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsVersion() return -/// Returns the current [/datum/tgs_version] of the DMAPI being used if it was activated, null otherwise. +/// Returns the running engine type +/world/proc/TgsEngine() + return + +/// Returns the current [/datum/tgs_version] of the DMAPI being used if it was activated, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsApiVersion() return -/// Returns the name of the TGS instance running the game if TGS is present, null otherwise. +/// Returns the name of the TGS instance running the game if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsInstanceName() return -/// Return the current [/datum/tgs_revision_information] of the running server if TGS is present, null otherwise. +/// Return the current [/datum/tgs_revision_information] of the running server if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsRevision() return -/// Returns the current BYOND security level as a TGS_SECURITY_ define if TGS is present, null otherwise. +/// Returns the current BYOND security level as a TGS_SECURITY_ define if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsSecurityLevel() return -/// Returns a list of active [/datum/tgs_revision_information/test_merge]s if TGS is present, null otherwise. +/// Returns the current BYOND visibility level as a TGS_VISIBILITY_ define if TGS is present, null otherwise. Requires TGS to be using interop API version 5 or higher otherwise the string "___unimplemented" wil be returned. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! +/world/proc/TgsVisibility() + return + +/// Returns a list of active [/datum/tgs_revision_information/test_merge]s if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsTestMerges() return -/// Returns a list of connected [/datum/tgs_chat_channel]s if TGS is present, null otherwise. +/// Returns a list of connected [/datum/tgs_chat_channel]s if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsChatChannelInfo() return /* The MIT License -Copyright (c) 2017 Jordan Brown +Copyright (c) 2017-2023 Jordan Brown Permission is hereby granted, free of charge, to any person obtaining a copy of this software and diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index bc06563b5e6..7b3ccedb781 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -403,3 +403,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SUIT_SENSORS "suit_sensors" ///Mob is tracked by nanites, and on glob suit sensors list #define TRAIT_NANITE_SENSORS "nanite_sensors" + +//NSV13 traits +#define TRAIT_NODAMPENERS "nodampeners" //! Prevents a ship with this trait from using dampeners. + #define TRAIT_SOURCE_OVERMAP_BLACKHOLE "overmap_singularity" +//NSV13 traits end diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index ea3dd54e959..5df30226e24 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -202,9 +202,9 @@ if (CONFIG_GET(flag/log_job_debug)) WRITE_LOG(GLOB.world_job_debug_log, "JOB: [text]") -/proc/log_href_exploit(atom/user) - WRITE_LOG(GLOB.href_exploit_attempt_log, "HREF: [key_name(user)] has potentially attempted an href exploit.") - message_admins("[key_name_admin(user)] has potentially attempted an href exploit.") +/proc/log_href_exploit(atom/user, data = "") + WRITE_LOG(GLOB.href_exploit_attempt_log, "HREF: [key_name(user)] has potentially attempted an href exploit.[data]") + message_admins("[key_name_admin(user)] has potentially attempted an href exploit.[data]") /* Log to both DD and the logfile. */ /proc/log_world(text) diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index 0f86fed86e7..19040a150a1 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -125,11 +125,11 @@ GLOBAL_VAR_INIT(cmp_field, "name") /proc/cmp_typepaths_asc(A, B) return sorttext("[B]","[A]") -/proc/cmp_pdaname_asc(obj/item/pda/A, obj/item/pda/B) - return sorttext(B.owner, A.owner) +/proc/cmp_pdaname_asc(obj/item/modular_computer/A, obj/item/modular_computer/B) + return sorttext(B?.saved_identification, A?.saved_identification) -/proc/cmp_pdajob_asc(obj/item/pda/A, obj/item/pda/B) - return sorttext(B.ownjob, A.ownjob) +/proc/cmp_pdajob_asc(obj/item/modular_computer/A, obj/item/modular_computer/B) + return sorttext(B?.saved_job, A?.saved_job) /proc/cmp_num_string_asc(A, B) return text2num(A) - text2num(B) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index dae5cf88e73..89c70e94cc6 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -425,7 +425,7 @@ else candidates -= M -/proc/pollGhostCandidates(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, ignore_category = null, flashwindow = TRUE, req_hours = 0) +/proc/pollGhostCandidates(Question, jobbanType, role_preference_key, poll_time = 300, ignore_category = null, flashwindow = TRUE, req_hours = 0) var/list/candidates = list() if(!(GLOB.ghost_role_flags & GHOSTROLE_STATION_SENTIENCE)) return candidates @@ -433,31 +433,30 @@ for(var/mob/dead/observer/G in GLOB.player_list) candidates += G - return pollCandidates(Question, jobbanType, gametypeCheck, be_special_flag, poll_time, ignore_category, flashwindow, candidates, req_hours) + return pollCandidates(Question, jobbanType, role_preference_key, poll_time, ignore_category, flashwindow, candidates, req_hours) -/proc/pollCandidates(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, ignore_category = null, flashwindow = TRUE, list/group = null, req_hours = 0) +/proc/pollCandidates(Question, banning_key, role_preference_key = null, poll_time = 300, poll_ignore_key = null, flashwindow = TRUE, list/group = null, req_hours = 0) var/time_passed = world.time if (!Question) Question = "Would you like to be a special role?" + if(isnull(poll_ignore_key)) // FALSE will not put one, no matter what + if(role_preference_key) + poll_ignore_key = "role_[role_preference_key]" + else if(banning_key) + poll_ignore_key = "ban_[role_preference_key]" var/list/result = list() for(var/m in group) var/mob/M = m - if(!M.key || !M.client || (ignore_category && GLOB.poll_ignore[ignore_category] && (M.ckey in GLOB.poll_ignore[ignore_category]))) + if(QDELETED(M) || !M.key || !M.client) continue - if(be_special_flag) - if(!(M.client.prefs) || !(be_special_flag in M.client.prefs.be_special)) - continue - if(gametypeCheck) - if(!gametypeCheck.age_check(M.client)) - continue - if(jobbanType) - if(QDELETED(M) || is_banned_from(M.ckey, list(jobbanType, ROLE_SYNDICATE))) - continue - if(req_hours) //minimum living hour count - if((M.client.get_exp_living(TRUE)/60) < req_hours) - continue - - showCandidatePollWindow(M, poll_time, Question, result, ignore_category, time_passed, flashwindow) + if(!M.client.should_include_for_role( + banning_key = banning_key, + role_preference_key = role_preference_key, + poll_ignore_key = poll_ignore_key, + req_hours = req_hours + )) + continue + showCandidatePollWindow(M, poll_time, Question, result, poll_ignore_key, time_passed, flashwindow) sleep(poll_time) //Check all our candidates, to make sure they didn't log off or get deleted during the wait period. @@ -469,14 +468,14 @@ return result -/proc/pollCandidatesForMob(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, mob/M, ignore_category = null) - var/list/L = pollGhostCandidates(Question, jobbanType, gametypeCheck, be_special_flag, poll_time, ignore_category) +/proc/pollCandidatesForMob(Question, jobbanType, role_preference_key, poll_time = 300, mob/M, ignore_category = null) + var/list/L = pollGhostCandidates(Question, jobbanType, role_preference_key, poll_time, ignore_category) if(QDELETED(M) || !M.loc) return list() return L -/proc/pollCandidatesForMobs(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, list/mobs, ignore_category = null) - var/list/L = pollGhostCandidates(Question, jobbanType, gametypeCheck, be_special_flag, poll_time, ignore_category) +/proc/pollCandidatesForMobs(Question, jobbanType, role_preference_key, poll_time = 300, list/mobs, ignore_category = null) + var/list/L = pollGhostCandidates(Question, jobbanType, role_preference_key, poll_time, ignore_category) var/i=1 for(var/v in mobs) var/atom/A = v diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index fe03bc7c972..772c2ff4b0e 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -64,7 +64,7 @@ //Returns null if there is any bad text in the string -/proc/reject_bad_text(text, max_length = 512, ascii_only = TRUE) +/proc/reject_bad_text(text, max_length = 512, ascii_only = TRUE, alphanumeric_only = FALSE, underscore_allowed = TRUE) var/char_count = 0 var/non_whitespace = FALSE var/lenbytes = length(text) @@ -79,13 +79,51 @@ return if(0 to 31) return - if(32) - continue + if(32 to 47) + if(alphanumeric_only) + return + else + non_whitespace = TRUE + continue + if(58 to 64) + if(alphanumeric_only) + return + else + non_whitespace = TRUE + continue + if(91 to 94) + if(alphanumeric_only) + return + else + non_whitespace = TRUE + continue + if(95) + if(underscore_allowed) + non_whitespace = TRUE + continue + else if(alphanumeric_only) + return + else + non_whitespace = TRUE + continue + if(96) + if(alphanumeric_only) + return + else + non_whitespace = TRUE + continue + if(123 to 126) + if(alphanumeric_only) + return + else + non_whitespace = TRUE + continue if(127 to INFINITY) if(ascii_only) return else non_whitespace = TRUE + if(non_whitespace) return text //only accepts the text if it has some non-spaces @@ -544,7 +582,7 @@ GLOBAL_LIST_INIT(alphabet, list("a","b","c","d","e","f","g","h","i","j","k","l", t = parsemarkdown_basic_step1(t) - t = replacetext(t, regex("%s(?:ign)?(?=\\s|$)", "igm"), user ? "[user.real_name]" : "") + t = replacetext(t, regex("%s(?:ign)?(?=\\s|$)", "igm"), user ? "[user.real_name]" : "") t = replacetext(t, regex("%f(?:ield)?(?=\\s|$)", "igm"), "") t = parsemarkdown_basic_step2(t) diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm index 4b79bdb8e68..feece392c90 100644 --- a/code/__byond_version_compat.dm +++ b/code/__byond_version_compat.dm @@ -20,14 +20,6 @@ /savefile/byond_version = MIN_COMPILER_VERSION #endif -// Temporary 515 block until it is completely compatible. -// AnturK says there are issues with savefiles that would make it dangerous to test merge, -// and so this check is in place to stop serious damage. -// That being said, if you really are ready, you can give YES_I_WANT_515 to TGS. -#if !defined(YES_I_WANT_515) && DM_VERSION >= 515 -#error We do not yet completely support BYOND 515. -#endif - // 515 split call for external libraries into call_ext #if DM_VERSION < 515 #define LIBCALL call diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 885a8ed47d4..9c22eb59a6e 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -72,10 +72,10 @@ //End NSV //Update this whenever the byond version is stable so people stop updating to hilariously broken versions -#define MAX_COMPILER_VERSION 514 -#define MAX_COMPILER_BUILD 1589 +#define MAX_COMPILER_VERSION 515 +#define MAX_COMPILER_BUILD 1700 #if DM_VERSION > MAX_COMPILER_VERSION || DM_BUILD > MAX_COMPILER_BUILD -#warn WARNING: Your BYOND version is over the recommended version (514.1589)! Stability is not guaranteed. +#warn WARNING: Your BYOND version is over the recommended version (515.1700)! Stability is not guaranteed. #endif //Log the full sendmaps profile on 514.1556+, any earlier and we get bugs or it not existing #if DM_VERSION >= 514 && DM_BUILD >= 1556 diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 2c09abc557c..ccab73e84aa 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -114,7 +114,8 @@ DEFINE_BITFIELD(interaction_flags_atom, list( "INTERACT_ATOM_IGNORE_RESTRAINED" = INTERACT_ATOM_IGNORE_RESTRAINED, "INTERACT_ATOM_CHECK_GRAB" = INTERACT_ATOM_CHECK_GRAB, "INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND" = INTERACT_ATOM_NO_FINGERPRINT_ATTACK_HAND, - "INTERACT_ATOM_NO_FINGERPRINT_INTERACT" = INTERACT_ATOM_NO_FINGERPRINT_INTERACT + "INTERACT_ATOM_NO_FINGERPRINT_INTERACT" = INTERACT_ATOM_NO_FINGERPRINT_INTERACT, + "INTERACT_ATOM_ALLOW_USER_LOCATION" = INTERACT_ATOM_ALLOW_USER_LOCATION, )) DEFINE_BITFIELD(interaction_flags_machine, list( @@ -308,7 +309,7 @@ DEFINE_BITFIELD(overmap_deletion_traits, list( "NEVER_DELETE_OCCUPIED" = NEVER_DELETE_OCCUPIED, "DELETE_UNOCCUPIED_ON_DEPARTURE" = DELETE_UNOCCUPIED_ON_DEPARTURE, "FIGHTERS_ARE_OCCUPANTS" = FIGHTERS_ARE_OCCUPANTS, -)) +)) DEFINE_BITFIELD(overmap_user_roles, list( "OVERMAP_USER_ROLE_PILOT" = OVERMAP_USER_ROLE_PILOT, diff --git a/code/_globalvars/lists/faxes.dm b/code/_globalvars/lists/faxes.dm new file mode 100644 index 00000000000..7188d78590a --- /dev/null +++ b/code/_globalvars/lists/faxes.dm @@ -0,0 +1,22 @@ +/** + * This defines the list of faxes managed by the server administrators. They are not physically present in + * the game, but are shown in the fax list as existing. + * Lists: + * * additional_faxes_list - A list of "legal" faxes available with authorization. + * * syndicate_faxes_list - List of faxes available after hacking. + * + * The list consists of the following elements: + * * fax_name - The name displayed in the fax list. + * * button_color - The color of this fax button in the list of all faxes. + */ +GLOBAL_LIST_INIT(additional_faxes_list, list( + list("fax_name" = "Central Command", "button_color" = "#34c924"), + list("fax_name" = "Whiterapids HQ", "button_color" = "#0041f4"), + list("fax_name" = "Clown Planet", "button_color" = "#f4c800"), +)) + +GLOBAL_LIST_INIT(syndicate_faxes_list, list( + list("fax_name" = "Syndicate Naval Command", "button_color" = "#ff0000"), + list("fax_name" = "Federation of Wizards", "button_color" = "#8b00ff"), + list("fax_name" = "Nar-Sie Church", "button_color" = "#8b0000"), +)) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 9d688b2b570..ac47123b886 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -31,6 +31,7 @@ GLOBAL_LIST_EMPTY(meteor_list) // List of all meteors. GLOBAL_LIST_EMPTY(active_jammers) // List of active radio jammers GLOBAL_LIST_EMPTY(ladders) GLOBAL_LIST_EMPTY(bot_elevator) +GLOBAL_LIST_EMPTY(janitor_devices) GLOBAL_LIST_EMPTY(trophy_cases) GLOBAL_LIST_EMPTY(wire_color_directory) diff --git a/code/_globalvars/lists/poll_ignore.dm b/code/_globalvars/lists/poll_ignore.dm index 6f15e22d270..1cca65374b0 100644 --- a/code/_globalvars/lists/poll_ignore.dm +++ b/code/_globalvars/lists/poll_ignore.dm @@ -1,57 +1,42 @@ //Each lists stores ckeys for "Never for this round" option category -#define POLL_IGNORE_SENTIENCE_POTION "sentience_potion" -#define POLL_IGNORE_POSSESSED_BLADE "possessed_blade" #define POLL_IGNORE_ALIEN_LARVA "alien_larva" -#define POLL_IGNORE_SYNDICATE "syndicate" -#define POLL_IGNORE_HOLOPARASITE "holoparasite" #define POLL_IGNORE_POSIBRAIN "posibrain" -#define POLL_IGNORE_SPECTRAL_BLADE "spectral_blade" -#define POLL_IGNORE_CONSTRUCT "construct" #define POLL_IGNORE_SPIDER "spider" #define POLL_IGNORE_ASHWALKER "ashwalker" +#define POLL_IGNORE_BLOB_HELPER "blob_helper" +#define POLL_IGNORE_CLOCKWORK_HELPER "clockwork_helper" +#define POLL_IGNORE_CULT_SHADE "cult_shade" #define POLL_IGNORE_GOLEM "golem" -#define POLL_IGNORE_SWARMER "swarmer" #define POLL_IGNORE_DRONE "drone" -#define POLL_IGNORE_FUGITIVE "fugitive" -#define POLL_IGNORE_DEFECTIVECLONE "defective_clone" -#define POLL_IGNORE_PYROSLIME "slime" +#define POLL_IGNORE_SWARMER "swarmer" +#define POLL_IGNORE_SPECTRAL_BLADE "spectral_blade" #define POLL_IGNORE_SHADE "shade" -#define POLL_IGNORE_IMAGINARYFRIEND "imaginary_friend" +#define POLL_IGNORE_FUGITIVE "fugitive" #define POLL_IGNORE_SPLITPERSONALITY "split_personality" -#define POLL_IGNORE_CONTRACTOR_SUPPORT "contractor_support" -#define POLL_IGNORE_CLOCKWORK "clockwork" #define POLL_IGNORE_GHOSTSHIP "ghost ships" //NSV13 -#define POLL_IGNORE_EXPERIMENTAL_CLONE "experimental_clone" +#define POLL_IGNORE_WIZARD_HELPER "wizard_helper" -GLOBAL_LIST_INIT(poll_ignore_desc, list( - POLL_IGNORE_SENTIENCE_POTION = "Sentience potion", - POLL_IGNORE_POSSESSED_BLADE = "Possessed blade", - POLL_IGNORE_ALIEN_LARVA = "Xenomorph larva", - POLL_IGNORE_SYNDICATE = "Syndicate", - POLL_IGNORE_HOLOPARASITE = "Holoparasite", - POLL_IGNORE_POSIBRAIN = "Positronic brain", - POLL_IGNORE_SPECTRAL_BLADE = "Spectral blade", - POLL_IGNORE_CONSTRUCT = "Construct", - POLL_IGNORE_SPIDER = "Spiders", - POLL_IGNORE_ASHWALKER = "Ashwalker eggs", - POLL_IGNORE_GOLEM = "Golems", - POLL_IGNORE_SWARMER = "Swarmer shells", - POLL_IGNORE_DRONE = "Drone shells", - POLL_IGNORE_FUGITIVE = "Fugitive Hunter", - POLL_IGNORE_DEFECTIVECLONE = "Defective clone", - POLL_IGNORE_PYROSLIME = "Slime", - POLL_IGNORE_SHADE = "Shade", - POLL_IGNORE_IMAGINARYFRIEND = "Imaginary Friend", - POLL_IGNORE_SPLITPERSONALITY = "Split Personality", - POLL_IGNORE_CONTRACTOR_SUPPORT = "Contractor Support Unit", - POLL_IGNORE_GHOSTSHIP = "Ghost Ship", //NSV13 - POLL_IGNORE_EXPERIMENTAL_CLONE = "Experimental clone" +GLOBAL_LIST_INIT(poll_ignore_list, list( + POLL_IGNORE_ALIEN_LARVA, + POLL_IGNORE_ASHWALKER, + POLL_IGNORE_BLOB_HELPER, + POLL_IGNORE_CLOCKWORK_HELPER, + POLL_IGNORE_CULT_SHADE, + POLL_IGNORE_GOLEM, + POLL_IGNORE_DRONE, + POLL_IGNORE_POSIBRAIN, + POLL_IGNORE_SPECTRAL_BLADE, + POLL_IGNORE_SHADE, + POLL_IGNORE_SPIDER, + POLL_IGNORE_GHOSTSHIP, //NSV13 + POLL_IGNORE_WIZARD_HELPER, )) + GLOBAL_LIST_INIT(poll_ignore, init_poll_ignore()) /proc/init_poll_ignore() . = list() - for (var/k in GLOB.poll_ignore_desc) + for (var/k in GLOB.poll_ignore_list) .[k] = list() diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 509f4a29b85..952feff6854 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -125,7 +125,10 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DOOR_PRYER" = TRAIT_DOOR_PRYER, "TRAIT_FISH_SAFE_STORAGE" = TRAIT_FISH_SAFE_STORAGE, "TRAIT_FISH_CASE_COMPATIBILE" = TRAIT_FISH_CASE_COMPATIBILE - ) + ), + /obj/structure/overmap = list( + "TRAIT_NODAMPENERS" = TRAIT_NODAMPENERS + ), )) /// value -> trait name, generated on use from trait_by_type global diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index a3e951a1662..d186b39abfd 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -166,13 +166,13 @@ if(!T) return FALSE for(var/atom/movable/AM in T) - if(AM.flags_1 & PREVENT_CLICK_UNDER_1 && AM.density && AM.layer > layer) + if(AM.flags_1 & PREVENT_CLICK_UNDER_1 && AM.layer > layer)//NSV make it so prevent_click_under doesn't need density return TRUE return FALSE /turf/IsObscured() for(var/atom/movable/AM in src) - if(AM.flags_1 & PREVENT_CLICK_UNDER_1 && AM.density) + if(AM.flags_1 & PREVENT_CLICK_UNDER_1)//NSV make it so prevent_click_under doesn't need density return TRUE return FALSE diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm index c8158b21e2f..05625b8a166 100644 --- a/code/_onclick/drag_drop.dm +++ b/code/_onclick/drag_drop.dm @@ -74,7 +74,7 @@ var/obj/item/H = get_active_held_item() if(H) . = H.canItemMouseDown(object, location, params) - else if(src.overmap_ship && (src.overmap_ship.gunner == src) || (GetComponent(/datum/component/overmap_gunning))) //NSV13 - let us mouse-down if we're a gunner + else if(src.overmap_ship && (src.overmap_ship.gunner == src || (GetComponent(/datum/component/overmap_gunning)))) //NSV13 - let us mouse-down if we're a ship operator . = src.overmap_ship /obj/item/proc/CanItemAutoclick(object, location, params) diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index f5feb50450f..92ab334b3db 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -58,7 +58,7 @@ #define ui_borg_store "CENTER+2:16,SOUTH:5" //borgs #define ui_borg_camera "CENTER+3:21,SOUTH:5" //borgs #define ui_borg_alerts "CENTER+4:21,SOUTH:5" //borgs -#define ui_borg_crew_manifest "CENTER+5:21,SOUTH:5" //borgs +//nsv removed #define ui_borg_crew_manifest "CENTER+5:21,SOUTH:5" //borgs #define ui_borg_language_menu "CENTER+4:21,SOUTH+1:5" //borgs #define ui_monkey_body "CENTER-6:12,SOUTH:5" //monkey @@ -134,16 +134,15 @@ #define ui_ai_announcement "SOUTH:6,WEST+7" #define ui_ai_shuttle "SOUTH:6,WEST+8" #define ui_ai_state_laws "SOUTH:6,WEST+9" -#define ui_ai_pda_send "SOUTH:6,WEST+10" -#define ui_ai_pda_log "SOUTH:6,WEST+11" -#define ui_ai_take_picture "SOUTH:6,WEST+12" -#define ui_ai_view_images "SOUTH:6,WEST+13" -#define ui_ai_sensor "SOUTH:6,WEST+14" -#define ui_ai_multicam "SOUTH:6,WEST+15" -#define ui_ai_add_multicam "SOUTH:6,WEST+16" +#define ui_ai_mod_int "SOUTH:6,WEST+10" +#define ui_ai_take_picture "SOUTH:6,WEST+11" +#define ui_ai_view_images "SOUTH:6,WEST+12" +#define ui_ai_sensor "SOUTH:6,WEST+13" +#define ui_ai_multicam "SOUTH:6,WEST+12" +#define ui_ai_add_multicam "SOUTH:6,WEST+13" +#define ui_ai_move_up "SOUTH:6,WEST+14" +#define ui_ai_move_down "SOUTH:6,WEST+15" #define ui_ai_language_menu "CENTER+7:32,SOUTH+1:5" -#define ui_ai_move_up "SOUTH:5+1,WEST+14" -#define ui_ai_move_down "SOUTH:5+1,WEST+15" // pAI @@ -156,8 +155,7 @@ #define ui_pai_host_monitor "SOUTH:6,WEST+6" #define ui_pai_crew_manifest "SOUTH:6,WEST+7" #define ui_pai_state_laws "SOUTH:6,WEST+8" -#define ui_pai_pda_send "SOUTH:6,WEST+9" -#define ui_pai_pda_log "SOUTH:6,WEST+10" +#define ui_pai_mod_int "SOUTH:6,WEST+9" #define ui_pai_take_picture "SOUTH:6,WEST+12" #define ui_pai_view_images "SOUTH:6,WEST+13" diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index adee4485fa2..51f7acf5f42 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -33,8 +33,7 @@ if(..()) return var/mob/living/silicon/ai/AI = usr - var/target_name = input(AI, "Choose who you want to track", "Tracking") as null|anything in AI.trackable_mobs() - AI.ai_camera_track(target_name) + GLOB.tracking_menu.show(AI, AI) //NSV13 - Better Tracking Menu /atom/movable/screen/ai/camera_light name = "Toggle Camera Light" @@ -46,6 +45,21 @@ var/mob/living/silicon/ai/AI = usr AI.toggle_camera_light() +/atom/movable/screen/ai/modpc + name = "Messenger" + icon_state = "pda_send" + var/mob/living/silicon/ai/robot + +/atom/movable/screen/ai/modpc/Click() + . = ..() + if(. || !robot.modularInterface?.turn_on(robot, open_ui = FALSE)) + return + var/obj/item/computer_hardware/hard_drive/drive = robot.modularInterface.all_components[MC_HDD] + for(var/datum/computer_file/program/messenger/app in drive?.stored_files) + robot.modularInterface.open_program(robot, app) + robot.modularInterface.interact(robot) + break + /atom/movable/screen/ai/crew_monitor name = "Crew Monitoring Console" icon_state = "crew_monitor" @@ -106,26 +120,6 @@ var/mob/living/silicon/ai/AI = usr AI.checklaws() -/atom/movable/screen/ai/pda_msg_send - name = "PDA - Send Message" - icon_state = "pda_send" - -/atom/movable/screen/ai/pda_msg_send/Click() - if(..()) - return - var/mob/living/silicon/ai/AI = usr - AI.cmd_send_pdamesg(usr) - -/atom/movable/screen/ai/pda_msg_show - name = "PDA - Show Message Log" - icon_state = "pda_receive" - -/atom/movable/screen/ai/pda_msg_show/Click() - if(..()) - return - var/mob/living/silicon/ai/AI = usr - AI.cmd_show_message_log(usr) - /atom/movable/screen/ai/image_take name = "Take Image" icon_state = "take_picture" @@ -210,6 +204,7 @@ /datum/hud/ai/New(mob/owner) ..() var/atom/movable/screen/using + var/mob/living/silicon/ai/myai = mymob // Language menu using = new /atom/movable/screen/language_menu @@ -277,17 +272,14 @@ using.hud = src static_inventory += using -//PDA message - using = new /atom/movable/screen/ai/pda_msg_send() - using.screen_loc = ui_ai_pda_send - using.hud = src - static_inventory += using - -//PDA log - using = new /atom/movable/screen/ai/pda_msg_show() - using.screen_loc = ui_ai_pda_log +// Modular Interface + using = new /atom/movable/screen/ai/modpc() + using.screen_loc = ui_ai_mod_int using.hud = src static_inventory += using + myai.interfaceButton = using + var/atom/movable/screen/ai/modpc/tabletbutton = using + tabletbutton.robot = myai //Take image using = new /atom/movable/screen/ai/image_take() diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index cd0c559e698..6333ae3ecad 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -538,6 +538,13 @@ Recharging stations are available in robotics, the dormitory bathrooms, and the desc = "Your blood's electric charge is running low, find a source of charge for your blood. Use a recharging station found in robotics or the dormitory bathrooms, or eat some Ethereal-friendly food." icon_state = "etherealcharge" +///NSV13 - Ethereal Stuff - Start +/atom/movable/screen/alert/etherealfull + name = "Blood Normal Charge" + desc = "Your blood's electric charge is currently normal!" + icon_state = "etherealfullcharge" +///NSV13 - Ethereal Stuff - Stop + //Need to cover all use cases - emag, illegal upgrade module, malf AI hack, traitor cyborg /atom/movable/screen/alert/hacked name = "Hacked" diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 9d3f4e49a72..318b0013672 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -110,6 +110,11 @@ layer = BLIND_LAYER plane = FULLSCREEN_PLANE +/atom/movable/screen/fullscreen/law_change + icon_state = "law_change" + layer = BLIND_LAYER + plane = FULLSCREEN_PLANE + /atom/movable/screen/fullscreen/curse icon_state = "curse" layer = CURSE_LAYER diff --git a/code/_onclick/hud/pai.dm b/code/_onclick/hud/pai.dm index e97e88c12da..9bee046d244 100644 --- a/code/_onclick/hud/pai.dm +++ b/code/_onclick/hud/pai.dm @@ -113,27 +113,20 @@ var/mob/living/silicon/pai/pAI = usr pAI.checklaws() -/atom/movable/screen/pai/pda_msg_send - name = "PDA - Send Message" +/atom/movable/screen/pai/modpc + name = "Messenger" icon_state = "pda_send" - required_software = "digital messenger" + var/mob/living/silicon/pai/pAI -/atom/movable/screen/pai/pda_msg_send/Click() - if(!..()) +/atom/movable/screen/pai/modpc/Click() + . = ..() + if(!. || !pAI.modularInterface || !pAI.modularInterface.turn_on(pAI, open_ui = FALSE)) return - var/mob/living/silicon/pai/pAI = usr - pAI.cmd_send_pdamesg(usr) - -/atom/movable/screen/pai/pda_msg_show - name = "PDA - Show Message Log" - icon_state = "pda_receive" - required_software = "digital messenger" - -/atom/movable/screen/pai/pda_msg_show/Click() - if(!..()) - return - var/mob/living/silicon/pai/pAI = usr - pAI.cmd_show_message_log(usr) + var/obj/item/computer_hardware/hard_drive/drive = pAI.modularInterface.all_components[MC_HDD] + for(var/datum/computer_file/program/messenger/app in drive?.stored_files) + pAI.modularInterface.open_program(pAI, app) + pAI.modularInterface.interact(pAI) + break /atom/movable/screen/pai/image_take name = "Take Image" @@ -171,6 +164,7 @@ /datum/hud/pai/New(mob/living/silicon/pai/owner) ..() var/atom/movable/screen/using + var/mob/living/silicon/pai/mypai = mymob // Software menu using = new /atom/movable/screen/pai/software @@ -222,15 +216,13 @@ using.screen_loc = ui_pai_state_laws static_inventory += using -// PDA message - using = new /atom/movable/screen/pai/pda_msg_send() - using.screen_loc = ui_pai_pda_send - static_inventory += using - -// PDA log - using = new /atom/movable/screen/pai/pda_msg_show() - using.screen_loc = ui_pai_pda_log +// Modular Interface + using = new /atom/movable/screen/pai/modpc() + using.screen_loc = ui_pai_mod_int static_inventory += using + mypai.interface_button = using + var/atom/movable/screen/pai/modpc/tablet_button = using + tablet_button.pAI = mypai // Take image using = new /atom/movable/screen/pai/image_take() diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm index a6fe9235388..d59779e3476 100755 --- a/code/_onclick/hud/parallax.dm +++ b/code/_onclick/hud/parallax.dm @@ -322,6 +322,7 @@ icon_state = "random_layer1" /atom/movable/screen/parallax_layer/random/space_gas/Initialize(mapload, view) + . = ..() src.add_atom_colour(SSparallax.random_parallax_color, ADMIN_COLOUR_PRIORITY) /atom/movable/screen/parallax_layer/random/asteroids diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index b13db01141d..231278cfd59 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -125,14 +125,14 @@ static_inventory += using //Borg Integrated Tablet - using = new /atom/movable/screen/robot/modPC() + using = new /atom/movable/screen/robot/modpc() using.screen_loc = ui_borg_tablet using.hud = src static_inventory += using mymobR.interfaceButton = using if(mymobR.modularInterface) using.vis_contents += mymobR.modularInterface - var/atom/movable/screen/robot/modPC/tabletbutton = using + var/atom/movable/screen/robot/modpc/tabletbutton = using tabletbutton.robot = mymobR //Alerts @@ -141,11 +141,11 @@ using.hud = src static_inventory += using -//Manifest - using = new /atom/movable/screen/robot/crew_manifest() - using.screen_loc = ui_borg_crew_manifest - using.hud = src - static_inventory += using +//NSV removed //Manifest +// using = new /atom/movable/screen/robot/crew_manifest() +// using.screen_loc = ui_borg_crew_manifest +// using.hud = src +// static_inventory += using //Intent action_intent = new /atom/movable/screen/act_intent/robot() @@ -293,12 +293,12 @@ else icon_state = "lamp_off" -/atom/movable/screen/robot/modPC +/atom/movable/screen/robot/modpc name = "Modular Interface" icon_state = "template" var/mob/living/silicon/robot/robot -/atom/movable/screen/robot/modPC/Click() +/atom/movable/screen/robot/modpc/Click() . = ..() if(.) return @@ -316,7 +316,7 @@ var/mob/living/silicon/robot/borgo = usr borgo.robot_alerts() -/atom/movable/screen/robot/crew_manifest +/* NSV removed /atom/movable/screen/robot/crew_manifest name = "Crew Manifest" icon = 'icons/mob/screen_ai.dmi' icon_state = "manifest" @@ -325,4 +325,4 @@ if(..()) return var/mob/living/silicon/robot/borgo = usr - borgo.ai_roster() + borgo.ai_roster() */ diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 32a3d447524..08db3b0a055 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -568,6 +568,7 @@ if(choice != selecting) selecting = choice update_icon() + SEND_SIGNAL(user, COMSIG_MOB_SELECTED_ZONE_SET, choice) //NSV13 - Surgery QoL return TRUE diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 9d57f171af0..1f2d0c12884 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -47,7 +47,7 @@ return FALSE /atom/proc/can_interact(mob/user) - if(!user.can_interact_with(src)) + if(!user.can_interact_with(src, interaction_flags_atom & INTERACT_ATOM_ALLOW_USER_LOCATION)) return FALSE if((interaction_flags_atom & INTERACT_ATOM_REQUIRES_DEXTERITY) && !user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") @@ -58,6 +58,7 @@ /atom/ui_status(mob/user) . = ..() + //Check if both user and atom are at the same location if(!can_interact(user)) . = min(., UI_UPDATE) diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index a4a78852480..b8a4782be97 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -38,7 +38,7 @@ /datum/config_entry/can_vv_get(var_name) . = ..() - if(var_name == NAMEOF_STATIC(src, config_entry_value) || var_name == NAMEOF_STATIC(src, default)) + if(var_name == NAMEOF(src, config_entry_value) || var_name == NAMEOF(src, default)) . &= !(protection & CONFIG_ENTRY_HIDDEN) /datum/config_entry/vv_edit_var(var_name, var_value) diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 2934a830c8d..052b64f035f 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -413,6 +413,10 @@ config_entry_value = null min_val = 500 +/datum/config_entry/number/client_warn_build + default = null + min_val = 0 + /datum/config_entry/string/client_warn_message config_entry_value = "Your version of byond may have issues or be blocked from accessing this server in the future." @@ -429,6 +433,10 @@ config_entry_value = null min_val = 0 +/datum/config_entry/number/client_max_build + config_entry_value = null + min_val = 0 + /datum/config_entry/number/minute_topic_limit config_entry_value = null min_val = 0 diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index 0ce3215f61f..fe3dedac653 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -132,7 +132,8 @@ SUBSYSTEM_DEF(atoms) qdeleted = TRUE else BadInitializeCalls[the_type] |= BAD_INIT_NO_HINT - + if(qdeleted) //you are GONE (nsv13, but fine to replace in update) + return TRUE if(!A) //possible harddel qdeleted = TRUE else if(!(A.flags_1 & INITIALIZED_1)) diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index e4cd90a5ba3..9c224aebfcb 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -89,8 +89,8 @@ SUBSYSTEM_DEF(blackbox) /datum/controller/subsystem/blackbox/proc/FinalFeedback() record_feedback("tally", "ahelp_stats", GLOB.ahelp_tickets.active_tickets.len, "unresolved") for (var/obj/machinery/telecomms/message_server/MS in GLOB.telecomms_list) - if (MS.pda_msgs.len) - record_feedback("tally", "radio_usage", MS.pda_msgs.len, "PDA") + if (MS.modular_msgs.len) + record_feedback("tally", "radio_usage", MS.modular_msgs.len, "PDA") if (MS.rc_msgs.len) record_feedback("tally", "radio_usage", MS.rc_msgs.len, "request console") diff --git a/code/controllers/subsystem/communications.dm b/code/controllers/subsystem/communications.dm index 1adaf03bc5c..60b153a718f 100644 --- a/code/controllers/subsystem/communications.dm +++ b/code/controllers/subsystem/communications.dm @@ -37,10 +37,10 @@ SUBSYSTEM_DEF(communications) var/datum/comm_message/M = new(sending.title,sending.content,sending.possible_answers.Copy()) C.add_message(M) if(print) - var/obj/item/paper/P = new /obj/item/paper(C.loc) - P.name = "paper - '[sending.title]'" - P.info = sending.content - P.update_icon() + var/obj/item/paper/printed_paper = new /obj/item/paper(C.loc) + printed_paper.name = "paper - '[sending.title]'" + printed_paper.add_raw_text(sending.content) + printed_paper.update_appearance() #undef COMMUNICATION_COOLDOWN #undef COMMUNICATION_COOLDOWN_AI diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index 013da175386..520077a2726 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -64,7 +64,16 @@ SUBSYSTEM_DEF(events) // Only alive, non-AFK human players count towards this. var/sum_of_weights = 0 - for(var/datum/round_event_control/E in control) + + //NSV13 - are we using our event list or the full one? + var/obj/structure/overmap/mainship = SSstar_system.find_main_overmap() + var/list/possible_events + if(mainship.current_system && length(mainship.current_system.possible_events) && prob(50)) + possible_events = mainship.current_system.possible_events + else + possible_events = control + + for(var/datum/round_event_control/E in possible_events) if(!E.canSpawnEvent(players_amt, gamemode)) continue if(E.weight < 0) //for round-start events etc. @@ -77,7 +86,7 @@ SUBSYSTEM_DEF(events) sum_of_weights = rand(0,sum_of_weights) //reusing this variable. It now represents the 'weight' we want to select - for(var/datum/round_event_control/E in control) + for(var/datum/round_event_control/E in possible_events) if(!E.canSpawnEvent(players_amt, gamemode)) continue sum_of_weights -= E.weight diff --git a/code/controllers/subsystem/explosion.dm b/code/controllers/subsystem/explosion.dm index 88560ae1d4f..f038003535e 100644 --- a/code/controllers/subsystem/explosion.dm +++ b/code/controllers/subsystem/explosion.dm @@ -415,6 +415,8 @@ SUBSYSTEM_DEF(explosions) var/turf/T = locate(epicenter.x, epicenter.y, affecting_z) if(!T) continue + if(devastation_range - z_reduction <= 0 && heavy_impact_range - z_reduction <= 0 && light_impact_range - z_reduction <= 0) //NSV13 - explosions still relaying with 0-0-0 can cause REALLY weird behavior. + continue SSexplosions.explode(T, max(devastation_range - z_reduction, 0), max(heavy_impact_range - z_reduction, 0), diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index eb28d91390f..41a29447708 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -137,8 +137,8 @@ SUBSYSTEM_DEF(job) return FALSE job.current_positions = max(0, job.current_positions - 1) -/datum/controller/subsystem/job/proc/FindOccupationCandidates(datum/job/job, level, flag) - JobDebug("Running FOC, Job: [job], Level: [level], Flag: [flag]") +/datum/controller/subsystem/job/proc/FindOccupationCandidates(datum/job/job, level) + JobDebug("Running FOC, Job: [job], Level: [level]") var/list/candidates = list() for(var/mob/dead/new_player/player in unassigned) if(QDELETED(player) || is_banned_from(player.ckey, job.title)) @@ -150,9 +150,6 @@ SUBSYSTEM_DEF(job) if(job.required_playtime_remaining(player.client)) JobDebug("FOC player not enough xp, Player: [player]") continue - if(flag && (!(flag in player.client.prefs.be_special))) - JobDebug("FOC flag failed, Player: [player], Flag: [flag], ") - continue if(player.mind && (job.title in player.mind.restricted_roles)) JobDebug("FOC incompatible with antagonist role, Player: [player]") continue @@ -795,9 +792,9 @@ SUBSYSTEM_DEF(job) desc = "Proof that you have been approved for Captaincy, with all its glory and all its horror." /obj/item/paper/fluff/spare_id_safe_code/Initialize(mapload) - . = ..() var/id_safe_code = SSjob.spare_id_safe_code - info = "Captain's Spare ID safe code combination: [id_safe_code ? id_safe_code : "\[REDACTED\]"]

The spare ID can be found in its dedicated safe on the bridge." + default_raw_text = "Captain's Spare ID safe code combination: [id_safe_code ? id_safe_code : "\[REDACTED\]"]

The spare ID can be found in its dedicated safe on the bridge." + return ..() /datum/controller/subsystem/job/proc/promote_to_captain(var/mob/dead/new_player/new_captain, acting_captain = FALSE) var/mob/living/carbon/human/H = new_captain.new_character diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index d942dda58bd..4fc3090979d 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -149,8 +149,10 @@ SUBSYSTEM_DEF(pai) for(var/mob/dead/observer/G in GLOB.player_list) if(!G.key || !G.client) continue - if(!(ROLE_PAI in G.client.prefs.be_special)) - continue + //NSV13 - Disabled until Beemerge, I don't know what to put here without porting from another PR so WEH + //if(!(ROLE_PAI in G.client.prefs.be_special)) + // continue + //NSV13 - Stop to_chat(G, "[user] is requesting a pAI personality! Use the pAI button to submit yourself as one.") addtimer(CALLBACK(src, PROC_REF(spam_again)), spam_delay) var/list/available = list() diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index f5172da839f..cffddc891f9 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -1,5 +1,10 @@ #define MAX_TRANSIT_REQUEST_RETRIES 10 +#define AUTOEVAC_STATUS_NO_EVAC 0 +#define AUTOEVAC_STATUS_TIMER_STARTED 1 +#define AUTOEVAC_STATUS_NEED_EVAC 2 +#define AUTOEVAC_STATUS_EVAC_CALLED 3 + SUBSYSTEM_DEF(shuttle) name = "Shuttle" wait = 10 @@ -65,6 +70,8 @@ SUBSYSTEM_DEF(shuttle) var/shuttles_loaded = FALSE + var/autoevac_status = AUTOEVAC_STATUS_NO_EVAC //NSV13 - modified autoevac handling + /datum/controller/subsystem/shuttle/Initialize(timeofday) ordernum = rand(1, 9000) @@ -130,14 +137,19 @@ SUBSYSTEM_DEF(shuttle) if(MC_TICK_CHECK) break +// NSV13 - rewrote basically this whole proc to add a state machine, fix some math, and add voting /datum/controller/subsystem/shuttle/proc/CheckAutoEvac() - if(emergencyNoEscape || emergencyNoRecall || !emergency || !SSticker.HasRoundStarted()) + if(emergencyNoEscape || emergencyNoRecall || !emergency || !SSticker.HasRoundStarted() || autoevac_status == AUTOEVAC_STATUS_EVAC_CALLED) return var/threshold = CONFIG_GET(number/emergency_shuttle_autocall_threshold) if(!threshold) return + if(emergency.timeLeft(1) < emergencyCallTime * 0.5 && emergency.timer) + autoevac_status = AUTOEVAC_STATUS_NO_EVAC + return + var/alive = 0 for(var/I in GLOB.player_list) var/mob/M = I @@ -146,16 +158,41 @@ SUBSYSTEM_DEF(shuttle) var/total = GLOB.joined_player_list.len if(total <= 0) + autoevac_status = AUTOEVAC_STATUS_NO_EVAC return //no players no autoevac if(alive / total <= threshold) - var/msg = "Automatically dispatching emergency shuttle due to crew death." - message_admins(msg) - log_game("[msg] Alive: [alive], Roundstart: [total], Threshold: [threshold]") - emergencyNoRecall = TRUE - priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.", sound = SSstation.announcer.get_rand_alert_sound()) - if(emergency.timeLeft(1) > emergencyCallTime * 0.4) - emergency.request(null, set_coefficient = 0.4) + switch(autoevac_status) + if(AUTOEVAC_STATUS_NO_EVAC) + addtimer(VARSET_CALLBACK(src, autoevac_status, AUTOEVAC_STATUS_NEED_EVAC), 2 MINUTES) + autoevac_status = AUTOEVAC_STATUS_TIMER_STARTED + return + if(AUTOEVAC_STATUS_TIMER_STARTED) + // Still waiting to see if they come back + return + if(AUTOEVAC_STATUS_NEED_EVAC) + var/msg + // If the dead can't vote, just call the shuttle. Don't jam recalls. + // If they can, make sure the security level will get the shuttle here quickly and do a transfer vote. + if(CONFIG_GET(flag/no_dead_vote)) + emergency.request(null, set_coefficient = 0.5) + msg = "Automatically dispatching emergency shuttle due to crew death." + priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated.", sound = SSstation.announcer.get_rand_alert_sound()) + autoevac_status = AUTOEVAC_STATUS_EVAC_CALLED + else + if(GLOB.security_level < SEC_LEVEL_RED) + set_security_level(SEC_LEVEL_RED) + if(!SSvote.mode) + SSvote.initiate_vote("transfer", "Crisis Protocols", forced=TRUE, popup=FALSE) + msg = "Automatically initiating transfer vote due to crew death." + priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated.", sound = SSstation.announcer.get_rand_alert_sound()) + autoevac_status = AUTOEVAC_STATUS_EVAC_CALLED + if(msg) + message_admins(msg) + log_game("[msg] Alive: [alive], Roundstart: [total], Threshold: [threshold]") + else + autoevac_status = AUTOEVAC_STATUS_NO_EVAC + /datum/controller/subsystem/shuttle/proc/block_recall(lockout_timer) emergencyNoRecall = TRUE @@ -901,3 +938,8 @@ SUBSYSTEM_DEF(shuttle) message_admins("[key_name_admin(usr)] loaded [mdp] with the shuttle manipulator.") log_admin("[key_name(usr)] loaded [mdp] with the shuttle manipulator.") SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[mdp.name]") + +#undef AUTOEVAC_STATUS_NO_EVAC +#undef AUTOEVAC_STATUS_TIMER_STARTED +#undef AUTOEVAC_STATUS_NEED_EVAC +#undef AUTOEVAC_STATUS_EVAC_CALLED diff --git a/code/controllers/subsystem/tgui.dm b/code/controllers/subsystem/tgui.dm index 848d83e06ae..f83c2edfcfc 100644 --- a/code/controllers/subsystem/tgui.dm +++ b/code/controllers/subsystem/tgui.dm @@ -25,6 +25,10 @@ SUBSYSTEM_DEF(tgui) /datum/controller/subsystem/tgui/PreInit() basehtml = file2text('tgui/public/tgui.html') + // Inject inline polyfills + var/polyfill = file2text('tgui/public/tgui-polyfill.min.js') + polyfill = "" + basehtml = replacetextEx(basehtml, "", polyfill) /datum/controller/subsystem/tgui/Shutdown() close_all_uis() diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 1cf167ce4f6..58629bd993a 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -646,7 +646,9 @@ SUBSYSTEM_DEF(ticker) news_message = "The Sol sector has fallen into anarchistic piracy, as the Tortuga raiders used the chaos of a surprise attack by Syndicate forces to seize a large amount of territory unanswered." //NSV13 end if(news_message) - SStopic.crosscomms_send("news_report", news_message, news_source) + if(!AWAIT(SStopic.crosscomms_send_async("news_report", news_message, news_source), 10 SECONDS)) + message_admins("Failed to send news report through crosscomms. The sending task expired.") + log_game("Failed to send news report through crosscomms. The sending task expired.") /datum/controller/subsystem/ticker/proc/GetTimeLeft() if(isnull(SSticker.timeLeft)) diff --git a/code/controllers/subsystem/topic.dm b/code/controllers/subsystem/topic.dm index 6d168bd40a5..639455d593b 100644 --- a/code/controllers/subsystem/topic.dm +++ b/code/controllers/subsystem/topic.dm @@ -90,19 +90,20 @@ SUBSYSTEM_DEF(topic) * Note that request will fail if a token cannot be found for the target server and anonymous is not set. * * nocheck: TRUE or FALSE whether to check if the recieving server is authorized to get the topic call *(default: FALSE)* */ -/datum/controller/subsystem/topic/proc/export(addr, query, list/params, anonymous = FALSE, nocheck = FALSE) +/datum/controller/subsystem/topic/proc/export_async(addr, query, list/params, anonymous = FALSE, nocheck = FALSE) + DECLARE_ASYNC var/list/request = list() request["query"] = query if(anonymous) var/datum/world_topic/topic = GLOB.topic_commands[query] if((!istype(topic) || !topic.anonymous) && !nocheck) - return + ASYNC_RETURN(TRUE) request["auth"] = "anonymous" else var/list/servers = CONFIG_GET(keyed_list/cross_server) if(!servers[addr] || (!LAZYACCESS(GLOB.topic_servers[addr], query) && !nocheck)) - return // Couldn't find an authorized key, or trying to send secure data to unsecure server + ASYNC_RETURN(TRUE) // Couldn't find an authorized key, or trying to send secure data to unsecure server request["auth"] = servers[addr] request.Add(params) @@ -111,6 +112,7 @@ SUBSYSTEM_DEF(topic) if(CONFIG_GET(flag/log_world_topic)) request["auth"] = "***[copytext(request["auth"], -4)]" log_topic("outgoing: \"[json_encode(request)]\", response: \"[result]\", auth: [request["auth"]], to: [addr], anonymous: [anonymous]") + ASYNC_RETURN(TRUE) /** * Broadcast topic to all known authorized servers for things like comms consoles or ahelps. @@ -122,7 +124,10 @@ SUBSYSTEM_DEF(topic) * * msg: message text to send * * sender: name of the sending entity (station name, ckey etc) */ -/datum/controller/subsystem/topic/proc/crosscomms_send(query, msg, sender) +/datum/controller/subsystem/topic/proc/crosscomms_send_async(query, msg, sender) + RETURN_TYPE(/datum/task) var/list/servers = CONFIG_GET(keyed_list/cross_server) + var/datum/task/parent_task = new() for(var/I in servers) - export(I, query, list("message" = msg, "message_sender" = sender)) + parent_task.add_subtask(export_async(I, query, list("message" = msg, "message_sender" = sender))) + return parent_task diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index fdc3601b87e..d38033d4847 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -64,7 +64,7 @@ SUBSYSTEM_DEF(traumas) "clowns" = typecacheof(list(/obj/item/clothing/under/rank/civilian/clown, /obj/item/clothing/shoes/clown_shoes, /obj/item/clothing/mask/gas/clown_hat, /obj/item/instrument/bikehorn, - /obj/item/pda/clown, /obj/item/grown/bananapeel)), + /obj/item/modular_computer/tablet/pda/clown, /obj/item/grown/bananapeel)), "greytide" = typecacheof(list(/obj/item/clothing/under/color/grey, /obj/item/melee/baton/cattleprod, /obj/item/spear, /obj/item/clothing/mask/gas/old)), diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index e419df7e624..09752ac5e7b 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -91,9 +91,10 @@ SUBSYSTEM_DEF(vote) factor = 1.4 choices["Initiate Crew Transfer"] += round(non_voters.len * factor) else if(mode == "Press On Or Return Home?") //NSV13 - Round extension vote - choices["Return to Outpost 45"] += non_voters.len - if(choices["Return to Outpost 45"] >= greatest_votes) - greatest_votes = choices["Return to Outpost 45"] + var/datum/star_system/target = SSstar_system.return_system + choices["Return to [target.name]]"] += non_voters.len + if(choices["Return to [target.name]]"] >= greatest_votes) + greatest_votes = choices["Return to [target.name]"] //get all options with that many votes and return them in a list . = list() if(greatest_votes) @@ -182,9 +183,9 @@ SUBSYSTEM_DEF(vote) SSovermap_mode.already_ended = FALSE SSovermap_mode.objectives_completed = FALSE else - priority_announce("Returning to Outpost 45") //TEMP + priority_announce("Returning to [SSstar_system.return_system.name]") //TEMP var/obj/structure/overmap/OM = SSstar_system.find_main_overmap() - OM.force_return_jump(SSstar_system.system_by_id("Outpost 45")) + OM.force_return_jump() if(restart) var/active_admins = FALSE diff --git a/code/datums/action.dm b/code/datums/action.dm index 67bed4f474d..10da7130767 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -203,9 +203,9 @@ name = "Toggle Light" /datum/action/item_action/toggle_light/Trigger() - if(istype(target, /obj/item/pda)) - var/obj/item/pda/P = target - P.toggle_light(owner) + if(istype(target, /obj/item/modular_computer)) + var/obj/item/modular_computer/mc = target + mc.toggle_flashlight() return ..() @@ -228,6 +228,9 @@ /datum/action/item_action/startchainsaw name = "Pull The Starting Cord" +/datum/action/item_action/toggle_computer_light + name = "Toggle Flashlight" + /datum/action/item_action/toggle_gunlight name = "Toggle Gunlight" diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm index b77bd799465..ad30ac75041 100644 --- a/code/datums/brain_damage/imaginary_friend.dm +++ b/code/datums/brain_damage/imaginary_friend.dm @@ -46,7 +46,7 @@ if(owner.stat == DEAD || !owner.mind) qdel(src) return - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s imaginary friend?", ROLE_PAI, null, null, 75, friend, POLL_IGNORE_IMAGINARYFRIEND) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s imaginary friend?", ROLE_IMAGINARY_FRIEND, null, 7.5 SECONDS, friend) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) friend.key = C.key @@ -193,7 +193,7 @@ hearers += client if(owner_chat_map) hearers += owner.client - + var/rendered = "[name] [say_quote(message)]" var/dead_rendered = "[name] (Imaginary friend of [owner]) [say_quote(message)]" diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index b2ebc6c1899..c5a8a5fd4fd 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -31,7 +31,7 @@ if(owner.stat == DEAD || !owner.mind) qdel(src) return - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s split personality?", ROLE_PAI, null, null, 75, stranger_backseat, POLL_IGNORE_SPLITPERSONALITY) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s split personality?", ROLE_SPLIT_PERSONALITY, null, 7.5 SECONDS, stranger_backseat) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) stranger_backseat.key = C.key @@ -196,7 +196,7 @@ /datum/brain_trauma/severe/split_personality/brainwashing/get_ghost() set waitfor = FALSE - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s brainwashed mind?", null, null, null, 75, stranger_backseat) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s brainwashed mind?", ROLE_TRAITOR, null, 7.5 SECONDS, stranger_backseat, ignore_category = FALSE) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) stranger_backseat.key = C.key diff --git a/code/datums/callback.dm b/code/datums/callback.dm index 8603439a8b3..34f71ec7a15 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -84,17 +84,17 @@ * * ... optional list of arguments to pass as arguments to the proc being called */ /world/proc/ImmediateInvokeAsync(thingtocall, proctocall, ...) - set waitfor = FALSE + DECLARE_ASYNC if (!thingtocall) - return + ASYNC_FINISH var/list/calling_arguments = length(args) > 2 ? args.Copy(3) : null if (thingtocall == GLOBAL_PROC) - call(proctocall)(arglist(calling_arguments)) + ASYNC_RETURN(call(proctocall)(arglist(calling_arguments))) else - call(thingtocall, proctocall)(arglist(calling_arguments)) + ASYNC_RETURN(call(thingtocall, proctocall)(arglist(calling_arguments))) /** * Invoke this callback diff --git a/code/datums/components/holomap.dm b/code/datums/components/holomap.dm index c38f1142967..129544497a9 100644 --- a/code/datums/components/holomap.dm +++ b/code/datums/components/holomap.dm @@ -76,9 +76,9 @@ holobutton.Remove(user) /datum/component/holomap/Destroy(force, silent) - //if(holobutton) - // holobutton.Remove(get_user()) - // qdel(holobutton) + if(holobutton) + holobutton.Remove(get_user()) + qdel(holobutton) . = ..() /datum/component/holomap/proc/summon_holomap(datum/user) @@ -99,10 +99,10 @@ return legend /datum/component/holomap/proc/activate_holomap(mob/user) - current_z_level = user.z + var/turf/current_turf = get_turf(user.client.eye) + current_z_level = current_turf.z holomap_datum = new() bogus = FALSE - var/turf/current_turf = get_turf(user) if(!("[HOLOMAP_EXTRA_STATIONMAP]_[current_z_level]" in SSholomaps.extra_holomaps)) bogus = TRUE holomap_datum.initialize_holomap_bogus() diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 519b557dabe..474ae3dc3cd 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -316,7 +316,7 @@ M.visible_message("[M] is thrown clear of [AM]!", \ "You're thrown clear of [AM]!") M.throw_at(target, 14, 5, AM) - M.Knockdown(60) + M.Paralyze(60) //NSV13 - readded borg spin stuns /datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1, riding_target_override = null) var/atom/movable/AM = parent diff --git a/code/datums/components/sound_player.dm b/code/datums/components/sound_player.dm new file mode 100644 index 00000000000..ecbe804a9ea --- /dev/null +++ b/code/datums/components/sound_player.dm @@ -0,0 +1,39 @@ +/** + * Sound Player component + * + * Component that will play a sound upon recieving some signal + */ +/datum/component/sound_player + ///Volume of the sound when played + var/volume + ///The list of sounds played, picked randomly. + var/list/sounds + ///Uses left before the sound player deletes itself. If set to a negative number that will mean infinite uses. + var/uses + +/datum/component/sound_player/Initialize( + volume = 30, + sounds = list('sound/items/bikehorn.ogg'), + uses = -1, + signal_list = list(COMSIG_ATOM_ATTACK_HAND), +) + src.volume = volume + src.sounds = sounds + src.uses = uses + + RegisterSignal(parent, signal_list, PROC_REF(play_sound)) + +/** + * Attempt to play the sound on parent + * + * If out of uses, will qdel itself. + */ +/datum/component/sound_player/proc/play_sound() + SIGNAL_HANDLER + + playsound(parent, pick(sounds), volume, TRUE) + if(uses <= -1) + return + uses-- + if(!uses) + qdel(src) diff --git a/code/datums/components/soundplayer.dm b/code/datums/components/soundplayer.dm deleted file mode 100644 index ad52d1df3fe..00000000000 --- a/code/datums/components/soundplayer.dm +++ /dev/null @@ -1,41 +0,0 @@ -/*This is the sound_player component. It can be attached to any datum and register any signal to play the sound(s) you want, when you want. Used for the honk virus as an example - Usage : - target.AddComponent(/datum/component/sound_player, args) - Arguments : - custom_volume : Used to define a custom volume. Default : 30 - custom_sounds : Used to define a list of custom sounds that will be picked at random when play_sound() is triggered. Default : list('sound/items/bikehorn.ogg') - amount : Used to define an amount of time the component will work before deleting itself. Default : -1 - signal_or_sig_list : Used to register the signal(s) you want to play the sound when they are sent. Default : None -*/ -/datum/component/sound_player - var/volume = 30 - var/list/sounds = list('sound/items/bikehorn.ogg') - var/amount_left = -1 - -/datum/component/sound_player/Initialize(custom_volume, custom_sounds, amount, signal_or_sig_list) - if(!isnull(custom_volume)) - volume = custom_volume - - if(!isnull(custom_sounds)) - sounds = custom_sounds - - if(!isnull(amount)) - amount_left = amount - - RegisterSignal(parent, signal_or_sig_list, PROC_REF(play_sound)) //Registers all the signals in signal_or_sig_list. - - - -/*play_sound() os the proc that actually plays the sound. - If amount_left is equal to -1, the component is infinite and will never delete itself. -*/ -/datum/component/sound_player/proc/play_sound() - playsound(parent, pickweight(sounds), volume, TRUE) - switch(amount_left) - if(-1) - return - if(1) //Last use. - qdel(src) - return - else - amount_left-- diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm index f3ea6c1749b..cfcb7a133b8 100644 --- a/code/datums/components/uplink.dm +++ b/code/datums/components/uplink.dm @@ -42,8 +42,8 @@ RegisterSignal(parent, COMSIG_IMPLANT_IMPLANTING, PROC_REF(implanting)) RegisterSignal(parent, COMSIG_IMPLANT_OTHER, PROC_REF(old_implant)) RegisterSignal(parent, COMSIG_IMPLANT_EXISTING_UPLINK, PROC_REF(new_implant)) - else if(istype(parent, /obj/item/pda)) - RegisterSignal(parent, COMSIG_PDA_CHANGE_RINGTONE, PROC_REF(new_ringtone)) + else if(istype(parent, /obj/item/modular_computer/tablet)) + RegisterSignal(parent, COMSIG_TABLET_CHANGE_RINGTONE, PROC_REF(new_ringtone)) else if(istype(parent, /obj/item/radio)) RegisterSignal(parent, COMSIG_RADIO_MESSAGE, PROC_REF(radio_message)) else if(istype(parent, /obj/item/pen)) @@ -287,7 +287,6 @@ /datum/component/uplink/proc/new_ringtone(datum/source, mob/living/user, new_ring_text) SIGNAL_HANDLER - var/obj/item/pda/master = parent if(trim(lowertext(new_ring_text)) != trim(lowertext(unlock_code))) if(failsafe_code && trim(lowertext(new_ring_text)) == trim(lowertext(failsafe_code))) failsafe() @@ -295,9 +294,7 @@ return locked = FALSE interact(null, user) - to_chat(user, "The PDA softly beeps.") - user << browse(null, "window=pda") - master.mode = 0 + to_chat(user, "The computer softly beeps.") return COMPONENT_STOP_RINGTONE_CHANGE // Radio signal responses @@ -353,7 +350,7 @@ /datum/component/uplink/proc/setup_unlock_code() unlock_code = generate_code() var/obj/item/P = parent - if(istype(parent,/obj/item/pda)) + if(istype(parent,/obj/item/modular_computer/tablet)) unlock_note = "Uplink Passcode: [unlock_code] ([P.name])." else if(istype(parent,/obj/item/radio)) unlock_note = "Radio Passcode: [unlock_code] ([P.name] on the :d channel)." @@ -361,7 +358,7 @@ unlock_note = "Uplink Degrees: [english_list(unlock_code)] ([P.name])." /datum/component/uplink/proc/generate_code() - if(istype(parent,/obj/item/pda)) + if(istype(parent,/obj/item/modular_computer/tablet)) return "[random_code(3)] [pick(GLOB.phonetic_alphabet)]" else if(istype(parent,/obj/item/radio)) return "[pick(GLOB.phonetic_alphabet)]" diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 4418113c6fd..34a71559d57 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -262,6 +262,12 @@ G.fields["gender"] = "Other" G.fields["photo_front"] = photo_front G.fields["photo_side"] = photo_side + //NSV13 - Roleplaying Records General Records - Start + if(C?.prefs?.active_character?.general_record) + G.fields["past_records"] = C.prefs.active_character.general_record + else + G.fields["past_records"] = "" + //NSV13 - Roleplaying Records General Records - Stop general += G //Medical Record @@ -279,6 +285,12 @@ M.fields["cdi"] = "None" M.fields["cdi_d"] = "No diseases have been diagnosed at the moment." M.fields["notes"] = "No notes." + //NSV13 - Roleplaying Records Medical Records - Start + if(C?.prefs?.active_character?.medical_record) + M.fields["past_records"] = C.prefs.active_character.medical_record + else + M.fields["past_records"] = "" + //NSV13 - Roleplaying Records Medical Records - Stop medical += M //Security Record @@ -289,6 +301,12 @@ S.fields["citation"] = list() S.fields["crim"] = list() S.fields["notes"] = "No notes." + //NSV13 - Roleplaying Records Security Records - Start + if(C?.prefs?.active_character?.security_record) + S.fields["past_records"] = C.prefs.active_character.security_record + else + S.fields["past_records"] = "" + //NSV13 - Roleplaying Records Security Records - Stop security += S //Locked Record diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index b60bedb1a3e..218d0255411 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -80,10 +80,11 @@ /datum/disease/transformation/proc/replace_banned_player(var/mob/living/new_mob) // This can run well after the mob has been transferred, so need a handle on the new mob to kill it if needed. set waitfor = FALSE + affected_mob.playable_bantype = bantype affected_mob.ghostize(TRUE,SENTIENCE_FORCE) to_chat(affected_mob, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!") - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [affected_mob.name]?", bantype, null, bantype, 50, affected_mob) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [affected_mob.name]?", bantype, null, 7.5 SECONDS, affected_mob, ignore_category = FALSE) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(affected_mob)]) to replace a jobbanned player.") @@ -108,7 +109,7 @@ stage5 = list("Your skin feels as if it's about to burst off!") new_form = /mob/living/silicon/robot infectable_biotypes = list(MOB_ORGANIC, MOB_UNDEAD, MOB_ROBOTIC) - bantype = "Cyborg" + bantype = JOB_NAME_CYBORG /datum/disease/transformation/robot/stage_act() ..() diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 43671b8c325..34b12c7247a 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -40,7 +40,7 @@ return ..() -/datum/dna/proc/transfer_identity(mob/living/carbon/destination, transfer_SE = FALSE) +/datum/dna/proc/transfer_identity(mob/living/carbon/human/destination, transfer_SE = FALSE) if(!istype(destination)) return destination.dna.unique_enzymes = unique_enzymes @@ -51,7 +51,7 @@ destination.dna.features = features.Copy() destination.dna.real_name = real_name destination.dna.temporary_mutations = temporary_mutations.Copy() - destination.flavour_text = destination.dna.features["flavour_text"] //Update the flavor_text to use new dna text //NSV13 + destination.flavour_text = holder ? holder.flavour_text : "" //Update the flavor_text to use new dna text //NSV13 if(transfer_SE) destination.dna.mutation_index = mutation_index destination.dna.default_mutation_genes = default_mutation_genes @@ -360,7 +360,6 @@ //Do not use force_transfer_mutations for stuff like cloners without some precautions, otherwise some conditional mutations could break (timers, drill hat etc) if(newfeatures) dna.features = newfeatures - flavour_text = dna.features["flavour_text"] //Update the flavor_text to use new dna text //NSV13 if(mrace) var/datum/species/newrace = new mrace.type diff --git a/code/datums/http.dm b/code/datums/http.dm index 14bb8d21976..5dab601ffb5 100644 --- a/code/datums/http.dm +++ b/code/datums/http.dm @@ -6,10 +6,12 @@ var/body var/headers var/url + /// If present response body will be saved to this file. + var/output_file var/_raw_response -/datum/http_request/proc/prepare(method, url, body = "", list/headers) +/datum/http_request/proc/prepare(method, url, body = "", list/headers, output_file) if (!length(headers)) headers = "" else @@ -19,15 +21,16 @@ src.url = url src.body = body src.headers = headers + src.output_file = output_file /datum/http_request/proc/execute_blocking() - _raw_response = rustg_http_request_blocking(method, url, body, headers) + _raw_response = rustg_http_request_blocking(method, url, body, headers, build_options()) /datum/http_request/proc/begin_async() if (in_progress) CRASH("Attempted to re-use a request object.") - id = rustg_http_request_async(method, url, body, headers) + id = rustg_http_request_async(method, url, body, headers, build_options()) if (isnull(text2num(id))) stack_trace("Proc error: [id]") @@ -35,6 +38,11 @@ else in_progress = TRUE +/datum/http_request/proc/build_options() + if(output_file) + return json_encode(list("output_filename"=output_file,"body_filename"=null)) + return null + /datum/http_request/proc/is_complete() if (isnull(id)) return TRUE diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm index 04d940365b2..537bed6919b 100644 --- a/code/datums/map_config.dm +++ b/code/datums/map_config.dm @@ -26,6 +26,7 @@ var/list/omode_blacklist = list() //NSV13 - Blacklisted overmap modes - ie remove modes var/list/omode_whitelist = list() //NSV13 - Whitelisted overmap modes - ie add modes var/starmap_path = CONFIG_DIRECTORY + "/" + STARMAP_FILE //NSV13 - What starmap should this map load? + var/return_system = "Outpost 45" //NSV13 - Which system are we jumping back to when the round ends? var/mine_traits = null //NSV13 - special mapvote things @@ -188,6 +189,8 @@ omode_whitelist = json["omode_whitelist"] if("starmap_path" in json) starmap_path = json["starmap_path"] + if("return_system" in json) + starmap_path = json["return_system"] if("map_description" in json) map_description = json["map_description"] if("manufacturer" in json) diff --git a/code/datums/martial/_martial.dm b/code/datums/martial/_martial.dm index 475936d11cb..31c5cd1472c 100644 --- a/code/datums/martial/_martial.dm +++ b/code/datums/martial/_martial.dm @@ -9,6 +9,7 @@ var/reroute_deflection = FALSE //Delete the bullet, or actually deflect it in some direction? var/block_chance = 0 //Chance to block melee attacks using items while on throw mode. var/restraining = 0 //used in cqc's disarm_act to check if the disarmed is being restrained and so whether they should be put in a chokehold or not + var/armlockstate = 0 //used in jujitsu grab after hand armlock move var/help_verb var/no_guns = FALSE var/allow_temp_override = TRUE //if this martial art can be overridden by temporary martial arts diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index 69d50054b3e..e6be98617e8 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -122,7 +122,7 @@ /datum/material/bananium/on_applied(atom/source, amount, material_flags) . = ..() source.LoadComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50) - source.AddComponent(/datum/component/slippery, min(amount / 10, 80)) + source.AddComponent(/datum/component/slippery, min(amount / 10, 80), null, min(amount / 20, 40), _force_drop = TRUE) //NSV13 - added stuns and accidents /datum/material/bananium/on_removed(atom/source, amount, material_flags) . = ..() diff --git a/code/datums/mind.dm b/code/datums/mind.dm index cbdd4bed3ad..5804ebd9197 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -284,7 +284,7 @@ return var/list/all_contents = traitor_mob.GetAllContents() - var/obj/item/pda/PDA = locate() in all_contents + var/obj/item/modular_computer/tablet/pda/PDA = locate() in all_contents var/obj/item/radio/R = locate() in all_contents var/obj/item/pen/P @@ -346,7 +346,7 @@ if(uplink_loc == R) to_chat(traitor_mob, "[employer] has cunningly disguised a Syndicate Uplink as your [R.name]. Simply speak [U.unlock_code] into the :d channel to unlock its hidden features.") else if(uplink_loc == PDA) - to_chat(traitor_mob, "[employer] has cunningly disguised a Syndicate Uplink as your [PDA.name]. Simply enter the code \"[U.unlock_code]\" into the ringtone select to unlock its hidden features.") + to_chat(traitor_mob, "[employer] has cunningly disguised a Syndicate Uplink as your [PDA.name]. Simply enter the code \"[U.unlock_code]\" into the ring tone selection to unlock its hidden features.") else if(uplink_loc == P) to_chat(traitor_mob, "[employer] has cunningly disguised a Syndicate Uplink as your [P.name]. Simply twist the top of the pen [english_list(U.unlock_code)] from its starting position to unlock its hidden features.") diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 62e6522ddc3..a87f9b30918 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -96,9 +96,11 @@ var/mob/living/T = L.parent if(ishuman(T)) var/mob/living/carbon/human/H = T - if(iscatperson(H)) - H.dna.species.start_wagging_tail(H) - addtimer(CALLBACK(H.dna.species, TYPE_PROC_REF(/datum/species, stop_wagging_tail), H), 30) + if(iscatperson(H) || (istype(H.getorganslot(ORGAN_SLOT_EARS), /obj/item/organ/ears/cat) && istype(H.getorganslot(ORGAN_SLOT_TAIL), /obj/item/organ/tail/cat))) + var/obj/item/organ/tail/tail = H.getorganslot(ORGAN_SLOT_TAIL) + if(tail) + tail.set_wagging(H, TRUE) + addtimer(CALLBACK(tail, TYPE_PROC_REF(/obj/item/organ/tail, set_wagging), H, FALSE), 3 SECONDS) description = "They want to play on the table!\n" mood_change = 2 diff --git a/code/datums/mutations/antenna.dm b/code/datums/mutations/antenna.dm index b1b784ea05b..18df0a426ec 100644 --- a/code/datums/mutations/antenna.dm +++ b/code/datums/mutations/antenna.dm @@ -15,7 +15,7 @@ icon_state = "walkietalkie" /obj/item/implant/radio/antenna/Initialize(mapload) - ..() + . = ..() radio.name = "internal antenna" /datum/mutation/antenna/on_acquiring(mob/living/carbon/owner) diff --git a/code/datums/task.dm b/code/datums/task.dm new file mode 100644 index 00000000000..c9d57fdd831 --- /dev/null +++ b/code/datums/task.dm @@ -0,0 +1,43 @@ +/datum/task + var/result = null + var/completed = FALSE + var/list/subtasks + +/// Add a subtask to this subtask. When awaiting a parent task, it will wait for all subtasks to complete +/// and then will return a list containing all the results. +/datum/task/proc/add_subtask(datum/task/subtask) + LAZYADD(subtasks, subtask) + +/// Mark the task as being completed +/datum/task/proc/mark_completed(result = null) + if (length(subtasks)) + CRASH("Attempting to mark a subtask holder as completed. This is not allowed") + completed = TRUE + src.result = result + +/// Wait for the task to be completed, or the timeout to expire +/// Returns true if the task was completed +/datum/task/proc/await(timeout = 30 SECONDS) + var/start_time = world.time + var/sleep_time = 1 + while(world.time < start_time + timeout && !is_completed()) + sleep(sleep_time) + sleep_time = min(sleep_time * 2, 1 SECONDS) + // Check for success + var/success = length(subtasks) ? TRUE : completed + if (length(subtasks) && !result) + result = list() + for (var/datum/task/subtask in subtasks) + if (!subtask.completed) + success = FALSE + if (subtask.result) + result += subtask.result + return success + +/datum/task/proc/is_completed() + if (length(subtasks)) + for (var/datum/task/subtask in subtasks) + if (!subtask.completed) + return FALSE + return TRUE + return completed diff --git a/code/datums/wires/fax.dm b/code/datums/wires/fax.dm new file mode 100644 index 00000000000..f5eabbd7822 --- /dev/null +++ b/code/datums/wires/fax.dm @@ -0,0 +1,56 @@ +/datum/wires/fax + holder_type = /obj/machinery/fax + proper_name = "Fax Unit" + +/datum/wires/fax/New(atom/holder) + wires = list( + WIRE_SHOCK, + WIRE_SIGNAL, + WIRE_THROW, + WIRE_LOADCHECK + ) + add_duds(1) + return ..() + +/datum/wires/fax/interactable(mob/user) + . = ..() + if(!.) + return FALSE + var/obj/machinery/fax/machine = holder + if(!issilicon(user) && machine.seconds_electrified && machine.shock(user, 100)) + return FALSE + if(machine.panel_open) + return TRUE + +/datum/wires/fax/get_status() + var/obj/machinery/fax/machine = holder + var/list/status = list() + status += "A red light is [machine.seconds_electrified ? "blinking" : "off"]." + status += "The network light is [machine.visible_to_network ? "on" : "off"]." + status += "The output servo is [machine.hurl_contents ? "spinning rapidly" : "on"]." + status += "The input servo is [machine.allow_exotic_faxes ? "spinning rapidly" : "on"]." + return status + +/datum/wires/fax/on_pulse(wire) + var/obj/machinery/fax/machine = holder + switch(wire) + if(WIRE_SHOCK) + machine.seconds_electrified = MACHINE_DEFAULT_ELECTRIFY_TIME + if(WIRE_SIGNAL) + machine.visible_to_network = !machine.visible_to_network + if(WIRE_THROW) + machine.hurl_contents = !machine.hurl_contents + if(WIRE_LOADCHECK) + machine.allow_exotic_faxes = !machine.allow_exotic_faxes + +/datum/wires/fax/on_cut(wire, mend) + var/obj/machinery/fax/machine = holder + switch(wire) + if(WIRE_SHOCK) + machine.seconds_electrified = (mend) ? MACHINE_NOT_ELECTRIFIED : MACHINE_ELECTRIFIED_PERMANENT + if(WIRE_SIGNAL) + machine.visible_to_network = mend + if(WIRE_THROW) + machine.hurl_contents = !mend + if(WIRE_LOADCHECK) + machine.allow_exotic_faxes = !mend diff --git a/code/game/gamemodes/brother/traitor_bro.dm b/code/game/gamemodes/brother/traitor_bro.dm index 6059dba2a14..2ba9c586359 100644 --- a/code/game/gamemodes/brother/traitor_bro.dm +++ b/code/game/gamemodes/brother/traitor_bro.dm @@ -27,7 +27,7 @@ if(CONFIG_GET(flag/protect_heads_from_antagonist)) restricted_jobs += GLOB.command_positions - var/list/datum/mind/possible_brothers = get_players_for_role(ROLE_BROTHER) + var/list/datum/mind/possible_brothers = get_players_for_role(/datum/antagonist/brother, /datum/role_preference/antagonist/blood_brother) var/num_teams = team_amount var/bsc = CONFIG_GET(number/brother_scaling_coeff) @@ -40,7 +40,7 @@ var/datum/team/brother_team/team = new var/team_size = prob(10) ? min(3, possible_brothers.len) : 2 for(var/k = 1 to team_size) - var/datum/mind/bro = antag_pick(possible_brothers, ROLE_BROTHER) + var/datum/mind/bro = antag_pick(possible_brothers, /datum/role_preference/antagonist/blood_brother) possible_brothers -= bro antag_candidates -= bro team.add_member(bro) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 884e9025c74..49b9cdcf0c9 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -10,7 +10,8 @@ GLOBAL_LIST_INIT(slot2type, list("head" = /obj/item/clothing/head/changeling, "w name = "changeling" config_tag = "changeling" report_type = "changeling" - antag_flag = ROLE_CHANGELING + role_preference = /datum/role_preference/antagonist/changeling + antag_datum = /datum/antagonist/changeling false_report_weight = 10 restricted_jobs = list(JOB_NAME_AI, JOB_NAME_CYBORG) protected_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) @@ -52,7 +53,7 @@ GLOBAL_LIST_INIT(slot2type, list("head" = /obj/item/clothing/head/changeling, "w for(var/i = 0, i < num_changelings, i++) if(!antag_candidates.len) break - var/datum/mind/changeling = antag_pick(antag_candidates, ROLE_CHANGELING) + var/datum/mind/changeling = antag_pick(antag_candidates, /datum/role_preference/antagonist/changeling) antag_candidates -= changeling changelings += changeling changeling.special_role = ROLE_CHANGELING @@ -75,12 +76,14 @@ GLOBAL_LIST_INIT(slot2type, list("head" = /obj/item/clothing/head/changeling, "w if(changelings.len >= changelingcap) //Caps number of latejoin antagonists return if(changelings.len <= (changelingcap - 2) || prob(100 - (csc * 2))) - if(ROLE_CHANGELING in character.client.prefs.be_special) - if(!is_banned_from(character.ckey, list(ROLE_CHANGELING, ROLE_SYNDICATE)) && !QDELETED(character)) - if(age_check(character.client)) - if(!(character.job in restricted_jobs)) - character.mind.make_Changeling() - changelings += character.mind + if(!QDELETED(character) && character.client?.should_include_for_role( + banning_key = initial(antag_datum.banning_key), + role_preference_key = role_preference, + req_hours = initial(antag_datum.required_living_playtime) + )) + if(!(character.job in restricted_jobs)) + character.mind.make_Changeling() + changelings += character.mind /datum/game_mode/changeling/generate_report() return "The Gorlex Marauders have announced the successful raid and destruction of Central Command containment ship #S-[rand(1111, 9999)]. This ship housed only a single prisoner - \ diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm index 95057675495..6912af56cbf 100644 --- a/code/game/gamemodes/changeling/traitor_chan.dm +++ b/code/game/gamemodes/changeling/traitor_chan.dm @@ -22,7 +22,7 @@ /datum/game_mode/traitor/changeling/can_start() if(!..()) return 0 - possible_changelings = get_players_for_role(ROLE_CHANGELING) + possible_changelings = get_players_for_role(/datum/antagonist/changeling, /datum/role_preference/antagonist/changeling) if(possible_changelings.len < required_enemies) return 0 return 1 @@ -37,7 +37,7 @@ if(CONFIG_GET(flag/protect_heads_from_antagonist)) restricted_jobs += GLOB.command_positions - var/list/datum/mind/possible_changelings = get_players_for_role(ROLE_CHANGELING) + var/list/datum/mind/possible_changelings = get_players_for_role(/datum/antagonist/changeling, /datum/role_preference/antagonist/changeling) var/num_changelings = 1 @@ -51,7 +51,7 @@ for(var/j = 0, j < num_changelings, j++) if(!possible_changelings.len) break - var/datum/mind/changeling = antag_pick(possible_changelings, ROLE_CHANGELING) + var/datum/mind/changeling = antag_pick(possible_changelings, /datum/role_preference/antagonist/changeling) antag_candidates -= changeling possible_changelings -= changeling changeling.special_role = ROLE_CHANGELING @@ -72,13 +72,16 @@ if(changelings.len >= changelingcap) //Caps number of latejoin antagonists ..() return + var/datum/antagonist/aux_antag_datum = /datum/antagonist/changeling if(changelings.len <= (changelingcap - 2) || prob(100 / (csc * 4))) - if(ROLE_CHANGELING in character.client.prefs.be_special) - if(!is_banned_from(character.ckey, list(ROLE_CHANGELING, ROLE_SYNDICATE)) && !QDELETED(character)) - if(age_check(character.client)) - if(!(character.job in restricted_jobs)) - character.mind.make_Changeling() - changelings += character.mind + if(!QDELETED(character) && character.client.should_include_for_role( + banning_key = initial(aux_antag_datum.banning_key), + role_preference_key = /datum/role_preference/antagonist/changeling, + req_hours = initial(aux_antag_datum.required_living_playtime) + )) + if(!(character.job in restricted_jobs)) + character.mind.make_Changeling() + changelings += character.mind if(QDELETED(character)) return ..() diff --git a/code/game/gamemodes/clock_cult/clockcult.dm b/code/game/gamemodes/clock_cult/clockcult.dm index b31dd9e379c..af4f68b3bc8 100644 --- a/code/game/gamemodes/clock_cult/clockcult.dm +++ b/code/game/gamemodes/clock_cult/clockcult.dm @@ -32,8 +32,8 @@ GLOBAL_VAR(clockcult_eminence) required_players = 24 required_enemies = 4 recommended_enemies = 4 - antag_flag = ROLE_SERVANT_OF_RATVAR - enemy_minimum_age = 14 + role_preference = /datum/role_preference/antagonist/clock_cultist + antag_datum = /datum/antagonist/servant_of_ratvar title_icon = "clockcult" announce_span = "danger" @@ -58,7 +58,7 @@ GLOBAL_VAR(clockcult_eminence) for(var/i in 1 to clock_cultists) if(!antag_candidates.len) break - var/datum/mind/clockie = antag_pick(antag_candidates, ROLE_SERVANT_OF_RATVAR) + var/datum/mind/clockie = antag_pick(antag_candidates, /datum/role_preference/antagonist/clock_cultist) //In case antag_pick breaks if(!clockie) continue diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 9f19fb03b9b..2a2366fc79b 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -88,7 +88,7 @@ */ /obj/item/melee/transforming/energy/sword/proc/adjust_slipperiness() if(active) - AddComponent(/datum/component/slippery, 60, GALOSHES_DONT_HELP) + AddComponent(/datum/component/slippery, 60, GALOSHES_DONT_HELP, _force_drop = TRUE) //NSV13 - added accidents else qdel(GetComponent(/datum/component/slippery)) @@ -151,7 +151,7 @@ */ /obj/item/shield/energy/bananium/proc/adjust_slipperiness() if(active) - AddComponent(/datum/component/slippery, 60, GALOSHES_DONT_HELP) + AddComponent(/datum/component/slippery, 60, GALOSHES_DONT_HELP, _force_drop = TRUE) //NSV13 - added accidents else qdel(GetComponent(/datum/component/slippery)) diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 7b2498f9263..1280a629674 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -36,14 +36,14 @@ name = "cult" config_tag = "cult" report_type = "cult" - antag_flag = ROLE_CULTIST + role_preference = /datum/role_preference/antagonist/blood_cultist + antag_datum = /datum/antagonist/cult false_report_weight = 1 restricted_jobs = list(JOB_NAME_CHAPLAIN,JOB_NAME_AI, JOB_NAME_CYBORG, JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_HEADOFPERSONNEL) protected_jobs = list() required_players = 29 required_enemies = 4 recommended_enemies = 4 - enemy_minimum_age = 14 announce_span = "cult" announce_text = "Some crew members are trying to start a cult to Nar'Sie!\n\ @@ -84,7 +84,7 @@ for(var/cultists_number = 1 to recommended_enemies) if(!antag_candidates.len) break - var/datum/mind/cultist = antag_pick(antag_candidates, ROLE_CULTIST) + var/datum/mind/cultist = antag_pick(antag_candidates, /datum/role_preference/antagonist/blood_cultist) antag_candidates -= cultist if(!cultist) cultists_number-- diff --git a/code/game/gamemodes/devil/devil_game_mode.dm b/code/game/gamemodes/devil/devil_game_mode.dm index b7d0bbe7766..95b7ab5db67 100644 --- a/code/game/gamemodes/devil/devil_game_mode.dm +++ b/code/game/gamemodes/devil/devil_game_mode.dm @@ -2,14 +2,14 @@ name = "devil" config_tag = "devil" report_type = "devil" - antag_flag = ROLE_DEVIL + role_preference = /datum/role_preference/antagonist/devil + antag_datum = /datum/antagonist/devil false_report_weight = 1 protected_jobs = list(JOB_NAME_LAWYER, JOB_NAME_CURATOR, JOB_NAME_CHAPLAIN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_AI, JOB_NAME_CYBORG, JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE) required_players = 0 required_enemies = 1 recommended_enemies = 4 reroll_friendly = 1 - enemy_minimum_age = 0 title_icon = "devil" allowed_special = list(/datum/special_role/traitor) @@ -42,7 +42,7 @@ for(var/j = 0, j < num_devils, j++) if (!antag_candidates.len) break - var/datum/mind/devil = antag_pick(antag_candidates, ROLE_DEVIL) + var/datum/mind/devil = antag_pick(antag_candidates, /datum/role_preference/antagonist/devil) devils += devil devil.special_role = traitor_name devil.restricted_roles = restricted_jobs diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 8e07f35c244..de004e48a54 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -699,15 +699,6 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) log_game("DYNAMIC: [src] passed lowpop_lowimpact requirement: ([living_antags_count] antags of [living_players_count] players - [antag_percent]%)") return FALSE -/// Checks if client age is age or older. -/datum/game_mode/dynamic/proc/check_age(client/C, age) - enemy_minimum_age = age - if(get_remaining_days(C) == 0) - enemy_minimum_age = initial(enemy_minimum_age) - return TRUE // Available in 0 days = available right now = player is old enough to play. - enemy_minimum_age = initial(enemy_minimum_age) - return FALSE - /datum/game_mode/dynamic/make_antag_chance(mob/living/carbon/human/newPlayer) if (GLOB.dynamic_forced_extended) return diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm index 3179f32c974..54d038e1447 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -18,12 +18,10 @@ var/list/mob/candidates = list() /// List of players that were selected for this rule var/list/datum/mind/assigned = list() - /// Preferences flag such as ROLE_WIZARD that need to be turned on for players to be antag - var/antag_flag = null + /// The /datum/role_preference typepath used for this ruleset. + var/role_preference = null /// The antagonist datum that is assigned to the mobs mind on ruleset execution. var/datum/antagonist/antag_datum = null - /// The required minimum account age for this ruleset. - var/minimum_required_age = 7 /// If set, and config flag protect_roles_from_antagonist is false, then the rule will not pick players from these roles. var/list/protected_roles = list() /// If set, rule will deny candidates from those roles always. @@ -55,8 +53,6 @@ var/list/requirements = list(40,30,20,10,10,10,10,10,10,10) /// Reference to the mode, use this instead of SSticker.mode. var/datum/game_mode/dynamic/mode = null - /// If a role is to be considered another for the purpose of banning. - var/antag_flag_override = null /// If a ruleset type which is in this list has been executed, then the ruleset will not be executed. var/list/blocking_rules = list() /// The minimum amount of players required for the rule to be considered. @@ -213,19 +209,19 @@ var/client/client = GET_CLIENT(P) if (!client || !P.mind) // Are they connected? candidates.Remove(P) - else if(!mode.check_age(client, minimum_required_age)) + continue + + if(!client.should_include_for_role( + banning_key = initial(antag_datum.banning_key), + role_preference_key = role_preference, + req_hours = initial(antag_datum.required_living_playtime) + )) candidates.Remove(P) continue + if(P.mind.special_role) // We really don't want to give antag to an antag. candidates.Remove(P) - else if(antag_flag_override) - if(!(antag_flag_override in client.prefs.be_special) || is_banned_from(P.ckey, list(antag_flag_override, ROLE_SYNDICATE))) - candidates.Remove(P) - continue - else - if(!(antag_flag in client.prefs.be_special) || is_banned_from(P.ckey, list(antag_flag, ROLE_SYNDICATE))) - candidates.Remove(P) - continue + continue /// Do your checks if the ruleset is ready to be executed here. /// Should ignore certain checks if forced is TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 375d1163e56..74cf8577ef0 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -9,21 +9,15 @@ if (!P.client || !P.mind || !P.mind.assigned_role) // Are they connected? candidates.Remove(P) continue - if(!mode.check_age(P.client, minimum_required_age)) - candidates.Remove(P) - continue - if(antag_flag_override) - if(!(antag_flag_override in P.client.prefs.be_special) || is_banned_from(P.ckey, list(antag_flag_override, ROLE_SYNDICATE))) - candidates.Remove(P) - continue - else - if(!(antag_flag in P.client.prefs.be_special) || is_banned_from(P.ckey, list(antag_flag, ROLE_SYNDICATE))) - candidates.Remove(P) - continue if (P.mind.assigned_role in restricted_roles) // Does their job allow for it? candidates.Remove(P) - continue - if ((exclusive_roles.len > 0) && !(P.mind.assigned_role in exclusive_roles)) // Is the rule exclusive to their job? + else if(length(exclusive_roles) && !(P.mind.assigned_role in exclusive_roles)) // Is the rule exclusive to their job? + candidates.Remove(P) + else if(!P.client.should_include_for_role( + banning_key = initial(antag_datum.banning_key), + role_preference_key = role_preference, + req_hours = initial(antag_datum.required_living_playtime) + )) candidates.Remove(P) continue @@ -53,7 +47,7 @@ /datum/dynamic_ruleset/latejoin/execute() var/mob/M = pick(candidates) assigned += M.mind - M.mind.special_role = antag_flag + M.mind.special_role = initial(antag_datum.banning_key) M.mind.add_antag_datum(antag_datum) return TRUE @@ -66,7 +60,7 @@ /datum/dynamic_ruleset/latejoin/infiltrator name = "Syndicate Infiltrator" antag_datum = /datum/antagonist/traitor - antag_flag = ROLE_TRAITOR + role_preference = /datum/role_preference/antagonist/traitor protected_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_HEADOFPERSONNEL) restricted_roles = list(JOB_NAME_AI,JOB_NAME_CYBORG) required_candidates = 1 @@ -92,8 +86,7 @@ name = "Provocateur" persistent = TRUE antag_datum = /datum/antagonist/rev/head - antag_flag = ROLE_REV_HEAD - antag_flag_override = ROLE_REV + role_preference = /datum/role_preference/antagonist/revolutionary restricted_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG, JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_HEADOFPERSONNEL, JOB_NAME_CHIEFENGINEER, JOB_NAME_CHIEFMEDICALOFFICER, JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_MASTERATARMS) //NSV13 - added MAA enemy_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG, JOB_NAME_SECURITYOFFICER,JOB_NAME_DETECTIVE,JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_WARDEN) required_enemies = list(2,2,1,1,1,1,1,0,0,0) @@ -125,7 +118,7 @@ var/mob/M = pick(candidates) // This should contain a single player, but in case. if(check_eligible(M.mind)) // Didnt die/run off z-level/get implanted since leaving shuttle. assigned += M.mind - M.mind.special_role = antag_flag + M.mind.special_role = ROLE_REV_HEAD revolution = new() var/datum/antagonist/rev/head/new_head = new() new_head.give_flash = TRUE @@ -168,7 +161,7 @@ /datum/dynamic_ruleset/latejoin/heretic_smuggler name = "Heretic Smuggler" antag_datum = /datum/antagonist/heretic - antag_flag = ROLE_HERETIC + role_preference = /datum/role_preference/antagonist/heretic protected_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_HEADOFPERSONNEL, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) restricted_roles = list(JOB_NAME_AI,JOB_NAME_CYBORG) required_candidates = 1 diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 9aa65b5b481..0c6c3579dd2 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -51,17 +51,14 @@ if (!M.client) // Are they connected? trimmed_list.Remove(M) continue - if(!mode.check_age(M.client, minimum_required_age)) + if(!M.client.should_include_for_role( + banning_key = initial(antag_datum.banning_key), + role_preference_key = role_preference, + poll_ignore_key = role_preference, + req_hours = initial(antag_datum.required_living_playtime) + )) trimmed_list.Remove(M) continue - if(antag_flag_override) - if(!(antag_flag_override in M.client.prefs.be_special) || is_banned_from(M.ckey, list(antag_flag_override, ROLE_SYNDICATE))) - trimmed_list.Remove(M) - continue - else - if(!(antag_flag in M.client.prefs.be_special) || is_banned_from(M.ckey, list(antag_flag, ROLE_SYNDICATE))) - trimmed_list.Remove(M) - continue if (M.mind) if (restrict_ghost_roles && (M.mind.assigned_role in GLOB.exp_specialmap[EXP_TYPE_SPECIAL])) // Are they playing a ghost role? trimmed_list.Remove(M) @@ -114,7 +111,7 @@ message_admins("Polling [possible_volunteers.len] players to apply for the [name] ruleset.") log_game("DYNAMIC: Polling [possible_volunteers.len] players to apply for the [name] ruleset.") - candidates = pollGhostCandidates("The mode is looking for volunteers to become [antag_flag] for [name]", antag_flag, SSticker.mode, antag_flag_override ? antag_flag_override : antag_flag, poll_time = 300) + candidates = pollGhostCandidates("The mode is looking for volunteers to become [initial(antag_datum.name)] for [name]", initial(antag_datum.banning_key), role_preference, poll_time = 300) if(!length(candidates)) message_admins("The ruleset [name] received no applications.") @@ -170,7 +167,7 @@ var/datum/antagonist/new_role = new antag_datum() setup_role(new_role) new_character.mind.add_antag_datum(new_role) - new_character.mind.special_role = antag_flag + new_character.mind.special_role = new_role.banning_key /datum/dynamic_ruleset/midround/from_ghosts/proc/setup_role(datum/antagonist/new_role) return @@ -185,7 +182,7 @@ name = "Syndicate Sleeper Agent" midround_ruleset_style = MIDROUND_RULESET_STYLE_LIGHT antag_datum = /datum/antagonist/traitor - antag_flag = ROLE_TRAITOR + role_preference = /datum/role_preference/midround_living/traitor protected_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) restricted_roles = list(JOB_NAME_CYBORG, JOB_NAME_AI, "Positronic Brain") required_candidates = 1 @@ -239,7 +236,7 @@ name = "Malfunctioning AI" midround_ruleset_style = MIDROUND_RULESET_STYLE_HEAVY antag_datum = /datum/antagonist/traitor - antag_flag = ROLE_MALF + role_preference = /datum/role_preference/midround_living/malfunctioning_ai enemy_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_SCIENTIST, JOB_NAME_CHEMIST, JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_CHIEFENGINEER) exclusive_roles = list(JOB_NAME_AI) required_enemies = list(4,4,4,4,4,4,2,2,2,0) @@ -274,7 +271,7 @@ var/mob/living/silicon/ai/M = pick_n_take(candidates) assigned += M.mind var/datum/antagonist/traitor/AI = new - M.mind.special_role = antag_flag + M.mind.special_role = "Malf AI" M.mind.add_antag_datum(AI) if(prob(ion_announce)) priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", ANNOUNCER_IONSTORM) @@ -294,7 +291,7 @@ name = "Wizard" midround_ruleset_style = MIDROUND_RULESET_STYLE_HEAVY antag_datum = /datum/antagonist/wizard - antag_flag = ROLE_WIZARD + role_preference = /datum/role_preference/midround_ghost/wizard enemy_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_DETECTIVE, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_RESEARCHDIRECTOR) //RD doesn't believe in magic required_enemies = list(2,2,1,1,1,1,1,0,0,0) required_candidates = 1 @@ -325,7 +322,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/nuclear name = "Nuclear Assault" midround_ruleset_style = MIDROUND_RULESET_STYLE_HEAVY - antag_flag = ROLE_OPERATIVE + role_preference = /datum/role_preference/midround_ghost/nuclear_operative antag_datum = /datum/antagonist/nukeop enemy_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG, JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) required_enemies = list(3,3,3,3,3,2,1,1,0,0) @@ -351,8 +348,8 @@ return ..() /datum/dynamic_ruleset/midround/from_ghosts/nuclear/finish_setup(mob/new_character, index) - new_character.mind.special_role = "Nuclear Operative" - new_character.mind.assigned_role = "Nuclear Operative" + new_character.mind.special_role = ROLE_OPERATIVE + new_character.mind.assigned_role = ROLE_OPERATIVE if (index == 1) // Our first guy is the leader var/datum/antagonist/nukeop/leader/new_role = new nuke_team = new_role.nuke_team @@ -370,7 +367,7 @@ name = "Blob" midround_ruleset_style = MIDROUND_RULESET_STYLE_HEAVY antag_datum = /datum/antagonist/blob - antag_flag = ROLE_BLOB + role_preference = /datum/role_preference/midround_ghost/blob enemy_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_DETECTIVE, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) required_enemies = list(2,2,1,1,1,1,1,0,0,0) required_candidates = 1 @@ -394,7 +391,7 @@ name = "Alien Infestation" midround_ruleset_style = MIDROUND_RULESET_STYLE_HEAVY antag_datum = /datum/antagonist/xeno - antag_flag = ROLE_ALIEN + role_preference = /datum/role_preference/midround_ghost/xenomorph enemy_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_DETECTIVE, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) required_enemies = list(2,2,2,1,1,1,1,0,0,0) required_candidates = 1 @@ -442,8 +439,7 @@ name = "Nightmare" midround_ruleset_style = MIDROUND_RULESET_STYLE_LIGHT antag_datum = /datum/antagonist/nightmare - antag_flag = "Nightmare" - antag_flag_override = ROLE_ALIEN + role_preference = /datum/role_preference/midround_ghost/space_dragon enemy_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_DETECTIVE, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) required_enemies = list(2,2,1,1,1,1,1,0,0,0) required_candidates = 1 @@ -490,8 +486,7 @@ /datum/dynamic_ruleset/midround/from_ghosts/abductors name = "Abductors" midround_ruleset_style = MIDROUND_RULESET_STYLE_HEAVY - antag_flag = "Abductor" - antag_flag_override = ROLE_ABDUCTOR + role_preference = /datum/role_preference/midround_ghost/abductor enemy_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_DETECTIVE, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) required_enemies = list(2,2,1,1,1,1,1,0,0,0) required_candidates = 2 @@ -529,8 +524,7 @@ name = "Revenant" midround_ruleset_style = MIDROUND_RULESET_STYLE_LIGHT antag_datum = /datum/antagonist/revenant - antag_flag = "Revenant" - antag_flag_override = ROLE_REVENANT + role_preference = /datum/role_preference/midround_ghost/revenant enemy_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_DETECTIVE, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) required_enemies = list(2,2,1,1,1,1,1,0,0,0) required_candidates = 1 @@ -581,7 +575,7 @@ /datum/dynamic_ruleset/midround/pirates name = "Space Pirates" midround_ruleset_style = MIDROUND_RULESET_STYLE_HEAVY - antag_flag = "Space Pirates" + role_preference = /datum/role_preference/midround_ghost/space_pirate required_type = /mob/dead/observer enemy_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_DETECTIVE, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) required_enemies = list(2,2,1,1,1,1,1,0,0,0) @@ -608,7 +602,7 @@ name = "Obsessed" midround_ruleset_style = MIDROUND_RULESET_STYLE_LIGHT antag_datum = /datum/antagonist/obsessed - antag_flag = ROLE_OBSESSED + role_preference = /datum/role_preference/midround_living/obsessed restricted_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG, "Positronic Brain") enemy_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_DETECTIVE, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) required_enemies = list(2,2,1,1,1,1,1,0,0,0) @@ -625,7 +619,6 @@ !candidate.getorgan(/obj/item/organ/brain) \ || candidate.mind.has_antag_datum(/datum/antagonist/obsessed) \ || candidate.stat == DEAD \ - || !(ROLE_OBSESSED in candidate.client?.prefs?.be_special) \ || !SSjob.GetJob(candidate.mind.assigned_role) \ || (candidate.mind.assigned_role in GLOB.nonhuman_positions) \ ) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 569319b8cf8..fe384067216 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -7,9 +7,8 @@ /datum/dynamic_ruleset/roundstart/traitor name = "Traitors" - antag_flag = ROLE_TRAITOR + role_preference = /datum/role_preference/antagonist/traitor antag_datum = /datum/antagonist/traitor - minimum_required_age = 0 protected_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) restricted_roles = list(JOB_NAME_CYBORG) required_candidates = 1 @@ -41,8 +40,8 @@ /datum/dynamic_ruleset/roundstart/traitorbro name = "Blood Brothers" - antag_flag = ROLE_BROTHER - antag_datum = /datum/antagonist/brother/ + role_preference = /datum/role_preference/antagonist/blood_brother + antag_datum = /datum/antagonist/brother protected_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) restricted_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG) required_candidates = 2 @@ -66,7 +65,7 @@ var/mob/bro = pick_n_take(candidates) assigned += bro.mind team.add_member(bro.mind) - bro.mind.special_role = "brother" + bro.mind.special_role = ROLE_BROTHER bro.mind.restricted_roles = restricted_roles pre_brother_teams += team return TRUE @@ -89,7 +88,7 @@ /datum/dynamic_ruleset/roundstart/changeling name = "Changelings" - antag_flag = ROLE_CHANGELING + role_preference = /datum/role_preference/antagonist/changeling antag_datum = /datum/antagonist/changeling protected_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) restricted_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG) @@ -126,7 +125,7 @@ /datum/dynamic_ruleset/roundstart/heretics name = "Heretics" - antag_flag = ROLE_HERETIC + role_preference = /datum/role_preference/antagonist/heretic antag_datum = /datum/antagonist/heretic protected_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) restricted_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG) @@ -170,10 +169,9 @@ // Dynamic is a wonderful thing that adds wizards to every round and then adds even more wizards during the round. /datum/dynamic_ruleset/roundstart/wizard name = "Wizard" - antag_flag = ROLE_WIZARD + role_preference = /datum/role_preference/antagonist/wizard antag_datum = /datum/antagonist/wizard flags = HIGH_IMPACT_RULESET | NO_OTHER_ROUNDSTARTS_RULESET - minimum_required_age = 14 restricted_roles = list(JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) // Just to be sure that a wizard getting picked won't ever imply a Captain or HoS not getting drafted required_candidates = 1 weight = 2 @@ -214,9 +212,8 @@ /datum/dynamic_ruleset/roundstart/bloodcult name = "Blood Cult" - antag_flag = ROLE_CULTIST + role_preference = /datum/role_preference/antagonist/blood_cultist antag_datum = /datum/antagonist/cult - minimum_required_age = 14 restricted_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG, JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_CHAPLAIN, JOB_NAME_HEADOFPERSONNEL) required_candidates = 2 weight = 3 @@ -269,10 +266,9 @@ /datum/dynamic_ruleset/roundstart/nuclear name = "Nuclear Emergency" - antag_flag = ROLE_OPERATIVE + role_preference = /datum/role_preference/antagonist/nuclear_operative antag_datum = /datum/antagonist/nukeop var/datum/antagonist/antag_leader_datum = /datum/antagonist/nukeop/leader - minimum_required_age = 14 restricted_roles = list(JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) // Just to be sure that a nukie getting picked won't ever imply a Captain or HoS not getting drafted required_candidates = 5 weight = 3 @@ -295,8 +291,8 @@ break var/mob/M = pick_n_take(candidates) assigned += M.mind - M.mind.assigned_role = "Nuclear Operative" - M.mind.special_role = "Nuclear Operative" + M.mind.assigned_role = ROLE_OPERATIVE + M.mind.special_role = ROLE_OPERATIVE return TRUE /datum/dynamic_ruleset/roundstart/nuclear/execute() @@ -354,10 +350,8 @@ /datum/dynamic_ruleset/roundstart/revs name = "Revolution" persistent = TRUE - antag_flag = ROLE_REV_HEAD - antag_flag_override = ROLE_REV + role_preference = /datum/role_preference/antagonist/revolutionary antag_datum = /datum/antagonist/rev/head - minimum_required_age = 14 restricted_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG, JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_HEADOFPERSONNEL, JOB_NAME_CHIEFENGINEER, JOB_NAME_CHIEFMEDICALOFFICER, JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_MASTERATARMS) //NSV13 - added MAA required_candidates = 3 weight = 3 @@ -383,7 +377,7 @@ var/mob/M = pick_n_take(candidates) assigned += M.mind M.mind.restricted_roles = restricted_roles - M.mind.special_role = antag_flag + M.mind.special_role = ROLE_REV_HEAD return TRUE /datum/dynamic_ruleset/roundstart/revs/execute() @@ -437,7 +431,6 @@ /datum/dynamic_ruleset/roundstart/extended name = "Extended" - antag_flag = null antag_datum = null restricted_roles = list() required_candidates = 0 @@ -486,7 +479,7 @@ /datum/dynamic_ruleset/roundstart/devil name = "Devil" - antag_flag = ROLE_DEVIL + role_preference = /datum/role_preference/antagonist/devil antag_datum = /datum/antagonist/devil restricted_roles = list(JOB_NAME_LAWYER, JOB_NAME_CURATOR, JOB_NAME_CHAPLAIN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_AI, JOB_NAME_CYBORG, JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE) required_candidates = 1 @@ -574,7 +567,7 @@ /datum/dynamic_ruleset/roundstart/clockcult name = "Clockwork Cult" - antag_flag = ROLE_SERVANT_OF_RATVAR + role_preference = /datum/role_preference/antagonist/clock_cultist antag_datum = /datum/antagonist/servant_of_ratvar restricted_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG, JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE,JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_CHAPLAIN, JOB_NAME_HEADOFPERSONNEL) required_candidates = 4 @@ -636,7 +629,7 @@ /datum/dynamic_ruleset/roundstart/incursion name = "Incursion" - antag_flag = ROLE_INCURSION + role_preference = /datum/role_preference/antagonist/incursionist antag_datum = /datum/antagonist/incursion protected_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE,JOB_NAME_CAPTAIN, JOB_NAME_HEADOFPERSONNEL, JOB_NAME_HEADOFSECURITY, JOB_NAME_CHIEFENGINEER, JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_CHIEFMEDICALOFFICER) restricted_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG) @@ -688,7 +681,7 @@ /datum/dynamic_ruleset/roundstart/hivemind name = "Assimilation" - antag_flag = ROLE_HIVE + role_preference = /datum/role_preference/antagonist/hivemind_host antag_datum = /datum/antagonist/hivemind protected_roles = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE,JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) restricted_roles = list(JOB_NAME_AI, JOB_NAME_CYBORG) diff --git a/code/game/gamemodes/dynamic/dynamic_simulations.dm b/code/game/gamemodes/dynamic/dynamic_simulations.dm index 4b48955ce75..acba5d1cc42 100644 --- a/code/game/gamemodes/dynamic/dynamic_simulations.dm +++ b/code/game/gamemodes/dynamic/dynamic_simulations.dm @@ -29,11 +29,6 @@ var/datum/client_interface/mock_client = new var/datum/preferences/prefs = new - var/list/be_special = list() - for (var/special_role in GLOB.special_roles) - be_special += special_role - - prefs.be_special = be_special mock_client.prefs = prefs mock_new_player.mock_client = mock_client diff --git a/code/game/gamemodes/dynamic/readme.md b/code/game/gamemodes/dynamic/readme.md index 7faa5c2d870..9af317301d8 100644 --- a/code/game/gamemodes/dynamic/readme.md +++ b/code/game/gamemodes/dynamic/readme.md @@ -144,7 +144,6 @@ Rulesets have the following variables notable to developers and those interested - Traitor: `antag_cap = list("denominator" = 24)`. This means that for every 24 players, 1 traitor will be added (assuming no scaling). - Nuclear Emergency: `antag_cap = list("denominator" = 18, "offset" = 1)`. For every 18 players, 1 nuke op will be added. Starts at 1, meaning at 30 players, 3 nuke ops will be created, rather than 2. - Revolution: `antag_cap = 3`. There will always be 3 rev-heads, no matter what. -- `minimum_required_age` - The minimum age in order to apply for the ruleset. - `weight` - How likely this ruleset is to be picked. A higher weight results in a higher chance of drafting. - `cost` - The initial cost of the ruleset. This cost is taken from either the roundstart or midround budget, depending on the ruleset. - `scaling_cost` - Cost for every *additional* application of this ruleset. diff --git a/code/game/gamemodes/eldritch_cult/eldritch_cult.dm b/code/game/gamemodes/eldritch_cult/eldritch_cult.dm index 307b1be0893..c169e11ae73 100644 --- a/code/game/gamemodes/eldritch_cult/eldritch_cult.dm +++ b/code/game/gamemodes/eldritch_cult/eldritch_cult.dm @@ -2,7 +2,8 @@ name = "heresy" config_tag = "heresy" report_type = "heresy" - antag_flag = ROLE_HERETIC + role_preference = /datum/role_preference/antagonist/heretic + antag_datum = /datum/antagonist/heretic false_report_weight = 5 protected_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) restricted_jobs = list(JOB_NAME_AI, JOB_NAME_CYBORG) @@ -10,7 +11,6 @@ required_enemies = 1 recommended_enemies = 4 reroll_friendly = 1 - enemy_minimum_age = 0 allowed_special = list(/datum/special_role/traitor/higher_chance) @@ -44,7 +44,7 @@ for(var/i in 1 to num_ecult) if(!antag_candidates.len) break - var/datum/mind/cultie = antag_pick(antag_candidates, ROLE_HERETIC) + var/datum/mind/cultie = antag_pick(antag_candidates, /datum/role_preference/antagonist/heretic) antag_candidates -= cultie cultie.special_role = ROLE_HERETIC cultie.restricted_roles = restricted_jobs diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 53985b501c7..80576b5813e 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -28,13 +28,15 @@ var/maximum_players = -1 // -1 is no maximum, positive numbers limit the selection of a mode on overstaffed stations var/required_enemies = 0 var/recommended_enemies = 0 - var/antag_flag = null //preferences flag such as BE_WIZARD that need to be turned on for players to be antag + /// The role preference used to poll players. + var/role_preference + /// The antag datum typepath primarily spawned by this gamemode. Used for checking the banning key and required playtime. + var/datum/antagonist/antag_datum var/mob/living/living_antag_player = null var/datum/game_mode/replacementmode = null var/round_converted = 0 //0: round not converted, 1: round going to convert, 2: round converted var/reroll_friendly //During mode conversion only these are in the running var/continuous_sanity_checked //Catches some cases where config options could be used to suggest that modes without antagonists should end when all antagonists die - var/enemy_minimum_age = 7 //How many days must players have been playing before they can play this antagonist var/list/allowed_special = list() //Special roles that can spawn (Add things like /datum/antagonist/special/undercover for them to be able to spawn during this gamemode) var/list/active_specials = list() //Special roles that have spawned, and can now spawn late @@ -87,7 +89,7 @@ return 1 /datum/game_mode/proc/setup_antag_candidates() - antag_candidates = get_players_for_role(antag_flag) + antag_candidates = get_players_for_role(antag_datum, role_preference) ///Attempts to select players for special roles the mode might have. /datum/game_mode/proc/pre_setup() @@ -121,11 +123,11 @@ if(candidates.len == 0) return //No more candidates, end the selection process, and active specials at this time will be handled by latejoins or not included var/mob/person - if(special.special_role_flag) - person = antag_pick(candidates, special.special_role_flag) + if(special.use_antag_rep) + person = antag_pick(candidates, special.preference_type) else person = pick_n_take(candidates) - if(is_banned_from(person.ckey, special.preference_type)) + if(is_banned_from(person.ckey, special.banning_key)) continue if(!person) continue @@ -205,7 +207,7 @@ continue if(!is_special_type(M, subantag.attached_antag_datum)) continue - if(is_banned_from(M.ckey, list(subantag.preference_type))) + if(is_banned_from(M.ckey, subantag.banning_key)) continue count++ if(count >= subantag.max_amount) @@ -256,7 +258,7 @@ var/list/antag_candidates = list() for(var/mob/living/carbon/human/H in living_crew) - if(H.client && (H.client.prefs.toggles & PREFTOGGLE_MIDROUND_ANTAG) && !is_centcom_level(H.z)) + if(H.client && !is_centcom_level(H.z)) antag_candidates += H if(!antag_candidates) @@ -409,9 +411,12 @@ if(!station_goals.len) return . = "
Special Orders for [station_name()]:
" + var/list/goal_reports = list() for(var/datum/station_goal/station_goal in station_goals) station_goal.on_report() - . += station_goal.get_report() + goal_reports += station_goal.get_report() + + . += goal_reports.Join("
") return // This is a frequency selection system. You may imagine it like a raffle where each player can have some number of tickets. The more tickets you have the more likely you are to @@ -426,7 +431,9 @@ // The odds become: // Player A: 150 / 250 = 0.6 = 60% // Player B: 100 / 250 = 0.4 = 40% -/datum/game_mode/proc/antag_pick(list/datum/candidates, role) +/// The role_preference argument is optional, but candidates will not use their PERSONAL antag rep if the preference is disabled, rather only using the "base" antag rep. +/// This is mainly used in the situation where someone is drafted for a ruleset despite having the preference disabled (a feature of gamemodes) - we don't want to spend their rep. +/datum/game_mode/proc/antag_pick(list/datum/candidates, role_preference = null) if(!CONFIG_GET(flag/use_antag_rep)) // || candidates.len <= 1) return pick(candidates) @@ -449,7 +456,10 @@ if(!player) candidates -= mind continue - total_tickets += min(((role in player.client.prefs.be_special) ? SSpersistence.antag_rep[p_ckey] : 0) + DEFAULT_ANTAG_TICKETS, MAX_TICKETS_PER_ROLL) + var/role_enabled = TRUE + if(role_preference && player.client) + role_enabled = player.client.role_preference_enabled(role_preference) + total_tickets += min((role_enabled ? SSpersistence.antag_rep[p_ckey] : 0) + DEFAULT_ANTAG_TICKETS, MAX_TICKETS_PER_ROLL) var/antag_select = rand(1,total_tickets) var/current = 1 @@ -458,9 +468,11 @@ p_ckey = ckey(mind.key) var/mob/dead/new_player/player = get_mob_by_ckey(p_ckey) p_rep = SSpersistence.antag_rep[p_ckey] - + var/role_enabled = TRUE + if(role_preference && player.client) + role_enabled = player.client.role_preference_enabled(role_preference) var/previous = current - var/spend = min(((role in player.client.prefs.be_special) ? p_rep : 0) + DEFAULT_ANTAG_TICKETS, MAX_TICKETS_PER_ROLL) + var/spend = min((role_enabled ? p_rep : 0) + DEFAULT_ANTAG_TICKETS, MAX_TICKETS_PER_ROLL) current += spend if(antag_select >= previous && antag_select <= (current-1)) @@ -471,7 +483,9 @@ WARNING("Something has gone terribly wrong. /datum/game_mode/proc/antag_pick failed to select a candidate. Falling back to pick()") return pick(candidates) -/datum/game_mode/proc/get_players_for_role(role) +/datum/game_mode/proc/get_players_for_role(datum/antagonist/antag_datum, role_preference = null) + var/banning_key = ispath(antag_datum, /datum/antagonist) ? initial(antag_datum.banning_key) : null + var/req_hours = ispath(antag_datum, /datum/antagonist) ? initial(antag_datum.required_living_playtime) : 0 var/list/players = list() var/list/candidates = list() var/list/drafted = list() @@ -487,11 +501,13 @@ players = shuffle(players) for(var/mob/dead/new_player/player in players) - if(player.client && player.ready == PLAYER_READY_TO_PLAY) - if(role in player.client.prefs.be_special) - if(!is_banned_from(player.ckey, list(role, ROLE_SYNDICATE)) && !QDELETED(player)) - if(age_check(player.client)) //Must be older than the minimum age - candidates += player.mind // Get a list of all the people who want to be the antagonist for this round + if(!QDELETED(player) && player.client && player.ready == PLAYER_READY_TO_PLAY) + if(player.client.should_include_for_role( + banning_key = banning_key, + role_preference_key = role_preference, + req_hours = req_hours + )) + candidates += player.mind // Get a list of all the people who want to be the antagonist for this round if(restricted_jobs) for(var/datum/mind/player in candidates) @@ -501,10 +517,14 @@ if(candidates.len < recommended_enemies) for(var/mob/dead/new_player/player in players) - if(player.client && player.ready == PLAYER_READY_TO_PLAY) - if(!(role in player.client.prefs.be_special)) // We don't have enough people who want to be antagonist, make a separate list of people who don't want to be one - if(!is_banned_from(player.ckey, list(role, ROLE_SYNDICATE)) && !QDELETED(player)) - drafted += player.mind + if(!QDELETED(player) && player.client && player.ready == PLAYER_READY_TO_PLAY) + // We don't have enough people who want to be antagonist, make a separate list of people who don't want to be one but are otherwise eligible + if(player.client.should_include_for_role( + banning_key = banning_key, + role_preference_key = null, + req_hours = req_hours + ) && !player.client.role_preference_enabled(role_preference)) + drafted += player.mind if(restricted_jobs) for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist @@ -547,15 +567,15 @@ // Less if there are not enough valid players in the game entirely to make recommended_enemies. -/datum/game_mode/proc/get_alive_non_antagonsist_players_for_role(role, list/restricted_roles) +/datum/game_mode/proc/get_alive_non_antagonsist_players_for_role(datum/antagonist/antag_datum, role_preference, list/restricted_roles) + var/banning_key = ispath(antag_datum, /datum/antagonist) ? initial(antag_datum.banning_key) : null + var/req_hours = ispath(antag_datum, /datum/antagonist) ? initial(antag_datum.required_living_playtime) : 0 var/list/candidates = list() for(var/mob/living/carbon/human/player in GLOB.player_list) - if(player.client && is_station_level(player.z)) - if(role in player.client.prefs.be_special) - if(!is_banned_from(player.ckey, list(role, ROLE_SYNDICATE)) && !QDELETED(player)) - if(age_check(player.client) && !player.mind.special_role) //Must be older than the minimum age - candidates += player.mind // Get a list of all the people who want to be the antagonist for this round + if(!QDELETED(player) && player.client && is_station_level(player.z) && !player.mind.special_role) + if(player.client.should_include_for_role(banning_key = banning_key, role_preference_key = role_preference, req_hours = req_hours)) + candidates += player.mind // Get a list of all the people who want to be the antagonist for this round // Get a list of all the people who want to be the antagonist for this round var/restricted_list = length(restricted_roles) ? restricted_roles : restricted_jobs if(restricted_list) @@ -725,25 +745,6 @@ for (var/C in GLOB.admins) to_chat(C, msg.Join()) -//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1 -/datum/game_mode/proc/age_check(client/C) - if(get_remaining_days(C) == 0) - return 1 //Available in 0 days = available right now = player is old enough to play. - return 0 - - -/datum/game_mode/proc/get_remaining_days(client/C) - if(!C) - return 0 - if(!CONFIG_GET(flag/use_age_restriction_for_jobs)) - return 0 - if(!isnum_safe(C.player_age)) - return 0 //This is only a number if the db connection is established, otherwise it is text: "Requires database", meaning these restrictions cannot be enforced - if(!isnum_safe(enemy_minimum_age)) - return 0 - - return max(0, enemy_minimum_age - C.player_age) - /datum/game_mode/proc/remove_antag_for_borging(datum/mind/newborgie) SSticker.mode.remove_cultist(newborgie, 0, 0) remove_servant_of_ratvar(newborgie) diff --git a/code/game/gamemodes/gangs/gangs.dm b/code/game/gamemodes/gangs/gangs.dm index 7d1187ef1d9..f0e9536cdae 100644 --- a/code/game/gamemodes/gangs/gangs.dm +++ b/code/game/gamemodes/gangs/gangs.dm @@ -5,12 +5,12 @@ GLOBAL_LIST_EMPTY(gangs) /datum/game_mode/gang name = "gang war" config_tag = "gang" - antag_flag = ROLE_GANG + role_preference = /datum/role_preference/antagonist/gangster + antag_datum = /datum/antagonist/gang restricted_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_AI, JOB_NAME_CYBORG,JOB_NAME_CAPTAIN, JOB_NAME_HEADOFPERSONNEL, JOB_NAME_HEADOFSECURITY) required_players = 15 //NSV13 - down from 30 required_enemies = 1 //NSV13 - down from 2 recommended_enemies = 2 //NSV13 - down from 3 - enemy_minimum_age = 14 announce_span = "danger" announce_text = "A violent turf war has erupted on the station!\n\ diff --git a/code/game/gamemodes/hivemind/hivemind.dm b/code/game/gamemodes/hivemind/hivemind.dm index 4fa0b6095c0..90bf74f93cc 100644 --- a/code/game/gamemodes/hivemind/hivemind.dm +++ b/code/game/gamemodes/hivemind/hivemind.dm @@ -4,7 +4,8 @@ GLOBAL_LIST_EMPTY(hivehosts) name = "assimilation" config_tag = "hivemind" report_type = "hivemind" - antag_flag = ROLE_HIVE + role_preference = /datum/role_preference/antagonist/hivemind_host + antag_datum = /datum/antagonist/hivemind false_report_weight = 5 protected_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) restricted_jobs = list(JOB_NAME_AI, JOB_NAME_CYBORG) @@ -12,7 +13,6 @@ GLOBAL_LIST_EMPTY(hivehosts) required_enemies = 3 recommended_enemies = 3 reroll_friendly = 1 - enemy_minimum_age = 0 announce_span = "danger" announce_text = "The hosts of several psionic hiveminds have infiltrated the station and are looking to assimilate the crew!\n\ @@ -62,7 +62,7 @@ GLOBAL_LIST_EMPTY(hivehosts) for(var/j = 0, j < num_hosts, j++) if (!antag_candidates.len) break - var/datum/mind/host = antag_pick(antag_candidates, ROLE_HIVE) + var/datum/mind/host = antag_pick(antag_candidates, /datum/role_preference/antagonist/hivemind_host) hosts += host host.special_role = ROLE_HIVE host.restricted_roles = restricted_jobs diff --git a/code/game/gamemodes/incursion/incursion.dm b/code/game/gamemodes/incursion/incursion.dm index adf8979f516..c5324e52111 100644 --- a/code/game/gamemodes/incursion/incursion.dm +++ b/code/game/gamemodes/incursion/incursion.dm @@ -7,9 +7,9 @@ config_tag = "incursion" restricted_jobs = list(JOB_NAME_AI, JOB_NAME_CYBORG) protected_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE,JOB_NAME_CAPTAIN, JOB_NAME_HEADOFPERSONNEL, JOB_NAME_HEADOFSECURITY, JOB_NAME_CHIEFENGINEER, JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_CHIEFMEDICALOFFICER, JOB_NAME_MASTERATARMS) //NSV13 - added MAA - antag_flag = ROLE_INCURSION + role_preference = /datum/role_preference/antagonist/incursionist + antag_datum = /datum/antagonist/incursion false_report_weight = 10 - enemy_minimum_age = 0 announce_span = "danger" announce_text = "A large force of syndicate operatives have infiltrated the ranks of the station and wish to take it by force!\n\ @@ -30,8 +30,6 @@ if(CONFIG_GET(flag/protect_assistant_from_antagonist)) restricted_jobs += JOB_NAME_ASSISTANT - var/list/datum/mind/possible_traitors = get_players_for_role(ROLE_INCURSION) - var/datum/team/incursion/team = new var/cost_base = CONFIG_GET(number/incursion_cost_base) var/cost_increment = CONFIG_GET(number/incursion_cost_increment) @@ -41,11 +39,10 @@ team_size = CLAMP(team_size, CONFIG_GET(number/incursion_count_min), CONFIG_GET(number/incursion_count_max)) for(var/k = 1 to team_size) - var/datum/mind/incursion = antag_pick(possible_traitors, ROLE_INCURSION) + var/datum/mind/incursion = antag_pick(antag_candidates, /datum/role_preference/antagonist/incursionist) if(!incursion) message_admins("Ran out of people to put in an incursion team, wanted [team_size] but only got [k-1]") break - possible_traitors -= incursion antag_candidates -= incursion team.add_member(incursion) incursion.special_role = ROLE_INCURSION diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 281f3507fe3..9d2880be163 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -8,8 +8,8 @@ required_players = 30 // 30 players - 3 players to be the nuke ops = 27 players remaining required_enemies = 2 recommended_enemies = 5 - antag_flag = ROLE_OPERATIVE - enemy_minimum_age = 14 + role_preference = /datum/role_preference/antagonist/nuclear_operative + antag_datum = /datum/antagonist/nukeop announce_span = "danger" announce_text = "Syndicate forces are approaching the station in an attempt to destroy it!\n\ @@ -31,7 +31,7 @@ var/n_agents = min(round(num_players() / 10), antag_candidates.len, agents_possible) if(n_agents >= required_enemies) for(var/i = 0, i < n_agents, ++i) - var/datum/mind/new_op = antag_pick(antag_candidates, ROLE_OPERATIVE) + var/datum/mind/new_op = antag_pick(antag_candidates, /datum/role_preference/antagonist/nuclear_operative) pre_nukeops += new_op new_op.assigned_role = "Nuclear Operative" new_op.special_role = "Nuclear Operative" @@ -160,7 +160,7 @@ E.implant(H) var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(H) W.implant(H) - H.faction |= ROLE_SYNDICATE + H.faction |= FACTION_SYNDICATE H.update_icons() /datum/outfit/syndicate/full diff --git a/code/game/gamemodes/overthrow/overthrow.dm b/code/game/gamemodes/overthrow/overthrow.dm index 0783c862f5e..9fd0cd3863e 100644 --- a/code/game/gamemodes/overthrow/overthrow.dm +++ b/code/game/gamemodes/overthrow/overthrow.dm @@ -3,7 +3,8 @@ name = "overthrow" config_tag = "overthrow" report_type = "overthrow" - antag_flag = ROLE_OVERTHROW + role_preference = /datum/role_preference/antagonist/traitor // use traitor role pref + antag_datum = /datum/antagonist/overthrow restricted_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_AI, JOB_NAME_CYBORG,JOB_NAME_CAPTAIN, JOB_NAME_HEADOFPERSONNEL, JOB_NAME_HEADOFSECURITY, JOB_NAME_CHIEFENGINEER, JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_CHIEFMEDICALOFFICER, JOB_NAME_MASTERATARMS) //NSV13 - added MAA required_players = 20 // the core idea is of a swift, bloodless coup, so it shouldn't be as chaotic as revs. required_enemies = 2 // minimum two teams, otherwise it's just nerfed revs. @@ -28,7 +29,7 @@ for (var/i in 1 to sleeping_agents) if (!antag_candidates.len) break - var/datum/mind/sleeping_agent = antag_pick(antag_candidates, ROLE_OVERTHROW) + var/datum/mind/sleeping_agent = antag_pick(antag_candidates, /datum/role_preference/antagonist/traitor) antag_candidates -= sleeping_agent initial_agents += sleeping_agent sleeping_agent.restricted_roles = restricted_jobs diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 0ff58d3c82b..a635784064a 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -11,14 +11,14 @@ name = "revolution" config_tag = "revolution" report_type = "revolution" - antag_flag = ROLE_REV + role_preference = /datum/role_preference/antagonist/revolutionary + antag_datum = /datum/antagonist/rev/head false_report_weight = 10 restricted_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_AI, JOB_NAME_CYBORG,JOB_NAME_CAPTAIN, JOB_NAME_HEADOFPERSONNEL, JOB_NAME_HEADOFSECURITY, JOB_NAME_CHIEFENGINEER, JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_CHIEFMEDICALOFFICER, JOB_NAME_MASTERATARMS) //NSV13 - added MAA required_jobs = list(list(JOB_NAME_CAPTAIN=1),list(JOB_NAME_HEADOFPERSONNEL=1),list(JOB_NAME_HEADOFSECURITY=1),list(JOB_NAME_CHIEFENGINEER=1),list(JOB_NAME_RESEARCHDIRECTOR=1),list(JOB_NAME_CHIEFMEDICALOFFICER=1),list(JOB_NAME_MASTERATARMS=1)) //Any head present //NSV13 - added MAA required_players = 30 required_enemies = 2 recommended_enemies = 3 - enemy_minimum_age = 14 title_icon = "revolution" announce_span = "danger" @@ -55,7 +55,7 @@ for (var/i=1 to max_headrevs) if (antag_candidates.len==0) break - var/datum/mind/lenin = antag_pick(antag_candidates, ROLE_REV_HEAD) + var/datum/mind/lenin = antag_pick(antag_candidates, /datum/role_preference/antagonist/revolutionary) antag_candidates -= lenin headrev_candidates += lenin lenin.restricted_roles = restricted_jobs diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 41caf951879..93160201f68 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -29,7 +29,7 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) //items that shouldn't spawn on the floor because they would bug or act weird var/static/list/spawn_forbidden = list( /obj/item/tk_grab, /obj/item/implant, // not implanter, the actual thing that is inside you - /obj/item/assembly, /obj/item/onetankbomb, /obj/item/pda/ai, + /obj/item/assembly, /obj/item/onetankbomb, /obj/item/small_delivery, /obj/item/projectile, /obj/item/borg/sight, /obj/item/borg/stun, /obj/item/robot_module) diff --git a/code/game/gamemodes/traitor/double_agents.dm b/code/game/gamemodes/traitor/double_agents.dm index 7e3db6e86c4..b5b6f9bbecc 100644 --- a/code/game/gamemodes/traitor/double_agents.dm +++ b/code/game/gamemodes/traitor/double_agents.dm @@ -12,11 +12,11 @@ recommended_enemies = 8 reroll_friendly = 0 traitor_name = "Nanotrasen Internal Affairs Agent" - antag_flag = ROLE_INTERNAL_AFFAIRS + antag_datum = /datum/antagonist/traitor/internal_affairs + role_preference = /datum/role_preference/antagonist/internal_affairs traitors_possible = 10 //hard limit on traitors if scaling is turned off num_modifier = 4 // Four additional traitors - antag_datum = /datum/antagonist/traitor/internal_affairs announce_text = "There are Nanotrasen Internal Affairs Agents trying to kill each other!\n\ IAA: Eliminate your targets and protect yourself!\n\ diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index b87f81f8570..30a6cea5124 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -9,7 +9,8 @@ name = "traitor" config_tag = "traitor" report_type = "traitor" - antag_flag = ROLE_TRAITOR + role_preference = /datum/role_preference/antagonist/traitor + antag_datum = /datum/antagonist/traitor false_report_weight = 20 //Reports of traitors are pretty common. restricted_jobs = list(JOB_NAME_CYBORG)//They are part of the AI if he is traitor so are they, they use to get double chances protected_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_PILOT, JOB_NAME_MASTERATARMS) //NSV13 added pilots and master at arms @@ -17,7 +18,6 @@ required_enemies = 1 recommended_enemies = 4 reroll_friendly = 1 - enemy_minimum_age = 0 announce_span = "danger" announce_text = "There are Syndicate agents on the station!\n\ @@ -29,7 +29,6 @@ var/list/datum/mind/pre_traitors = list() var/traitors_possible = 4 //hard limit on traitors if scaling is turned off var/num_modifier = 0 // Used for gamemodes, that are a child of traitor, that need more than the usual. - var/antag_datum = /datum/antagonist/traitor //what type of antag to create var/traitors_required = TRUE //Will allow no traitors @@ -55,7 +54,7 @@ for(var/j = 0, j < num_traitors, j++) if (!antag_candidates.len) break - var/datum/mind/traitor = antag_pick(antag_candidates, ROLE_TRAITOR) + var/datum/mind/traitor = antag_pick(antag_candidates, /datum/role_preference/antagonist/traitor) pre_traitors += traitor traitor.special_role = traitor_name traitor.restricted_roles = restricted_jobs @@ -90,11 +89,13 @@ if((SSticker.mode.traitors.len + pre_traitors.len) >= traitorcap) //Upper cap for number of latejoin antagonists return if((SSticker.mode.traitors.len + pre_traitors.len) <= (traitorcap - 2) || prob(100 / (tsc * 2))) - if(antag_flag in character.client.prefs.be_special) - if(!is_banned_from(character.ckey, list(ROLE_TRAITOR, ROLE_SYNDICATE)) && !QDELETED(character)) - if(age_check(character.client)) - if(!(character.job in restricted_jobs)) - add_latejoin_traitor(character.mind) + if(!QDELETED(character) && character.client?.should_include_for_role( + banning_key = initial(antag_datum.banning_key), + role_preference_key = role_preference, + req_hours = initial(antag_datum.required_living_playtime), + )) + if(!(character.job in restricted_jobs)) + add_latejoin_traitor(character.mind) /datum/game_mode/traitor/proc/add_latejoin_traitor(datum/mind/character) var/datum/antagonist/traitor/new_antag = new antag_datum() diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index f72b5041322..f58b8b6c09d 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -6,12 +6,12 @@ name = "wizard" config_tag = "wizard" report_type = "wizard" - antag_flag = ROLE_WIZARD + role_preference = /datum/role_preference/antagonist/wizard + antag_datum = /datum/antagonist/wizard false_report_weight = 10 required_players = 20 required_enemies = 1 recommended_enemies = 1 - enemy_minimum_age = 14 round_ends_with_antag_death = 1 announce_span = "danger" announce_text = "There is a space wizard attacking the station!\n\ @@ -22,7 +22,7 @@ title_icon = "wizard" /datum/game_mode/wizard/pre_setup() - var/datum/mind/wizard = antag_pick(antag_candidates, ROLE_WIZARD) + var/datum/mind/wizard = antag_pick(antag_candidates, /datum/role_preference/antagonist/wizard) wizards += wizard wizard.assigned_role = ROLE_WIZARD wizard.special_role = ROLE_WIZARD diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index 8c904c3d994..b325b4cd347 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -1,12 +1,12 @@ /obj/machinery/pdapainter name = "\improper color manipulator" desc = "A machine able to color PDAs and IDs with ease. Insert an ID card or PDA and pick a color scheme." - icon = 'icons/obj/pda.dmi' + icon = 'nsv13/icons/obj/pda.dmi' //NSV13 - old sprites icon_state = "coloriser" max_integrity = 200 density = TRUE anchored = TRUE - var/obj/item/pda/storedpda = null + var/obj/item/modular_computer/tablet/pda/storedpda = null var/obj/item/card/id/storedid = null //Nsv13 - Crayon eaters & MPs var/pda_icons = list( @@ -117,16 +117,14 @@ /obj/machinery/pdapainter/Initialize(mapload) . = ..() var/list/blocked = list( - /obj/item/pda/ai/pai, - /obj/item/pda/ai, - /obj/item/pda/heads, - /obj/item/pda/clear, - /obj/item/pda/syndicate, - /obj/item/pda/chameleon, - /obj/item/pda/chameleon/broken) + /obj/item/modular_computer/tablet/pda/heads, + /obj/item/modular_computer/tablet/pda/clear, + /obj/item/modular_computer/tablet/pda/syndicate, + /obj/item/modular_computer/tablet/pda/chameleon, + /obj/item/modular_computer/tablet/pda/chameleon/broken) - for(var/P in typesof(/obj/item/pda) - blocked) - var/obj/item/pda/D = new P + for(var/P in typesof(/obj/item/modular_computer/tablet/pda) - blocked) + var/obj/item/modular_computer/tablet/pda/D = new P //D.name = "PDA Style [colorlist.len+1]" //Gotta set the name, otherwise it all comes up as "PDA" D.name = D.icon_state //PDAs don't have unique names, but using the sprite names works. @@ -165,7 +163,7 @@ power_change() return - else if(istype(O, /obj/item/pda)) + else if(istype(O, /obj/item/modular_computer/tablet/pda)) if(storedpda) to_chat(user, "There is already a PDA inside!") return diff --git a/code/game/machinery/airlock_cycle_control.dm b/code/game/machinery/airlock_cycle_control.dm index e4563cc07bf..951034d42fe 100644 --- a/code/game/machinery/airlock_cycle_control.dm +++ b/code/game/machinery/airlock_cycle_control.dm @@ -452,7 +452,7 @@ to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"].") update_icon() return - else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda))// trying to unlock the interface with an ID card + else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/modular_computer/tablet/pda))// trying to unlock the interface with an ID card togglelock(user) return else if(panel_open && is_wire_tool(W)) @@ -552,7 +552,7 @@ if(locate(/obj/machinery/door/airlock) in T2) continue turfs[T2] = 1 - if(turfs.len > 16) // I will allow a 4x4 airlock for a shitty poor-man's spacepod bay. + if(turfs.len > 16) // I will allow a 4x4 airlock for a shitty poor-man's spacepod bay. config_error_str = "Airlock too big" for(var/cdir in GLOB.cardinals) var/turf/T2 = get_step(T, cdir) diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm index 05198de5788..9613dafc597 100644 --- a/code/game/machinery/aug_manipulator.dm +++ b/code/game/machinery/aug_manipulator.dm @@ -8,7 +8,8 @@ max_integrity = 200 var/obj/item/bodypart/storedpart var/initial_icon_state - var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi', "engineer" = 'icons/mob/augmentation/augments_engineer.dmi', "security" = 'icons/mob/augmentation/augments_security.dmi', "mining" = 'icons/mob/augmentation/augments_mining.dmi') + var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi', "engineer" = 'icons/mob/augmentation/augments_engineer.dmi', "security" = 'icons/mob/augmentation/augments_security.dmi', "mining" = 'icons/mob/augmentation/augments_mining.dmi', "veymed female" = 'nsv13/icons/mob/augmentation/veymed.dmi', "veymed male" = 'nsv13/icons/mob/augmentation/veymedm.dmi', "shellguard" = 'nsv13/icons/mob/augmentation/shellguard.dmi', "xion" = 'nsv13/icons/mob/augmentation/xion.dmi', "zeng-hu" = 'nsv13/icons/mob/augmentation/zenghu.dmi', "ward-takahashi" = 'nsv13/icons/mob/augmentation/wardtakahashi.dmi', "bishop" = 'nsv13/icons/mob/augmentation/bishop.dmi') //NSV13 added extra sprites for additional prosthetic looks + /obj/machinery/aug_manipulator/examine(mob/user) . = ..() diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 9411299fa89..baa9c20ced5 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -50,6 +50,9 @@ var/internal_light = TRUE //Whether it can light up when an AI views it + /// A copy of the last paper object that was shown to this camera. + var/obj/item/paper/last_shown_paper + /obj/machinery/camera/preset/toxins //Bomb test site in space name = "Hardened Bomb-Test Camera" desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site. An external light is attached to the top." @@ -109,6 +112,8 @@ if(bug.current == src) bug.current = null bug = null + + QDEL_NULL(last_shown_paper) return ..() /obj/machinery/camera/examine(mob/user) @@ -223,68 +228,107 @@ return TRUE -/obj/machinery/camera/attackby(obj/item/I, mob/living/user, params) +/obj/machinery/camera/attackby(obj/item/attacking_item, mob/living/user, params) // UPGRADES if(panel_open) var/obj/structure/camera_assembly/assembly = assembly_ref?.resolve() if(!assembly) assembly_ref = null - if(istype(I, /obj/item/stack/sheet/mineral/plasma)) + if(istype(attacking_item, /obj/item/stack/sheet/mineral/plasma)) if(!isEmpProof(TRUE)) //don't reveal it was already upgraded if was done via MALF AI Upgrade Camera Network ability - if(I.use_tool(src, user, 0, amount=1)) + if(attacking_item.use_tool(src, user, 0, amount=1)) upgradeEmpProof(FALSE, TRUE) - to_chat(user, "You attach [I] into [assembly]'s inner circuits.") + to_chat(user, "You attach [attacking_item] into [assembly]'s inner circuits.") else to_chat(user, "[src] already has that upgrade!") return - else if(istype(I, /obj/item/assembly/prox_sensor)) + else if(istype(attacking_item, /obj/item/assembly/prox_sensor)) if(!isMotion()) - if(!user.temporarilyRemoveItemFromInventory(I)) + if(!user.temporarilyRemoveItemFromInventory(attacking_item)) return upgradeMotion() - to_chat(user, "You attach [I] into [assembly]'s inner circuits.") - qdel(I) + to_chat(user, "You attach [attacking_item] into [assembly]'s inner circuits.") + qdel(attacking_item) else to_chat(user, "[src] already has that upgrade!") return // OTHER - if((istype(I, /obj/item/paper) || istype(I, /obj/item/pda)) && isliving(user)) - var/mob/living/U = user - var/obj/item/paper/X = null - var/obj/item/pda/P = null - + if(istype(attacking_item, /obj/item/modular_computer/tablet) && isliving(user)) var/itemname = "" var/info = "" - if(istype(I, /obj/item/paper)) - X = I - itemname = X.name - info = X.info - else - P = I - itemname = P.name - info = P.notehtml + var/obj/item/modular_computer/tablet/computer = attacking_item + itemname = computer.name + info = computer.note + itemname = sanitize(itemname) - to_chat(U, "You hold \the [itemname] up to the camera...") - U.changeNext_move(CLICK_CD_MELEE) + to_chat(user, "You hold \the [itemname] up to the camera...") + user.log_talk(itemname, LOG_GAME, log_globally=TRUE, tag="Pressed to camera") + user.changeNext_move(CLICK_CD_MELEE) + for(var/mob/O in GLOB.player_list) if(isAI(O)) var/mob/living/silicon/ai/AI = O if(AI.control_disabled || (AI.stat == DEAD)) return - if(U.name == "Unknown") - to_chat(AI, "[U] holds \a [itemname] up to one of your cameras ...") + AI.last_tablet_note_seen = "[itemname][info]" + + if(user.name == "Unknown") + to_chat(AI, "[user] holds \a [itemname] up to one of your cameras ...") else - to_chat(AI, "[U] holds \a [itemname] up to one of your cameras ...") - AI.last_paper_seen = "[itemname][info]" - else if (O.client && O.client.eye == src) - to_chat(O, "[U] holds \a [itemname] up to one of the cameras ...") + to_chat(AI, "[user] holds \a [itemname] up to one of your cameras ...") + continue + + if (O.client?.eye == src) + to_chat(O, "[user] holds \a [itemname] up to one of the cameras ...") O << browse(text("[][]", itemname, info), text("window=[]", itemname)) return - else if(istype(I, /obj/item/camera_bug)) + if(istype(attacking_item, /obj/item/paper)) + // Grab the paper, sanitise the name as we're about to just throw it into chat wrapped in HTML tags. + var/obj/item/paper/paper = attacking_item + + // Make a complete copy of the paper, store a ref to it locally on the camera. + last_shown_paper = paper.copy(paper.type, null) + + // Then sanitise the name because we're putting it directly in chat later. + var/item_name = sanitize(last_shown_paper.name) + + // Start the process of holding it up to the camera. + to_chat(user, "You hold \the [item_name] up to the camera...") + user.log_talk(item_name, LOG_GAME, log_globally=TRUE, tag="Pressed to camera") + user.changeNext_move(CLICK_CD_MELEE) + + // And make a weakref we can throw around to all potential viewers. + last_shown_paper.camera_holder = WEAKREF(src) + + // Iterate over all living mobs and check if anyone is elibile to view the paper. + // This is backwards, but cameras don't store a list of people that are looking through them, + // and we'll have to iterate this list anyway so we can use it to pull out AIs too. + for(var/mob/potential_viewer in GLOB.player_list) + // All AIs view through cameras, so we need to check them regardless. + if(isAI(potential_viewer)) + var/mob/living/silicon/ai/ai = potential_viewer + if(ai.control_disabled || (ai.stat == DEAD)) + continue + + log_paper("[key_name(user)] held [last_shown_paper] up to [src], requesting [key_name(ai)] read it.") + + if(user.name == "Unknown") + to_chat(ai, " holds \a [item_name] up to one of your cameras ...") + else + to_chat(ai, "[user] holds \a [item_name] up to one of your cameras ...") + continue + + // If it's not an AI, eye if the client's eye is set to the camera. I wonder if this even works anymore with tgui camera apps and stuff? + if (potential_viewer.client?.eye == src) + log_paper("[key_name(user)] held [last_shown_paper] up to [src], and [key_name(potential_viewer)] may read it.") + to_chat(potential_viewer, " holds \a [item_name] up to your camera...") + return + + else if(istype(attacking_item, /obj/item/camera_bug)) if(!can_use()) to_chat(user, "Camera non-functional.") return @@ -294,12 +338,12 @@ bug = null else to_chat(user, "Camera bugged.") - bug = I + bug = attacking_item bug.bugged_cameras[src.c_tag] = WEAKREF(src) return - else if(istype(I, /obj/item/pai_cable)) - var/obj/item/pai_cable/cable = I + else if(istype(attacking_item, /obj/item/pai_cable)) + var/obj/item/pai_cable/cable = attacking_item cable.plugin(src, user) return diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index efe0b5ae01a..f3b490f4993 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -297,7 +297,7 @@ /obj/machinery/clonepod/proc/offer_to_ghost(mob/living/carbon/H) set waitfor = FALSE - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [H.real_name]'s experimental clone?", ROLE_EXPERIMENTAL_CLONE, null, null, 300, H, POLL_IGNORE_EXPERIMENTAL_CLONE) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [H.real_name]'s experimental clone?", ROLE_EXPERIMENTAL_CLONE, null, 30 SECONDS, H) if(length(candidates)) var/mob/dead/observer/C = pick(candidates) H.key = C.key @@ -646,7 +646,7 @@ /obj/item/paper/guides/jobs/medical/cloning name = "paper - 'H-87 Cloning Apparatus Manual" - info = {"

Getting Started

+ default_raw_text = {"

Getting Started

Congratulations, your station has purchased the H-87 industrial cloning device!
Using the H-87 is almost as simple as brain surgery! Simply insert the target humanoid into the scanning chamber and select the scan option to create a new profile!
That's all there is to it!
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 4b2da591b71..e59af6f9c05 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -749,7 +749,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) var/t1 = "Crew Manifest:
" for(var/datum/data/record/t in sortRecord(GLOB.data_core.general)) t1 += t.fields["name"] + " - " + t.fields["rank"] + "
" - P.info = t1 + P.default_raw_text = t1 P.name = "paper- 'Crew Manifest'" printing = null playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 9003b69dd89..cf6bb68113f 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -234,7 +234,7 @@ scantemp = "Cannot delete: Data Corrupted." return FALSE var/obj/item/card/id/C = usr.get_idcard(hand_first = TRUE) - if(istype(C) || istype(C, /obj/item/pda) || istype(C, /obj/item/modular_computer/tablet)) + if(istype(C) || istype(C, /obj/item/modular_computer/tablet)) if(check_access(C)) scantemp = "[GRAB.fields["name"]] => Record deleted." records.Remove(GRAB) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index eb5152b44d5..d89dd93297c 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -1,5 +1,4 @@ #define IMPORTANT_ACTION_COOLDOWN (60 SECONDS) -#define MAX_STATUS_LINE_LENGTH 40 #define STATE_BUYING_SHUTTLE "buying_shuttle" #define STATE_CHANGING_STATUS "changing_status" @@ -80,7 +79,6 @@ /obj/machinery/computer/communications/ui_act(action, list/params) var/static/list/approved_states = list(STATE_BUYING_SHUTTLE, STATE_CHANGING_STATUS, STATE_MESSAGES, STATE_OBJECTIVES) //NSV13 - added objectives - var/static/list/approved_status_pictures = list("biohazard", "blank", "default", "lockdown", "redalert", "shuttle") . = ..() if (.) @@ -259,7 +257,7 @@ playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) - SStopic.crosscomms_send("comms_console", message, station_name()) + SStopic.crosscomms_send_async("comms_console", message, station_name()) minor_announce(message, title = "Outgoing message to allied station", html_encode = FALSE) usr.log_talk(message, LOG_SAY, tag="message to the other server") message_admins("[ADMIN_LOOKUPFLW(usr)] has sent a message to the other server.") @@ -296,7 +294,7 @@ if (!authenticated(usr)) return var/picture = params["picture"] - if (!(picture in approved_status_pictures)) + if (!(picture in GLOB.approved_status_pictures)) return post_status("alert", picture) playsound(src, "terminal_type", 50, FALSE) @@ -340,14 +338,16 @@ log_game("[key_name(usr)] enabled emergency maintenance access.") message_admins("[ADMIN_LOOKUPFLW(usr)] enabled emergency maintenance access.") deadchat_broadcast("[usr.real_name] enabled emergency maintenance access at [get_area_name(usr, TRUE)].", usr) - if("checkObjectives") + if("checkObjectives") //NSV13 overmap objectives if (!authenticated(usr)) return . = TRUE + state = STATE_OBJECTIVES + if(SSovermap_mode.already_ended) + return SSovermap_mode.mode.check_completion() if(SSovermap_mode.objectives_completed && SSovermap_mode.round_extended) priority_announce("Auto-recall to Outpost 45 will occur once you are out of combat.", "[SSovermap_mode.mode.reminder_origin]") - state = STATE_OBJECTIVES /obj/machinery/computer/communications/ui_data(mob/user) var/list/data = list( @@ -593,7 +593,6 @@ possible_answers = new_possible_answers #undef IMPORTANT_ACTION_COOLDOWN -#undef MAX_STATUS_LINE_LENGTH #undef STATE_BUYING_SHUTTLE #undef STATE_CHANGING_STATUS #undef STATE_MESSAGES diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 6e698067d27..9508c88cf77 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -113,11 +113,13 @@ dat += "Fingerprint: [active1.fields["fingerprint"]] " dat += "Physical Status: [active1.fields["p_stat"]] " dat += "Mental Status: [active1.fields["m_stat"]] " + dat += "General Records:View " //NSV13 - Roleplaying Records else dat += "General Record Lost!" dat += "
Medical Data" if(active2 in GLOB.data_core.medical) + dat += "Medical Records:View " //NSV13 - Roleplaying Records dat += "Blood Type: [active2.fields["blood_type"]] " dat += "DNA: [active2.fields["b_dna"]] " dat += "
Minor Disabilities:
 [active2.fields["mi_dis"]] " @@ -196,6 +198,21 @@ src.active1 = null src.active2 = null else if(href_list["choice"]) + //NSV13 - Roleplaying Records - Start + if(href_list["choice"] == "View Past Medical") + if(istype(active2, /datum/data/record)) + temp = "
Medical Records:
" + temp += "
    " + temp += "
  • [active2.fields["past_records"]]
  • " + temp += "
" + + if(href_list["choice"] == "View Past General") + if(istype(active1, /datum/data/record)) + temp = "
General Records:
" + temp += "
    " + temp += "
  • [active1.fields["past_records"]]
  • " + temp += "
" + //NSV13 - Roleplaying Records - End // SORTING! if(href_list["choice"] == "Sorting") // Reverse the order if clicked twice @@ -510,25 +527,51 @@ GLOB.data_core.medicalPrintCount++ playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) sleep(30) - var/obj/item/paper/P = new /obj/item/paper( src.loc ) - P.info = "
Medical Record - (MR-[GLOB.data_core.medicalPrintCount])

" + var/obj/item/paper/printed_paper = new /obj/item/paper( src.loc ) + var/final_paper_text = "
Medical Record - (MR-[GLOB.data_core.medicalPrintCount])

" if(active1 in GLOB.data_core.general) - P.info += text("Name: [] ID: []
\nGender: []
\nSex: []
\nAge: []
", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["gender"], src.active1.fields["sex"], src.active1.fields["age"]) //NSV13 - P.info += "\nSpecies: [active1.fields["species"]]
" - P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"]) + final_paper_text += text("Name: [] ID: []
\nGender: []
\nSex: []
\nAge: []
", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["gender"], src.active1.fields["sex"], src.active1.fields["age"]) //NSV13 + final_paper_text += "\nSpecies: [active1.fields["species"]]
" + final_paper_text += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"]) + //NSV13 - Roleplaying Records - Start + if(!(active1.fields["past_records"] == "")) + final_paper_text += "\nGeneral Records:\n[active1.fields["past_records"]]\n" else - P.info += "General Record Lost!
" + final_paper_text += "General Record Lost!
" if(active2 in GLOB.data_core.medical) - P.info += text("
\n
Medical Data

\nBlood Type: []
\nDNA: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src.active2.fields["blood_type"], src.active2.fields["b_dna"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"]) + final_paper_text += "
\n
Medical Data
" + if(!(active2.fields["past_records"] == "")) + final_paper_text += "\nMedical Records:\n[active2.fields["past_records"]]
\n" + final_paper_text += "
\nBlood Type: [active2.fields["blood_type"]]" + final_paper_text += "
\nDNA: [active2.fields["b_dna"]]" + final_paper_text += "
\n" + final_paper_text += "
\nMinor Disabilities: [active2.fields["mi_dis"]]" + final_paper_text += "
\nDetails: [active2.fields["mi_dis_d"]]" + final_paper_text += "
\n" + final_paper_text += "
\nMajor Disabilities: [active2.fields["ma_dis"]]" + final_paper_text += "
\nDetails: [active2.fields["ma_dis_d"]]" + final_paper_text += "
\n" + final_paper_text += "
\nAllergies: [active2.fields["alg"]]" + final_paper_text += "
\nDetails: [active2.fields["alg_d"]]" + final_paper_text += "
\n" + final_paper_text += "
\nCurrent Diseases: [active2.fields["cdi"]] (per disease info placed in log/comment section)" + final_paper_text += "
\nDetails: [active2.fields["cdi_d"]]" + final_paper_text += "
\n" + final_paper_text += "
\nImportant Notes:" + final_paper_text += "
\n\t[active2.fields["notes"]]" + final_paper_text += "
\n" + //NSV13 - Roleplaying Records - End var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) - P.info += text("[]
", src.active2.fields[text("com_[]", counter)]) + final_paper_text += text("[]
", src.active2.fields[text("com_[]", counter)]) counter++ - P.name = text("MR-[] '[]'", GLOB.data_core.medicalPrintCount, src.active1.fields["name"]) + printed_paper.name = text("MR-[] '[]'", GLOB.data_core.medicalPrintCount, src.active1.fields["name"]) else - P.info += "Medical Record Lost!
" - P.name = text("MR-[] '[]'", GLOB.data_core.medicalPrintCount, "Record Lost") - P.info += "" + final_paper_text += "Medical Record Lost!
" + printed_paper.name = text("MR-[] '[]'", GLOB.data_core.medicalPrintCount, "Record Lost") + final_paper_text += "" + printed_paper.add_raw_text(final_paper_text) + printed_paper.update_appearance() src.printing = null src.add_fingerprint(usr) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index ca15eebef36..b71385ebbd9 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -27,7 +27,7 @@ //obj/machinery/computer/robotics/proc/extraction(mob/user) //NSV13 We don't need this // var/obj/item/paper/P = new /obj/item/paper(loc) // P.name = "Silicon Upload key" -// P.info = "Current Upload key is: [GLOB.upload_code]" +// P.add_raw_text("Current Upload key is: [GLOB.upload_code]") // extracting = FALSE // ui_update() diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index aa116eb0771..f2b7766a00c 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -356,6 +356,7 @@ Fingerprint: [active1.fields["fingerprint"]]  Physical Status: [active1.fields["p_stat"]]  Mental Status: [active1.fields["m_stat"]]  + General Records:View 

Print photo
@@ -363,11 +364,12 @@

Print photo
Update side photo
- "} + "} //NSV13 - TEXT AMENDED, "GENERAL RECORDS" - Roleplaying Records else dat += "
General Record Lost!
" if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2))) dat += "Security Data" + dat += "
Security Records: View" //NSV13 - Roleplaying Records dat += "
Criminal Status: [active2.fields["criminal"]]" dat += "

Citations: Add New" @@ -455,6 +457,21 @@ What a mess.*/ if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr) || IsAdminGhost(usr)) usr.set_machine(src) switch(href_list["choice"]) + //NSV13 - Roleplaying Records - Start + if("View Past Security") + if(istype(active2, /datum/data/record)) + temp = "
Security Records:
" + temp += "
    " + temp += "
  • [active2.fields["past_records"]]
  • " + temp += "
" + + if("View Past General") + if(istype(active1, /datum/data/record)) + temp = "
General Records:
" + temp += "
    " + temp += "
  • [active1.fields["past_records"]]
  • " + temp += "
" + //NSV13 - Roleplaying Records - End // SORTING! if("Sorting") // Reverse the order if clicked twice @@ -551,19 +568,27 @@ What a mess.*/ GLOB.data_core.securityPrintCount++ playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) sleep(30) - var/obj/item/paper/P = new /obj/item/paper( loc ) - P.info = "
Security Record - (SR-[GLOB.data_core.securityPrintCount])

" + var/obj/item/paper/printed_paper = new /obj/item/paper( loc ) + var/final_paper_text = "
Security Record - (SR-[GLOB.data_core.securityPrintCount])

" if((istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1))) - P.info += text("Name: [] ID: []
\nGender: []
\nAge: []
", active1.fields["name"], active1.fields["id"], active1.fields["gender"], active1.fields["age"]) - P.info += "\nSpecies: [active1.fields["species"]]
" - P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) + final_paper_text += text("Name: [] ID: []
\nGender: []
\nAge: []
", active1.fields["name"], active1.fields["id"], active1.fields["gender"], active1.fields["age"]) + final_paper_text += "\nSpecies: [active1.fields["species"]]
" + final_paper_text += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) + //NSV13 - Roleplaying Records - Start + if(!(active1.fields["past_records"] == "")) + final_paper_text += "\nGeneral Records:\n[active1.fields["past_records"]]\n" + //NSV13 - Roleplaying Records - End else - P.info += "General Record Lost!
" + final_paper_text += "General Record Lost!
" if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2))) - P.info += text("
\n
Security Data

\nCriminal Status: []", active2.fields["criminal"]) - - P.info += "
\n
\nCrimes:
\n" - P.info +={" + //NSV13 - Roleplaying Records - Start + final_paper_text += text("
\n
Security Data

\n") + if(!(active2.fields["past_records"] == "")) + final_paper_text += "\nSecurity Records:\n[active2.fields["past_records"]]\n" + final_paper_text += text("Criminal Status: []", active2.fields["criminal"]) + //NSV13 - Roleplaying Records - End + final_paper_text += "
\n
\nCrimes:
\n" + final_paper_text +={"
@@ -571,23 +596,25 @@ What a mess.*/ "} for(var/datum/data/crime/c in active2.fields["crim"]) - P.info += "" - P.info += "" - P.info += "" - P.info += "" - P.info += "" - P.info += "
Crime DetailsTime Added
[c.crimeName][c.crimeDetails][c.author][c.time]
" - - P.info += text("
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", active2.fields["notes"]) + final_paper_text += "[c.crimeName]" + final_paper_text += "[c.crimeDetails]" + final_paper_text += "[c.author]" + final_paper_text += "[c.time]" + final_paper_text += "" + final_paper_text += "" + + final_paper_text += text("
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", active2.fields["notes"]) var/counter = 1 while(active2.fields[text("com_[]", counter)]) - P.info += text("[]
", active2.fields[text("com_[]", counter)]) + final_paper_text += text("[]
", active2.fields[text("com_[]", counter)]) counter++ - P.name = text("SR-[] '[]'", GLOB.data_core.securityPrintCount, active1.fields["name"]) + printed_paper.name = text("SR-[] '[]'", GLOB.data_core.securityPrintCount, active1.fields["name"]) else - P.info += "Security Record Lost!
" - P.name = text("SR-[] '[]'", GLOB.data_core.securityPrintCount, "Record Lost") - P.info += "" + final_paper_text += "Security Record Lost!
" + printed_paper.name = text("SR-[] '[]'", GLOB.data_core.securityPrintCount, "Record Lost") + final_paper_text += "" + printed_paper.add_raw_text(final_paper_text) + printed_paper.update_appearance() printing = null if("Print Poster") if(!( printing )) @@ -870,16 +897,16 @@ What a mess.*/ if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return - var/crime = GLOB.data_core.createCrimeEntry(t1, "", authenticated, station_time_timestamp(), fine) - for (var/obj/item/pda/P in GLOB.PDAs) - if(P.owner == active1.fields["name"]) + var/datum/data/crime/crime = GLOB.data_core.createCrimeEntry(t1, "", authenticated, station_time_timestamp(), fine) + for (var/obj/item/modular_computer/tablet in GLOB.TabletMessengers) + if(tablet.saved_identification == active1.fields["name"]) var/message = "You have been fined [fine] credits for '[t1]'. Fines may be paid at security." - var/datum/signal/subspace/messaging/pda/signal = new(src, list( + var/datum/signal/subspace/messaging/tablet_msg/signal = new(src, list( "name" = "Security Citation", "job" = "Citation Server", "message" = message, - "targets" = list("[P.owner] ([P.ownjob])"), - "automated" = 1 + "targets" = list(tablet), + "automated" = TRUE )) signal.send_to_receivers() usr.log_message("(PDA: Citation Server) sent \"[message]\" to [signal.format_target()]", LOG_PDA) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index fef1fb3f1e6..37bf79682ef 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1252,6 +1252,7 @@ update_freelook_sight() sleep(door_animation_speed) //Nsv13 - SPEEDY DOORS density = FALSE + flags_1 &= ~PREVENT_CLICK_UNDER_1//NSV make it so prevent_click_under doesn't need density air_update_turf(1) sleep(1) layer = OPEN_DOOR_LAYER @@ -1298,10 +1299,14 @@ layer = CLOSED_DOOR_LAYER if(air_tight) density = TRUE + if(!(flags_1 & ON_BORDER_1))//NSV but not border firelocks + flags_1 |= PREVENT_CLICK_UNDER_1//NSV make it so prevent_click_under doesn't need density air_update_turf(1) sleep(1) if(!air_tight) density = TRUE + if(!(flags_1 & ON_BORDER_1))//NSV but not border firelocks + flags_1 |= PREVENT_CLICK_UNDER_1//NSV make it so prevent_click_under doesn't need density air_update_turf(1) sleep(door_animation_speed) //Nsv13 - SPEEDY DOORS if(!safe) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 279496615c1..092b2e0cfd3 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -58,6 +58,8 @@ /obj/machinery/door/Initialize(mapload) . = ..() + if(!density)//NSV make it so prevent_click_under doesn't need density + flags_1 &= ~PREVENT_CLICK_UNDER_1 set_init_door_layer() update_freelook_sight() air_update_turf(1) @@ -219,6 +221,7 @@ var/max_moles = min_moles // okay this is a bit hacky. First, we set density to 0 and recalculate our adjacent turfs density = FALSE + flags_1 &= ~PREVENT_CLICK_UNDER_1//NSV make it so prevent_click_under doesn't need density T.ImmediateCalculateAdjacentTurfs() // then we use those adjacent turfs to figure out what the difference between the lowest and highest pressures we'd be holding is for(var/turf/open/T2 in T.atmos_adjacent_turfs) @@ -230,6 +233,8 @@ if(moles > max_moles) max_moles = moles density = TRUE + if(!(flags_1 & ON_BORDER_1))//NSV but not border firelocks + flags_1 |= PREVENT_CLICK_UNDER_1//NSV make it so prevent_click_under doesn't need density T.ImmediateCalculateAdjacentTurfs() // alright lets put it back return max_moles - min_moles > 20 @@ -311,6 +316,7 @@ set_opacity(0) sleep(open_speed) density = FALSE + flags_1 &= ~PREVENT_CLICK_UNDER_1//NSV make it so prevent_click_under doesn't need density sleep(open_speed) layer = initial(layer) update_icon() @@ -341,8 +347,12 @@ layer = closingLayer if(air_tight) density = TRUE + if(!(flags_1 & ON_BORDER_1))//NSV but not border firelocks + flags_1 |= PREVENT_CLICK_UNDER_1//NSV make it so prevent_click_under doesn't need density sleep(open_speed) density = TRUE + if(!(flags_1 & ON_BORDER_1))//NSV but not border firelocks + flags_1 |= PREVENT_CLICK_UNDER_1//NSV make it so prevent_click_under doesn't need density sleep(open_speed) update_icon() if(visible && !glass) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 98d0fb4e213..660d16aa0dd 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -163,7 +163,7 @@ if(operating) return - if(istype(C, /obj/item/pda)) + if(istype(C, /obj/item/modular_computer/tablet/pda)) var/attack_verb = pick("smushes","rubs","smashes","presses","taps") visible_message("[user] [attack_verb] \the [C] against [src]\s card reader.", "You [attack_verb] \the [C] against [src]\s card reader. It doesn't do anything.", "You hear plastic click against metal.") return diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 21d3f90f28d..d889055a81f 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -101,7 +101,7 @@ if(record) name = "paper - [record.name]" - info += {"

[record.name]

+ default_raw_text += {"

[record.name]

  • Timestamp: [record.timestamp]
  • Coordinates: [record.coordinates]
  • Displacement: [record.displacement] seconds
  • @@ -110,7 +110,7 @@
  • Shockwave Radius: [record.factual_radius["shockwave_radius"]]
"} if(length(record.theory_radius)) - info += {"
  • Theoretical Epicenter Radius: [record.theory_radius["epicenter_radius"]]
  • + default_raw_text += {"
    • Theoretical Epicenter Radius: [record.theory_radius["epicenter_radius"]]
    • Theoretical Outer Radius: [record.theory_radius["outer_radius"]]
    • Theoretical Shockwave Radius: [record.theory_radius["shockwave_radius"]]
    "} diff --git a/code/game/machinery/ecto_sniffer.dm b/code/game/machinery/ecto_sniffer.dm index 262a580ba64..2c2ab64c0c8 100644 --- a/code/game/machinery/ecto_sniffer.dm +++ b/code/game/machinery/ecto_sniffer.dm @@ -13,18 +13,19 @@ var/sensor_enabled = TRUE ///List of ckeys containing players who have recently activated the device, players on this list are prohibited from activating the device untill their residue decays. var/list/ectoplasmic_residues = list() - var/obj/item/radio/radio //NSV13 - Ecto Sniffer Radio Yelling + ///Internal radio + var/obj/item/radio/radio + ///Cooldown for radio, prevents spam + COOLDOWN_DECLARE(radio_cooldown) /obj/machinery/ecto_sniffer/Initialize() . = ..() wires = new/datum/wires/ecto_sniffer(src) - //NSV13 - Ecto Sniffer Radio Yelling - Start radio = new(src) radio.keyslot = new /obj/item/encryptionkey/headset_sci radio.subspace_transmission = TRUE radio.canhear_range = 0 radio.recalculateChannels() - //NSV13 - Ecto Sniffer Radio Yelling - Stop /obj/machinery/ecto_sniffer/attack_ghost(mob/user) if(!on || !sensor_enabled || !is_operational) @@ -37,15 +38,19 @@ if(is_banned_from(user.ckey, ROLE_POSIBRAIN)) to_chat(user, "Central Command outlawed your soul from interacting with the living...") return + activate(user) /obj/machinery/ecto_sniffer/proc/activate(mob/activator) flick("ecto_sniffer_flick", src) playsound(loc, 'sound/machines/ectoscope_beep.ogg', 25) - //NSV13 - Ecto Sniffer Radio Yelling - Start - var/msg = "[src] beeps, detecting ectoplasm! There may be additional positronic brain matrices available!" - radio.talk_into(src, msg, RADIO_CHANNEL_SCIENCE) - //NSV13 - Ecto Sniffer Radio Yelling - Stop + + if(COOLDOWN_FINISHED(src, radio_cooldown)) + COOLDOWN_START(src, radio_cooldown, 3 MINUTES) + radio.talk_into(src, "Ectoplasm has been detected! There may be additional positronic brain matrices available!", RADIO_CHANNEL_SCIENCE) + else + visible_message("[src] has detected ectoplasm! There may be additional positronic brain matrices available!") + use_power(10) if(activator?.ckey) ectoplasmic_residues[activator.ckey] = TRUE @@ -82,7 +87,7 @@ /obj/machinery/ecto_sniffer/Destroy() QDEL_NULL(wires) - QDEL_NULL(radio) //NSV13 - Ecto Sniffer Radio Yelling + QDEL_NULL(radio) ectoplasmic_residues = null . = ..() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 5763f26ea18..fdecc17afbf 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -512,7 +512,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ else return FALSE -/obj/machinery/holopad/proc/move_hologram(mob/living/user, turf/new_turf) +/obj/machinery/holopad/proc/move_hologram(mob/living/user, turf/new_turf, direction) //NSV13 - AI Custom Holographic Form if(LAZYLEN(masters) && masters[user]) var/obj/effect/overlay/holo_pad_hologram/holo = masters[user] var/transfered = FALSE @@ -524,6 +524,10 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ transfered = TRUE //All is good. holo.abstract_move(new_turf) + //NSV13 - AI Custom Holographic Form - Start + if(direction) + holo.setDir(direction) + //NSV13 - AI Custom Holographic Form - Stop if(!transfered) update_holoray(user,new_turf) return TRUE diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index f626a45a8f9..20f5882b93b 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -4,7 +4,7 @@ /obj/machinery/navbeacon icon = 'icons/obj/objects.dmi' - icon_state = "navbeacon0-f" + icon_state = "navbeacon0" //NSV13 - Navbeacon Refactor name = "navigation beacon" desc = "A radio beacon used for bot navigation." level = 1 // underfloor @@ -12,32 +12,37 @@ max_integrity = 500 armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 70, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80, "stamina" = 0) - var/open = FALSE // true if cover is open - var/locked = TRUE // true if controls are locked - var/freq = FREQ_NAV_BEACON - var/location = "" // location response text - var/list/codes // assoc. list of transponder codes - var/codes_txt = "" // codes as set on map: "tag1;tag2" or "tag1=value;tag2=value" + //NSV13 - Start + circuit = /obj/item/circuitboard/machine/navbeacon + /// true if controls are locked + var/controls_locked = TRUE + /// true if cover is locked + var/cover_locked = TRUE + /// location response text + var/location = "" + /// original location name, to allow resets + var/original_location = "" + /// associative list of transponder codes + var/list/codes + /// codes as set on map: "tag1;tag2" or "tag1=value;tag2=value" + var/codes_txt = "" var/obj/structure/overmap/linked //NSV13 - DIFFERENCE BETWEEN CODEBASE + //NSV13 - Stop req_one_access = list(ACCESS_ENGINE, ACCESS_ROBOTICS) /obj/machinery/navbeacon/Initialize(mapload) . = ..() + original_location = location //NSV13 - Navbeacon Refactor set_codes() var/turf/T = loc hide(T.intact) - if(codes?["patrol"]) - if(!GLOB.navbeacons["[z]"]) - GLOB.navbeacons["[z]"] = list() - GLOB.navbeacons["[z]"] += src //Register with the patrol list! - if(codes?["delivery"]) - GLOB.deliverybeacons += src - GLOB.deliverybeacontags += location + //NSV13 - Start - Navbeacon Refactor + glob_lists_register(init=TRUE) - return INITIALIZE_HINT_LATELOAD //NSV13 start - Overmap ship compatibility + return INITIALIZE_HINT_LATELOAD /obj/machinery/navbeacon/LateInitialize() has_overmap() @@ -54,10 +59,9 @@ /obj/machinery/navbeacon/Destroy() if (linked.beacons_in_ship) - linked.beacons_in_ship -= src //NSV13 end - if (GLOB.navbeacons["[z]"]) - GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one. - GLOB.deliverybeacons -= src + linked.beacons_in_ship -= src + glob_lists_deregister() + //NSV13 - Navbeacon Refactor - Stop return ..() /obj/machinery/navbeacon/onTransitZ(old_z, new_z) @@ -67,24 +71,81 @@ GLOB.navbeacons["[new_z]"] += src ..() -// set the transponder codes assoc list from codes_txt +//NSV13 - Navbeacon Refactor - Start +/obj/machinery/navbeacon/on_construction(mob/user) + var/turf/our_turf = loc + if(!isfloorturf(our_turf)) + return + var/turf/open/floor/floor = our_turf + floor.remove_tile(null, silent = TRUE, make_tile = TRUE) + + +///Set the transponder codes assoc list from codes_txt during initialization, or during reset /obj/machinery/navbeacon/proc/set_codes() + codes = list() if(!codes_txt) return - codes = new() - - var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons + var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons - for(var/e in entries) - var/index = findtext(e, "=") // format is "key=value" + for(var/entry in entries) + var/index = findtext(entry, "=") // format is "key=value" if(index) - var/key = copytext(e, 1, index) - var/val = copytext(e, index + length(e[index])) + var/key = copytext(entry, 1, index) + var/val = copytext(entry, index + length(entry[index])) codes[key] = val else - codes[e] = "1" + codes[entry] = "[TRUE]" + +//NSV13 - Navbeacon Refactor - Start +///Removes the nav beacon from the global beacon lists +/obj/machinery/navbeacon/proc/glob_lists_deregister() + if (GLOB.navbeacons["[z]"]) + GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one. + GLOB.deliverybeacons -= src + GLOB.deliverybeacontags -= location + +///Registers the navbeacon to the global beacon lists +/obj/machinery/navbeacon/proc/glob_lists_register(var/init=FALSE) + if(!init) + glob_lists_deregister() + if(codes?[NAVBEACON_PATROL_MODE]) + if(!GLOB.navbeacons["[z]"]) + GLOB.navbeacons["[z]"] = list() + GLOB.navbeacons["[z]"] += src //Register with the patrol list! + if(codes?[NAVBEACON_DELIVERY_MODE]) + GLOB.deliverybeacons += src + GLOB.deliverybeacontags += location + +/obj/machinery/navbeacon/crowbar_act(mob/living/user, obj/item/I) + if(default_deconstruction_crowbar(I)) + return TRUE + +/obj/machinery/navbeacon/screwdriver_act(mob/living/user, obj/item/tool) + if(!panel_open && cover_locked) + balloon_alert(user, "hatch locked!") + return TRUE + return default_deconstruction_screwdriver(user, "navbeacon1","navbeacon0",tool) + +/obj/machinery/navbeacon/attackby(obj/item/attacking_item, mob/user, params) + var/turf/our_turf = loc + if(our_turf.intact) + return // prevent intraction when T-scanner revealed + + if(attacking_item.GetID()) + if(!panel_open) + if (allowed(user)) + controls_locked = !controls_locked + balloon_alert(user, "controls [controls_locked ? "locked" : "unlocked"]") + SStgui.update_uis(src) + else + balloon_alert(user, "access denied") + else + balloon_alert(user, "panel open!") + return + return ..() +//NSV13 - Navbeacon Refactor - Stop // called when turf state changes // hide the object if turf is intact @@ -92,141 +153,106 @@ invisibility = intact ? INVISIBILITY_MAXIMUM : 0 update_icon() -// update the icon_state -/obj/machinery/navbeacon/update_icon() - var/state="navbeacon[open]" - - if(invisibility) - icon_state = "[state]-f" // if invisible, set icon to faded version - // in case revealed by T-scanner - else - icon_state = "[state]" - -/obj/machinery/navbeacon/attackby(obj/item/I, mob/user, params) - var/turf/T = loc - if(T.intact) - return // prevent intraction when T-scanner revealed - - if(I.tool_behaviour == TOOL_SCREWDRIVER) - open = !open - - user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.") - - update_icon() - - else if (istype(I, /obj/item/card/id)||istype(I, /obj/item/pda)) - if(open) - if (src.allowed(user)) - src.locked = !src.locked - to_chat(user, "Controls are now [src.locked ? "locked" : "unlocked"].") - else - to_chat(user, "Access denied.") - updateDialog() - else - to_chat(user, "You must open the cover first!") - else - return ..() /obj/machinery/navbeacon/attack_ai(mob/user) - interact(user, 1) + interact(user) //NSV13 - Navbeacon Refactor /obj/machinery/navbeacon/attack_paw() return -/obj/machinery/navbeacon/ui_interact(mob/user) +//NSV13 - Navbeacon Refactor - Start +/obj/machinery/navbeacon/ui_interact(mob/user, datum/tgui/ui) . = ..() - var/ai = isAI(user) - var/turf/T = loc - if(T.intact) - return // prevent intraction when T-scanner revealed - - if(!open && !ai) // can't alter controls if not open, unless you're an AI - to_chat(user, "The beacon's control cover is closed!") - return + var/turf/our_turf = loc + if(our_turf.intact) + return // prevent intraction when T-scanner revealed + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "NavBeacon") + ui.set_autoupdate(FALSE) + ui.open() - var/t +/obj/machinery/navbeacon/ui_data(mob/user) + var/list/data = list() + var/list/controls = list() - if(locked && !ai) - t = {"Navigation Beacon

    -(swipe card to unlock controls)
    -Location: [location ? location : "(none)"]
    -Transponder Codes:
      "} + controls["location"] = location + controls["patrol_enabled"] = codes[NAVBEACON_PATROL_MODE] ? TRUE : FALSE + controls["patrol_next"] = codes[NAVBEACON_PATROL_NEXT] + controls["delivery_enabled"] = codes[NAVBEACON_DELIVERY_MODE] ? TRUE : FALSE + controls["delivery_direction"] = dir2text(text2num(codes[NAVBEACON_DELIVERY_DIRECTION])) + controls["cover_locked"] = cover_locked - for(var/key in codes) - t += "
    • [key] ... [codes[key]]" - t+= "
        " + data["locked"] = controls_locked + data["siliconUser"] = issilicon(user) + data["controls"] = controls - else + return data - t = {"Navigation Beacon

        -(swipe card to lock controls)
        +/obj/machinery/navbeacon/ui_static_data(mob/user) + var/list/data = list() + var/list/static_controls = list() + var/static/list/direction_options = list("none", dir2text(EAST), dir2text(NORTH), dir2text(SOUTH), dir2text(WEST)) -
        -Location: [location ? location : "None"]
        -Transponder Codes:
          "} + static_controls["direction_options"] = direction_options + static_controls["has_codes"] = codes_txt ? TRUE : FALSE - for(var/key in codes) - t += "
        • [key] ... [codes[key]]" - t += " Edit" - t += " Delete
          " - t += " Add New
          " - t+= "
            " + data["static_controls"] = static_controls + return data - var/datum/browser/popup = new(user, "navbeacon", "Navigation Beacon", 300, 400) - popup.set_content(t) - popup.open() - return - -/obj/machinery/navbeacon/Topic(href, href_list) - if(..()) +/obj/machinery/navbeacon/ui_act(action, params) + . = ..() + if(.) return - if(open && !locked) - usr.set_machine(src) + if(action == "lock" && allowed(usr)) + controls_locked = !controls_locked + return TRUE - if(href_list["locedit"]) - var/newloc = stripped_input(usr, "Enter New Location", "Navigation Beacon", location) - if(newloc) - location = newloc - updateDialog() - - else if(href_list["edit"]) - var/codekey = href_list["code"] - - var/newkey = stripped_input(usr, "Enter Transponder Code Key", "Navigation Beacon", codekey) - if(!newkey) - return - - var/codeval = codes[codekey] - var/newval = stripped_input(usr, "Enter Transponder Code Value", "Navigation Beacon", codeval) - if(!newval) - newval = codekey - return - - codes.Remove(codekey) - codes[newkey] = newval - - updateDialog() - - else if(href_list["delete"]) - var/codekey = href_list["code"] - codes.Remove(codekey) - updateDialog() - - else if(href_list["add"]) + if(controls_locked && !issilicon(usr)) + return - var/newkey = stripped_input(usr, "Enter New Transponder Code Key", "Navigation Beacon") - if(!newkey) + switch(action) + if("reset_codes") + glob_lists_deregister() + location = original_location + set_codes() + glob_lists_register() //NSV13 - Navbeacon Refactor + return TRUE + if("toggle_cover") + cover_locked = !cover_locked + return TRUE + if("toggle_patrol") + toggle_code(NAVBEACON_PATROL_MODE) + return TRUE + if("toggle_delivery") + toggle_code(NAVBEACON_DELIVERY_MODE) + return TRUE + if("set_location") + var/input_text = tgui_input_text(usr, "Enter the beacon's location tag", "Beacon Location", location, 20) + if (!input_text || location == input_text) return - - var/newval = stripped_input(usr, "Enter New Transponder Code Value", "Navigation Beacon") - if(!newval) - newval = "1" + glob_lists_deregister() + location = input_text + glob_lists_register() //NSV13 - Navbeacon Refactor + return TRUE + if("set_patrol_next") + var/next_patrol = codes[NAVBEACON_PATROL_NEXT] + var/input_text = tgui_input_text(usr, "Enter the tag of the next patrol location", "Beacon Location", next_patrol, 20) + if (!input_text || location == input_text) return + codes[NAVBEACON_PATROL_NEXT] = input_text + return TRUE + if("set_delivery_direction") + codes[NAVBEACON_DELIVERY_DIRECTION] = "[text2dir(params["direction"])]" + return TRUE + +///Adds or removes a specific code +/obj/machinery/navbeacon/proc/toggle_code(code) + if(codes[code]) + codes.Remove(code) + else + codes[code]="[TRUE]" + glob_lists_register() +//NSV13 - Navbeacon Refactor - Stop - if(!codes) - codes = new() - - codes[newkey] = newval - - updateDialog() diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 740e5af1c3e..94b1350c49e 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -813,10 +813,11 @@ GLOBAL_LIST_EMPTY(allCasters) if(ishuman(user)) var/mob/living/carbon/human/human_user = user if(human_user.wear_id) - if(istype(human_user.wear_id, /obj/item/pda)) - var/obj/item/pda/P = human_user.wear_id - if(P.id) - scanned_user = "[P.id.registered_name] ([P.id.assignment])" + if(istype(human_user.wear_id, /obj/item/modular_computer/tablet/pda)) + var/obj/item/modular_computer/tablet/pda/P = human_user.wear_id + var/obj/item/card/id/ID = P.GetID() + if(istype(ID)) + scanned_user = "[ID.registered_name] ([ID.assignment])" else scanned_user = "Unknown" else if(istype(human_user.wear_id, /obj/item/card/id) ) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 9830d6e5454..e60327d47be 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -424,7 +424,7 @@ if(iscyborg(sillycone)) var/mob/living/silicon/robot/sillyconerobot = A - if((ROLE_SYNDICATE in faction) && sillyconerobot.emagged == TRUE) + if((FACTION_SYNDICATE in faction) && sillyconerobot.emagged == TRUE) continue else if(iscarbon(A)) @@ -686,7 +686,7 @@ stun_projectile_sound = 'sound/weapons/gunshot.ogg' icon_state = "syndie_off" base_icon_state = "syndie" - faction = list(ROLE_SYNDICATE) + faction = list(FACTION_SYNDICATE) desc = "A ballistic machine gun auto-turret." /obj/machinery/porta_turret/syndicate/ComponentInitialize() diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index 494edeb04fb..f7be64741d5 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -194,4 +194,4 @@ /obj/item/paper/guides/quantumpad name = "Quantum Pad For Dummies" - info = "
            Dummies Guide To Quantum Pads


            Do you hate the concept of having to use your legs, let alone walk to places? Well, with the Quantum Pad (tm), never again will the fear of cardio keep you from going places!

            How to set up your Quantum Pad(tm)


            1.Unscrew the Quantum Pad(tm) you wish to link.
            2. Use your multi-tool to cache the buffer of the Quantum Pad(tm) you wish to link.
            3. Apply the multi-tool to the secondary Quantum Pad(tm) you wish to link to the first Quantum Pad(tm)

            If you followed these instructions carefully, your Quantum Pad(tm) should now be properly linked together for near-instant movement across the station! Bear in mind that this is technically a one-way teleport, so you'll need to do the same process with the secondary pad to the first one if you wish to travel between both.
            " + default_raw_text = "
            Dummies Guide To Quantum Pads


            Do you hate the concept of having to use your legs, let alone walk to places? Well, with the Quantum Pad (tm), never again will the fear of cardio keep you from going places!

            How to set up your Quantum Pad(tm)


            1.Unscrew the Quantum Pad(tm) you wish to link.
            2. Use your multi-tool to cache the buffer of the Quantum Pad(tm) you wish to link.
            3. Apply the multi-tool to the secondary Quantum Pad(tm) you wish to link to the first Quantum Pad(tm)

            If you followed these instructions carefully, your Quantum Pad(tm) should now be properly linked together for near-instant movement across the station! Bear in mind that this is technically a one-way teleport, so you'll need to do the same process with the secondary pad to the first one if you wish to travel between both.
            " diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 31138b94412..ab541f63096 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -204,6 +204,6 @@ /obj/item/paper/guides/recycler name = "paper - 'garbage duty instructions'" - info = "

            New Assignment

            You have been assigned to collect garbage from trash bins, located around the station. The crewmembers will put their trash into it and you will collect the said trash.

            There is a recycling machine near your closet, inside maintenance; use it to recycle the trash for a small chance to get useful minerals. Then deliver these minerals to cargo or engineering. You are our last hope for a clean station, do not screw this up!" + default_raw_text = "

            New Assignment

            You have been assigned to collect garbage from trash bins, located around the station. The crewmembers will put their trash into it and you will collect the said trash.

            There is a recycling machine near your closet, inside maintenance; use it to recycle the trash for a small chance to get useful minerals. Then deliver these minerals to cargo or engineering. You are our last hope for a clean station, do not screw this up!" #undef SAFETY_COOLDOWN diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 212729e00c4..c2141680a04 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -2,43 +2,16 @@ The monitoring computer for the messaging server. Lets you read PDA and request console messages. */ - -#define LINKED_SERVER_NONRESPONSIVE (!linkedServer || (linkedServer.machine_stat & (NOPOWER|BROKEN))) - -#define MSG_MON_SCREEN_MAIN 0 -#define MSG_MON_SCREEN_LOGS 1 -#define MSG_MON_SCREEN_HACKED 2 -#define MSG_MON_SCREEN_CUSTOM_MSG 3 -#define MSG_MON_SCREEN_REQUEST_LOGS 4 - -// The monitor itself. /obj/machinery/computer/message_monitor name = "message monitor console" desc = "Used to monitor the crew's PDA messages, as well as request console messages." icon_screen = "comm_logs" circuit = /obj/item/circuitboard/computer/message_monitor - //Server linked to. - var/obj/machinery/telecomms/message_server/linkedServer = null - //Sparks effect - For emag - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread - //Messages - Saves me time if I want to change something. - var/noserver = "ALERT: No server detected." - var/incorrectkey = "ALERT: Incorrect decryption key!" - var/defaultmsg = "Welcome. Please select an option." - var/rebootmsg = "%$&(£: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!" - //Computer properties - var/screen = MSG_MON_SCREEN_MAIN // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message - var/hacking = FALSE // Is it being hacked into by the AI/Cyborg - var/message = "System bootup complete. Please select an option." // The message that shows on the main menu. - var/auth = FALSE // Are they authenticated? - var/optioncount = 7 - // Custom Message Properties - var/customsender = "System Administrator" - var/obj/item/pda/customrecepient = null - var/customjob = "Admin" - var/custommessage = "This is a test, please ignore." - light_color = LIGHT_COLOR_GREEN + /// Message server selected to receive data from + var/obj/machinery/telecomms/message_server/linked_server + /// If the console is currently being hacked by a silicon + var/hacking = FALSE /obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) if(O.tool_behaviour == TOOL_SCREWDRIVER && (obj_flags & EMAGGED)) @@ -50,19 +23,32 @@ /obj/machinery/computer/message_monitor/emag_act(mob/user) if(obj_flags & EMAGGED) return - if(!isnull(linkedServer)) + if(!linked_server) obj_flags |= EMAGGED - screen = MSG_MON_SCREEN_HACKED - spark_system.set_up(5, 0, src) - spark_system.start() - var/obj/item/paper/monitorkey/MK = new(loc, linkedServer) - // Will help make emagging the console not so easy to get away with. - MK.info += "

            £%@%(*$%&(£&?*(%&£/{}" - var/time = 100 * length(linkedServer.decryptkey) - addtimer(CALLBACK(src, PROC_REF(UnmagConsole)), time) - message = rebootmsg + to_chat(user, "A 'no server detected' error appears on the screen.") + return + else + ui_update() + do_sparks(5, FALSE, src) + addtimer(CALLBACK(src, PROC_REF(after_emag)), 10 * length(linked_server.decryptkey) SECONDS) + +/obj/machinery/computer/message_monitor/proc/after_emag() + // Print an "error" decryption key, leaving physical evidence of the hack. + if(linked_server) + var/obj/item/paper/monitorkey/monitor_key_paper = new(loc, linked_server) + monitor_key_paper.add_raw_text("

            £%@%(*$%&(£&?*(%&£/{}") else - to_chat(user, "A no server error appears on the screen.") + say("Error: Server link lost!") + obj_flags &= ~EMAGGED + ui_update() + +/obj/machinery/computer/message_monitor/proc/finish_hack(mob/living/silicon/user) + hacking = FALSE + ui_update() + if(!linked_server) + to_chat(user, "Could not complete brute-force: Linked Server Disconnected!") + return + to_chat(user, "Brute-force completed! The decryption key is '[linked_server.decryptkey]'.") /obj/machinery/computer/message_monitor/New() ..() @@ -73,384 +59,222 @@ return INITIALIZE_HINT_LATELOAD /obj/machinery/computer/message_monitor/LateInitialize() - //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list. - if(!linkedServer) + //If the server isn't linked to a server, and there's a server available, default it to the first one in the list. + if(!linked_server) for(var/obj/machinery/telecomms/message_server/S in GLOB.telecomms_list) - linkedServer = S + set_linked_server(S) break +/obj/machinery/computer/message_monitor/proc/set_linked_server(var/obj/machinery/telecomms/message_server/server) + if(linked_server) + UnregisterSignal(linked_server, COMSIG_PARENT_QDELETING) + if(server != linked_server) + authenticated = FALSE + linked_server = server + if(server) + RegisterSignal(server, COMSIG_PARENT_QDELETING, PROC_REF(server_deleting)) + ui_update() + +/obj/machinery/computer/message_monitor/proc/server_deleting() + set_linked_server(null) + /obj/machinery/computer/message_monitor/Destroy() GLOB.telecomms_list -= src + set_linked_server(null) return ..() -/obj/machinery/computer/message_monitor/ui_interact(mob/living/user) +/obj/machinery/computer/message_monitor/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/chat), + ) + +/obj/machinery/computer/message_monitor/ui_static_data(mob/user) + var/list/data = list() + data["emoji_names"] = icon_states('icons/emoji.dmi') + return data + +/obj/machinery/computer/message_monitor/ui_data(mob/user) + var/list/data = ..() + data["server_on"] = linked_server?.on + data["authenticated"] = authenticated + data["hacking"] = hacking || (obj_flags & EMAGGED) + var/mob/living/silicon/S = user + data["can_hack"] = istype(S) && S.hack_software + var/no_server = !linked_server || (linked_server.machine_stat & (NOPOWER|BROKEN)) + data["no_server"] = no_server + if(no_server || !authenticated) + return data + var/list/pda_messages = list() + for(var/datum/data_tablet_msg/message in linked_server.modular_msgs) + var/list/message_data = list() + var/datum/picture/pic = message.picture + if(istype(pic)) + message_data["photo"] = pda_rsc_image(pic, "[REF(message)]", user) + message_data["photo_width"] = pic.psize_x + message_data["photo_height"] = pic.psize_y + message_data["sender"] = message.sender + message_data["recipient"] = message.recipient + message_data["contents"] = message.message + message_data["emojis"] = message.emojis + message_data["ref"] = REF(message) + pda_messages += list(message_data) + data["pda_messages"] = pda_messages + var/list/request_messages = list() + for(var/datum/data_rc_msg/req in linked_server.rc_msgs) + request_messages += list(list( + "sending_department" = req.send_dpt, + "receiving_department" = req.rec_dpt, + "stamp" = req.stamp, + "id_auth" = req.id_auth, + "priority" = req.priority, + "message" = req.message, + "ref" = REF(req), + )) + data["request_messages"] = request_messages + return data + +/obj/machinery/computer/message_monitor/ui_act(action, params) . = ..() - //If the computer is being hacked or is emagged, display the reboot message. - if(hacking || (obj_flags & EMAGGED)) - message = rebootmsg - var/dat = "
            " - - if(auth) - dat += "

            \[Authenticated\] /" - dat += " Server Power: [linkedServer && linkedServer.on ? "\[On\]":"\[Off\]"]

            " - else - dat += "

            \[Unauthenticated\] /" - dat += " Server Power: [linkedServer && linkedServer.on ? "\[On\]":"\[Off\]"]

            " - - if(hacking || (obj_flags & EMAGGED)) - screen = MSG_MON_SCREEN_HACKED - else if(!auth || LINKED_SERVER_NONRESPONSIVE) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - screen = MSG_MON_SCREEN_MAIN - - switch(screen) - //Main menu - if(MSG_MON_SCREEN_MAIN) - // = TAB - var/i = 0 - dat += "
            [++i]. Link To A Server
            " - if(auth) - if(LINKED_SERVER_NONRESPONSIVE) - dat += "
            ERROR: Server not found!
            " - else - dat += "
            [++i]. View Message Logs
            " - dat += "
            [++i]. View Request Console Logs
            " - dat += "
            [++i]. Clear Message Logs
            " - dat += "
            [++i]. Clear Request Console Logs
            " - dat += "
            [++i]. Set Custom Key
            " - dat += "
            [++i]. Send Admin Message
            " + if(.) + return TRUE + switch(action) + if("login") + if(!usr || authenticated) + return TRUE + if(!linked_server) + to_chat(usr, "The console flashes a message: 'ERROR: Server connection lost.'") + return TRUE + var/dkey = capped_input(usr, "Please enter the decryption key.") + if(dkey && linked_server.decryptkey == dkey) + authenticated = TRUE else - for(var/n = ++i; n <= optioncount; n++) - dat += "
            [n]. ---------------
            " + to_chat(usr, "The console flashes a message: 'ALERT: Incorrect decryption key!'") + return TRUE + if("logout") + authenticated = FALSE + return TRUE + if("hack") var/mob/living/silicon/S = usr - if(istype(S) && S.hack_software) - //Malf/Traitor AIs can bruteforce into the system to gain the Key. - dat += "
            *&@#. Bruteforce Key
            " - else - dat += "
            " - - //Bottom message - if(!auth) - dat += "

            Please authenticate with the server in order to show additional options." - else - dat += "

            Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties." - - //Message Logs - if(MSG_MON_SCREEN_LOGS) - var/index = 0 - dat += "
            Back - Refresh

            " - dat += "" - for(var/datum/data_pda_msg/pda in linkedServer.pda_msgs) - index++ - if(index > 3000) - break - // Del - Sender - Recepient - Message - // X - Al Green - Your Mom - WHAT UP!? - dat += "" - dat += "
            XSenderRecipientMessage
            X
            [pda.sender][pda.recipient][pda.message][pda.picture ? " (Photo)":""]
            " - //Hacking screen. - if(MSG_MON_SCREEN_HACKED) - if(isAI(user) || iscyborg(user)) - dat += "Brute-forcing for server key.
            It will take 20 seconds for every character that the password has." - dat += "In the meantime, this console can reveal your true intentions if you let someone access it. Make sure no humans enter the room during that time." - else - //It's the same message as the one above but in binary. Because robots understand binary and humans don't... well I thought it was clever. - dat += {"01000010011100100111010101110100011001010010110
            - 10110011001101111011100100110001101101001011011100110011
            - 10010000001100110011011110111001000100000011100110110010
            - 10111001001110110011001010111001000100000011010110110010
            - 10111100100101110001000000100100101110100001000000111011
            - 10110100101101100011011000010000001110100011000010110101
            - 10110010100100000001100100011000000100000011100110110010
            - 10110001101101111011011100110010001110011001000000110011
            - 00110111101110010001000000110010101110110011001010111001
            - 00111100100100000011000110110100001100001011100100110000
            - 10110001101110100011001010111001000100000011101000110100
            - 00110000101110100001000000111010001101000011001010010000
            - 00111000001100001011100110111001101110111011011110111001
            - 00110010000100000011010000110000101110011001011100010000
            - 00100100101101110001000000111010001101000011001010010000
            - 00110110101100101011000010110111001110100011010010110110
            - 10110010100101100001000000111010001101000011010010111001
            - 10010000001100011011011110110111001110011011011110110110
            - 00110010100100000011000110110000101101110001000000111001
            - 00110010101110110011001010110000101101100001000000111100
            - 10110111101110101011100100010000001110100011100100111010
            - 10110010100100000011010010110111001110100011001010110111
            - 00111010001101001011011110110111001110011001000000110100
            - 10110011000100000011110010110111101110101001000000110110
            - 00110010101110100001000000111001101101111011011010110010
            - 10110111101101110011001010010000001100001011000110110001
            - 10110010101110011011100110010000001101001011101000010111
            - 00010000001001101011000010110101101100101001000000111001
            - 10111010101110010011001010010000001101110011011110010000
            - 00110100001110101011011010110000101101110011100110010000
            - 00110010101101110011101000110010101110010001000000111010
            - 00110100001100101001000000111001001101111011011110110110
            - 10010000001100100011101010111001001101001011011100110011
            - 10010000001110100011010000110000101110100001000000111010
            - 001101001011011010110010100101110"} - - //Fake messages - if(MSG_MON_SCREEN_CUSTOM_MSG) - dat += "
            Back - Reset

            " - - dat += {" - - - - "} - //Sender - Sender's Job - Recepient - Message - //Al Green- Your Dad - Your Mom - WHAT UP!? - - dat += {" - - - "} - dat += "
            SenderSender's JobRecipientMessage
            [customsender][customjob][customrecepient ? customrecepient.owner : "NONE"][custommessage]

            Send" - - //Request Console Logs - if(MSG_MON_SCREEN_REQUEST_LOGS) - - var/index = 0 - /* data_rc_msg - X - 5% - var/rec_dpt = "Unspecified" //name of the person - 15% - var/send_dpt = "Unspecified" //name of the sender- 15% - var/message = "Blank" //transferred message - 300px - var/stamp = "Unstamped" - 15% - var/id_auth = "Unauthenticated" - 15% - var/priority = "Normal" - 10% - */ - dat += "
            Back - Refresh

            " - dat += {" - "} - for(var/datum/data_rc_msg/rc in linkedServer.rc_msgs) - index++ - if(index > 3000) - break - // Del - Sender - Recepient - Message - // X - Al Green - Your Mom - WHAT UP!? - dat += {" - "} - dat += "
            XSending Dep.Receiving Dep.MessageStampID Auth.Priority.
            X
            [rc.send_dpt][rc.rec_dpt][rc.message][rc.stamp][rc.id_auth][rc.priority]
            " - - message = defaultmsg - var/datum/browser/popup = new(user, "hologram_console", name, 700, 700) - popup.set_content(dat) - popup.open() - -/obj/machinery/computer/message_monitor/proc/BruteForce(mob/user) - if(isnull(linkedServer)) - to_chat(user, "Could not complete brute-force: Linked Server Disconnected!") - else - var/currentKey = linkedServer.decryptkey - to_chat(user, "Brute-force completed! The key is '[currentKey]'.") - hacking = FALSE - screen = MSG_MON_SCREEN_MAIN // Return the screen back to normal - -/obj/machinery/computer/message_monitor/proc/UnmagConsole() - obj_flags &= ~EMAGGED - -/obj/machinery/computer/message_monitor/proc/ResetMessage() - customsender = "System Administrator" - customrecepient = null - custommessage = "This is a test, please ignore." - customjob = "Admin" - -/obj/machinery/computer/message_monitor/Topic(href, href_list) - if(..()) - return - - if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) - //Authenticate - if (href_list["auth"]) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - else if(auth) - auth = FALSE - screen = MSG_MON_SCREEN_MAIN - else - var/dkey = capped_input(usr, "Please enter the decryption key.") - if(dkey && dkey != "") - if(linkedServer.decryptkey == dkey) - auth = TRUE - else - message = incorrectkey - - //Turn the server on/off. - if (href_list["active"]) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - else if(auth) - linkedServer.toggled = !linkedServer.toggled - //Find a server - if (href_list["find"]) + if(!istype(S) || !S.hack_software) + return TRUE + if(!linked_server) + to_chat(S, "The console flashes a message: 'ERROR: Server connection lost.'") + return TRUE + hacking = TRUE + var/duration = 10 * length(linked_server.decryptkey) SECONDS + var/approx_duration = max(duration + rand(-20, 20), 1) + to_chat(S, "Brute-force decryption started. This will take approximately [DisplayTimeText(approx_duration, round_seconds_to = 10)].") + addtimer(CALLBACK(src, PROC_REF(finish_hack), S), duration) + return TRUE + if("link") var/list/message_servers = list() + var/obj/machinery/telecomms/message_server/last for (var/obj/machinery/telecomms/message_server/M in GLOB.telecomms_list) - message_servers += M - - if(message_servers.len > 1) - linkedServer = input(usr, "Please select a server.", "Select a server.", null) as null|anything in message_servers - message = "NOTICE: Server selected." - else if(message_servers.len > 0) - linkedServer = message_servers[1] - message = "NOTICE: Only Single Server Detected - Server selected." + var/key_base = "[M.network] - [M.name]" + var/key = key_base + var/number = 1 + while(key in message_servers) + key = key_base + " ([number])" + number++ + message_servers[key] = M + last = M + + if(length(message_servers) > 1) + var/choice = input(usr, "Please select a server.", "Select a server.", null) as null|anything in message_servers + if(choice in message_servers) + set_linked_server(message_servers[choice]) + else + set_linked_server(null) + else if(length(message_servers) == 1) + set_linked_server(last) else - message = noserver - - //View the logs - KEY REQUIRED - if (href_list["view_logs"]) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - else if(auth) - screen = MSG_MON_SCREEN_LOGS - - //Clears the logs - KEY REQUIRED - if (href_list["clear_logs"]) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - else if(auth) - linkedServer.pda_msgs = list() - message = "NOTICE: Logs cleared." - //Clears the request console logs - KEY REQUIRED - if (href_list["clear_requests"]) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - else if(auth) - linkedServer.rc_msgs = list() - message = "NOTICE: Logs cleared." - //Change the password - KEY REQUIRED - if (href_list["pass"]) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - else if(auth) - var/dkey = stripped_input(usr, "Please enter the decryption key.") - if(dkey && dkey != "") - if(linkedServer.decryptkey == dkey) - var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):")) - if(length(newkey) <= 3) - message = "NOTICE: Decryption key too short!" - else if(length(newkey) > 16) - message = "NOTICE: Decryption key too long!" - else if(newkey && newkey != "") - linkedServer.decryptkey = newkey - message = "NOTICE: Decryption key set." - else - message = incorrectkey - - //Hack the Console to get the password - if (href_list["hack"]) - var/mob/living/silicon/S = usr - if(istype(S) && S.hack_software) - hacking = TRUE - screen = MSG_MON_SCREEN_HACKED - //Time it takes to bruteforce is dependant on the password length. - spawn(100*length(linkedServer.decryptkey)) - if(src && linkedServer && usr) - BruteForce(usr) - //Delete the log. - if (href_list["delete_logs"]) - //Are they on the view logs screen? - if(screen == MSG_MON_SCREEN_LOGS) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - else //if(istype(href_list["delete_logs"], /datum/data_pda_msg)) - linkedServer.pda_msgs -= locate(href_list["delete_logs"]) in linkedServer.pda_msgs - message = "NOTICE: Log Deleted!" - //Delete the request console log. - if (href_list["delete_requests"]) - //Are they on the view logs screen? - if(screen == MSG_MON_SCREEN_REQUEST_LOGS) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - else //if(istype(href_list["delete_logs"], /datum/data_pda_msg)) - linkedServer.rc_msgs -= locate(href_list["delete_requests"]) in linkedServer.rc_msgs - message = "NOTICE: Log Deleted!" - //Create a custom message - if (href_list["msg"]) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - else if(auth) - screen = MSG_MON_SCREEN_CUSTOM_MSG - //Fake messaging selection - KEY REQUIRED - if (href_list["select"]) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - screen = MSG_MON_SCREEN_MAIN + set_linked_server(null) + return TRUE + if("power") + if(!authenticated) + return TRUE + if(!linked_server) + to_chat(usr, "The console flashes a message: 'ERROR: Server connection lost.'") + return TRUE + linked_server.toggled = !linked_server.toggled + // Trigger this immediately or hte UI will not update properly... wow this is a dumb proc + linked_server.update_power() + return TRUE + if("reset_key") + if(!usr || !authenticated) + return TRUE + if(!linked_server) + to_chat(usr, "The console flashes a message: 'ERROR: Server connection lost.'") + return TRUE + var/dkey = capped_input(usr, "Please enter the decryption key.") + if(!dkey) + return + if(linked_server.decryptkey == dkey) + var/newkey = capped_input(usr, "Please enter the new key (4-16 characters):") + if(length(newkey) < 4) + to_chat(usr, "The console flashes a message: 'NOTICE: Decryption key too short!'") + else if(length(newkey) > 16) + to_chat(usr, "The console flashes a message: 'NOTICE: Decryption key too long!'") + else if(newkey && newkey != "") + linked_server.decryptkey = newkey + to_chat(usr, "The console flashes a message: 'NOTICE: Decryption key set.'") else - switch(href_list["select"]) - - //Reset - if("Reset") - ResetMessage() - - //Select Your Name - if("Sender") - customsender = stripped_input(usr, "Please enter the sender's name.") || customsender - - //Select Receiver - if("Recepient") - //Get out list of viable PDAs - var/list/obj/item/pda/sendPDAs = get_viewable_pdas() - if(GLOB.PDAs && GLOB.PDAs.len > 0) - customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sendPDAs - else - customrecepient = null - - //Enter custom job - if("RecJob") - customjob = stripped_input(usr, "Please enter the sender's job.") || customjob - - //Enter message - if("Message") - custommessage = stripped_input(usr, "Please enter your message.") || custommessage - - //Send message - if("Send") - if(isnull(customsender) || customsender == "") - customsender = "UNKNOWN" - - if(isnull(customrecepient)) - message = "NOTICE: No recepient selected!" - return attack_hand(usr) - - if(isnull(custommessage) || custommessage == "") - message = "NOTICE: No message entered!" - return attack_hand(usr) - - var/datum/signal/subspace/messaging/pda/signal = new(src, list( - "name" = "[customsender]", - "job" = "[customjob]", - "message" = custommessage, - "targets" = list("[customrecepient.owner] ([customrecepient.ownjob])") - )) - // this will log the signal and transmit it to the target - linkedServer.receive_information(signal, null) - usr.log_message("(PDA: [name] | [usr.real_name]) sent \"[custommessage]\" to [signal.format_target()]", LOG_PDA) - - - //Request Console Logs - KEY REQUIRED - if(href_list["view_requests"]) - if(LINKED_SERVER_NONRESPONSIVE) - message = noserver - else if(auth) - screen = MSG_MON_SCREEN_REQUEST_LOGS - - if (href_list["back"]) - screen = MSG_MON_SCREEN_MAIN - - return attack_hand(usr) - -#undef MSG_MON_SCREEN_MAIN -#undef MSG_MON_SCREEN_LOGS -#undef MSG_MON_SCREEN_HACKED -#undef MSG_MON_SCREEN_CUSTOM_MSG -#undef MSG_MON_SCREEN_REQUEST_LOGS - -#undef LINKED_SERVER_NONRESPONSIVE - + to_chat(usr,"The console flashes a message: 'ALERT: Incorrect decryption key!'") + if("clear_logs") + var/type = params["type"] + if(!usr || !authenticated || (type != "pda" && type != "request")) + return TRUE + if(!linked_server) + to_chat(usr, "The console flashes a message: 'ERROR: Server connection lost.'") + return TRUE + if(type == "request") + linked_server.rc_msgs.Cut() + else + linked_server.modular_msgs.Cut() + to_chat(usr, "The console flashes a message: 'NOTICE: Logs cleared.'") + var/turf/the_turf = get_turf(src) + usr.log_message("cleared [type] logs using [src] at [AREACOORD(the_turf)]", LOG_GAME) + message_admins("[ADMIN_FLW(usr)] cleared [type] logs using [src] at [ADMIN_VERBOSEJMP(the_turf)]") + return TRUE + if("delete_log") + var/ref = params["ref"] + var/type = params["type"] + if(!usr || !authenticated || (type != "pda" && type != "request") || !ref) + return TRUE + if(!linked_server) + to_chat(usr, "The console flashes a message: 'ERROR: Server connection lost.'") + return TRUE + var/list/target = type == "request" ? linked_server.rc_msgs : linked_server.modular_msgs + var/datum/entry = locate(ref) in target + if(!entry) + return + target -= entry + var/msg = "" + if(istype(entry, /datum/data_tablet_msg)) + var/datum/data_tablet_msg/pda_entry = entry + msg = "[pda_entry.sender] to [pda_entry.recipient]: [pda_entry.message]" + else if(istype(entry, /datum/data_rc_msg)) + var/datum/data_rc_msg/rc_entry = entry + msg = "[rc_entry.send_dpt] to [rc_entry.rec_dpt] PRIORITY [rc_entry.priority] AUTH [rc_entry.id_auth] STAMP [rc_entry.stamp]: [rc_entry.message]" + to_chat(usr, "The console flashes a message: 'NOTICE: Log entry deleted.'") + var/turf/the_turf = get_turf(src) + usr.log_message("cleared [type] log entry \"[msg]\" using [src] at [AREACOORD(the_turf)]", LOG_GAME) + message_admins("[key_name_admin(usr)][ADMIN_FLW(usr)] deleted [type] log entry \"[msg]\" using [src] at [ADMIN_VERBOSEJMP(the_turf)]") + return TRUE + if("admin_message") + if(!usr || !authenticated) + return TRUE + if(!linked_server) + to_chat(usr, "The console flashes a message: 'ERROR: Server connection lost.'") + return TRUE + tgui_send_admin_pda(usr, src, linked_server) + +/obj/machinery/computer/message_monitor/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "MessageMonitor") + ui.open() + ui.set_autoupdate(TRUE) /obj/item/paper/monitorkey name = "monitor decryption key" @@ -463,8 +287,23 @@ return INITIALIZE_HINT_LATELOAD /obj/item/paper/monitorkey/proc/print(obj/machinery/telecomms/message_server/server) - info = "

            Daily Key Reset


            The new message monitor key is '[server.decryptkey]'.
            Please keep this a secret and away from the clown.
            If necessary, change the password to a more secure one." + add_raw_text("

            Telecommunications Security Notice


            \ +
            INCOMING TRANSMISSION - KEY RESET REPORT

            \ +

            \ +

            \
            +	REPORT: PREVIOUS SHIFT DATA WIPED.
            \ + KEY UPDATED.
            \ +
            \ + Monitor Decryption Key: [server.decryptkey]\ +

            \ +

            \
            +	PLEASE MAXIMIZE KEY SECURITY.
            \ + UPDATE KEY IF NECESSARY.
            \ + TRANSMISSION END.
            \ + SENDER: CentCom Telecommunications Data Retention\ +

            ") add_overlay("paper_words") + update_appearance() /obj/item/paper/monitorkey/LateInitialize() for (var/obj/machinery/telecomms/message_server/preset/server in GLOB.telecomms_list) diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 5eccac38333..4cc0a278b90 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -80,7 +80,7 @@ active_power_usage = 100 circuit = /obj/item/circuitboard/machine/telecomms/message_server - var/list/datum/data_pda_msg/pda_msgs = list() + var/list/datum/data_tablet_msg/modular_msgs = list() var/list/datum/data_rc_msg/rc_msgs = list() var/decryptkey = "password" var/calibrating = 15 MINUTES //Init reads this and adds world.time, then becomes 0 when that time has passed and the machine works @@ -93,15 +93,9 @@ if (calibrating) calibrating += world.time say("Calibrating... Estimated wait time: [rand(3, 9)] minutes.") - pda_msgs += new /datum/data_pda_msg("System Administrator", "system", "This is an automated message. System calibration started at [station_time_timestamp()]") + modular_msgs += new /datum/data_tablet_msg("System Administrator", "system", "This is an automated message. System calibration started at [station_time_timestamp()].") else - pda_msgs += new /datum/data_pda_msg("System Administrator", "system", MESSAGE_SERVER_FUNCTIONING_MESSAGE) - -/obj/machinery/telecomms/message_server/Destroy() - for(var/obj/machinery/computer/message_monitor/monitor in GLOB.telecomms_list) - if(monitor.linkedServer && monitor.linkedServer == src) - monitor.linkedServer = null - . = ..() + modular_msgs += new /datum/data_tablet_msg("System Administrator", "system", MESSAGE_SERVER_FUNCTIONING_MESSAGE) /obj/machinery/telecomms/message_server/examine(mob/user) . = ..() @@ -119,7 +113,7 @@ . = ..() if(calibrating && calibrating <= world.time) calibrating = 0 - pda_msgs += new /datum/data_pda_msg("System Administrator", "system", MESSAGE_SERVER_FUNCTIONING_MESSAGE) + modular_msgs += new /datum/data_tablet_msg("System Administrator", "system", MESSAGE_SERVER_FUNCTIONING_MESSAGE) /obj/machinery/telecomms/message_server/receive_information(datum/signal/subspace/messaging/signal, obj/machinery/telecomms/machine_from) // can't log non-message signals @@ -127,16 +121,16 @@ return // log the signal - if(istype(signal, /datum/signal/subspace/messaging/pda)) - var/datum/signal/subspace/messaging/pda/PDAsignal = signal - var/datum/data_pda_msg/M = new(PDAsignal.format_target(), "[PDAsignal.data["name"]] ([PDAsignal.data["job"]])", PDAsignal.data["message"], PDAsignal.data["photo"]) - pda_msgs += M - signal.logged = M + if(istype(signal, /datum/signal/subspace/messaging/tablet_msg)) + var/datum/signal/subspace/messaging/tablet_msg/PDAsignal = signal + var/datum/data_tablet_msg/msg = new(PDAsignal.format_target(), "[PDAsignal.data["name"]] ([PDAsignal.data["job"]])", PDAsignal.data["message"], PDAsignal.data["photo"], PDAsignal.data["emojis"]) + modular_msgs += msg + signal.logged = msg else if(istype(signal, /datum/signal/subspace/messaging/rc)) - var/datum/data_rc_msg/M = new(signal.data["rec_dpt"], signal.data["send_dpt"], signal.data["message"], signal.data["stamped"], signal.data["verified"], signal.data["priority"]) - signal.logged = M + var/datum/data_rc_msg/msg = new(signal.data["rec_dpt"], signal.data["send_dpt"], signal.data["message"], signal.data["stamped"], signal.data["verified"], signal.data["priority"]) + signal.logged = msg if(signal.data["send_dpt"]) // don't log messages not from a department but allow them to work - rc_msgs += M + rc_msgs += msg signal.data["reject"] = FALSE // pass it along to either the hub or the broadcaster @@ -170,23 +164,25 @@ copy.levels = levels return copy -// PDA signal datum -/datum/signal/subspace/messaging/pda/proc/format_target() +// Tablet message signal datum +/datum/signal/subspace/messaging/tablet_msg/proc/format_target() if (length(data["targets"]) > 1) return "Everyone" - return data["targets"][1] + var/obj/item/modular_computer/target = data["targets"][1] + return "[target.saved_identification] ([target.saved_job])" -/datum/signal/subspace/messaging/pda/proc/format_message() - if (logged && data["photo"]) +/datum/signal/subspace/messaging/tablet_msg/proc/format_message(include_photo = FALSE) + if (include_photo && logged && data["photo"]) return "\"[data["message"]]\" (Photo)" return "\"[data["message"]]\"" -/datum/signal/subspace/messaging/pda/broadcast() +/datum/signal/subspace/messaging/tablet_msg/broadcast() if (!logged) // Can only go through if a message server logs it return - for (var/obj/item/pda/P in GLOB.PDAs) - if ("[P.owner] ([P.ownjob])" in data["targets"]) - P.receive_message(src) + for (var/obj/item/modular_computer/comp in data["targets"]) + var/obj/item/computer_hardware/hard_drive/drive = comp.all_components[MC_HDD] + for(var/datum/computer_file/program/messenger/app in drive.stored_files) + app.receive_message(src) // Request Console signal datum /datum/signal/subspace/messaging/rc/broadcast() @@ -198,14 +194,16 @@ Console.createmessage(data["sender"], data["send_dpt"], data["message"], data["verified"], data["stamped"], data["priority"], data["notify_freq"]) // Log datums stored by the message server. -/datum/data_pda_msg +/datum/data_tablet_msg var/sender = "Unspecified" var/recipient = "Unspecified" var/message = "Blank" // transferred message var/datum/picture/picture // attached photo - var/automated = 0 //automated message + var/automated = FALSE //automated message + /// If this message is allowed to render emojis + var/emojis = FALSE -/datum/data_pda_msg/New(param_rec, param_sender, param_message, param_photo) +/datum/data_tablet_msg/New(param_rec, param_sender, param_message, param_photo, param_emojis) if(param_rec) recipient = param_rec if(param_sender) @@ -214,16 +212,18 @@ message = param_message if(param_photo) picture = param_photo + if(param_emojis) + emojis = param_emojis -/datum/data_pda_msg/Topic(href,href_list) +/datum/data_tablet_msg/Topic(href,href_list) ..() if(href_list["photo"]) var/mob/M = usr M << browse_rsc(picture.picture_image, "pda_photo.png") M << browse("PDA Photo" \ + "" \ - + "" \ - + "", "window=pdaphoto;size=[picture.psize_x]x[picture.psize_y];can-close=true") + + "" \ + + "", "window=photo_showing;size=480x608") onclose(M, "pdaphoto") /datum/data_rc_msg diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index dbe623a03de..c800adb9edf 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -293,7 +293,7 @@ name = "\improper LBX AC 10 \"Scattershot\"" desc = "A weapon for combat exosuits. Shoots a spread of pellets." icon_state = "mecha_scatter" - equip_cooldown = 20 + equip_cooldown = 15 //NSV13 - decreased cool down to 15 from 20 projectile = /obj/item/projectile/bullet/scattershot projectiles = 40 projectile_energy_cost = 25 diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 857f211be6b..8e3522ee82f 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -188,13 +188,7 @@ if(W.GetID()) if(add_req_access || maint_access) if(internals_access_allowed(user)) - var/obj/item/card/id/id_card - if(istype(W, /obj/item/card/id)) - id_card = W - else - var/obj/item/pda/pda = W - id_card = pda.id - output_maintenance_dialog(id_card, user) + output_maintenance_dialog(W.GetID(), user) return to_chat(user, "Invalid ID: Access denied.") return diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 68dcf131774..0a932d2a8b0 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -329,7 +329,7 @@ S.amount_grown = SLIME_EVOLUTION_THRESHOLD S.Evolve() S.flavor_text = FLAVOR_TEXT_EVIL - S.set_playable() + S.set_playable(ROLE_PYRO_SLIME) ///////////////////// diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 9e2744de47c..bc7e4c9891b 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -107,7 +107,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) /obj/effect/landmark/start/security_officer name = "Military Police" //Nsv13 - Crayon eaters & MPs - icon_state = "Military Police" + icon_state = "Military Police" //Nsv13 - Crayon eaters & MPs /obj/effect/landmark/start/botanist name = "Botanist" diff --git a/code/game/objects/effects/spawners/mailspawner.dm b/code/game/objects/effects/spawners/mailspawner.dm index 18390702eaf..75997c67f01 100644 --- a/code/game/objects/effects/spawners/mailspawner.dm +++ b/code/game/objects/effects/spawners/mailspawner.dm @@ -159,8 +159,8 @@ /obj/item/gps/science, /obj/item/inducer/sci, /obj/item/megaphone, - /obj/item/pda/roboticist, - /obj/item/pda/toxins, + /obj/item/modular_computer/tablet/pda/roboticist, + /obj/item/modular_computer/tablet/pda/science, /obj/item/anomaly_neutralizer, /obj/item/shuttle_creator, /obj/item/soap, diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 967b72f7268..46492f232be 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1263,3 +1263,10 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) */ /obj/item/proc/compile_monkey_icon() return + +/** + * Returns null if this object cannot be used to interact with physical writing mediums such as paper. + * Returns a list of key attributes for this object interacting with paper otherwise. + */ +/obj/item/proc/get_writing_implement_details() + return null diff --git a/code/game/objects/items/bedsheets.dm b/code/game/objects/items/bedsheets.dm index 62ddee5ea65..7f05ec77bb8 100644 --- a/code/game/objects/items/bedsheets.dm +++ b/code/game/objects/items/bedsheets.dm @@ -26,9 +26,11 @@ . = ..() AddElement(/datum/element/bed_tuckable, 0, 0, 0) -/obj/item/bedsheet/attack(mob/living/M, mob/user) - if(!attempt_initiate_surgery(src, M, user)) - ..() +//NSV13 - Surgery-Initiation Componentizes - Start +/obj/item/bedsheet/Initialize(mapload) + . = ..() + AddComponent(/datum/component/surgery_initiator, null) +//NSV13 - Surgery-Initiation Componentizes - Stop /obj/item/bedsheet/attack_self(mob/user) if(!user.CanReach(src)) //No telekenetic grabbing. @@ -292,7 +294,7 @@ dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET /obj/item/bedsheet/double/Initialize() - ..() + . = ..() desc += " This one is double." /obj/item/bedsheet/double/blue diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index b6979fbd49c..7d38969757d 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -163,15 +163,9 @@ registered_account.payday(1) /obj/item/card/id/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/holochip)) + if(iscash(W)) insert_money(W, user) return - else if(istype(W, /obj/item/stack/spacecash)) - insert_money(W, user, TRUE) - return - else if(istype(W, /obj/item/coin)) - insert_money(W, user, TRUE) - return else if(istype(W, /obj/item/storage/bag/money)) var/obj/item/storage/bag/money/money_bag = W var/list/money_contained = money_bag.contents @@ -184,7 +178,7 @@ else return ..() -/obj/item/card/id/proc/insert_money(obj/item/I, mob/user, physical_currency) +/obj/item/card/id/proc/insert_money(obj/item/I, mob/user) if(!registered_account) to_chat(user, "[src] doesn't have a linked account to deposit [I] into!") return @@ -194,7 +188,7 @@ return registered_account.adjust_money(cash_money) - if(physical_currency) + if(istype(I, /obj/item/stack/spacecash) || istype(I, /obj/item/coin)) to_chat(user, "You stuff [I] into [src]. It disappears in a small puff of bluespace smoke, adding [cash_money] credits to the linked account.") else to_chat(user, "You insert [I] into [src], adding [cash_money] credits to the linked account.") diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index a36fa4e4fc1..d3b73ee56af 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -493,7 +493,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM smoketime = 0 chem_volume = 100 list_reagents = null - var/packeditem = 0 + w_class = WEIGHT_CLASS_SMALL + /// Name of the stuff packed inside this pipe + var/packeditem /obj/item/clothing/mask/cigarette/pipe/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index ec8ed404257..88cc7cbb0a7 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -396,10 +396,10 @@ icon_state = "security" build_path = /obj/machinery/computer/prisoner/gulag_teleporter_computer -/obj/item/circuitboard/computer/prisoner +/obj/item/circuitboard/computer/prisoner/management //NSV13 modified - fix name = "prisoner management console (Computer Board)" icon_state = "security" - build_path = /obj/machinery/computer/prisoner + build_path = /obj/machinery/computer/prisoner/management /obj/item/circuitboard/computer/secure_data name = "security records console (Computer Board)" diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 70975034d86..1805fdd016a 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -558,7 +558,7 @@ /obj/machinery/vending/hydroseeds = "MegaSeed Servitor", /obj/machinery/vending/sustenance = "Sustenance Vendor", /obj/machinery/vending/dinnerware = "Plasteel Chef's Dinnerware Vendor", - /obj/machinery/vending/cart = "PTech", + /obj/machinery/vending/job_disk = "PTech", /obj/machinery/vending/robotics = "Robotech Deluxe", /obj/machinery/vending/engineering = "Robco Tool Maker", /obj/machinery/vending/sovietsoda = "BODA", @@ -607,6 +607,15 @@ /obj/item/stack/sheet/glass = 1, /obj/item/vending_refill/donksoft = 1) +/obj/item/circuitboard/machine/fax + name = "Fax Machine" + build_path = /obj/machinery/fax + req_components = list( + /obj/item/stock_parts/subspace/crystal = 1, + /obj/item/stock_parts/scanning_module = 1, + /obj/item/stock_parts/micro_laser = 1, + /obj/item/stock_parts/manipulator = 1) + //Medical diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index b0469e28323..e0483bfdb76 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -29,7 +29,7 @@ /obj/item/soap/ComponentInitialize() . = ..() - AddComponent(/datum/component/slippery, 80) + AddComponent(/datum/component/slippery, 80, _force_drop = TRUE) //NSV13 - re-added accidents /obj/item/soap/examine(mob/user) . = ..() diff --git a/code/game/objects/items/colorizers/items.dm b/code/game/objects/items/colorizers/items.dm index 727611cab07..60a40dfdd16 100644 --- a/code/game/objects/items/colorizers/items.dm +++ b/code/game/objects/items/colorizers/items.dm @@ -1,5 +1,5 @@ /obj/item/colorizer/pdatransparent name = "Transparent PDA Colorizer" - allowed_targets = list(/obj/item/pda) - forbidden_targets = list(/obj/item/pda/syndicate, /obj/item/pda/clown) + allowed_targets = list(/obj/item/modular_computer/tablet/pda) + forbidden_targets = list(/obj/item/modular_computer/tablet/pda/syndicate, /obj/item/modular_computer/tablet/pda/clown) apply_icon_state = "pda-clear" diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 37451c3d5b3..32f5f2162a9 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -427,6 +427,14 @@ else ..() +/obj/item/toy/crayon/get_writing_implement_details() + return list( + interaction_mode = MODE_WRITING, + font = CRAYON_FONT, + color = paint_color, + use_bold = TRUE + ) + /obj/item/toy/crayon/red icon_state = "crayonred" paint_color = "#DA0000" @@ -580,6 +588,7 @@ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' desc = "A metallic container containing tasty paint." + w_class = WEIGHT_CLASS_SMALL instant = TRUE edible = FALSE diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm index dfe01530314..dd4c4367289 100644 --- a/code/game/objects/items/debug_items.dm +++ b/code/game/objects/items/debug_items.dm @@ -42,11 +42,7 @@ return FALSE return TRUE -/obj/item/debug/omnitool/attack(mob/living/M, mob/living/user) - if(tool_behaviour == "drapes") - attempt_initiate_surgery(src, M, user) - ..() - +///NSV13 - Removed Surgical Drapes from Omnitool, removes attack proc too /obj/item/debug/omnitool/attack_self(mob/user) if(!user) return @@ -63,13 +59,12 @@ "Cautery" = image(icon = 'icons/obj/surgery.dmi', icon_state = "cautery"), "Drill" = image(icon = 'icons/obj/surgery.dmi', icon_state = "drill"), "Scalpel" = image(icon = 'icons/obj/surgery.dmi', icon_state = "scalpel"), - "Surgical drapes" = image(icon = 'icons/obj/surgery.dmi', icon_state = "surgical_drapes"), "Saw" = image(icon = 'icons/obj/surgery.dmi', icon_state = "saw"), "Pickaxe" = image(icon = 'icons/obj/mining.dmi', icon_state = "minipick"), "Shovel" = image(icon = 'icons/obj/mining.dmi', icon_state = "spade"), "Blood Filter" = image(icon = 'icons/obj/surgery.dmi', icon_state = "bloodfilter"), "Wire Brush" = image(icon = 'icons/obj/tools.dmi', icon_state = "wirebrush") - ) + ) //NSV13 - Removed surgical drapes var/tool_result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!check_menu(user)) @@ -89,8 +84,7 @@ tool_behaviour = TOOL_WELDER if("Analyzer") tool_behaviour = TOOL_ANALYZER - if("Surgical drapes") - tool_behaviour = "drapes" + //NSV13 - Removed Surgical Drapes from Omnitool if("Retractor") tool_behaviour = TOOL_RETRACTOR if("Hemostat") diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm deleted file mode 100644 index 7b10db3e921..00000000000 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ /dev/null @@ -1,1248 +0,0 @@ - -//The advanced pea-green monochrome lcd of tomorrow. - -GLOBAL_LIST_EMPTY(PDAs) - -#define PDA_SCANNER_NONE 0 -#define PDA_SCANNER_MEDICAL 1 -#define PDA_SCANNER_FORENSICS 2 //unused -#define PDA_SCANNER_REAGENT 3 -#define PDA_SCANNER_HALOGEN 4 -#define PDA_SCANNER_GAS 5 -#define PDA_SPAM_DELAY 1 MINUTES -#define PDA_TOGGLE_ON "On" -#define PDA_TOGGLE_OFF "Off" - -/obj/item/pda - name = "\improper PDA" - desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge." - icon = 'nsv13/icons/obj/pda.dmi' //NSV13 - old sprites - icon_state = "pda" - item_state = "electronic" - worn_icon_state = "electronic" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - item_flags = NOBLUDGEON - w_class = WEIGHT_CLASS_TINY - slot_flags = ITEM_SLOT_ID | ITEM_SLOT_BELT - actions_types = list(/datum/action/item_action/toggle_light) - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100, "stamina" = 0) - resistance_flags = FIRE_PROOF | ACID_PROOF - light_system = MOVABLE_LIGHT - light_range = 2.3 - light_power = 0.6 - light_color = "#FFCC66" - light_on = FALSE - - //Main variables - var/owner = null // String name of owner - var/default_cartridge = 0 // Access level defined by cartridge - var/obj/item/cartridge/cartridge = null //current cartridge - var/mode = 0 //Controls what menu the PDA will display. 0 is hub; the rest are either built in or based on cartridge. - var/icon_alert = "pda-r" //Icon to be overlayed for message alerts. Taken from the pda icon file. - var/icon_pai = "pai-overlay" // Icon to be overlayed when an active pAI is slotted in. - var/icon_inactive_pai = "pai-off-overlay" // Same as above but for an inactive pAI. - var/font_index = 0 //This int tells DM which font is currently selected and lets DM know when the last font has been selected so that it can cycle back to the first font when "toggle font" is pressed again. - var/font_mode = "font-family:monospace;" //The currently selected font. - var/background_color = "#808000" //The currently selected background color. - - #define FONT_MONO "font-family:monospace;" - #define FONT_SHARE "font-family:\"Share Tech Mono\", monospace;letter-spacing:0px;" - #define FONT_ORBITRON "font-family:\"Orbitron\", monospace;letter-spacing:0px; font-size:15px" - #define FONT_VT "font-family:\"VT323\", monospace;letter-spacing:1px;" - #define MODE_MONO 0 - #define MODE_SHARE 1 - #define MODE_ORBITRON 2 - #define MODE_VT 3 - - //Secondary variables - var/scanmode = PDA_SCANNER_NONE - var/shorted = FALSE //Is the flashlight shorted out? - var/silent = FALSE //To beep or not to beep, that is the question - var/toff = FALSE //If TRUE, messenger disabled - var/tnote = null //Current Texts - var/last_text //No text spamming - var/last_everyone //No text for everyone spamming - var/last_noise //Also no honk spamming that's bad too - var/ttone = "beep" //The ringtone! - var/honkamt = 0 //How many honks left when infected with honk.exe - var/mimeamt = 0 //How many silence left when infected with mime.exe - var/note = "Congratulations, your station has chosen the Thinktronic 5230 Personal Data Assistant!" //Current note in the notepad function - var/notehtml = "" - var/notescanned = FALSE // True if what is in the notekeeper was from a paper. - var/detonatable = TRUE // Can the PDA be blown up? - var/hidden = FALSE // Is the PDA hidden from the PDA list? - var/emped = FALSE - var/equipped = FALSE //used here to determine if this is the first time its been picked up - var/allow_emojis = FALSE //if the pda can send emojis and actually have them parsed as such - var/sort_by_job = FALSE // If this is TRUE, will sort PDA list by job. - var/toggle_auto_update = PDA_TOGGLE_ON // If this is "On", automatically update PDA when taken a card, if no, it doesn't. - - var/obj/item/card/id/id = null //Making it possible to slot an ID card into the PDA so it can function as both. - var/ownjob = null //related to above - - var/obj/item/paicard/pai = null // A slot for a personal AI device - - var/datum/picture/picture //Scanned photo - - var/list/contained_item = list(/obj/item/pen, /obj/item/toy/crayon, /obj/item/lipstick, /obj/item/flashlight/pen, /obj/item/clothing/mask/cigarette) - var/obj/item/inserted_item //Used for pen, crayon, and lipstick insertion or removal. Same as above. - var/overlays_x_offset = 0 //x offset to use for certain overlays - - var/underline_flag = TRUE //flag for underline - - var/datum/component/holomap/holo_base = null //holomap component - var/datum/action/toggle_holomap/useless //Useless thingy meant for to be used for nothing more than deleting the action if it already exists - -/obj/item/pda/suicide_act(mob/living/carbon/user) - var/deathMessage = msg_input(user) - if (!deathMessage) - deathMessage = "i ded" - user.visible_message("[user] is sending a message to the Grim Reaper! It looks like [user.p_theyre()] trying to commit suicide!") - tnote += "→ To The Grim Reaper:
            [deathMessage]
            "//records a message in their PDA as being sent to the grim reaper - return BRUTELOSS - -/obj/item/pda/examine(mob/user) - . = ..() - if(!id && !inserted_item) - return - - if(id) - . += "Alt-click to remove the ID." //won't name ID on examine in case it's stolen - - if(inserted_item && (!isturf(loc))) - . += "Ctrl-click to remove [inserted_item]." //traitor pens are disguised so we're fine naming them on examine - - if((!isnull(cartridge))) - . += "Ctrl+Shift-click to remove the cartridge." //won't name cart on examine in case it's Detomatix - -/obj/item/pda/Initialize(mapload) - . = ..() - - GLOB.PDAs += src - if(default_cartridge) - cartridge = new default_cartridge(src) - if(inserted_item) - inserted_item = new inserted_item(src) - else - inserted_item = new /obj/item/pen(src) - update_icon() - return INITIALIZE_HINT_LATELOAD - -/obj/item/pda/LateInitialize() - . = ..() - apply_holomap() - -/obj/item/pda/proc/apply_holomap() - if(holo_base) - holo_base.RemoveComponent() - QDEL_NULL(holo_base) - AddComponent(/datum/component/holomap) //NSV13 - -/obj/item/pda/equipped(mob/user, slot) - . = ..() - if(!equipped) - if(user.client) - background_color = user.client.prefs.pda_color - switch(user.client.prefs.pda_style) - if(MONO) - font_index = MODE_MONO - font_mode = FONT_MONO - if(SHARE) - font_index = MODE_SHARE - font_mode = FONT_SHARE - if(ORBITRON) - font_index = MODE_ORBITRON - font_mode = FONT_ORBITRON - if(VT) - font_index = MODE_VT - font_mode = FONT_VT - else - font_index = MODE_MONO - font_mode = FONT_MONO - equipped = TRUE - -/obj/item/pda/proc/update_label() - name = "PDA-[owner] ([ownjob])" //Name generalisation - -/obj/item/pda/GetAccess() - if(id) - return id.GetAccess() - else - return ..() - -/obj/item/pda/GetID() - return id - -/obj/item/pda/RemoveID() - return do_remove_id() - -/obj/item/pda/InsertID(obj/item/inserting_item) - var/obj/item/card/inserting_id = inserting_item.RemoveID() - if(!inserting_id) - return - insert_id(inserting_id) - if(id == inserting_id) - return TRUE - return FALSE - -/obj/item/pda/update_icon() - cut_overlays() - var/mutable_appearance/overlay = new() - overlay.pixel_x = overlays_x_offset - if(id) - overlay.icon_state = "id_overlay" - add_overlay(new /mutable_appearance(overlay)) - if(inserted_item) - overlay.icon_state = "insert_overlay" - add_overlay(new /mutable_appearance(overlay)) - if(light_on) - overlay.icon_state = "light_overlay" - add_overlay(new /mutable_appearance(overlay)) - if(pai) - if(pai.pai) - overlay.icon_state = icon_pai - add_overlay(new /mutable_appearance(overlay)) - else - overlay.icon_state = icon_inactive_pai - add_overlay(new /mutable_appearance(overlay)) - -/obj/item/pda/MouseDrop(mob/over, src_location, over_location) - var/mob/M = usr - if((M == over) && usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) - return attack_self(M) - return ..() - -/obj/item/pda/attack_self_tk(mob/user) - to_chat(user, "The PDA's capacitive touch screen doesn't seem to respond!") - return - -/obj/item/pda/interact(mob/user) - if(!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") - return - - ..() - - var/datum/asset/spritesheet/assets = get_asset_datum(/datum/asset/spritesheet/simple/pda) - assets.send(user) - - var/datum/asset/spritesheet/emoji_s = get_asset_datum(/datum/asset/spritesheet/chat) - emoji_s.send(user) //Already sent by chat but no harm doing this - - user.set_machine(src) - - var/dat = "Personal Data Assistant" - dat += assets.css_tag() - dat += emoji_s.css_tag() - - dat += "[PDAIMG(refresh)]Refresh" - - if ((!isnull(cartridge)) && (mode == 0)) - dat += " | [PDAIMG(eject)]Eject [cartridge]" - if (mode) - dat += " | [PDAIMG(menu)]Return" - - if (mode == 0) - dat += "
            " - dat += "
            Toggle Font" - dat += " | Change Color" - dat += " | Toggle Underline" //underline button - - dat += "
            " - - dat += "
            " - - if (!owner) - dat += "Warning: No owner information entered. Please swipe card.

            " - dat += "[PDAIMG(refresh)]Retry" - else - switch (mode) - if (0) - dat += "

            PERSONAL DATA ASSISTANT v.1.2

            " - dat += "Owner: [owner], [ownjob]
            " - dat += text("ID: [id ? "[id.registered_name], [id.assignment]" : "----------"]") - dat += text("
            [id ? "Update PDA Info" : ""]
            ") - dat += text("
            Toggle auto-updating: \[[toggle_auto_update]\]

            ") - - dat += "[station_time_timestamp()]
            " //:[world.time / 100 % 6][world.time / 100 % 10]" - dat += "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer+YEAR_OFFSET]" //NSV13 edit: year offset change - - dat += "

            " - - dat += "

            General Functions

            " - dat += "" - if (cartridge.access & CART_ENGINE) - dat += "

            Engineering Functions

            " - dat += "" - if (cartridge.access & CART_MEDICAL) - dat += "

            Medical Functions

            " - dat += "" - if (cartridge.access & CART_SECURITY) - dat += "

            Security Functions

            " - dat += "" - if(cartridge.access & CART_QUARTERMASTER) - dat += "

            Quartermaster Functions:

            " - dat += "" - dat += "
          " - - dat += "

          Utilities

          " - dat += "" - - if (1) - dat += "

          [PDAIMG(notes)] Notekeeper V2.2

          " - dat += "Edit
          " - if(notescanned) - dat += "(This is a scanned image, editing it may cause some text formatting to change.)
          " - dat += "
          [(!notehtml ? note : notehtml)]" - - if (2) - dat += "

          [PDAIMG(mail)] SpaceMessenger V3.9.6

          " - dat += "[PDAIMG(bell)]Ringer: [silent == 1 ? "Off" : "On"] | " - dat += "[PDAIMG(mail)]Send / Receive: [toff == 1 ? "Off" : "On"] | " - dat += "[PDAIMG(bell)]Set Ringtone | " - dat += "[PDAIMG(mail)]Messages
          " - dat += "Sorted by: [sort_by_job ? "Job" : "Name"]" - - if(cartridge) - dat += cartridge.message_header() - - dat += "

          [PDAIMG(menu)] Detected PDAs

          " - - dat += "
            " - var/count = 0 - - if (!toff) - for (var/obj/item/pda/P in get_viewable_pdas(sort_by_job)) - if (P == src) - continue - dat += "
          • [P.owner] ([P.ownjob])" - if(cartridge) - dat += cartridge.message_special(P) - dat += "
          • " - count++ - dat += "
          " - if (count == 0) - dat += "None detected.
          " - else if(cartridge && cartridge.spam_delay) - dat += "Send To All" - - //NSV13 - DATABASE AKA WIKI ACCESS - START - if("Database") - var/wikiurl = CONFIG_GET(string/wikiurl) - dat += "
          " - //NSV13 - DATABASE AKA WIKI ACCESS - END - - if(21) - dat += "

          [PDAIMG(mail)] SpaceMessenger V3.9.6

          " - dat += "[PDAIMG(blank)]Clear Messages" - - dat += "

          [PDAIMG(mail)] Messages

          " - - dat += tnote - dat += "
          " - - if (3) - dat += "

          [PDAIMG(atmos)] Atmospheric Readings

          " - - var/turf/T = user.loc - if (isnull(T)) - dat += "Unable to obtain a reading.
          " - else - var/datum/gas_mixture/environment = T.return_air() - - var/pressure = environment.return_pressure() - var/total_moles = environment.total_moles() - - dat += "Air Pressure: [round(pressure,0.1)] kPa
          " - - if (total_moles) - for(var/id in environment.get_gases()) - var/gas_level = environment.get_moles(id)/total_moles - if(gas_level > 0) - dat += "[GLOB.gas_data.names[id]]: [round(gas_level*100, 0.01)]%
          " - - dat += "Temperature: [round(environment.return_temperature()-T0C)]°C
          " - dat += "
          " - else//Else it links to the cart menu proc. Although, it really uses menu hub 4--menu 4 doesn't really exist as it simply redirects to hub. - dat += cartridge.generate_menu() - - dat += "" - - if (underline_flag) - dat = replacetext(dat, "text-decoration:none", "text-decoration:underline") - if (!underline_flag) - dat = replacetext(dat, "text-decoration:underline", "text-decoration:none") - - user << browse(dat, "window=pda;size=400x450;border=1;can_resize=1;can_minimize=0") - onclose(user, "pda", src) - -/obj/item/pda/Topic(href, href_list) - ..() - var/mob/living/U = usr - //Looking for master was kind of pointless since PDAs don't appear to have one. - - if(usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) && !href_list["close"]) - add_fingerprint(U) - U.set_machine(src) - - switch(href_list["choice"]) - -//BASIC FUNCTIONS=================================== - - if("Refresh")//Refresh, goes to the end of the proc. - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if ("Toggle_Font") - //CODE REVISION 2 - font_index = (font_index + 1) % 4 - - switch(font_index) - if (MODE_MONO) - font_mode = FONT_MONO - if (MODE_SHARE) - font_mode = FONT_SHARE - if (MODE_ORBITRON) - font_mode = FONT_ORBITRON - if (MODE_VT) - font_mode = FONT_VT - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if ("Change_Color") - var/new_color = input("Please enter a color name or hex value (Default is \'#808000\').",background_color)as color - background_color = new_color - - if ("Toggle_Underline") - underline_flag = !underline_flag - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if("Return")//Return - if(mode=="Database" || mode<=9) //NSV13 - mode = 0 - else - mode = round(mode/10) - if(mode==4 || mode == 5)//Fix for cartridges. Redirects to hub. - mode = 0 - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if ("Authenticate")//Checks for ID - id_check(U) - if("UpdateInfo") - update_pda() - if("ToggleAutoUpdate") - switch(toggle_auto_update) - if(PDA_TOGGLE_ON) - toggle_auto_update = PDA_TOGGLE_OFF - if(PDA_TOGGLE_OFF) - toggle_auto_update = PDA_TOGGLE_ON - update_pda() - if("Eject")//Ejects the cart, only done from hub. - eject_cart(U) - if(!silent) - playsound(src, 'sound/machines/terminal_eject.ogg', 50, TRUE) - -//MENU FUNCTIONS=================================== - - if("0")//Hub - mode = 0 - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if("1")//Notes - mode = 1 - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if("2")//Messenger - mode = 2 - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if("Database")//Database //NSV13 - mode = "Database" //NSV13 - if(!silent) //NSV13 - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) //NSV13 - if("21")//Read messeges - mode = 21 - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if("3")//Atmos scan - mode = 3 - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if("4")//Redirects to hub - mode = 0 - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - - - - -//MAIN FUNCTIONS=================================== - - if("Light") - toggle_light(U) - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if("Medical Scan") - if(scanmode == PDA_SCANNER_MEDICAL) - scanmode = PDA_SCANNER_NONE - else if((!isnull(cartridge)) && (cartridge.access & CART_MEDICAL)) - scanmode = PDA_SCANNER_MEDICAL - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if("Reagent Scan") - if(scanmode == PDA_SCANNER_REAGENT) - scanmode = PDA_SCANNER_NONE - else if((!isnull(cartridge)) && (cartridge.access & CART_REAGENT_SCANNER)) - scanmode = PDA_SCANNER_REAGENT - if("Halogen Counter") - if(scanmode == PDA_SCANNER_HALOGEN) - scanmode = PDA_SCANNER_NONE - else if((!isnull(cartridge)) && (cartridge.access & CART_ENGINE)) - scanmode = PDA_SCANNER_HALOGEN - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if("Honk") - if ( !(last_noise && world.time < last_noise + 20) ) - playsound(src, 'sound/items/bikehorn.ogg', 50, 1) - last_noise = world.time - if("Trombone") - if ( !(last_noise && world.time < last_noise + 20) ) - playsound(src, 'sound/misc/sadtrombone.ogg', 50, 1) - last_noise = world.time - if("Gas Scan") - if(scanmode == PDA_SCANNER_GAS) - scanmode = PDA_SCANNER_NONE - else if((!isnull(cartridge)) && (cartridge.access & CART_ATMOS)) - scanmode = PDA_SCANNER_GAS - if(!silent) - playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) - if("Drone Phone") - var/alert_s = input(U,"Alert severity level","Ping Drones",null) as null|anything in list("Low","Medium","High","Critical") - var/area/A = get_area(U) - if(A && alert_s && !QDELETED(U)) - var/msg = "NON-DRONE PING: [U.name]: [alert_s] priority alert in [A.name]!" - _alert_drones(msg, TRUE, U) - to_chat(U, msg) - if(!silent) - playsound(src, 'sound/machines/terminal_success.ogg', 15, TRUE) - - -//NOTEKEEPER FUNCTIONS=================================== - - if ("Edit") - var/n = stripped_multiline_input(U, "Please enter message", name, note) - if (in_range(src, U) && loc == U) - if (mode == 1 && n) - note = n - notehtml = parsemarkdown(n, U) - notescanned = FALSE - else - U << browse(null, "window=pda") - return - -//MESSENGER FUNCTIONS=================================== - - if("Toggle Messenger") - toff = !toff - if("Toggle Ringer")//If viewing texts then erase them, if not then toggle silent status - silent = !silent - if("Clear")//Clears messages - tnote = null - if("Ringtone") - var/t = stripped_input(U, "Please enter new ringtone", name, ttone, max_length=20) - if(in_range(src, U) && loc == U && t) - if(SEND_SIGNAL(src, COMSIG_PDA_CHANGE_RINGTONE, U, t) & COMPONENT_STOP_RINGTONE_CHANGE) - U << browse(null, "window=pda") - return - else - ttone = t - else - U << browse(null, "window=pda") - return - if("Message") - create_message(U, locate(href_list["target"]) in GLOB.PDAs) - - if("Sorting Mode") - sort_by_job = !sort_by_job - - if("MessageAll") - if(cartridge?.spam_delay) - send_to_all(U, cartridge?.spam_delay) - - if("cart") - if(cartridge) - cartridge.special(U, href_list) - else - U << browse(null, "window=pda") - return - -//SYNDICATE FUNCTIONS=================================== - - if("Toggle Door") - if(cartridge && cartridge.access & CART_REMOTE_DOOR) - for(var/obj/machinery/door/poddoor/M in GLOB.machines) - if(M.id == cartridge.remote_door_id) - if(M.density) - M.open() - else - M.close() - -//pAI FUNCTIONS=================================== - if("pai") - switch(href_list["option"]) - if("1") // Configure pAI device - pai.attack_self(U) - if("2") // Eject pAI device - usr.put_in_hands(pai) - to_chat(usr, "You remove the pAI from the [name].") - -//LINK FUNCTIONS=================================== - - else//Cartridge menu linking - mode = max(text2num(href_list["choice"]), 0) - - else//If not in range, can't interact or not using the pda. - U.unset_machine() - U << browse(null, "window=pda") - return - -//EXTRA FUNCTIONS=================================== - - if (mode == 2 || mode == 21)//To clear message overlays. - update_icon() - - if ((honkamt > 0) && (prob(60)))//For clown virus. - honkamt-- - playsound(src, 'sound/items/bikehorn.ogg', 30, 1) - - if(U.machine == src && href_list["skiprefresh"]!="1")//Final safety. - attack_self(U)//It auto-closes the menu prior if the user is not in range and so on. - else - U.unset_machine() - U << browse(null, "window=pda") - return - -/obj/item/pda/proc/remove_id() - if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) - return - do_remove_id(usr) - -/obj/item/pda/proc/update_pda() - ownjob = id.assignment - if(istype(id, /obj/item/card/id/syndicate)) - owner = id.registered_name - update_label() - if(!silent) - playsound(src, 'sound/machines/terminal_processing.ogg', 15, TRUE) - addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(playsound), src, 'sound/machines/terminal_success.ogg', 15, TRUE), 1.3 SECONDS) - -/obj/item/pda/proc/do_remove_id(mob/user) - if(!id) - return - if(user) - user.put_in_hands(id) - to_chat(user, "You remove the ID from the [name].") - else - id.forceMove(get_turf(src)) - - . = id - id = null - updateSelfDialog() - update_icon() - - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - if(H.wear_id == src) - H.sec_hud_set_ID() - -/obj/item/pda/proc/msg_input(mob/living/U = usr) - var/t = stripped_input(U, "Please enter message", name) - if (!t || toff) - return - if(!U.canUseTopic(src, BE_CLOSE)) - return - if(emped) - t = Gibberish(t, TRUE) - return t - -/obj/item/pda/proc/send_pda_message(mob/living/user, list/obj/item/pda/targets, everyone, multi_delay=0) - var/message = msg_input(user) - if(!message || !targets.len) - return - if((last_text && world.time < last_text + 10) || (everyone && last_everyone && world.time < (last_everyone + PDA_SPAM_DELAY*multi_delay))) - return - if(prob(1)) - message += "\nSent from my PDA" - // Send the signal - var/list/string_targets = list() - for (var/obj/item/pda/P in targets) - if (P.owner && P.ownjob) // != src is checked by the UI - string_targets += "[P.owner] ([P.ownjob])" - for (var/obj/machinery/computer/message_monitor/M in targets) - // In case of "Reply" to a message from a console, this will make the - // message be logged successfully. If the console is impersonating - // someone by matching their name and job, the reply will reach the - // impersonated PDA. - string_targets += "[M.customsender] ([M.customjob])" - if (!string_targets.len) - return - - if(CHAT_FILTER_CHECK(message)) - to_chat(user, "ERROR: Prohibited word(s) detected in message.") - return - - var/datum/signal/subspace/messaging/pda/signal = new(src, list( - "name" = "[owner]", - "job" = "[ownjob]", - "message" = message, - "targets" = string_targets, - "emojis" = allow_emojis, - )) - if (picture) - signal.data["photo"] = picture - signal.send_to_receivers() - - // If it didn't reach, note that fact - if (!signal.data["done"]) - to_chat(user, "ERROR: Server isn't responding.") - if(!silent) - playsound(src, 'sound/machines/terminal_error.ogg', 15, TRUE) - return - - var/target_text = signal.format_target() - if(allow_emojis) - message = emoji_parse(message)//already sent- this just shows the sent emoji as one to the sender in the to_chat - signal.data["message"] = emoji_parse(signal.data["message"]) - - // Log it in our logs - tnote += "→ To [target_text]:
          [signal.format_message()]
          " - // Show it to ghosts - var/ghost_message = "[owner] PDA Message --> [target_text]: [signal.format_message()]" - for(var/mob/M in GLOB.player_list) - if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA)) - to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") - // Log in the talk log - user.log_talk(message, LOG_PDA, tag="PDA: [initial(name)] to [target_text]") - to_chat(user, "PDA message sent to [target_text]: \"[message]\"") - if(!silent) - if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED)) - playsound(src, pick('sound/machines/twobeep_voice1.ogg', 'sound/machines/twobeep_voice2.ogg'), 50, TRUE) - else - playsound(src, 'sound/machines/terminal_success.ogg', 15, TRUE) - // Reset the photo - picture = null - last_text = world.time - if (everyone) - last_everyone = world.time - -/obj/item/pda/proc/receive_message(datum/signal/subspace/messaging/pda/signal) - tnote += "← From [signal.data["name"]] ([signal.data["job"]]):
          [signal.format_message()]
          " - - if (!silent) - if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED)) - playsound(src, pick('sound/machines/twobeep_voice1.ogg', 'sound/machines/twobeep_voice2.ogg'), 50, TRUE) - else - playsound(src, 'sound/machines/twobeep_high.ogg', 50, TRUE) - audible_message("[icon2html(src, hearers(src))] *[ttone]*", null, 3) - //Search for holder of the PDA. - var/mob/living/L = null - if(loc && isliving(loc)) - L = loc - //Maybe they are a pAI! - else - L = get(src, /mob/living/silicon) - - if(L && L.stat != UNCONSCIOUS) - var/reply = "(Reply)" - var/hrefstart - var/hrefend - if (isAI(L)) - hrefstart = "" - hrefend = "" - - if(signal.data["automated"]) - reply = "\[Automated Message\]" - - var/inbound_message = signal.format_message() - if(signal.data["emojis"] == TRUE)//so will not parse emojis as such from pdas that don't send emojis - inbound_message = emoji_parse(inbound_message) - - to_chat(L, "[icon2html(src)] PDA message from [hrefstart][signal.data["name"]] ([signal.data["job"]])[hrefend], [inbound_message] [reply]") - - update_icon() - add_overlay(icon_alert) - -/obj/item/pda/proc/send_to_all(mob/living/U, multi_delay) - if (last_everyone && world.time < (last_everyone + PDA_SPAM_DELAY*multi_delay)) - to_chat(U,"Send To All function is still on cooldown. Enabled in [(last_everyone + PDA_SPAM_DELAY*multi_delay - world.time)/10] seconds.") - return - if(multi_delay) - send_pda_message(U,get_viewable_pdas(), TRUE, multi_delay) - -/obj/item/pda/proc/create_message(mob/living/U, obj/item/pda/P) - send_pda_message(U,list(P)) - -/obj/item/pda/AltClick(mob/user) - if(id) - remove_id(user) - else - remove_pen(user) - -/obj/item/pda/CtrlClick(mob/user) - ..() - - if(isturf(loc)) //stops the user from dragging the PDA by ctrl-clicking it. - return - - remove_pen(user) - -/obj/item/pda/CtrlShiftClick(mob/user) - ..() - eject_cart(user) - -/obj/item/pda/verb/verb_toggle_light() - set name = "Toggle light" - set category = "Object" - set src in oview(1) - - toggle_light(usr) - -/obj/item/pda/verb/verb_remove_id() - set category = "Object" - set name = "Eject ID" - set src in usr - - if(id) - remove_id(usr) - else - to_chat(usr, "This PDA does not have an ID in it!") - -/obj/item/pda/verb/verb_remove_pen() - set category = "Object" - set name = "Remove Pen" - set src in usr - - remove_pen(usr) - -/obj/item/pda/verb/verb_eject_cart() - set category = "Object" - set name = "Eject Cartridge" - set src in usr - - eject_cart(usr) - -/obj/item/pda/proc/toggle_light(mob/user) - if(issilicon(user) || !user.canUseTopic(src, BE_CLOSE)) - return - if(shorted) - to_chat(user, "[src]'s light is not turning on!") - return - if(light_on) - set_light_on(FALSE) - else if(light_range) - set_light_on(TRUE) - update_icon() - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() - -/obj/item/pda/proc/remove_pen(mob/user) - - if(issilicon(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) //TK doesn't work even with this removed but here for readability - return - - if(inserted_item) - user.put_in_hands(inserted_item) - to_chat(user, "You remove [inserted_item] from [src].") - inserted_item = null - update_icon() - playsound(src, 'sound/machines/pda_button2.ogg', 50, TRUE) - else - to_chat(user, "This PDA does not have a pen in it!") - -/obj/item/pda/proc/eject_cart(mob/user) - if(issilicon(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) //TK disabled to stop cartridge teleporting into hand - return - if (!isnull(cartridge)) - user.put_in_hands(cartridge) - to_chat(user, "You eject [cartridge] from [src].") - scanmode = PDA_SCANNER_NONE - cartridge.host_pda = null - cartridge = null - updateSelfDialog() - update_icon() - -//trying to insert or remove an id -/obj/item/pda/proc/id_check(mob/user, obj/item/card/id/I) - if(!I) - if(id && (src in user.contents)) - remove_id(user) - return TRUE - else - var/obj/item/card/id/C = user.get_active_held_item() - if(istype(C)) - I = C - - if(I?.registered_name) - if(!user.transferItemToLoc(I, src)) - return FALSE - insert_id(I, user) - update_icon() - playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE) - return TRUE - -/obj/item/pda/pre_attack(obj/target, mob/living/user, params) - if(!ismachinery(target)) - return ..() - var/obj/machinery/target_machine = target - if(!target_machine.panel_open && !istype(target, /obj/machinery/computer)) - return ..() - if(!istype(cartridge, /obj/item/cartridge/virus/clown)) - return ..() - var/obj/item/cartridge/virus/installed_cartridge = cartridge - - if(installed_cartridge.charges <=0) - balloon_alert(user, "The PDA beeps: 'Out of charge. Please insert a new cartridge.'") - return ..() - - if(target.GetComponent(/datum/component/sound_player)) - balloon_alert(user, "The PDA beeps: 'Virus already present on client, aborting.'") - return - - balloon_alert(user, "You upload the virus.") - var/list/sig_list = list() - if(istype(target, /obj/machinery/door/airlock)) - sig_list += list(COMSIG_AIRLOCK_OPEN, COMSIG_AIRLOCK_CLOSE) - else - sig_list += list(COMSIG_ATOM_ATTACK_HAND) - installed_cartridge.charges-- - target.AddComponent(/datum/component/sound_player, amount = (rand(30,50)), signal_or_sig_list = sig_list) - return TRUE - -/obj/item/pda/proc/insert_id(obj/item/card/id/inserting_id, mob/user) - var/obj/old_id = id - id = inserting_id - if(ishuman(loc)) - var/mob/living/carbon/human/human_wearer = loc - if(human_wearer.wear_id == src) - human_wearer.sec_hud_set_ID() - if(old_id) - if(user) - user.put_in_hands(old_id) - else - old_id.forceMove(get_turf(src)) - -// access to status display signals -/obj/item/pda/attackby(obj/item/C, mob/user, params) - if(istype(C, /obj/item/cartridge)) - if(!user.transferItemToLoc(C, src)) - return - eject_cart(user) - cartridge = C - cartridge.host_pda = src - to_chat(user, "You insert [cartridge] into [src].") - updateSelfDialog() - update_icon() - if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED)) - playsound(src, pick('sound/machines/twobeep_voice1.ogg', 'sound/machines/twobeep_voice2.ogg'), 50, TRUE) - else - playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE) - - else if(istype(C, /obj/item/card/id)) - var/obj/item/card/id/idcard = C - if(!idcard.registered_name) - to_chat(user, "\The [src] rejects the ID!") - if(!silent) - playsound(src, 'sound/machines/terminal_error.ogg', 50, TRUE) - return - if(!owner) - owner = idcard.registered_name - ownjob = idcard.assignment - update_label() - to_chat(user, "Card scanned.") - if(!silent) - playsound(src, 'sound/machines/terminal_success.ogg', 50, TRUE) - else - if(!id_check(user, idcard)) - return - to_chat(user, "You put the ID into \the [src]'s slot.") - if(((owner != id.registered_name) || (ownjob != id.assignment)) && (toggle_auto_update == PDA_TOGGLE_ON)) // auto-update by inserting your card - update_pda() - updateSelfDialog()//Update self dialog on success. - - return //Return in case of failed check or when successful. - - updateSelfDialog()//For the non-input related code. - else if(istype(C, /obj/item/paicard) && !pai) - if(!user.transferItemToLoc(C, src)) - return - pai = C - to_chat(user, "You slot \the [C] into [src].") - update_icon() - updateUsrDialog() - else if(is_type_in_list(C, contained_item)) //Checks if there is a pen - if(inserted_item) - to_chat(user, "There is already \a [inserted_item] in \the [src]!") - else - if(C.w_class > WEIGHT_CLASS_TINY) - to_chat(user, "The [C] doesnt fit!") - return - if(!user.transferItemToLoc(C, src)) - return - to_chat(user, "You slide \the [C] into \the [src].") - inserted_item = C - update_icon() - playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE) - else if(istype(C, /obj/item/photo)) - var/obj/item/photo/P = C - picture = P.picture - to_chat(user, "You scan \the [C].") - else - return ..() - -/obj/item/pda/attack(mob/living/carbon/C, mob/living/user) - if(istype(C)) - switch(scanmode) - - if(PDA_SCANNER_MEDICAL) - C.visible_message("[user] has analyzed [C]'s vitals!") - healthscan(user, C, 1) - add_fingerprint(user) - - if(PDA_SCANNER_HALOGEN) - C.visible_message("[user] has analyzed [C]'s radiation levels!") - - user.show_message("Analyzing Results for [C]:") - if(C.radiation) - user.show_message("\green Radiation Level: \black [C.radiation]") - else - user.show_message("No radiation detected.") - -/obj/item/pda/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) - . = ..() - if(!proximity) - return - switch(scanmode) - if(PDA_SCANNER_REAGENT) - if(!istype(A, /obj/item/reagent_containers/pill/floorpill) && !istype(A, /obj/item/reagent_containers/glass/chem_heirloom)) - if(!isnull(A.reagents)) - if(A.reagents.reagent_list.len > 0) - var/reagents_length = A.reagents.reagent_list.len - to_chat(user, "[reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.") - for (var/re in A.reagents.reagent_list) - to_chat(user, "\t [re]") - else - to_chat(user, "No active chemical agents found in [A].") - else - to_chat(user, "No significant chemical agents found in [A].") - else - to_chat(user, "You can't scan [A].") - - if(PDA_SCANNER_GAS) - A.analyzer_act(user, src) - - if (!scanmode && istype(A, /obj/item/paper) && owner) - var/obj/item/paper/PP = A - if (!PP.info) - to_chat(user, "Unable to scan! Paper is blank.") - return - notehtml = PP.info - note = replacetext(notehtml, "
          ", "\[br\]") - note = replacetext(note, "
        • ", "\[*\]") - note = replacetext(note, "
            ", "\[list\]") - note = replacetext(note, "
          ", "\[/list\]") - note = html_encode(note) - notescanned = TRUE - to_chat(user, "Paper scanned. Saved to PDA's notekeeper." ) - - -/obj/item/pda/proc/explode() //This needs tuning. - if(!detonatable) - return - var/turf/T = get_turf(src) - - if (ismob(loc)) - var/mob/M = loc - M.show_message("Your [src] explodes!", MSG_VISUAL, "You hear a loud *pop*!", MSG_AUDIBLE) - else - visible_message("[src] explodes!", "You hear a loud *pop*!") - - if(T) - T.hotspot_expose(700,125) - if(istype(cartridge, /obj/item/cartridge/virus/syndicate)) - explosion(T, -1, 1, 3, 4) - else - explosion(T, -1, -1, 2, 3) - qdel(src) - return - -/obj/item/pda/Destroy() - GLOB.PDAs -= src - if(istype(id)) - QDEL_NULL(id) - if(istype(cartridge)) - QDEL_NULL(cartridge) - if(istype(pai)) - QDEL_NULL(pai) - if(istype(inserted_item)) - QDEL_NULL(inserted_item) - return ..() - -//AI verb and proc for sending PDA messages. - -/mob/living/silicon/proc/cmd_send_pdamesg(mob/user) - var/list/plist = list() - var/list/namecounts = list() - - if(aiPDA.toff) - to_chat(user, "Turn on your receiver in order to send messages.") - return - - for (var/obj/item/pda/P in get_viewable_pdas()) - if (P == src) - continue - else if (P == aiPDA) - continue - - plist[avoid_assoc_duplicate_keys(P.owner, namecounts)] = P - - var/c = input(user, "Please select a PDA") as null|anything in sortList(plist) - - if (!c) - return - - var/selected = plist[c] - - if(aicamera.stored.len) - var/add_photo = input(user,"Do you want to attach a photo?","Photo","No") as null|anything in list("Yes","No") - if(add_photo=="Yes") - var/datum/picture/Pic = aicamera.selectpicture(user) - aiPDA.picture = Pic - - if(incapacitated()) - return - - aiPDA.create_message(src, selected) - - -/mob/living/silicon/verb/cmd_toggle_pda_receiver() - set category = "AI Commands" - set name = "PDA - Toggle Sender/Receiver" - if(usr.stat == DEAD) - return //won't work if dead - if(!isnull(aiPDA)) - aiPDA.toff = !aiPDA.toff - to_chat(usr, "PDA sender/receiver toggled [(aiPDA.toff ? "Off" : "On")]!") - else - to_chat(usr, "You do not have a PDA. You should make an issue report about this.") - -/mob/living/silicon/verb/cmd_toggle_pda_silent() - set category = "AI Commands" - set name = "PDA - Toggle Ringer" - if(usr.stat == DEAD) - return //won't work if dead - if(!isnull(aiPDA)) - //0 - aiPDA.silent = !aiPDA.silent - to_chat(usr, "PDA ringer toggled [(aiPDA.silent ? "Off" : "On")]!") - else - to_chat(usr, "You do not have a PDA. You should make an issue report about this.") - -/mob/living/silicon/proc/cmd_show_message_log(mob/user) - if(incapacitated()) - return - if(!isnull(aiPDA)) - var/HTML = "AI PDA Message Log[aiPDA.tnote]" - user << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0") - else - to_chat(user, "You do not have a PDA. You should make an issue report about this.") - - -// Pass along the pulse to atoms in contents, largely added so pAIs are vulnerable to EMP -/obj/item/pda/emp_act(severity) - . = ..() - if(!(. & EMP_PROTECT_CONTENTS)) - for(var/atom/A in src) - A.emp_act(severity) - if(!(. & EMP_PROTECT_SELF)) - emped += 1 - var/emptime = 200 * severity - addtimer(CALLBACK(src, PROC_REF(decrease_emp_level)), emptime) - -/obj/item/pda/proc/decrease_emp_level() - emped -= 1 - -/proc/get_viewable_pdas(sort_by_job = FALSE) - . = list() - // Returns a list of PDAs which can be viewed from another PDA/message monitor., - var/sortmode - if(sort_by_job) - sortmode = GLOBAL_PROC_REF(cmp_pdajob_asc) - else - sortmode = GLOBAL_PROC_REF(cmp_pdaname_asc) - - for(var/obj/item/pda/P in sortList(GLOB.PDAs, sortmode)) - if(!P.owner || P.toff || P.hidden) - continue - . += P - -#undef PDA_SCANNER_NONE -#undef PDA_SCANNER_MEDICAL -#undef PDA_SCANNER_FORENSICS -#undef PDA_SCANNER_REAGENT -#undef PDA_SCANNER_HALOGEN -#undef PDA_SCANNER_GAS -#undef PDA_SPAM_DELAY -#undef PDA_TOGGLE_ON -#undef PDA_TOGGLE_OFF diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm deleted file mode 100644 index b61de358864..00000000000 --- a/code/game/objects/items/devices/PDA/PDA_types.dm +++ /dev/null @@ -1,273 +0,0 @@ -//Clown PDA is slippery. -/obj/item/pda/clown - name = "clown PDA" - default_cartridge = /obj/item/cartridge/virus/clown - inserted_item = /obj/item/toy/crayon/rainbow - icon_state = "pda-clown" - desc = "A portable microcomputer by Thinktronic Systems, LTD. The surface is coated with polytetrafluoroethylene and banana drippings." - ttone = "honk" - var/slipvictims = list() //Track slipped people - -/obj/item/pda/clown/ComponentInitialize() - . = ..() - AddComponent(/datum/component/slippery, 7 SECONDS, NO_SLIP_WHEN_WALKING, CALLBACK(src, PROC_REF(AfterSlip)), 5 SECONDS) - -/obj/item/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) - if (istype(M) && (M.real_name != owner)) - slipvictims |= M - var/obj/item/cartridge/virus/clown/cart = cartridge - if(istype(cart) && cart.charges < 5) - cart.charges++ - playsound(src,'sound/machines/ping.ogg', 30, TRUE) - -//Mime PDA sends "silent" messages. -/obj/item/pda/mime - name = "mime PDA" - default_cartridge = /obj/item/cartridge/virus/mime - inserted_item = /obj/item/toy/crayon/mime - icon_state = "pda-mime" - desc = "A portable microcomputer by Thinktronic Systems, LTD. The hardware has been modified for compliance with the vows of silence." - allow_emojis = TRUE - silent = TRUE - ttone = "silence" - -/obj/item/pda/mime/msg_input(mob/living/U = usr) - if(emped || toff) - return - var/emojis = emoji_sanitize(stripped_input(U, "Please enter emojis", name)) - if(!emojis) - return - if(!U.canUseTopic(src, BE_CLOSE)) - return - return emojis - -// Special AI/pAI PDAs that cannot explode. -/obj/item/pda/ai - icon = null - ttone = "data" - detonatable = FALSE - -/obj/item/pda/ai/attack_self(mob/user) - if ((honkamt > 0) && (prob(60)))//For clown virus. - honkamt-- - playsound(loc, 'sound/items/bikehorn.ogg', 30, 1) - return - -/obj/item/pda/ai/pai - ttone = "assist" - -//Various types of PDAs - -/obj/item/pda/assistant - name = "assistant PDA" - icon_state = "pda-assistant" - -/obj/item/pda/medical - name = "medical PDA" - default_cartridge = /obj/item/cartridge/medical - icon_state = "pda-medical" - -/obj/item/pda/paramedic - name = "paramedic PDA" - default_cartridge = /obj/item/cartridge/medical - icon_state = "pda-paramedical" - -/obj/item/pda/virologist - name = "virology PDA" - default_cartridge = /obj/item/cartridge/medical - icon_state = "pda-virology" - -/obj/item/pda/station_engineer - name = "engineering PDA" - default_cartridge = /obj/item/cartridge/engineering - icon_state = "pda-engineer" - -/obj/item/pda/security - name = "security PDA" - default_cartridge = /obj/item/cartridge/security - icon_state = "pda-security" - -/obj/item/pda/deputy - name = "deputy PDA" - default_cartridge = /obj/item/cartridge/security - icon_state = "pda-deputy" - -/obj/item/pda/brig_physician - name = "brig Physician PDA" - //no cartridge? - icon_state = "pda-brigphys" - -/obj/item/pda/detective - name = "detective PDA" - default_cartridge = /obj/item/cartridge/detective - icon_state = "pda-detective" - -/obj/item/pda/warden - name = "warden PDA" - default_cartridge = /obj/item/cartridge/security - icon_state = "pda-warden" - -/obj/item/pda/janitor - name = "janitor PDA" - default_cartridge = /obj/item/cartridge/janitor - icon_state = "pda-janitor" - ttone = "slip" - -/obj/item/pda/toxins - name = "scientist PDA" - default_cartridge = /obj/item/cartridge/signal/toxins - icon_state = "pda-science" - ttone = "boom" - -/obj/item/pda/service - name = "service PDA" - icon_state = "pda-service" - -/obj/item/pda/heads - default_cartridge = /obj/item/cartridge/head - icon_state = "pda-heads" - -/obj/item/pda/heads/head_of_personnel - name = "head of personnel PDA" - default_cartridge = /obj/item/cartridge/hop - icon_state = "pda-hop" - -/obj/item/pda/heads/head_of_security - name = "head of security PDA" - default_cartridge = /obj/item/cartridge/hos - icon_state = "pda-hos" - -/obj/item/pda/heads/chief_engineer - name = "chief engineer PDA" - default_cartridge = /obj/item/cartridge/ce - icon_state = "pda-ce" - -/obj/item/pda/heads/chief_medical_officer - name = "chief medical officer PDA" - default_cartridge = /obj/item/cartridge/cmo - icon_state = "pda-cmo" - -/obj/item/pda/heads/research_director - name = "research director PDA" - default_cartridge = /obj/item/cartridge/rd - inserted_item = /obj/item/pen/fountain - icon_state = "pda-rd" - -/obj/item/pda/captain - name = "captain PDA" - default_cartridge = /obj/item/cartridge/captain - inserted_item = /obj/item/pen/fountain/captain - desc = "A portable microcomputer by Thinktronic Systems, LTD. The internals are modified to be more tough than the usual." - icon_state = "pda-captain" - detonatable = FALSE - -/obj/item/pda/cargo_technician - name = "cargo technician PDA" - default_cartridge = /obj/item/cartridge/quartermaster - icon_state = "pda-cargo" - -/obj/item/pda/quartermaster - name = "quartermaster PDA" - default_cartridge = /obj/item/cartridge/quartermaster - inserted_item = /obj/item/pen/fountain - icon_state = "pda-qm" - -/obj/item/pda/shaft_miner - name = "shaft miner PDA" - icon_state = "pda-miner" - -/obj/item/pda/exploration_crew - name = "exploration PDA" - icon_state = "pda-exploration" - -/obj/item/pda/syndicate - default_cartridge = /obj/item/cartridge/virus/syndicate - desc = "A portable microcomputer by Thinktronic Systems, LTD. This model is a WGW-XL series." - note = "Congratulations, your -corrupted- has chosen the Thinktronic 5290 WGW-XL Series Personal Data Assistant!" - icon_state = "pda-syndi" - icon_alert = "pda-r-wide" - icon_pai = "pai-overlay-wide" - icon_inactive_pai = "pai-off-overlay-wide" - name = "military PDA" - owner = "John Doe" - detonatable = FALSE - hidden = 1 - -/obj/item/pda/chaplain - name = "chaplain PDA" - icon_state = "pda-chaplain" - ttone = "holy" - -/obj/item/pda/lawyer - name = "lawyer PDA" - default_cartridge = /obj/item/cartridge/lawyer - inserted_item = /obj/item/pen/fountain - icon_state = "pda-lawyer" - ttone = "objection" - -/obj/item/pda/roboticist - name = "roboticist PDA" - icon_state = "pda-roboticist" - default_cartridge = /obj/item/cartridge/roboticist - -/obj/item/pda/curator - name = "curator PDA" - icon_state = "pda-library" - icon_alert = "pda-r-wide" - icon_pai = "pai-overlay-wide" - icon_inactive_pai = "pai-off-overlay-wide" - default_cartridge = /obj/item/cartridge/curator - inserted_item = /obj/item/pen/fountain - desc = "A portable microcomputer by Thinktronic Systems, LTD. This model is a WGW-11 series e-reader." - note = "Congratulations, your station has chosen the Thinktronic 5290 WGW-11 Series E-reader and Personal Data Assistant!" - silent = TRUE //Quiet in the library! - -/obj/item/pda/clear - name = "clear PDA" - icon_state = "pda-clear" - desc = "A portable microcomputer by Thinktronic Systems, LTD. This model is a special edition with a transparent case." - note = "Congratulations, you have chosen the Thinktronic 5230 Personal Data Assistant Deluxe Special Max Turbo Limited Edition!" - -/obj/item/pda/cook - name = "cook PDA" - icon_state = "pda-cook" - -/obj/item/pda/bartender - name = "bartender PDA" - icon_state = "pda-bartender" - inserted_item = /obj/item/pen/fountain - -/obj/item/pda/atmospheric_technician - name = "atmospherics PDA" - default_cartridge = /obj/item/cartridge/atmos - icon_state = "pda-atmos" - -/obj/item/pda/chemist - name = "chemist PDA" - default_cartridge = /obj/item/cartridge/chemistry - icon_state = "pda-chemistry" - -/obj/item/pda/geneticist - name = "geneticist PDA" - default_cartridge = /obj/item/cartridge/medical - icon_state = "pda-genetics" - -/obj/item/pda/vip - name = "fancy PDA" - default_cartridge = /obj/item/cartridge/annoyance //so they can send messages to everyone and be generally obnoxious - inserted_item = /obj/item/pen/fountain - desc = "A portable microcomputer by Thinktronic Systems, LTD. This model is a gold-plated LRP Series, and probably quite expensive." - note = "Congratulations, you have chosen the Thinktronic 5230 LRP Series Personal Data Assistant Golden Edition!" - icon_state = "pda-gold" - ttone = "ch-CHING" - -/obj/item/pda/unlicensed - name = "unlicensed PDA" - default_cartridge = /obj/item/cartridge/annoyance/lesser - desc = "A shitty knockoff of a portable microcomputer by Thinktronic Systems, LTD. Complete with a cracked operating system." - note = "Error: Unlicensed OS. Please contact your supervisor." - icon_state = "pda-knockoff" - icon_alert = "pda-r-wide" - icon_pai = "pai-overlay-wide" - icon_inactive_pai = "pai-off-overlay-wide" - inserted_item = /obj/item/pen/charcoal diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm deleted file mode 100644 index 8f2ccadf85a..00000000000 --- a/code/game/objects/items/devices/PDA/cart.dm +++ /dev/null @@ -1,700 +0,0 @@ - -#define CART_SECURITY (1<<0) -#define CART_ENGINE (1<<1) -#define CART_ATMOS (1<<2) -#define CART_MEDICAL (1<<3) -#define CART_MANIFEST (1<<4) -#define CART_CLOWN (1<<5) -#define CART_MIME (1<<6) -#define CART_REAGENT_SCANNER (1<<7) -#define CART_NEWSCASTER (1<<8) -#define CART_REMOTE_DOOR (1<<9) -#define CART_STATUS_DISPLAY (1<<10) -#define CART_QUARTERMASTER (1<<11) -#define CART_HYDROPONICS (1<<12) -#define CART_DRONEPHONE (1<<13) - - -/obj/item/cartridge - name = "generic cartridge" - desc = "A data cartridge for portable microcomputers." - icon = 'icons/obj/pda.dmi' - icon_state = "cart" - item_state = "electronic" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - w_class = WEIGHT_CLASS_TINY - - var/obj/item/integrated_signaler/radio = null - - var/access = 0 //Bit flags for cartridge access - - var/remote_door_id = "" - - var/bot_access_flags = 0 //Bit flags. Selection: SEC_BOT | MULE_BOT | FLOOR_BOT | CLEAN_BOT | MED_BOT | FIRE_BOT - var/spam_delay = 0 //Enables "Send to All" Option. 1=1 min, 2=2mins, 2.5=2 min 30 seconds - - var/obj/item/pda/host_pda = null - var/menu - var/datum/data/record/active1 = null //General - var/datum/data/record/active2 = null //Medical - var/datum/data/record/active3 = null //Security - var/obj/machinery/computer/monitor/powmonitor = null // Power Monitor - var/list/powermonitors = list() - var/message1 // used for status_displays - var/message2 - var/list/stored_data = list() - var/current_channel - - var/mob/living/simple_animal/bot/active_bot - var/list/botlist = list() - -/obj/item/cartridge/Initialize(mapload) - . = ..() - var/obj/item/pda/pda = loc - if(istype(pda)) - host_pda = pda - -/obj/item/cartridge/engineering - name = "\improper Power-ON cartridge" - icon_state = "cart-engie" - access = CART_ENGINE | CART_DRONEPHONE - bot_access_flags = FLOOR_BOT - -/obj/item/cartridge/atmos - name = "\improper BreatheDeep cartridge" - icon_state = "cart-atmos" - access = CART_ATMOS | CART_DRONEPHONE - bot_access_flags = FLOOR_BOT | FIRE_BOT - -/obj/item/cartridge/medical - name = "\improper Med-U cartridge" - icon_state = "cart-med" - access = CART_MEDICAL - bot_access_flags = MED_BOT - -/obj/item/cartridge/chemistry - name = "\improper ChemWhiz cartridge" - icon_state = "cart-chem" - access = CART_REAGENT_SCANNER - bot_access_flags = MED_BOT - -/obj/item/cartridge/security - name = "\improper R.O.B.U.S.T. cartridge" - icon_state = "cart-sec" - access = CART_SECURITY | CART_MANIFEST - bot_access_flags = SEC_BOT - -/obj/item/cartridge/detective - name = "\improper D.E.T.E.C.T. cartridge" - icon_state = "cart-det" - access = CART_SECURITY | CART_MEDICAL | CART_MANIFEST - bot_access_flags = SEC_BOT - -/obj/item/cartridge/janitor - name = "\improper CustodiPRO cartridge" - desc = "The ultimate in clean-room design." - icon_state = "cart-jan" - access = CART_DRONEPHONE - bot_access_flags = CLEAN_BOT - -/obj/item/cartridge/lawyer - name = "\improper P.R.O.V.E. cartridge" - icon_state = "cart-prove" - access = CART_SECURITY - spam_delay = 2.5 - -/obj/item/cartridge/curator - name = "\improper Lib-Tweet cartridge" - icon_state = "cart-cur" - access = CART_NEWSCASTER - spam_delay = 3.5 - -/obj/item/cartridge/roboticist - name = "\improper B.O.O.P. Remote Control cartridge" - desc = "Packed with heavy duty quad-bot interlink!" - icon_state = "cart-robo" - bot_access_flags = FLOOR_BOT | CLEAN_BOT | MED_BOT | FIRE_BOT - access = CART_DRONEPHONE - -/obj/item/cartridge/signal - name = "generic signaler cartridge" - icon_state = "cart-signal" - desc = "A data cartridge with an integrated radio signaler module." - -/obj/item/cartridge/signal/toxins - name = "\improper Signal Ace 2 cartridge" - desc = "Complete with integrated radio signaler!" - icon_state = "cart-tox" - access = CART_REAGENT_SCANNER | CART_ATMOS - -/obj/item/cartridge/signal/Initialize(mapload) - . = ..() - radio = new(src) - -/obj/item/cartridge/quartermaster - name = "space parts & space vendors cartridge" - desc = "Perfect for the Quartermaster on the go!" - icon_state = "cart-qm" - access = CART_QUARTERMASTER - bot_access_flags = MULE_BOT - -/obj/item/cartridge/head - name = "\improper Easy-Record DELUXE cartridge" - icon_state = "cart-val" - access = CART_MANIFEST | CART_STATUS_DISPLAY - -/obj/item/cartridge/hop - name = "\improper HumanResources9001 cartridge" - icon_state = "cart-hop" - access = CART_MANIFEST | CART_STATUS_DISPLAY | CART_SECURITY | CART_NEWSCASTER | CART_QUARTERMASTER | CART_DRONEPHONE - bot_access_flags = MULE_BOT | CLEAN_BOT - -/obj/item/cartridge/hos - name = "\improper R.O.B.U.S.T. DELUXE cartridge" - icon_state = "cart-hos" - access = CART_MANIFEST | CART_STATUS_DISPLAY | CART_SECURITY - bot_access_flags = SEC_BOT - -/obj/item/cartridge/ce - name = "\improper Power-On DELUXE cartridge" - icon_state = "cart-ce" - access = CART_MANIFEST | CART_STATUS_DISPLAY | CART_ENGINE | CART_ATMOS | CART_DRONEPHONE - bot_access_flags = FLOOR_BOT | FIRE_BOT - -/obj/item/cartridge/cmo - name = "\improper Med-U DELUXE cartridge" - icon_state = "cart-cmo" - access = CART_MANIFEST | CART_STATUS_DISPLAY | CART_REAGENT_SCANNER | CART_MEDICAL - bot_access_flags = MED_BOT - -/obj/item/cartridge/rd - name = "\improper Signal Ace DELUXE cartridge" - icon_state = "cart-rd" - access = CART_MANIFEST | CART_STATUS_DISPLAY | CART_REAGENT_SCANNER | CART_ATMOS | CART_DRONEPHONE - bot_access_flags = FLOOR_BOT | CLEAN_BOT | MED_BOT | FIRE_BOT - -/obj/item/cartridge/rd/Initialize(mapload) - . = ..() - radio = new(src) - -/obj/item/cartridge/captain - name = "\improper Value-PAK cartridge" - desc = "Now with 350% more value!" //Give the Captain...EVERYTHING! (Except Mime, Clown, and Syndie) - icon_state = "cart-cap" - access = ~(CART_CLOWN | CART_MIME | CART_REMOTE_DOOR) - bot_access_flags = SEC_BOT | MULE_BOT | FLOOR_BOT | CLEAN_BOT | MED_BOT | FIRE_BOT - spam_delay = 2 - -/obj/item/cartridge/captain/Initialize(mapload) - . = ..() - radio = new(src) - -/obj/item/cartridge/annoyance //the only purpose of this cartridge is to allow the VIP to be annoying - name = "\improper TWIT cartridge" - icon_state = "cart-twit" - spam_delay = 1.5 - -/obj/item/cartridge/annoyance/lesser //HoP can give you this - name = "\improper FACEBUCKS cartridge" - icon_state = "cart-signal" // might need a new sprite - spam_delay = 5 - -/obj/item/cartridge/proc/post_status(command, data1, data2) - - var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS) - - if(!frequency) - return - - var/datum/signal/status_signal = new(list("command" = command)) - switch(command) - if("message") - status_signal.data["msg1"] = data1 - status_signal.data["msg2"] = data2 - message_admins("[ADMIN_LOOKUPFLW(usr)] changed the Status Message to - [data1], [data2] - From a PDA.") - log_game("[key_name(usr)] changed the Status Message to - [data1], [data2] - From a PDA.") - if("alert") - status_signal.data["picture_state"] = data1 - - frequency.post_signal(src, status_signal) - -/obj/item/cartridge/proc/generate_menu(mob/user) - if(!host_pda) - return - switch(host_pda.mode) - if(40) //signaller - menu = "

          [PDAIMG(signaler)] Remote Signaling System

          " - - menu += {" -Send Signal
          -Frequency: -- -- -[format_frequency(radio.frequency)] -+ -+
          -
          -Code: -- -- -[radio.code] -+ -+
          "} - if (41) //crew manifest - menu = "

          [PDAIMG(notes)] Crew Manifest

          " - menu += "
          [GLOB.data_core.get_manifest_html(monochrome=TRUE)]
          " - - if (42) //status displays - menu = "

          [PDAIMG(status)] Station Status Display Interlink

          " - - menu += "\[ Clear \]
          " - menu += "\[ Shuttle ETA \]
          " - menu += "\[ Message \]" - menu += "
          " - menu += "\[ Alert: None |" - menu += " Red Alert |" - menu += " Lockdown |" - menu += " Biohazard \]
          " - - if (43) - menu = "

          [PDAIMG(power)] Power Monitors - Please select one


          " - powmonitor = null - powermonitors = list() - var/powercount = 0 - - - - var/turf/pda_turf = get_turf(src) - for(var/obj/machinery/computer/monitor/pMon in GLOB.machines) - if(pMon.machine_stat & (NOPOWER | BROKEN)) //check to make sure the computer is functional - continue - if(pda_turf.get_virtual_z_level() != pMon.get_virtual_z_level()) //and that we're on the same zlevel as the computer (lore: limited signal strength) - continue - if(pMon.is_secret_monitor) //make sure it isn't a secret one (ie located on a ruin), allowing people to metagame that the location exists - continue - powercount++ - powermonitors += pMon - - - if(!powercount) - menu += "No connection
          " - else - - menu += "" - var/count = 0 - for(var/obj/machinery/computer/monitor/pMon in powermonitors) - count++ - menu += "[pMon] - [get_area_name(pMon, TRUE)]
          " - - menu += "
          " - - if (433) - menu = "

          [PDAIMG(power)] Power Monitor


          " - if(!powmonitor || !powmonitor.get_powernet()) - menu += "No connection
          " - else - var/list/L = list() - var/datum/powernet/connected_powernet = powmonitor.get_powernet() - for(var/obj/machinery/power/terminal/term in connected_powernet.nodes) - if(istype(term.master, /obj/machinery/power/apc)) - var/obj/machinery/power/apc/A = term.master - L += A - - menu += "
          Location: [get_area_name(powmonitor, TRUE)]
          Total power: [display_power(connected_powernet.viewavail)]
          Total load: [display_power(connected_powernet.viewload)]
          " - - menu += "" - - if(L.len > 0) - menu += "Area Eqp./Lgt./Env. Load Cell
          " - - var/list/S = list(" Off","AOff"," On", " AOn") - var/list/chg = list("N","C","F") -//Neither copytext nor copytext_char is appropriate here; neither 30 UTF-8 code units nor 30 code points equates to 30 columns of output. -//Some glyphs are very tall or very wide while others are small or even take up no space at all. -//Emojis can take modifiers which are many characters but render as only one glyph. -//A proper solution here (as far as Unicode goes, maybe not ideal as far as markup goes, a table would be better) -//would be to use [A.area.name] - for(var/obj/machinery/power/apc/A in L) - menu += copytext_char(add_trailing(A.area.name, 30, " "), 1, 30) - if(A.integration_cog) - menu += " [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] [add_leading(display_power(A.lastused_total), 6, " ")] 100% F
          " - else - menu += " [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] [add_leading(display_power(A.lastused_total), 6, " ")] [A.cell ? "[add_leading("[round(A.cell.percent())]", 3, " ")]% [chg[A.charging+1]]" : " N/C"]
          " - - menu += "
          " - - if (44) //medical records //This thing only displays a single screen so it's hard to really get the sub-menu stuff working. - menu = "

          [PDAIMG(medical)] Medical Record List

          " - if(GLOB.data_core.general) - for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) - menu += "[R.fields["id"]]: [R.fields["name"]]
          " - menu += "
          " - if(441) - menu = "

          [PDAIMG(medical)] Medical Record

          " - - if(active1 in GLOB.data_core.general) - menu += "Name: [active1.fields["name"]] ID: [active1.fields["id"]]
          " - menu += "Gender: [active1.fields["gender"]]
          " //NSV13 - Gender Neutrality - menu += "Age: [active1.fields["age"]]
          " - menu += "Rank: [active1.fields["rank"]]
          " - menu += "Fingerprint: [active1.fields["fingerprint"]]
          " - menu += "Physical Status: [active1.fields["p_stat"]]
          " - menu += "Mental Status: [active1.fields["m_stat"]]
          " - else - menu += "Record Lost!
          " - - menu += "
          " - - menu += "

          [PDAIMG(medical)] Medical Data

          " - if(active2 in GLOB.data_core.medical) - menu += "Blood Type: [active2.fields["blood_type"]]

          " - - menu += "Minor Disabilities: [active2.fields["mi_dis"]]
          " - menu += "Details: [active2.fields["mi_dis_d"]]

          " - - menu += "Major Disabilities: [active2.fields["ma_dis"]]
          " - menu += "Details: [active2.fields["ma_dis_d"]]

          " - - menu += "Allergies: [active2.fields["alg"]]
          " - menu += "Details: [active2.fields["alg_d"]]

          " - - menu += "Current Diseases: [active2.fields["cdi"]]
          " - menu += "Details: [active2.fields["cdi_d"]]

          " - - menu += "Important Notes: [active2.fields["notes"]]
          " - else - menu += "Record Lost!
          " - - menu += "
          " - if (45) //security records - menu = "

          [PDAIMG(cuffs)] Security Record List

          " - if(GLOB.data_core.general) - for (var/datum/data/record/R in sortRecord(GLOB.data_core.general)) - menu += "
          [R.fields["id"]]: [R.fields["name"]]
          " - - menu += "
          " - if(451) - menu = "

          [PDAIMG(cuffs)] Security Record

          " - - if(active1 in GLOB.data_core.general) - menu += "Name: [active1.fields["name"]] ID: [active1.fields["id"]]
          " - menu += "Gender: [active1.fields["gender"]]
          " //NSV13 - Gender Neutrality - menu += "Age: [active1.fields["age"]]
          " - menu += "Rank: [active1.fields["rank"]]
          " - menu += "Fingerprint: [active1.fields["fingerprint"]]
          " - menu += "Physical Status: [active1.fields["p_stat"]]
          " - menu += "Mental Status: [active1.fields["m_stat"]]
          " - else - menu += "Record Lost!
          " - - menu += "
          " - - menu += "

          [PDAIMG(cuffs)] Security Data

          " - if(active3 in GLOB.data_core.security) - menu += "Criminal Status: [active3.fields["criminal"]]
          " - - menu += text("
          \nCrimes:") - - menu +={" - - - - - -"} - for(var/datum/data/crime/c in active3.fields["crim"]) - menu += "" - menu += "" - menu += "" - menu += "" - menu += "" - menu += "
          CrimeDetailsAuthorTime Added
          [c.crimeName][c.crimeDetails][c.author][c.time]
          " - - menu += "
          \nImportant Notes:
          " - menu += "[active3.fields["notes"]]" - else - menu += "Record Lost!
          " - - menu += "
          " - - if (47) //quartermaster order records - menu = "

          [PDAIMG(crate)] Supply Record Interlink

          " - - menu += "
          Supply shuttle
          " - menu += "Location: " - switch(SSshuttle.supply.mode) - if(SHUTTLE_CALL) - menu += "Moving to " - if(!is_station_level(SSshuttle.supply.z)) - menu += "station" - else - menu += "CentCom" - menu += " ([SSshuttle.supply.timeLeft(600)] Mins)" - else - menu += "At " - if(!is_station_level(SSshuttle.supply.z)) - menu += "CentCom" - else - menu += "station" - menu += "
          Current approved orders:
            " - for(var/S in SSshuttle.shoppinglist) - var/datum/supply_order/SO = S - menu += "
          1. #[SO.id] - [SO.pack.name] approved by [SO.orderer] [SO.reason ? "([SO.reason])":""]
          2. " - menu += "
          " - - menu += "Current requests:
            " - for(var/S in SSshuttle.requestlist) - var/datum/supply_order/SO = S - menu += "
          1. #[SO.id] - [SO.pack.name] requested by [SO.orderer]
          2. " - menu += "
          Upgrade NOW to Space Parts & Space Vendors PLUS for full remote order control and inventory management." - - if (48) // quartermaster ore logs - menu = list("

          [PDAIMG(crate)] Ore Silo Logs

          ") - if (GLOB.ore_silo_default) - var/list/logs = GLOB.silo_access_logs[REF(GLOB.ore_silo_default)] - var/len = LAZYLEN(logs) - var/i = 0 - for(var/M in logs) - if (++i > 30) - menu += "(... older logs not shown ...)" - break - var/datum/ore_silo_log/entry = M - menu += "[len - i]. [entry.formatted]

          " - if(i == 0) - menu += "Nothing!" - else - menu += "No ore silo detected!" - menu = jointext(menu, "") - - if (53) // Newscaster - menu = "

          [PDAIMG(notes)] Newscaster Access

          " - menu += "
          Current Newsfeed:
          [current_channel ? current_channel : "None"]
          " - var/datum/newscaster/feed_channel/current - for(var/datum/newscaster/feed_channel/chan in GLOB.news_network.network_channels) - if (chan.channel_name == current_channel) - current = chan - if(!current) - menu += "
          ERROR : NO CHANNEL FOUND
          " - return menu - var/i = 1 - for(var/datum/newscaster/feed_message/msg in current.messages) - menu +="-[msg.returnBody(-1)]
          \[Story by [msg.returnAuthor(-1)]\]
          " - menu +="[msg.comments.len] comment[msg.comments.len > 1 ? "s" : ""]
          " - if(msg.img) - user << browse_rsc(msg.img, "tmp_photo[i].png") - menu +="
          " - i++ - for(var/datum/newscaster/feed_comment/comment in msg.comments) - menu +="[comment.body]
          [comment.author] [comment.time_stamp]
          " - menu += "
          Post Message" - - if (54) // Beepsky, Medibot, Floorbot, and Cleanbot access - menu = "

          [PDAIMG(medbot)] Bots Interlink

          " - bot_control() - if (55) // Emoji Guidebook for mimes - menu = "

          [PDAIMG(emoji)] Emoji Guidebook

          " - var/static/list/emoji_icon_states - var/static/emoji_table - if(!emoji_table) - var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/chat) - var/list/collate = list("
          ") - for(var/emoji in sortList(icon_states(icon('icons/emoji.dmi')))) - var/tag = sheet.icon_tag("emoji-[emoji]") - collate += "" - collate += "
          [emoji][tag]

          " - emoji_table = collate.Join() - - menu += "
          To use an emoji in a pda message, refer to the guide and add \":\" around the emoji. Your PDA supports the following emoji:
          " - menu += emoji_table - - if (99) //Newscaster message permission error - menu = "
          ERROR : NOT AUTHORIZED [host_pda.id ? "" : "- ID SLOT EMPTY"]
          " - - return menu - -/obj/item/cartridge/Topic(href, href_list) - ..() - - if(!usr.canUseTopic(src, !issilicon(usr))) - usr.unset_machine() - usr << browse(null, "window=pda") - return - - switch(href_list["choice"]) - if("Medical Records") - active1 = find_record("id", href_list["target"], GLOB.data_core.general) - if(active1) - active2 = find_record("id", href_list["target"], GLOB.data_core.medical) - host_pda.mode = 441 - if(!active2) - active1 = null - - if("Security Records") - active1 = find_record("id", href_list["target"], GLOB.data_core.general) - if(active1) - active3 = find_record("id", href_list["target"], GLOB.data_core.security) - host_pda.mode = 451 - if(!active3) - active1 = null - - if("Send Signal") - INVOKE_ASYNC(radio, TYPE_PROC_REF(/obj/item/integrated_signaler, send_activation)) - - if("Signal Frequency") - var/new_frequency = sanitize_frequency(radio.frequency + text2num(href_list["sfreq"])) - radio.set_frequency(new_frequency) - - if("Signal Code") - radio.code += text2num(href_list["scode"]) - radio.code = round(radio.code) - radio.code = min(100, radio.code) - radio.code = max(1, radio.code) - - if("Status") - switch(href_list["statdisp"]) - if("message") - post_status("message", message1, message2) - if("alert") - post_status("alert", href_list["alert"]) - if("setmsg1") - message1 = reject_bad_text(capped_input(usr, "Line 1", "Enter Message Text", message1), 40) - updateSelfDialog() - if("setmsg2") - message2 = reject_bad_text(capped_input(usr, "Line 2", "Enter Message Text", message2), 40) - updateSelfDialog() - else - post_status(href_list["statdisp"]) - if("Power Select") - var/pnum = text2num(href_list["target"]) - powmonitor = powermonitors[pnum] - host_pda.mode = 433 - - if("Supply Orders") - host_pda.mode =47 - - if("Newscaster Access") - host_pda.mode = 53 - - if("Newscaster Message") - var/host_pda_owner_name = host_pda.id ? "[host_pda.id.registered_name] ([host_pda.id.assignment])" : "Unknown" - var/message = host_pda.msg_input() - var/datum/newscaster/feed_channel/current - for(var/datum/newscaster/feed_channel/chan in GLOB.news_network.network_channels) - if (chan.channel_name == current_channel) - current = chan - if(current.locked && current.author != host_pda_owner_name) - host_pda.mode = 99 - host_pda.Topic(null,list("choice"="Refresh")) - return - GLOB.news_network.SubmitArticle(message,host_pda.owner,current_channel) - host_pda.Topic(null,list("choice"=num2text(host_pda.mode))) - return - - if("Newscaster Switch Channel") - current_channel = host_pda.msg_input() - host_pda.Topic(null,list("choice"=num2text(host_pda.mode))) - return - - //emoji previews - if(href_list["emoji"]) - var/parse = emoji_parse(":[href_list["emoji"]]:") - to_chat(usr, parse) - - //Bot control section! Viciously ripped from radios for being laggy and terrible. - if(href_list["op"]) - switch(href_list["op"]) - - if("control") - active_bot = locate(href_list["bot"]) in GLOB.bots_list - - if("botlist") - active_bot = null - if("summon") //Args are in the correct order, they are stated here just as an easy reminder. - active_bot.bot_control("summon", usr, host_pda.GetAccess()) - else //Forward all other bot commands to the bot itself! - active_bot.bot_control(href_list["op"], usr) - - if(href_list["mule"]) //MULEbots are special snowflakes, and need different args due to how they work. - var/mob/living/simple_animal/bot/mulebot/mule = active_bot - if (istype(mule)) - mule.bot_control(href_list["mule"], usr, pda=TRUE) - - if(!host_pda) - return - host_pda.attack_self(usr) - - -/obj/item/cartridge/proc/bot_control() - if(active_bot) - menu += "[active_bot]
          Status: ([PDAIMG(refresh)]refresh)
          " - menu += "Model: [active_bot.model]
          " - menu += "Location: [get_area(active_bot)]
          " - menu += "Mode: [active_bot.get_mode()]" - if(active_bot.allow_pai) - menu += "
          pAI: " - if(active_bot.paicard?.pai) - menu += "[active_bot.paicard.pai.name]" - if(active_bot.bot_core.allowed(usr)) - menu += " (eject)" - else - menu += "none" - - //MULEs! - if(active_bot.bot_type == MULE_BOT) - var/mob/living/simple_animal/bot/mulebot/MULE = active_bot - var/atom/Load = MULE.load - menu += "
          Current Load: [ !Load ? "none" : "[Load.name] (unload)" ]
          " - menu += "Destination: [MULE.destination ? MULE.destination : "None"] (set)
          " - menu += "Set ID: [MULE.suffix] Modify
          " - menu += "Power: [MULE.cell ? MULE.cell.percent() : 0]%
          " - menu += "Home: [!MULE.home_destination ? "none" : MULE.home_destination ]
          " - menu += "Delivery Reporting: [MULE.report_delivery ? "(On)": "(Off)"]
          " - menu += "Auto Return Home: [MULE.auto_return ? "(On)": "(Off)"]
          " - menu += "Auto Pickup Crate: [MULE.auto_pickup ? "(On)": "(Off)"]

          " //Hue. - - menu += "\[Stop\] " - menu += "\[Proceed\] " - menu += "\[Return Home\]
          " - - else - menu += "
          \[Stop Patrol\] " //patrolon - menu += "\[Start Patrol\] " //patroloff - menu += "\[Summon Bot\]
          " //summon - menu += "Keep an ID inserted to upload access codes upon summoning." - - menu += "
          [PDAIMG(back)]Return to bot list" - else - menu += "
          [PDAIMG(refresh)]Scan for active bots

          " - var/turf/current_turf = get_turf(src) - var/zlevel = current_turf.get_virtual_z_level() - var/botcount = 0 - for(var/B in GLOB.bots_list) //Git da botz - var/mob/living/simple_animal/bot/Bot = B - if(!Bot.on || Bot.remote_disabled || !(bot_access_flags & Bot.bot_type)) //Only non-emagged bots are detected! - continue //Also, the PDA must have access to the bot type. - if(Bot.get_virtual_z_level() in SSmapping.levels_by_trait(ZTRAIT_STATION)) - if(zlevel in SSmapping.levels_by_trait(ZTRAIT_STATION)) - menu += "[Bot.name] ([Bot.get_mode()])
          " - botcount++ - else if(Bot.get_virtual_z_level() == zlevel) - if(!(zlevel in SSmapping.levels_by_trait(ZTRAIT_STATION))) - menu += "
          [Bot.name] ([Bot.get_mode()])
          " - botcount++ - if(!botcount) //No bots at all? Lame. - menu += "No bots found.
          " - return - - return menu - -//If the cartridge adds a special line to the top of the messaging app -/obj/item/cartridge/proc/message_header() - return "" - -//If the cartridge adds something to each potetial messaging target -/obj/item/cartridge/proc/message_special(obj/item/pda/target) - return "" - -//This is called for special abilities of cartridges -/obj/item/cartridge/proc/special(mob/living/user, list/params) diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm deleted file mode 100644 index 474ebebe595..00000000000 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ /dev/null @@ -1,107 +0,0 @@ -/obj/item/cartridge/virus - name = "Generic Virus PDA cart" - var/charges = 5 - -/obj/item/cartridge/virus/proc/send_virus(obj/item/pda/target, mob/living/U) - return - -/obj/item/cartridge/virus/message_header() - return "[charges] viral files left.
          " - -/obj/item/cartridge/virus/message_special(obj/item/pda/target) - if (!istype(loc, /obj/item/pda)) - return "" //Sanity check, this shouldn't be possible. - return " (
          *Send Virus*)" - -/obj/item/cartridge/virus/special(mob/living/user, list/params) - var/obj/item/pda/P = locate(params["target"]) in GLOB.PDAs //Leaving it alone in case it may do something useful, I guess. - send_virus(P,user) - -/obj/item/cartridge/virus/clown - name = "\improper Honkworks 5.0 cartridge" - icon_state = "cart-clown" - desc = "A data cartridge for portable microcomputers. It smells vaguely of bananas." - access = CART_CLOWN - -/obj/item/cartridge/virus/clown/send_virus(obj/item/pda/target, mob/living/U) - if(charges <= 0) - to_chat(U, "Out of charges.") - return - if(!isnull(target) && !target.toff) - charges-- - to_chat(U, "Virus Sent!") - target.honkamt = (rand(15,20)) - else - to_chat(U, "PDA not found.") - -/obj/item/cartridge/virus/mime - name = "\improper Gestur-O 1000 cartridge" - icon_state = "cart-mi" - access = CART_MIME - -/obj/item/cartridge/virus/mime/send_virus(obj/item/pda/target, mob/living/U) - if(charges <= 0) - to_chat(U, "Out of charges.") - return - if(!isnull(target) && !target.toff) - charges-- - to_chat(U, "Virus Sent!") - target.silent = TRUE - target.ttone = "silence" - else - to_chat(U, "PDA not found.") - -/obj/item/cartridge/virus/syndicate - name = "\improper Detomatix cartridge" - icon_state = "cart-detomatrix" - access = CART_REMOTE_DOOR - remote_door_id = "smindicate" //Make sure this matches the syndicate shuttle's shield/door id!! //don't ask about the name, testing. - charges = 4 - -/obj/item/cartridge/virus/syndicate/send_virus(obj/item/pda/target, mob/living/U) - if(charges <= 0) - to_chat(U, "Out of charges.") - return - if(!isnull(target) && !target.toff) - charges-- - var/difficulty = 0 - if(target.cartridge) - difficulty += bit_count(target.cartridge.access&(CART_MEDICAL | CART_SECURITY | CART_ENGINE | CART_CLOWN | CART_MANIFEST)) - if(target.cartridge.access & CART_MANIFEST) - difficulty++ //if cartridge has manifest access it has extra snowflake difficulty - else - difficulty += 2 - var/datum/component/uplink/hidden_uplink = target.GetComponent(/datum/component/uplink) - if(!target.detonatable || prob(difficulty * 15) || (hidden_uplink)) - U.show_message("An error flashes on your [src].", MSG_VISUAL) - else - log_bomber(U, "triggered a PDA explosion on", target, "[!is_special_character(U) ? "(TRIGGED BY NON-ANTAG)" : ""]") - U.show_message("Success!", MSG_VISUAL) - target.explode() - else - to_chat(U, "PDA not found.") - -/obj/item/cartridge/virus/frame - name = "\improper F.R.A.M.E. cartridge" - icon_state = "cart-prove" - var/telecrystals = 0 - -/obj/item/cartridge/virus/frame/send_virus(obj/item/pda/target, mob/living/U) - if(charges <= 0) - to_chat(U, "Out of charges.") - return - if(!isnull(target) && !target.toff) - charges-- - var/lock_code = "[rand(100,999)] [pick(GLOB.phonetic_alphabet)]" - to_chat(U, "Virus Sent! The unlock code to the target is: [lock_code]") - var/datum/component/uplink/hidden_uplink = target.GetComponent(/datum/component/uplink) - if(!hidden_uplink) - hidden_uplink = target.AddComponent(/datum/component/uplink) - hidden_uplink.unlock_code = lock_code - else - hidden_uplink.hidden_crystals += hidden_uplink.telecrystals //Temporarially hide the PDA's crystals, so you can't steal telecrystals. - hidden_uplink.telecrystals = telecrystals - telecrystals = 0 - hidden_uplink.active = TRUE - else - to_chat(U, "PDA not found.") diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 6162b067f30..3d12b10ddb4 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -137,6 +137,8 @@ src.pai = personality src.add_overlay("pai-null") + pai.modularInterface?.saved_identification = pai.name + playsound(loc, 'sound/effects/pai_boot.ogg', 50, 1, -1) audible_message("\The [src] plays a cheerful startup noise!") diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index fae0e73b471..6dddb203bc4 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -359,7 +359,7 @@ GENE SCANNER else if(S.mutantstomach != initial(S.mutantstomach)) mutant = TRUE - to_chat(user, "Species: [S.name][mutant ? "-derived mutant" : ""]") + to_chat(user, "Species: [S.name][mutant ? "-derived mutant" : ""]") //NSV13 - species name is colored depending on special conditions. to_chat(user, "Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)") // Time of death diff --git a/code/game/objects/items/devices/spyglasses.dm b/code/game/objects/items/devices/spyglasses.dm index 4e0f61e8579..6104aba9de5 100644 --- a/code/game/objects/items/devices/spyglasses.dm +++ b/code/game/objects/items/devices/spyglasses.dm @@ -94,7 +94,7 @@ name = "Espionage For Dummies" color = "#FFFF00" desc = "An eye gougingly yellow pamphlet with a badly designed image of a detective on it. the subtext says \" The Latest Way To Violate Privacy Guidelines!\" " - info = @{" + default_raw_text = @{" Thank you for your purchase of the Nerd Co SpySpeks tm, this paper will be your quick-start guide to violating the privacy of your crewmates in three easy steps!

          Step One: Nerd Co SpySpeks tm upon your face.
          Step Two: Place the included "ProfitProtektor tm" camera assembly in a place of your choosing - make sure to make heavy use of it's inconspicous design! Step Three: Press the "Activate Remote View" Button on the side of your SpySpeks tm to open a movable camera display in the corner of your vision, it's just that easy!


          TROUBLESHOOTING
          diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 02822e93f44..29a6661de36 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -222,13 +222,14 @@ return to_chat(usr, "Transcript printed.") - var/obj/item/paper/P = new /obj/item/paper(get_turf(src)) + var/obj/item/paper/transcript_paper = new /obj/item/paper(get_turf(src)) var/t1 = "Transcript:

          " for(var/i = 1, mytape.storedinfo.len >= i, i++) t1 += "[mytape.storedinfo[i]]
          " - P.info = t1 - P.name = "paper- 'Transcript'" - usr.put_in_hands(P) + transcript_paper.add_raw_text(t1) + transcript_paper.name = "paper- 'Transcript'" + transcript_paper.update_appearance() + usr.put_in_hands(transcript_paper) canprint = FALSE addtimer(VARSET_CALLBACK(src, canprint, TRUE), 30 SECONDS) diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index e0ff8f815ae..dcfbfc98696 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -196,9 +196,9 @@ /obj/item/extinguisher/proc/manage_chair_speed(datum/move_loop/move/source) SIGNAL_HANDLER switch(source.lifetime) - if(5 to 4) + if(4 to 5) source.delay = 2 - if(3 to 1) + if(1 to 3) source.delay = 3 /obj/item/extinguisher/AltClick(mob/user) diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index f53736c34a6..927972aa065 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -59,7 +59,7 @@ return if(do_after(user,50, user)) on_reading_finished(user) - reading = FALSE + reading = FALSE return TRUE ///ACTION BUTTONS/// diff --git a/code/game/objects/items/grenades/flashbang.dm b/code/game/objects/items/grenades/flashbang.dm index d19afff9731..06d247f5f7d 100644 --- a/code/game/objects/items/grenades/flashbang.dm +++ b/code/game/objects/items/grenades/flashbang.dm @@ -35,7 +35,7 @@ if(M.flash_act(intensity = 1, affect_silicon = 1)) if(distance_proportion) - M.Paralyze(20 * distance_proportion) + M.Paralyze(100 * distance_proportion) //NSV13 - longer paralyze M.Knockdown(200 * distance_proportion) else M.flash_act(intensity = 2) @@ -47,12 +47,12 @@ var/distance = max(0,get_dist(get_turf(src),T)) M.show_message("BANG", MSG_AUDIBLE) if(!distance || loc == M || loc == M.loc) //Stop allahu akbarring rooms with this. - M.Paralyze(20) + M.Paralyze(100) //NSV13 - made flashbangs stronger M.Knockdown(200) M.soundbang_act(1, 200, 10, 15) else if(distance <= 1) - M.Paralyze(5) + M.Paralyze(15) //NSV13 - readded paralyze M.Knockdown(30) var/distance_proportion = max(1 - (distance / flashbang_range), 0) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 36845c8446d..3779a8f4450 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -518,7 +518,7 @@ possessed = TRUE - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_POSSESSED_BLADE) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_SPECTRAL_BLADE, null, 10 SECONDS, ignore_category = POLL_IGNORE_SPECTRAL_BLADE) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) diff --git a/code/game/objects/items/mail.dm b/code/game/objects/items/mail.dm index 98ba8f7303e..4492e423505 100644 --- a/code/game/objects/items/mail.dm +++ b/code/game/objects/items/mail.dm @@ -357,14 +357,13 @@ /obj/item/paper/fluff/nice_argument/Initialize() . = ..() var/station_name = station_name() - info = "Nice argument, however there's a small detail...
          IP: '[rand(0,10)].[rand(0,255)].[rand(0,255)].[rand(0,255)]'
          Station name: '[station_name]'
          " + add_raw_text("Nice argument, however there's a small detail...
          IP: '[rand(0,10)].[rand(0,255)].[rand(0,255)].[rand(0,255)]'
          Station name: '[station_name]'
          ") /obj/item/paper/fluff/junkmail_redpill/Initialize() - . = ..() // 1 in 1000 chance of getting 2 random nuke code characters. if(!prob(nuclear_option_odds)) - info = "You need to escape the simulation. Don't forget the numbers, they help you remember: '[random_code(4)]...'" - return + add_raw_text("You need to escape the simulation. Don't forget the numbers, they help you remember: '[random_code(4)]...'") + return ..() var/code = random_code(5) for(var/obj/machinery/nuclearbomb/selfdestruct/nuke in GLOB.nuke_list) if(nuke) @@ -376,7 +375,8 @@ else stack_trace("Station self-destruct not found during lone op team creation.") code = null - info = "You need to escape the simulation. Don't forget the numbers, they help you remember: '[code[rand(1,5)]][code[rand(1,5)]][code[rand(1,5)]][code[rand(1,5)]]...'" + add_raw_text("You need to escape the simulation. Don't forget the numbers, they help you remember: '[code[rand(1,5)]][code[rand(1,5)]][code[rand(1,5)]][code[rand(1,5)]]...'") + return ..() //admin letter enabling players to brute force their way through the nuke code if they're so inclined. /obj/item/paper/fluff/junkmail_redpill/true @@ -389,5 +389,5 @@ color = "#FFCCFF" /obj/item/paper/fluff/junkmail_generic/Initialize() - . = ..() - info = pick(GLOB.junkmail_messages) + default_raw_text = pick(GLOB.junkmail_messages) + return ..() diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index d58d570f840..0856a81ab61 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -170,7 +170,9 @@ var/cooldown_check = 0 // Used interally, you don't want to modify var/cooldown = 20 // Default wait time until can stun again. - var/stun_time_silicon = (5 SECONDS) // If enabled, how long do we stun silicons. + var/knockdown_time_carbon = 0 //NSV13 - added knockdown times + var/stun_time_carbon = 0 //NSV13 - readded stun time variable + var/stun_time_silicon_multiplier = 0.6 //NSV13 - Multiplier for stunning silicons; if enabled, is 60% of human stun time. var/stamina_damage = 55 // Do we deal stamina damage. var/affect_silicon = FALSE // Does it stun silicons. var/on_sound // "On" sound, played when switching between able to stun or not. @@ -231,6 +233,11 @@ //Police Baton /obj/item/melee/classic_baton/police name = "police baton" + // NSV13 - added stun and knockdown, removed stamina, added silicon effects + stun_time_carbon = (3 SECONDS) + knockdown_time_carbon = (6 SECONDS) + stamina_damage = 0 + affect_silicon = TRUE /obj/item/melee/classic_baton/police/attack(mob/living/target, mob/living/user) if(!on) @@ -241,6 +248,9 @@ if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) to_chat(user, "You hit yourself over the head.") user.adjustStaminaLoss(stamina_damage) + //NSV13 - added stamina and knockdown + user.Paralyze(stun_time_carbon * force) + user.Knockdown(knockdown_time_carbon * force) additional_effects_carbon(user) // user is the target here if(ishuman(user)) @@ -256,7 +266,7 @@ var/list/desc = get_silicon_stun_description(target, user) target.flash_act(affect_silicon = TRUE) - target.Paralyze(stun_time_silicon) + target.Paralyze(stun_time_carbon * stun_time_silicon_multiplier) //NSV13 - silicon stun is a multiplier additional_effects_silicon(target, user) user.visible_message(desc["visible"], desc["local"]) @@ -292,6 +302,7 @@ playsound(get_turf(src), on_stun_sound, 75, 1, -1) additional_effects_carbon(target, user) if((user.zone_selected == BODY_ZONE_HEAD) || (user.zone_selected == BODY_ZONE_CHEST)) + target.Paralyze(stun_time_carbon) //NSV13 - readded stuns target.apply_damage(stamina_damage, STAMINA, BODY_ZONE_CHEST, def_check) log_combat(user, target, "stunned", src) target.visible_message(desc["visiblestun"], desc["localstun"]) @@ -410,7 +421,7 @@ item_flags = NONE force = 5 on = FALSE - var/knockdown_time_carbon = (1.5 SECONDS) // Knockdown length for carbons. + knockdown_time_carbon = (1.5 SECONDS) // NSV13 - Moved back to parent item var/stamina_damage_non_target = 55 var/stamina_damage_target = 85 var/target_confusion = 4 SECONDS @@ -490,7 +501,7 @@ var/list/desc = get_silicon_stun_description(target, user) target.flash_act(affect_silicon = TRUE) - target.Paralyze(stun_time_silicon) + target.Paralyze(stun_time_carbon * stun_time_silicon_multiplier) //NSV13 - silicon stun is a multiplier additional_effects_silicon(target, user) user.visible_message(desc["visible"], desc["local"]) diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index 10192c36555..b4122f97843 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -23,6 +23,11 @@ /obj/item/mop/Initialize(mapload) . = ..() create_reagents(mopcap) + GLOB.janitor_devices += src + +/obj/item/mop/Destroy() + GLOB.janitor_devices -= src + return ..() /obj/item/mop/proc/clean(turf/A) if(reagents.has_reagent(/datum/reagent/water, 1) || reagents.has_reagent(/datum/reagent/water/holywater, 1) || reagents.has_reagent(/datum/reagent/consumable/ethanol/vodka, 1) || reagents.has_reagent(/datum/reagent/space_cleaner, 1)) diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm index 1d45f8b640b..e45971db4c9 100644 --- a/code/game/objects/items/stacks/telecrystal.dm +++ b/code/game/objects/items/stacks/telecrystal.dm @@ -23,8 +23,8 @@ /obj/item/stack/telecrystal/afterattack(obj/item/I, mob/user, proximity) . = ..() - if(istype(I, /obj/item/cartridge/virus/frame)) - var/obj/item/cartridge/virus/frame/cart = I + if(istype(I, /obj/item/computer_hardware/hard_drive/role/virus/frame)) + var/obj/item/computer_hardware/hard_drive/role/virus/frame/cart = I if(!cart.charges) to_chat(user, "[cart] is out of charges, it's refusing to accept [src].") return diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm index 65f21a8aa93..740fdca2e34 100644 --- a/code/game/objects/items/stacks/wrap.dm +++ b/code/game/objects/items/stacks/wrap.dm @@ -68,6 +68,10 @@ return if(target.anchored) return + ///NSV13 - Cargo Borgs - Start + if(!amount) + return + ///NSV13 - Cargo Borgs - Stop if(isitem(target)) var/obj/item/I = target diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 4336923df53..2657d5b36ff 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -568,7 +568,7 @@ /obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun/PopulateContents() for(var/i in 1 to 6) new /obj/item/ammo_box/magazine/m12g(src) - new /obj/item/ammo_box/magazine/m12g/slug(src) + new /obj/item/ammo_box/magazine/m12g/stun(src) //NSV13 - added stun rounds new /obj/item/ammo_box/magazine/m12g/slug(src) new /obj/item/ammo_box/magazine/m12g/dragon(src) @@ -593,7 +593,7 @@ /obj/item/storage/backpack/duffelbag/syndie/bulldogbundle/PopulateContents() new /obj/item/gun/ballistic/shotgun/bulldog(src) - new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g/stun(src) //NSV13 - added stun rounds new /obj/item/ammo_box/magazine/m12g(src) new /obj/item/clothing/glasses/thermal/syndi(src) @@ -659,7 +659,7 @@ STR.silent = TRUE /obj/item/storage/backpack/duffelbag/clown/syndie/PopulateContents() - new /obj/item/pda/clown(src) + new /obj/item/modular_computer/tablet/pda/clown(src) new /obj/item/clothing/under/rank/civilian/clown(src) new /obj/item/clothing/shoes/clown_shoes(src) new /obj/item/clothing/mask/gas/clown_hat(src) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 771e5de0fb2..a5955db1157 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -82,6 +82,8 @@ name = "compression box of invisible outfits" desc = "a box with bluespace compression technology that nanotrasen has approved, but this is extremely heavy... If you're glued with this box, pull out of the contents and fold the box." w_class = WEIGHT_CLASS_HUGE + item_flags = SLOWS_WHILE_IN_HAND + slowdown = 4 drag_slowdown = 4 // do not steal by dragging /* Note for the compression box: Do not put any box (or suit) into this box, or it will allow infinite storage. @@ -89,19 +91,6 @@ nor it will allow a glitch when you can access different boxes at the same time. examples exist in `closets/secure/security.dm` */ -/obj/item/storage/box/suitbox/pickup(mob/user) - . = ..() - user.add_movespeed_modifier(MOVESPEED_ID_SLOW_SUITBOX, update=TRUE, priority=100, multiplicative_slowdown=4) - -/obj/item/storage/box/suitbox/dropped(mob/living/user) - ..() - var/box_exists = FALSE - for(var/obj/item/storage/box/suitbox/B in user.get_contents()) - box_exists = TRUE // `var/obj/item/storage/box/suitbox/B` is already type check - break - if(!box_exists) - user.remove_movespeed_modifier(MOVESPEED_ID_SLOW_SUITBOX, TRUE) - /obj/item/storage/box/suitbox/wardrobe // for `wardrobe.dm` name = "compression box of crew outfits" var/list/repeated_items = list( // just as a sample @@ -615,14 +604,14 @@ /obj/item/storage/box/PDAs/PopulateContents() for(var/i in 1 to 4) - new /obj/item/pda(src) - new /obj/item/cartridge/head(src) - - var/newcart = pick( /obj/item/cartridge/engineering, - /obj/item/cartridge/security, - /obj/item/cartridge/medical, - /obj/item/cartridge/signal/toxins, - /obj/item/cartridge/quartermaster) + new /obj/item/modular_computer/tablet/pda(src) + new /obj/item/computer_hardware/hard_drive/role/head(src) + + var/newcart = pick( /obj/item/computer_hardware/hard_drive/role/engineering, + /obj/item/computer_hardware/hard_drive/role/security, + /obj/item/computer_hardware/hard_drive/role/medical, + /obj/item/computer_hardware/hard_drive/role/signal/toxins, + /obj/item/computer_hardware/hard_drive/role/cargo_technician) new newcart(src) /obj/item/storage/box/silver_ids @@ -651,15 +640,15 @@ new /obj/item/card/id/prisoner/seven(src) /obj/item/storage/box/seccarts - name = "box of PDA security cartridges" - desc = "A box full of PDA cartridges used by Security." + name = "box of PDA security job disks" + desc = "A box full of PDA job disks used by Security." icon_state = "secbox" illustration = "pda" /obj/item/storage/box/seccarts/PopulateContents() - new /obj/item/cartridge/detective(src) + new /obj/item/computer_hardware/hard_drive/role/detective(src) for(var/i in 1 to 6) - new /obj/item/cartridge/security(src) + new /obj/item/computer_hardware/hard_drive/role/security(src) /obj/item/storage/box/firingpins name = "box of standard firing pins" @@ -1314,7 +1303,7 @@ /obj/item/storage/box/debugtools/PopulateContents() var/static/items_inside = list( /obj/item/flashlight/emp/debug=1,\ - /obj/item/pda=1,\ + /obj/item/modular_computer/tablet/pda=1,\ /obj/item/modular_computer/tablet/preset/advanced=1,\ /obj/item/storage/belt/military/abductor/full=1,\ /obj/item/geiger_counter=1,\ diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index d0433c5a75a..63a1746a337 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -103,7 +103,7 @@ new /obj/item/doorCharge(src) new /obj/item/camera_bug(src) new /obj/item/sbeacondrop/powersink(src) - new /obj/item/cartridge/virus/syndicate(src) + new /obj/item/computer_hardware/hard_drive/role/virus/syndicate(src) new /obj/item/storage/toolbox/syndicate(src) //To actually get to those places new /obj/item/pizzabox/bomb(src) new /obj/item/storage/box/syndie_kit/emp(src) @@ -218,7 +218,7 @@ name = "Contractor Guide" /obj/item/paper/contractor_guide/Initialize(mapload) - info = {"

          Welcome agent, congratulations on your new position as contractor. On top of your already assigned objectives, + default_raw_text = {"

          Welcome agent, congratulations on your new position as contractor. On top of your already assigned objectives, this kit will provide you contracts to take on for TC payments.

          Provided within, we give your specialist contractor space suit. It's even more compact, being able to fit into a pocket, and faster than the @@ -464,7 +464,7 @@ new /obj/item/storage/backpack/chameleon(src) new /obj/item/radio/headset/chameleon(src) new /obj/item/stamp/chameleon(src) - new /obj/item/pda/chameleon(src) + new /obj/item/modular_computer/tablet/pda/chameleon(src) new /obj/item/razor(src) new /obj/item/handmirror(src) new /obj/item/clothing/head/wig(src) @@ -484,7 +484,7 @@ new /obj/item/storage/backpack/chameleon(src) new /obj/item/radio/headset/chameleon(src) new /obj/item/stamp/chameleon(src) - new /obj/item/pda/chameleon(src) + new /obj/item/modular_computer/tablet/pda/chameleon(src) //5*(2*4) = 5*8 = 45, 45 damage if you hit one person with all 5 stars. //Not counting the damage it will do while embedded (2*4 = 8, at 15% chance) @@ -524,7 +524,7 @@ new /obj/item/radio/headset/headset_cent/empty(src) new /obj/item/clothing/glasses/sunglasses/advanced(src) new /obj/item/storage/backpack/satchel(src) - new /obj/item/pda/heads(src) + new /obj/item/modular_computer/tablet/pda/heads(src) new /obj/item/clipboard(src) /obj/item/storage/box/syndie_kit/chameleon/broken/PopulateContents() @@ -538,7 +538,7 @@ new /obj/item/storage/backpack/chameleon/broken(src) new /obj/item/radio/headset/chameleon/broken(src) new /obj/item/stamp/chameleon/broken(src) - new /obj/item/pda/chameleon/broken(src) + new /obj/item/modular_computer/tablet/pda/chameleon/broken(src) new /obj/item/card/id/syndicate/broken(src) // No chameleon laser, they can't randomise for //REASONS// diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index ebcbc14643a..5bb14794513 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -175,10 +175,7 @@ if(!deductcharge(hitcost)) return FALSE - var/obj/item/bodypart/affecting = target.get_bodypart(ran_zone(user.zone_selected)) - var/armor_block = target.run_armor_check(affecting, "stamina") - // L.adjustStaminaLoss(stunforce) - target.apply_damage(stunforce, STAMINA, affecting, armor_block) + target.Paralyze(stunforce) //NSV13 - re-added stun, removed stamina damage target.apply_effect(EFFECT_STUTTER, stunforce) SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK) //Only used for nanites target.stuttering = 20 diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 3dc3a64dd70..bf510850ee5 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -364,7 +364,7 @@ /obj/item/paper/teleporter name = "Teleporter Guide" icon_state = "paper" - info = {"Instructions on your new prototype syndicate teleporter:
          + default_raw_text = {"Instructions on your new prototype syndicate teleporter:

          This experimental teleporter will teleport the user 4-8 meters in the direction they are facing. Anything you are pulling will not be teleported with you.

          diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 2e8619bc52b..a8b2a84e798 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -96,7 +96,7 @@ greyscale_config_inhand_right = null /obj/item/paper/guides/antag/nuke_instructions - info = "How to break into a Nanotrasen self-destruct terminal and remove its plutonium core:
          \ + default_raw_text = "How to break into a Nanotrasen self-destruct terminal and remove its plutonium core:
          \

            \
          • Use a screwdriver with a very thin tip (provided) to unscrew the terminal's front panel
          • \
          • Dislodge and remove the front panel with a crowbar
          • \ @@ -109,7 +109,7 @@ // STEALING SUPERMATTER /obj/item/paper/guides/antag/supermatter_sliver - info = "How to safely extract a supermatter sliver:
            \ + default_raw_text = "How to safely extract a supermatter sliver:
            \
              \
            • Approach an active supermatter crystal with radiation shielded personal protective equipment. DO NOT MAKE PHYSICAL CONTACT.
            • \
            • Use a supermatter scalpel (provided) to slice off a sliver of the crystal.
            • \ diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index ef98ff7d8b0..01aa7c6366a 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1743,4 +1743,4 @@ /obj/item/paper/yatzy name = "paper - Yatzy Table" - info = "
              UpperGame 1Game 2Game 3
              Aces\[___\]\[___\]\[___\]
              Twos\[___\]\[___\]\[___\]
              Threes\[___\]\[___\]\[___\]
              Fours\[___\]\[___\]\[___\]
              Fives\[___\]\[___\]\[___\]
              Sixes\[___\]\[___\]\[___\]
              Total\[___\]\[___\]\[___\]
              Upper Total\[___\]\[___\]\[___\]
              Bonus\[___\]\[___\]\[___\]
              1 Pair\[___\]\[___\]\[___\]
              2 Pairs\[___\]\[___\]\[___\]3 of a Kind\[___\]\[___\]\[___\]4 of a Kind\[___\]\[___\]\[___\]
              Full House\[___\]\[___\]\[___\]
              Sm. Straight\[___\]\[___\]\[___\]
              Lg. Straight\[___\]\[___\]\[___\]
              Yatzy\[___\]\[___\]\[___\]
              Chance\[___\]\[___\]\[___\]
              Lower Total\[___\]\[___\]\[___\]
              Grand Total\[___\]\[___\]\[___\]
              " + default_raw_text = "
              UpperGame 1Game 2Game 3
              Aces\[___\]\[___\]\[___\]
              Twos\[___\]\[___\]\[___\]
              Threes\[___\]\[___\]\[___\]
              Fours\[___\]\[___\]\[___\]
              Fives\[___\]\[___\]\[___\]
              Sixes\[___\]\[___\]\[___\]
              Total\[___\]\[___\]\[___\]
              Upper Total\[___\]\[___\]\[___\]
              Bonus\[___\]\[___\]\[___\]
              1 Pair\[___\]\[___\]\[___\]
              2 Pairs\[___\]\[___\]\[___\]3 of a Kind\[___\]\[___\]\[___\]4 of a Kind\[___\]\[___\]\[___\]
              Full House\[___\]\[___\]\[___\]
              Sm. Straight\[___\]\[___\]\[___\]
              Lg. Straight\[___\]\[___\]\[___\]
              Yatzy\[___\]\[___\]\[___\]
              Chance\[___\]\[___\]\[___\]
              Lower Total\[___\]\[___\]\[___\]
              Grand Total\[___\]\[___\]\[___\]
              " diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 9367975245d..3d1555de944 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -231,11 +231,15 @@ name = "corporate chair" desc = "It looks professional." icon_state = "comfychair_corp" + buildstackamount = 1 + item_chair = null /obj/structure/chair/fancy/shuttle name = "shuttle seat" desc = "A comfortable, secure seat. It has a more sturdy looking buckling system for smoother flights." icon_state = "shuttle_chair" + buildstackamount = 1 + item_chair = null /obj/structure/chair/fancy/plastic name = "plastic chair" @@ -334,6 +338,14 @@ item_chair = null icon_state = "officechair_dark" +/obj/structure/chair/office/relaymove(mob/user, direction) + if(!direction) + return FALSE + if(direction == dir) + return + setDir(direction) + return FALSE + /obj/structure/chair/office/Moved() . = ..() if(has_gravity()) diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm index 7302bc75786..f2027e1ff54 100644 --- a/code/game/objects/structures/catwalk.dm +++ b/code/game/objects/structures/catwalk.dm @@ -7,6 +7,7 @@ smooth = SMOOTH_TRUE canSmoothWith = null obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP + flags_1 = PREVENT_CLICK_UNDER_1//NSV make it so prevent_click_under doesn't need density //Negates the effect of space and openspace. //Shouldn't be placed above anything else. FASTDMM_PROP(\ @@ -44,7 +45,7 @@ /obj/structure/lattice/catwalk/deconstruct() var/turf/T = loc - if(!istype(src, /obj/structure/lattice/catwalk/over/ship)) // NSV13 - don't cut cables if the catwalk goes *over* the cables + if(!istype(src, /obj/structure/lattice/catwalk/over)) // NSV13 - don't cut cables if the catwalk goes *over* the cables for(var/obj/structure/cable/C in T) C.deconstruct() ..() diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index ff270ca6e76..b8fff05478c 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -53,7 +53,7 @@ /obj/structure/closet/jcloset/PopulateContents() ..() new /obj/item/clothing/under/rank/civilian/janitor(src) - new /obj/item/cartridge/janitor(src) + new /obj/item/computer_hardware/hard_drive/role/janitor(src) new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/head/soft/purple(src) new /obj/item/paint/paint_remover(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index f829cf34b17..3f5e4f623f2 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -19,7 +19,7 @@ new /obj/item/storage/box/radiokey/eng(src) new /obj/item/storage/box/command_keys(src) new /obj/item/megaphone/command(src) - new /obj/item/cartridge/ce(src) + new /obj/item/computer_hardware/hard_drive/role/ce(src) new /obj/item/storage/bag/construction(src) new /obj/item/circuitboard/machine/techfab/department/engineering(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index 77e92be8bfb..d96d612e604 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -10,7 +10,7 @@ ..() /obj/structure/closet/secure_closet/freezer/Initialize(mapload) - ..() + . = ..() recursive_organ_check(src) /obj/structure/closet/secure_closet/freezer/open(mob/living/user) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index b5a4b29a33c..f2105e1a464 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -96,7 +96,7 @@ new /obj/item/storage/box/radiokey/med(src) new /obj/item/storage/box/command_keys(src) new /obj/item/megaphone/command(src) - new /obj/item/cartridge/cmo(src) + new /obj/item/computer_hardware/hard_drive/role/cmo(src) new /obj/item/storage/lockbox/medal/med(src) new /obj/item/circuitboard/machine/techfab/department/medical(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 7bb7db28b0e..c7ef92fb412 100755 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -22,7 +22,7 @@ new /obj/item/storage/box/radiokey/sci(src) new /obj/item/storage/box/command_keys(src) new /obj/item/megaphone/command(src) - new /obj/item/cartridge/rd(src) + new /obj/item/computer_hardware/hard_drive/role/rd(src) new /obj/item/storage/lockbox/medal/sci(src) new /obj/item/laser_pointer(src) new /obj/item/circuitboard/machine/techfab/department/science(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index a3418571de3..dbaa87af2c4 100755 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -26,7 +26,7 @@ new /obj/item/storage/box/radiokey/com(src) new /obj/item/storage/box/command_keys(src) new /obj/item/megaphone/command(src) - new /obj/item/cartridge/captain(src) + new /obj/item/computer_hardware/hard_drive/role/captain(src) new /obj/item/storage/box/silver_ids(src) new /obj/item/restraints/handcuffs/cable/zipties(src) @@ -67,7 +67,7 @@ new /obj/item/storage/box/radiokey/srv(src) new /obj/item/storage/box/command_keys(src) - new /obj/item/cartridge/hop(src) + new /obj/item/computer_hardware/hard_drive/role/hop(src) new /obj/item/storage/box/ids(src) new /obj/item/storage/box/ids(src) new /obj/item/restraints/handcuffs/cable/zipties(src) @@ -138,7 +138,7 @@ new /obj/item/storage/box/radiokey/sec(src) new /obj/item/storage/box/command_keys(src) new /obj/item/megaphone/sec(src) - new /obj/item/cartridge/hos(src) + new /obj/item/computer_hardware/hard_drive/role/hos(src) new /obj/item/storage/box/flashbangs(src) new /obj/item/storage/box/deputy(src) new /obj/item/storage/lockbox/medal/sec(src) @@ -199,6 +199,7 @@ new /obj/item/clothing/gloves/krav_maga(src) new /obj/item/door_remote/head_of_security(src) new /obj/item/gun/ballistic/shotgun/automatic/combat/compact(src) + new /obj/item/shield/riot/flash(src) //NSV13 - strobe shield instead of energy weaponry new /obj/item/ammo_box/c9mm/rubber(src) //NSV13 - rubber bullets new /obj/item/storage/box/deputy(src) diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 9f9ab50f107..bc3a60bc912 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -25,7 +25,7 @@ new /obj/item/storage/box/flashbangs(src) new /obj/item/storage/box/teargas(src) new /obj/item/storage/backpack/duffelbag/syndie/med(src) - new /obj/item/pda/syndicate(src) + new /obj/item/modular_computer/tablet/pda/syndicate(src) /obj/structure/closet/syndicate/resources desc = "An old, dusty locker." @@ -42,9 +42,10 @@ //Sad trombone if(pickednum == 1) - var/obj/item/paper/P = new /obj/item/paper(src) - P.name = "\improper IOU" - P.info = "Sorry man, we needed the money so we sold your stash. It's ok, we'll double our money for sure this time!" + var/obj/item/paper/paper = new /obj/item/paper(src) + paper.name = "\improper IOU" + paper.add_raw_text("Sorry man, we needed the money so we sold your stash. It's ok, we'll double our money for sure this time!") + paper.update_appearance() //Iron (common ore) if(pickednum >= 2) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index f88e2093be0..5f1119b2ce4 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -196,11 +196,9 @@ return ..() /obj/structure/closet/crate/freezer/Initialize(mapload) - ..() + . = ..() recursive_organ_check(src) - - /obj/structure/closet/crate/freezer/blood name = "blood freezer" desc = "A freezer containing packs of blood." diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index a91bb28a328..28fc643f1cd 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -544,7 +544,7 @@ playsound(src, 'sound/machines/click.ogg', 20, TRUE) toggle_lock() return - if(istype(I, /obj/item/pda)) + if(istype(I, /obj/item/modular_computer)) return TRUE ui_update() . = ..() diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index d3156ca1370..244549a5f29 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -18,6 +18,7 @@ Estimated time of last contact: Deployment, 5000 millennia ago." assignedrole = "Lifebringer" use_cooldown = TRUE + banType = ROLE_LIFEBRINGER /obj/effect/mob_spawn/human/seed_vault/special(mob/living/new_spawn) var/plant_name = pick("Tomato", "Potato", "Broccoli", "Carrot", "Ambrosia", "Pumpkin", "Ivy", "Kudzu", "Banana", "Moss", "Flower", "Bloom", "Root", "Bark", "Glowshroom", "Petal", "Leaf", \ @@ -54,6 +55,7 @@ assignedrole = "Ash Walker" var/datum/team/ashwalkers/team use_cooldown = TRUE + banType = ROLE_ASHWALKER /obj/effect/mob_spawn/human/ash_walker/special(mob/living/new_spawn) to_chat(new_spawn, "Drag the corpses of men and beasts to your nest. It will absorb them to create more of your kind. Don't leave your nest undefended, protect it with your life. Glory to the Necropolis!") @@ -78,40 +80,6 @@ head = /obj/item/clothing/head/helmet/gladiator uniform = /obj/item/clothing/under/costume/gladiator/ash_walker - -//Timeless prisons: Spawns in Wish Granter prisons in lavaland. Ghosts become age-old users of the Wish Granter and are advised to seek repentance for their past. -/obj/effect/mob_spawn/human/exile - name = "timeless prison" - desc = "Although this stasis pod looks medicinal, it seems as though it's meant to preserve something for a very long time." - mob_name = "a penitent exile" - icon = 'icons/obj/machines/sleeper.dmi' - icon_state = "sleeper" - roundstart = FALSE - death = FALSE - mob_species = /datum/species/shadow - short_desc = "You are cursed." - flavour_text = "Years ago, you sacrificed the lives of your trusted friends and the humanity of yourself to reach the Wish Granter. Though you \ - did so, it has come at a cost: your very body rejects the light, dooming you to wander endlessly in this horrible wasteland." - assignedrole = "Exile" - use_cooldown = TRUE - -/obj/effect/mob_spawn/human/exile/Destroy() - new/obj/structure/fluff/empty_sleeper(get_turf(src)) - return ..() - -/obj/effect/mob_spawn/human/exile/special(mob/living/new_spawn) - new_spawn.fully_replace_character_name(null,"Wish Granter's Victim ([rand(1,999)])") - var/wish = rand(1,4) - switch(wish) - if(1) - to_chat(new_spawn, "You wished to kill, and kill you did. You've lost track of how many, but the spark of excitement that murder once held has winked out. You feel only regret.") - if(2) - to_chat(new_spawn, "You wished for unending wealth, but no amount of money was worth this existence. Maybe charity might redeem your soul?") - if(3) - to_chat(new_spawn, "You wished for power. Little good it did you, cast out of the light. You are the [gender == MALE ? "king" : "queen"] of a hell that holds no subjects. You feel only remorse.") - if(4) - to_chat(new_spawn, "You wished for immortality, even as your friends lay dying behind you. No matter how many times you cast yourself into the lava, you awaken in this room again within a few days. There is no escape.") - //Golem shells: Spawns in Free Golem ships in lavaland. Ghosts become mineral golems and are advised to spread personal freedom. /obj/effect/mob_spawn/human/golem name = "inert free golem shell" @@ -132,6 +100,7 @@ flavour_text = "In his infinite and divine wisdom, he set your clan free to \ travel the stars with a single declaration: \"Yeah go do whatever.\" Though you are bound to the one who created you, it is customary in your society to repeat those same words to newborn \ golems, so that no golem may ever be forced to serve again." + banType = ROLE_FREE_GOLEM /obj/effect/mob_spawn/human/golem/Initialize(mapload, datum/species/golem/species = null, mob/creator = null) if(species) //spawners list uses object name to register so this goes before ..() @@ -206,6 +175,7 @@ can_transfer = FALSE mob_species = /datum/species/golem/adamantine use_cooldown = TRUE //Only the roundstart free golems are + banType = ROLE_FREE_GOLEM //Malfunctioning cryostasis sleepers: Spawns in makeshift shelters in lavaland. Ghosts become hermits with knowledge of how they got to where they are now. /obj/effect/mob_spawn/human/hermit @@ -224,6 +194,7 @@ the fresh air of Earth. These thoughts are dispelled by yet another recollection of how you got here... " assignedrole = "Hermit" use_cooldown = TRUE + banType = ROLE_HERMIT /obj/effect/mob_spawn/human/hermit/Initialize(mapload) . = ..() @@ -266,6 +237,7 @@ all you did was apply bruise packs. Why is this place full of advanced medical equipment? And what are those screams you hear? The world outside is desolate - tormented with fire and brimstone. But you took an oath. \ You have to save these people! You might not have a fancy cloning machine like a real hospital, but surely there must be some way to save these people with the tools you have. Right?" assignedrole = "Translocated Vet" + banType = ROLE_TRANSLOCATED_VET /obj/effect/mob_spawn/human/doctor/alive/lavaland/Destroy() var/obj/structure/fluff/empty_sleeper/S = new(drop_location()) @@ -287,6 +259,7 @@ flavour_text = "Good. It seems as though your ship crashed. You remember that you were convicted of " assignedrole = "Escaped Prisoner" use_cooldown = TRUE + banType = ROLE_LAVALAND_ESCAPED_PRISONER /obj/effect/mob_spawn/human/prisoner_transport/special(mob/living/L) L.fully_replace_character_name(null,"NTP #LL-0[rand(111,999)]") //Nanotrasen Prisoner #Lavaland-(numbers) @@ -327,6 +300,7 @@ important_info = "DON'T leave the hotel" assignedrole = "Hotel Staff" use_cooldown = TRUE + banType = ROLE_HOTEL_STAFF /datum/outfit/hotelstaff name = "Hotel Staff" @@ -374,6 +348,7 @@ var/obj/effect/proc_holder/spell/targeted/summon_friend/spell var/datum/mind/owner assignedrole = "SuperFriend" + banType = ROLE_DEMONIC_FRIEND /obj/effect/mob_spawn/human/demonic_friend/Initialize(mapload, datum/mind/owner_mind, obj/effect/proc_holder/spell/targeted/summon_friend/summoning_spell) . = ..() @@ -414,77 +389,6 @@ implants = list(/obj/item/implant/mindshield) //No revolutionaries, he's MY friend. id = /obj/item/card/id -/obj/effect/mob_spawn/human/syndicate - name = "Syndicate Operative" - roundstart = FALSE - death = FALSE - icon = 'icons/obj/machines/sleeper.dmi' - icon_state = "sleeper_s" - outfit = /datum/outfit/syndicate_empty - assignedrole = "Space Syndicate" //I know this is really dumb, but Syndicate operative is nuke ops - -/datum/outfit/syndicate_empty - name = "Syndicate Operative Empty" - uniform = /obj/item/clothing/under/syndicate - shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat - ears = /obj/item/radio/headset/syndicate/alt - back = /obj/item/storage/backpack - implants = list(/obj/item/implant/weapons_auth) - id = /obj/item/card/id/syndicate - -/datum/outfit/syndicate_empty/post_equip(mob/living/carbon/human/H) - H.faction |= ROLE_SYNDICATE - -/obj/effect/mob_spawn/human/syndicate/battlecruiser - name = "Syndicate Battlecruiser Ship Operative" - short_desc = "You are a crewmember aboard the syndicate flagship: the SBC Starfury." - flavour_text = "Your job is to follow your captain's orders, maintain the ship, and keep the engine running. If you are not familiar with how the supermatter engine functions: do not attempt to start it." - important_info = "The armory is not a candy store, and your role is not to assault the station directly, leave that work to the assault operatives." - outfit = /datum/outfit/syndicate_empty/SBC - -/datum/outfit/syndicate_empty/SBC - name = "Syndicate Battlecruiser Ship Operative" - l_pocket = /obj/item/gun/ballistic/automatic/pistol - r_pocket = /obj/item/kitchen/knife/combat/survival - belt = /obj/item/storage/belt/military/assault - -/obj/effect/mob_spawn/human/syndicate/battlecruiser/assault - name = "Syndicate Battlecruiser Assault Operative" - short_desc = "You are an assault operative aboard the syndicate flagship: the SBC Starfury." - flavour_text = "Your job is to follow your captain's orders, keep intruders out of the ship, and assault Space Station 13. There is an armory, multiple assault ships, and beam cannons to attack the station with." - important_info = "Work as a team with your fellow operatives and work out a plan of attack. If you are overwhelmed, escape back to your ship!" - outfit = /datum/outfit/syndicate_empty/SBC/assault - -/datum/outfit/syndicate_empty/SBC/assault - name = "Syndicate Battlecruiser Assault Operative" - uniform = /obj/item/clothing/under/syndicate/combat - l_pocket = /obj/item/ammo_box/magazine/m10mm - r_pocket = /obj/item/kitchen/knife/combat/survival - belt = /obj/item/storage/belt/military - suit = /obj/item/clothing/suit/armor/vest - suit_store = /obj/item/gun/ballistic/automatic/pistol - back = /obj/item/storage/backpack/security - mask = /obj/item/clothing/mask/gas/syndicate - -/obj/effect/mob_spawn/human/syndicate/battlecruiser/captain - name = "Syndicate Battlecruiser Captain" - short_desc = "You are the captain aboard the syndicate flagship: the SBC Starfury." - flavour_text = "Your job is to oversee your crew, defend the ship, and destroy Space Station 13. The ship has an armory, multiple ships, beam cannons, and multiple crewmembers to accomplish this goal." - important_info = "As the captain, this whole operation falls on your shoulders. You do not need to nuke the station, causing sufficient damage and preventing your ship from being destroyed will be enough." - outfit = /datum/outfit/syndicate_empty/SBC/assault/captain - id_access_list = list(150,151) - -/datum/outfit/syndicate_empty/SBC/assault/captain - name = "Syndicate Battlecruiser Captain" - l_pocket = /obj/item/melee/transforming/energy/sword/saber/red - r_pocket = /obj/item/melee/classic_baton/police/telescopic - suit = /obj/item/clothing/suit/armor/vest/capcarapace/syndicate - suit_store = /obj/item/gun/ballistic/revolver/mateba - back = /obj/item/storage/backpack/satchel/leather - head = /obj/item/clothing/head/HoS/syndicate - mask = /obj/item/clothing/mask/cigarette/cigar/havana - glasses = /obj/item/clothing/glasses/thermal/eyepatch //Ancient cryogenic sleepers. Players become NT crewmen from a hundred year old space station, now on the verge of collapse. /obj/effect/mob_spawn/human/oldsec @@ -509,6 +413,7 @@ l_pocket = /obj/item/assembly/flash/handheld assignedrole = "Ancient Crew" use_cooldown = TRUE + banType = ROLE_ANCIENT_CREW /obj/effect/mob_spawn/human/oldsec/Destroy() new/obj/structure/showcase/machinery/oldpod/used(drop_location()) @@ -536,6 +441,7 @@ l_pocket = /obj/item/tank/internals/emergency_oxygen assignedrole = "Ancient Crew" use_cooldown = TRUE + banType = ROLE_ANCIENT_CREW /obj/effect/mob_spawn/human/oldeng/Destroy() new/obj/structure/showcase/machinery/oldpod/used(drop_location()) @@ -562,6 +468,7 @@ l_pocket = /obj/item/stack/medical/bruise_pack assignedrole = "Ancient Crew" use_cooldown = TRUE + banType = ROLE_ANCIENT_CREW /obj/effect/mob_spawn/human/oldsci/Destroy() new/obj/structure/showcase/machinery/oldpod/used(drop_location()) @@ -584,6 +491,7 @@ short_desc = "You are a space pirate." flavour_text = "The station refused to pay for your protection, protect the ship, siphon the credits from the station and raid it for even more loot." assignedrole = "Space Pirate" + is_antagonist = TRUE var/rank = "Mate" /obj/effect/mob_spawn/human/pirate/special(mob/living/new_spawn) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 60d2024f672..da5fd9fa6f9 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -19,6 +19,11 @@ /obj/structure/janitorialcart/Initialize(mapload) . = ..() create_reagents(100, OPENCONTAINER) + GLOB.janitor_devices += src + +/obj/structure/janitorialcart/Destroy() + GLOB.janitor_devices -= src + return ..() /obj/structure/janitorialcart/proc/wet_mop(obj/item/mop, mob/user) if(reagents.total_volume < 1) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 9d7f33e837f..f974e1af554 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -200,7 +200,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an /obj/item/paper/guides/jobs/medical/morgue name = "morgue memo" - info = "Since this station's medbay never seems to fail to be staffed by the mindless monkeys meant for genetics experiments, I'm leaving a reminder here for anyone handling the pile of cadavers the quacks are sure to leave.

              Red lights mean there's a plain ol' dead body inside.

              Yellow lights mean there's non-body objects inside.
              Probably stuff pried off a corpse someone grabbed, or if you're lucky it's stashed booze.

              Green lights mean the morgue system detects the body may be able to be cloned.

              I don't know how that works, but keep it away from the kitchen and go yell at the geneticists.

              - CentCom medical inspector" + default_raw_text = "Since this station's medbay never seems to fail to be staffed by the mindless monkeys meant for genetics experiments, I'm leaving a reminder here for anyone handling the pile of cadavers the quacks are sure to leave.

              Red lights mean there's a plain ol' dead body inside.

              Yellow lights mean there's non-body objects inside.
              Probably stuff pried off a corpse someone grabbed, or if you're lucky it's stashed booze.

              Green lights mean the morgue system detects the body may be able to be cloned.

              I don't know how that works, but keep it away from the kitchen and go yell at the geneticists.

              - CentCom medical inspector" /* * Crematorium diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm index 80edee29c95..2f330218054 100644 --- a/code/game/objects/structures/shower.dm +++ b/code/game/objects/structures/shower.dm @@ -241,8 +241,7 @@ if(strength <= RAD_BACKGROUND_RADIATION) qdel(healthy_green_glow) return - healthy_green_glow.strength -= max(0, (healthy_green_glow.strength - (RAD_BACKGROUND_RADIATION * 2)) * 0.2) - + healthy_green_glow.strength -= max(0, healthy_green_glow.strength * 0.2) //NSV13 - Now removes rads towards 0, instead of towards (background radiation * 2). /obj/machinery/shower/process() if(on) wash_atom(loc) diff --git a/code/game/objects/structures/spawner.dm b/code/game/objects/structures/spawner.dm index 0b41fcf8d49..8f7870e7b30 100644 --- a/code/game/objects/structures/spawner.dm +++ b/code/game/objects/structures/spawner.dm @@ -31,7 +31,7 @@ icon_state = "syndbeacon" spawn_text = "warps in from" mob_types = list(/mob/living/simple_animal/hostile/syndicate/ranged) - faction = list(ROLE_SYNDICATE) + faction = list(FACTION_SYNDICATE) /obj/structure/spawner/skeleton name = "bone pit" diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 9ad80302c63..ffe7ac35dc9 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -157,8 +157,10 @@ pushed_mob.pass_flags &= ~PASSTABLE if(pushed_mob.loc != loc) //Something prevented the tabling return - pushed_mob.Knockdown(30) - pushed_mob.apply_damage(40, STAMINA) + //NSV13 - removed brute damage and added paralyze. Reduced stamina by half. + pushed_mob.Paralyze(10) + pushed_mob.Knockdown(20) + pushed_mob.apply_damage(15, STAMINA) if(user.mind?.martial_art?.smashes_tables) deconstruct(FALSE) playsound(pushed_mob, "sound/effects/tableslam.ogg", 90, TRUE) diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index 11a7507b35f..3414491ca0f 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -37,6 +37,11 @@ var/list/dent_decals + //NSV13 - avoid runtiming from doafter stack. + ///Is this wall currently being interacted with (cleaned / deconned / etc) + var/interacting = FALSE + //NSV13 end + /turf/closed/wall/Initialize(mapload) . = ..() if(is_station_level(z)) @@ -175,13 +180,26 @@ if(!isturf(user.loc)) return //can't do this stuff whilst inside objects and such + + if(interacting) //NSV 13 - the doafters in here can change the type of the turf, which WILL runtime if you let them stack. + return + add_fingerprint(user) var/turf/T = user.loc //get user's location for delay checks + //NSV13 - src type changes which must be accounted for here. + interacting = TRUE //the istype cascade has been spread among various procs for easy overriding - if(try_clean(W, user, T) || try_wallmount(W, user, T) || try_decon(W, user, T) || try_destroy(W, user, T)) + if(try_clean(W, user, T) || try_wallmount(W, user, T)) + interacting = FALSE + return + if(try_decon(W, user, T) || try_destroy(W, user, T)) + if(istype(src, /turf/closed/wall)) //I hate this. + interacting = FALSE //Set interacting only if the wall is still a wall. return + interacting = FALSE + //NSV13 end. return ..() diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm index a3dc29e721e..d08c4a8f7ed 100644 --- a/code/game/turfs/open/_open.dm +++ b/code/game/turfs/open/_open.dm @@ -224,7 +224,9 @@ slipper.Paralyze(paralyze_amount) slipper.stop_pulling() else - slipper.Knockdown(15) + //NSV13 - increased knockdown and added paralyze + slipper.Knockdown(30) + slipper.Paralyze(15) slipper.drop_all_held_items() if(buckled_obj) diff --git a/code/game/turfs/open/floor/fancy_floor.dm b/code/game/turfs/open/floor/fancy_floor.dm index b3a9b83e8f9..b4f427167b9 100644 --- a/code/game/turfs/open/floor/fancy_floor.dm +++ b/code/game/turfs/open/floor/fancy_floor.dm @@ -22,7 +22,7 @@ heavyfootstep = FOOTSTEP_GENERIC_HEAVY tiled_dirt = FALSE -/turf/open/floor/carpet/examine(mob/user) +/turf/open/floor/bamboo/examine(mob/user) . = ..() . += "There's a small crack on the edge of it." diff --git a/code/game/turfs/open/floor/plating.dm b/code/game/turfs/open/floor/plating.dm index 1dc298ea97c..67bf83a2909 100644 --- a/code/game/turfs/open/floor/plating.dm +++ b/code/game/turfs/open/floor/plating.dm @@ -82,7 +82,7 @@ R.use(1) to_chat(user, "You reinforce the floor.") return - else if(istype(C, /obj/item/stack/tile) && !locate(/obj/structure/lattice/catwalk, src)) + else if(istype(C, /obj/item/stack/tile))//NSV allow placing tiles under open plated catwalks if(!broken && !burnt) for(var/obj/O in src) if(O.level == 1) //ex. pipes laid underneath a tile @@ -169,9 +169,4 @@ return /turf/open/floor/plating/can_have_cabling() - // NSV13 - let us put cables into open plated catwalk tiles - var/obj/structure/lattice/catwalk/C = locate(/obj/structure/lattice/catwalk, src) - if(C) - return C.can_lay_cable() - return 1 - + return TRUE//NSV don't need this check now that catwalks block clicking diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index e726072b682..f0b67c1e753 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -462,7 +462,7 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) // Removes all signs of lattice on the pos of the turf -Donkieyo /turf/proc/RemoveLattice() var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) - if(L && (L.flags_1 & INITIALIZED_1)) + if(L && (L.flags_1 & INITIALIZED_1) && !istype(L, /obj/structure/lattice/catwalk/over/))//NSV but not "over" catwalks qdel(L) /turf/proc/phase_damage_creatures(damage,mob/U = null)//>Ninja Code. Hurts and knocks out creatures on this turf //NINJACODE diff --git a/code/modules/NTNet/network.dm b/code/modules/NTNet/network.dm index a978f9730ab..90bbc61d2d0 100644 --- a/code/modules/NTNet/network.dm +++ b/code/modules/NTNet/network.dm @@ -316,12 +316,12 @@ #endif // Checks whether NTNet operates. If parameter is passed checks whether specific function is enabled. -/datum/ntnet/station_root/proc/check_function(specific_action = 0, zlevel) +/datum/ntnet/station_root/proc/check_function(specific_action = 0, zlevel, ignore_relay = FALSE) if(!SSnetworks.relays || !SSnetworks.relays.len) // No relays found. NTNet is down return FALSE // Check all relays. If we have at least one working relay, network is up. - if(!SSnetworks.check_relay_operation(zlevel)) + if(!ignore_relay && !SSnetworks.check_relay_operation(zlevel)) return FALSE if(setting_disabled) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index cb4b2c32436..ca33fe0e341 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -19,7 +19,8 @@ GLOBAL_PROTECT(admin_verbs_default) /client/proc/cmd_admin_pm_panel, /*admin-pm list*/ /client/proc/stop_sounds, /client/proc/mark_datum_mapview, - /client/proc/requests + /client/proc/requests, + /client/proc/fax_manager ) GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin()) GLOBAL_PROTECT(admin_verbs_admin) @@ -81,6 +82,7 @@ GLOBAL_PROTECT(admin_verbs_admin) /client/proc/openTicketManager, /client/proc/battle_royale, /client/proc/delete_book, + /client/proc/cmd_admin_send_pda_msg, /client/proc/changeranks, //NSV13 - verb to change rank structure /client/proc/system_manager, //Nsv13 - Fleet + starsystem management /client/proc/instance_overmap_menu, //Nsv13 - Midround ship creation. diff --git a/code/modules/admin/antag_panel.dm b/code/modules/admin/antag_panel.dm index 3dc29f2d1cf..5b4f5087d99 100644 --- a/code/modules/admin/antag_panel.dm +++ b/code/modules/admin/antag_panel.dm @@ -165,11 +165,19 @@ GLOBAL_VAR(antag_prototypes) continue pref_source = prototype break - if(pref_source.job_rank) - if(!is_banned_from(src.key, pref_source.job_rank)) - antag_header_parts += pref_source.enabled_in_preferences(src) ? "Enabled in Prefs" : "Disabled in Prefs" - else + if(pref_source.banning_key) + if(is_banned_from(src.key, pref_source.banning_key)) antag_header_parts += "\[BANNED\]" + else if(current.client) + var/list/related_preferences = list() + for(var/datum/role_preference/role_pref_type as anything in GLOB.role_preference_entries) + if(initial(role_pref_type.antag_datum) == pref_source.type) + related_preferences += role_pref_type + if(length(related_preferences) == 1) + antag_header_parts += current.client.role_preference_enabled(related_preferences[1]) ? "Enabled in Prefs" : "Disabled in Prefs" + else if(length(related_preferences) >= 1) + for(var/datum/role_preference/preftype as anything in related_preferences) + antag_header_parts += "[initial(preftype.name)]: [current.client.role_preference_enabled(preftype) ? "Enabled Pref" : "Disabled Pref"]" //Traitor : None | Traitor | IAA // Command1 | Command2 | Command3 diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index ca395efabda..33308c17d44 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -53,7 +53,7 @@ bodies += M var/question = "Would you like to be [group_name]?" - var/list/candidates = pollCandidatesForMobs(question, ROLE_PAI, null, FALSE, 100, bodies) + var/list/candidates = pollCandidatesForMobs(question, ROLE_SENTIENCE, null, 10 SECONDS, bodies) while(LAZYLEN(candidates) && LAZYLEN(bodies)) var/mob/dead/observer/C = pick_n_take(candidates) var/mob/living/body = pick_n_take(bodies) diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 56759be507a..f05165e3a7a 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -690,7 +690,7 @@ GLOBAL_DATUM_INIT(admin_secrets, /datum/admin_secrets, new) continue if((L in GLOB.player_list) || L.mind || (L.flags_1 & HOLOGRAM_1)) continue - L.set_playable() + L.set_playable(ROLE_SENTIENT_ANIMAL) if("flipmovement") if(!check_rights(R_FUN)) @@ -789,7 +789,7 @@ GLOBAL_DATUM_INIT(admin_secrets, /datum/admin_secrets, new) var/list/candidates = list() if (prefs["offerghosts"]["value"] == "Yes") - candidates = pollGhostCandidates(replacetext(prefs["ghostpoll"]["value"], "%TYPE%", initial(pathToSpawn.name)), ROLE_TRAITOR) + candidates = pollGhostCandidates(replacetext(prefs["ghostpoll"]["value"], "%TYPE%", initial(pathToSpawn.name)), BAN_ROLE_ALL_ANTAGONISTS, ignore_category = FALSE) if (prefs["playersonly"]["value"] == "Yes" && length(candidates) < prefs["minplayers"]["value"]) message_admins("Not enough players signed up to create a portal storm, the minimum was [prefs["minplayers"]["value"]] and the number of signups [length(candidates)]") diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index 9b0efda4aec..255360d94de 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -1,20 +1,36 @@ #define MAX_ADMINBANS_PER_ADMIN 1 #define MAX_ADMINBANS_PER_HEADMIN 3 +/// Process global ban types +/proc/check_role_ban(ban_cache, role) + if(role in GLOB.antagonist_bannable_roles) + if((BAN_ROLE_ALL_ANTAGONISTS in ban_cache) || ("Syndicate" in ban_cache)) // Legacy "Syndicate" ban + return TRUE + if(role in GLOB.forced_bannable_roles) + if(BAN_ROLE_FORCED_ANTAGONISTS in ban_cache) + return TRUE + if(role in GLOB.ghost_role_bannable_roles) + if((BAN_ROLE_ALL_GHOST in ban_cache) || ("Lavaland" in ban_cache)) // Legacy "Lavaland" ban + return TRUE + return role in ban_cache + //checks client ban cache or DB ban table if ckey is banned from one or more roles //doesn't return any details, use only for if statements /proc/is_banned_from(player_ckey, list/roles) - if(!player_ckey) + if(!player_ckey || isnull(roles) || (islist(roles) && !length(roles))) return + player_ckey = ckey(player_ckey) var/client/C = GLOB.directory[player_ckey] if(C) if(!C.ban_cache) build_ban_cache(C) if(islist(roles)) for(var/R in roles) - if(R in C.ban_cache) + if(!R) + continue + if(check_role_ban(C.ban_cache, R)) return TRUE //they're banned from at least one role, no need to keep checking - else if(roles in C.ban_cache) + else if(check_role_ban(C.ban_cache, roles)) return TRUE else var/values = list( @@ -325,16 +341,14 @@ "} break_counter++ output += "" - var/list/long_job_lists = list(("Civilian" = GLOB.civilian_positions | JOB_NAME_GIMMICK), - "Ghost and Other Roles" = list(ROLE_BRAINWASHED, ROLE_DEATHSQUAD, ROLE_DRONE, ROLE_LAVALAND, ROLE_MIND_TRANSFER, ROLE_POSIBRAIN, ROLE_SENTIENCE), - "Antagonist Positions" = list(ROLE_ABDUCTOR, ROLE_ALIEN, ROLE_BLOB, - ROLE_BROTHER, ROLE_CHANGELING, ROLE_CULTIST, ROLE_HERETIC, - ROLE_DEVIL, ROLE_INTERNAL_AFFAIRS, ROLE_MALF, - ROLE_NINJA, ROLE_OPERATIVE, - ROLE_SERVANT_OF_RATVAR, - ROLE_OVERTHROW, ROLE_REV, ROLE_REVENANT, - ROLE_REV_HEAD, ROLE_SYNDICATE, - ROLE_TRAITOR, ROLE_WIZARD, ROLE_HIVE, ROLE_GANG, ROLE_TERATOMA)) //ROLE_REV_HEAD is excluded from this because rev jobbans are handled by ROLE_REV + var/list/long_job_lists = list( + "Civilian" = GLOB.civilian_positions | JOB_NAME_GIMMICK, + "Antagonist Positions" = list(BAN_ROLE_ALL_ANTAGONISTS) + GLOB.antagonist_bannable_roles, + "Forced Antagonist Positions" = list(BAN_ROLE_FORCED_ANTAGONISTS) + GLOB.forced_bannable_roles, + "Ghost Roles" = list(BAN_ROLE_ALL_GHOST) + GLOB.ghost_role_bannable_roles, + "Other" = GLOB.other_bannable_roles, + ) + for(var/department in long_job_lists) output += "
              " break_counter = 0 diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index b332dd06dad..6f5ec20c106 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -846,7 +846,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) else final = "[msg] - All admins stealthed\[[english_list(stealthmins)]\], AFK\[[english_list(afkmins)]\], or lacks +BAN\[[english_list(powerlessmins)]\]! Total: [allmins.len] " send2tgs(source,final) - SStopic.crosscomms_send("ahelp", final, source) + SStopic.crosscomms_send_async("ahelp", final, source) /proc/send2tgs(msg,msg2) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 4cbaeed7bf6..4b269ea4ac8 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -204,10 +204,12 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that id.update_label() if(worn) - if(istype(worn, /obj/item/pda)) - var/obj/item/pda/PDA = worn - PDA.id = id - id.forceMove(PDA) + if(istype(worn, /obj/item/modular_computer/tablet/pda)) + var/obj/item/modular_computer/tablet/pda/PDA = worn + var/obj/item/computer_hardware/card_slot/card = PDA.all_components[MC_CARD] + qdel(card.stored_card) + if(card) + card.try_insert(id, H) else if(istype(worn, /obj/item/storage/wallet)) var/obj/item/storage/wallet/W = worn W.front_id = id diff --git a/code/modules/admin/verbs/fax_manager.dm b/code/modules/admin/verbs/fax_manager.dm new file mode 100644 index 00000000000..36bc9df2de9 --- /dev/null +++ b/code/modules/admin/verbs/fax_manager.dm @@ -0,0 +1,6 @@ +/client/proc/fax_manager() + set name = "Fax Manager" + set desc = "Open the manager panel to view all requests during the round in progress." + set category = "Admin" + SSblackbox.record_feedback("tally", "admin_verb", 1, "Fax Manager") + GLOB.fax_manager.ui_interact(usr) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index bcf50f3238b..b91367cca0b 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -27,10 +27,10 @@ popup.set_content(dat) popup.open() -/datum/admins/proc/isReadytoRumble(mob/living/carbon/human/applicant, targetrole, onstation = TRUE, conscious = TRUE) +/datum/admins/proc/isReadytoRumble(mob/living/carbon/human/applicant, targetrole, preference, onstation = TRUE, conscious = TRUE) if(applicant.mind.special_role) return FALSE - if(!(targetrole in applicant.client.prefs.be_special)) + if(!applicant.client?.should_include_for_role(targetrole, preference)) return FALSE if(onstation) var/turf/T = get_turf(applicant) @@ -40,7 +40,7 @@ return FALSE if(!considered_alive(applicant.mind) || considered_afk(applicant.mind)) //makes sure the player isn't a zombie, brain, or just afk all together return FALSE - return !is_banned_from(applicant.ckey, list(targetrole, ROLE_SYNDICATE)) + return TRUE /datum/admins/proc/makeTraitors(maxCount = 3) @@ -59,10 +59,9 @@ var/mob/living/carbon/human/H = null for(var/mob/living/carbon/human/applicant in GLOB.player_list) - if(isReadytoRumble(applicant, ROLE_TRAITOR)) - if(temp.age_check(applicant.client)) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant + if(isReadytoRumble(applicant, ROLE_TRAITOR, /datum/role_preference/midround_living/traitor)) + if(!(applicant.job in temp.restricted_jobs)) + candidates += applicant if(candidates.len) var/numTraitors = min(candidates.len, maxCount) @@ -94,10 +93,9 @@ var/mob/living/carbon/human/H = null for(var/mob/living/carbon/human/applicant in GLOB.player_list) - if(isReadytoRumble(applicant, ROLE_CHANGELING)) - if(temp.age_check(applicant.client)) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant + if(isReadytoRumble(applicant, ROLE_CHANGELING, /datum/role_preference/antagonist/changeling)) + if(!(applicant.job in temp.restricted_jobs)) + candidates += applicant if(candidates.len) var/numChangelings = min(candidates.len, maxCount) @@ -124,10 +122,9 @@ var/mob/living/carbon/human/H = null for(var/mob/living/carbon/human/applicant in GLOB.player_list) - if(isReadytoRumble(applicant, ROLE_REV)) - if(temp.age_check(applicant.client)) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant + if(isReadytoRumble(applicant, ROLE_REV_HEAD, /datum/role_preference/antagonist/revolutionary)) + if(!(applicant.job in temp.restricted_jobs)) + candidates += applicant if(candidates.len) var/numRevs = min(candidates.len, maxCount) @@ -142,7 +139,7 @@ /datum/admins/proc/makeWizard() - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for the position of a Wizard Federation 'diplomat'?", ROLE_WIZARD, null) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for the position of a Wizard Federation 'diplomat'?", ROLE_WIZARD, /datum/role_preference/midround_ghost/wizard, ignore_category = POLL_IGNORE_WIZARD_HELPER) var/mob/dead/observer/selected = pick_n_take(candidates) @@ -166,10 +163,9 @@ var/mob/living/carbon/human/H = null for(var/mob/living/carbon/human/applicant in GLOB.player_list) - if(isReadytoRumble(applicant, ROLE_CULTIST)) - if(temp.age_check(applicant.client)) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant + if(isReadytoRumble(applicant, ROLE_CULTIST, /datum/role_preference/antagonist/blood_cultist)) + if(!(applicant.job in temp.restricted_jobs)) + candidates += applicant if(candidates.len) var/numCultists = min(candidates.len, maxCount) @@ -186,8 +182,7 @@ /datum/admins/proc/makeNukeTeam(maxCount = 5) - var/datum/game_mode/nuclear/temp = new - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for a nuke team being sent in?", ROLE_OPERATIVE, temp) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for a nuke team being sent in?", ROLE_OPERATIVE, /datum/role_preference/midround_ghost/nuclear_operative) var/list/mob/dead/observer/chosen = list() var/mob/dead/observer/theghost = null @@ -351,7 +346,7 @@ ertemplate.enforce_human = prefs["enforce_human"]["value"] == "Yes" ? TRUE : FALSE ertemplate.opendoors = prefs["open_armory"]["value"] == "Yes" ? TRUE : FALSE - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for [ertemplate.polldesc] ?", "deathsquad", null, req_hours = 50) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for [ertemplate.polldesc] ?", ROLE_ERT, req_hours = 50) var/teamSpawned = FALSE if(candidates.len > 0) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index af840c75bb2..6cdb4f7c102 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -300,7 +300,7 @@ for(var/mob/M in GLOB.player_list) if(M.stat != DEAD) continue //we are not dead! - if(!(ROLE_ALIEN in M.client.prefs.be_special)) + if(!M.client?.should_include_for_role(ROLE_ALIEN, /datum/role_preference/midround_ghost/xenomorph)) continue //we don't want to be an alium if(M.client.is_afk()) continue //we are afk @@ -474,7 +474,7 @@ Traitors and the like can also be revived with the previous role mostly intact. new_character.forceMove(pick(GLOB.wizardstart)) var/datum/antagonist/wizard/A = new_character.mind.has_antag_datum(/datum/antagonist/wizard,TRUE) A.equip_wizard() - if(ROLE_SYNDICATE) + if(ROLE_OPERATIVE) new_character.forceMove(pick(GLOB.nukeop_start)) var/datum/antagonist/nukeop/N = new_character.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE) N.equip_op() @@ -1086,7 +1086,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(!check_rights(R_ADMIN) || !check_rights(R_FUN)) return - var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD, ADMIN_PUNISHMENT_SUPPLYPOD_QUICK, ADMIN_PUNISHMENT_SUPPLYPOD, ADMIN_PUNISHMENT_MAZING, ADMIN_PUNISHMENT_FLOORCLUWNE, ADMIN_PUNISHMENT_CLUWNE, ADMIN_PUNISHMENT_IMMERSE, ADMIN_PUNISHMENT_GHOST, ADMIN_PUNISHMENT_DEMOCRACY, ADMIN_PUNISHMENT_ANARCHY, ADMIN_PUNISHMENT_TOE, ADMIN_PUNISHMENT_TOEPLUS, ADMIN_PUNISHMENT_CRYO, ADMIN_PUNISHMENT_ENTRAPPED) //NSV13 - added entrapped + var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD, ADMIN_PUNISHMENT_SUPPLYPOD_QUICK, ADMIN_PUNISHMENT_SUPPLYPOD, ADMIN_PUNISHMENT_MAZING, ADMIN_PUNISHMENT_FLOORCLUWNE, ADMIN_PUNISHMENT_CLUWNE, ADMIN_PUNISHMENT_IMMERSE, ADMIN_PUNISHMENT_GHOST, ADMIN_PUNISHMENT_DEMOCRACY, ADMIN_PUNISHMENT_ANARCHY, ADMIN_PUNISHMENT_TOE, ADMIN_PUNISHMENT_TOEPLUS, ADMIN_PUNISHMENT_CRYO, ADMIN_PUNISHMENT_ENTRAPPED, ADMIN_PUNISHMENT_DOCK) //NSV13 - added entrapped + Dock if(istype(target, /mob/living/carbon)) punishment_list += ADMIN_PUNISHMENT_NUGGET var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in sortList(punishment_list) @@ -1099,7 +1099,33 @@ Traitors and the like can also be revived with the previous role mostly intact. for(var/turf/T in (orange(1, target) - target.loc)) new /obj/item/ship_weapon/ammunition/naval_artillery/cannonball/admin(T) target.playsound_local(get_turf(target), 'sound/magic/clockwork/invoke_general.ogg', 200, pressure_affected = FALSE) - to_chat(target, "Entrapped.") //NSV13 end + to_chat(target, "Entrapped.") + if(ADMIN_PUNISHMENT_DOCK) + if(!iscarbon(target)) + to_chat(usr,"This must be used on a carbon mob.") + return + var/mob/living/carbon/dude = target + var/obj/item/card/id/card = dude.get_idcard(TRUE) + if(!card) + to_chat(usr,"[dude] does not have an ID card on!") + return + if(!card.registered_account) + to_chat(usr,"[dude] does not have an ID card with an account!") + return + if(card.registered_account.account_balance == 0) + to_chat(usr, "ID Card lacks any funds. No pay to dock.") + return + var/new_cost = input("How much pay are we docking? Current balance: [card.registered_account.account_balance] credits.","BUDGET CUTS") as num|null + if(!new_cost) + return + if(!(card.registered_account.has_money(new_cost))) + to_chat(usr, "ID Card lacked funds. Emptying account.") + card.registered_account.bank_card_talk("[new_cost] credits deducted from your account based on performance review.") + card.registered_account.account_balance = 0 + else + card.registered_account.account_balance = card.registered_account.account_balance - new_cost + card.registered_account.bank_card_talk("[new_cost] credits deducted from your account based on performance review.") + SEND_SOUND(target, 'sound/machines/buzz-sigh.ogg') //NSV13 end if(ADMIN_PUNISHMENT_LIGHTNING) var/turf/T = get_step(get_step(target, NORTH), NORTH) T.Beam(target, icon_state="lightning[rand(1,12)]", time = 5) @@ -1349,3 +1375,15 @@ Traitors and the like can also be revived with the previous role mostly intact. var/turf/T = get_turf(usr) new /mob/living/carbon/human(T) log_admin("[key_name(usr)] spawned a mindless human.") + +/client/proc/cmd_admin_send_pda_msg() + set name = "Send PDA Message" + set category = "Adminbus" + + if(!check_rights(R_ADMIN)) + return + var/obj/machinery/telecomms/message_server/server + for(var/obj/machinery/telecomms/message_server/S in GLOB.telecomms_list) + server = S + break + tgui_send_admin_pda(usr, null, server, theme = "admin", allow_send_all = TRUE) diff --git a/code/modules/admin/view_variables/admin_delete.dm b/code/modules/admin/view_variables/admin_delete.dm index 947ad5db2ca..d8c17cbd2b4 100644 --- a/code/modules/admin/view_variables/admin_delete.dm +++ b/code/modules/admin/view_variables/admin_delete.dm @@ -22,3 +22,4 @@ qdel(D) if(!QDELETED(D)) vv_update_display(D, "deleted", "") + return TRUE diff --git a/code/modules/admin/view_variables/topic_basic.dm b/code/modules/admin/view_variables/topic_basic.dm index 04a9a2953dc..f1640a70f4c 100644 --- a/code/modules/admin/view_variables/topic_basic.dm +++ b/code/modules/admin/view_variables/topic_basic.dm @@ -42,10 +42,18 @@ C.debug_variables(target) if(check_rights(R_DEBUG) && href_list[VV_HK_DELETE]) - usr.client.admin_delete(target) - if(isturf(src)) // show the turf that took its place - usr.client.debug_variables(src) + var/X + var/Y + var/Z + if(isturf(target)) + var/turf/T = target + X = T.x + Y = T.y + Z = T.z + if(!usr.client.admin_delete(target)) return + if(X) // Enough to check if we had a turf + usr.client.debug_variables(locate(X,Y,Z)) // Show the turf that replaced it if(href_list[VV_HK_MARK] && check_rights(R_VAREDIT)) usr.client.mark_datum(target) @@ -62,7 +70,7 @@ var/result = input(usr, "Choose a component/element to add","better know what ur fuckin doin pal") as null|anything in names if(!usr || !result || result == "---Components---" || result == "---Elements---") return - if(QDELETED(src)) + if(QDELETED(target)) to_chat(usr, "That thing doesn't exist anymore!") return var/list/lst = get_callproc_args() @@ -76,8 +84,8 @@ else datumname = "element" target._AddElement(arglist(lst)) - log_admin("[key_name(usr)] has added [result] [datumname] to [key_name(src)].") - message_admins("[key_name_admin(usr)] has added [result] [datumname] to [key_name_admin(src)].") + log_admin("[key_name(usr)] has added [result] [datumname] to [target].") + message_admins("[key_name_admin(usr)] has added [result] [datumname] to [target].") if(href_list[VV_HK_MODIFY_GREYSCALE] && check_rights(NONE)) var/datum/greyscale_modify_menu/menu = new(target, usr, SSgreyscale.configurations) diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index a7cc7e8c0d6..4da2f23239f 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -12,7 +12,10 @@ GLOBAL_LIST(admin_antag_list) var/can_coexist_with_others = TRUE //Whether or not the person will be able to have more than one datum var/list/typecache_datum_blacklist = list() //List of datums this type can't coexist with var/delete_on_mind_deletion = TRUE - var/job_rank + /// The ROLE_X key used for this antagonist. + var/banning_key + /// Required living playtime to be included in the rolling for this antagonist + var/required_living_playtime = 0 var/give_objectives = TRUE //Should the default objectives be generated? var/replace_banned = TRUE //Should replace jobbanned player with ghosts if granted. var/list/objectives = list() @@ -114,12 +117,12 @@ GLOBAL_LIST(admin_antag_list) /datum/antagonist/proc/is_banned(mob/M) if(!M) return FALSE - . = (is_banned_from(M.ckey, list(ROLE_SYNDICATE, job_rank)) || QDELETED(M)) + . = (is_banned_from(M.ckey, banning_key) || QDELETED(M)) /datum/antagonist/proc/replace_banned_player() set waitfor = FALSE - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [name]?", job_rank, null, job_rank, 50, owner.current) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [name]?", banning_key, null, 7.5 SECONDS, owner.current, ignore_category = FALSE) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) to_chat(owner, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!") @@ -127,6 +130,7 @@ GLOBAL_LIST(admin_antag_list) owner.current.ghostize(FALSE) owner.current.key = C.key else + owner.current.playable_bantype = banning_key owner.current.ghostize(FALSE,SENTIENCE_FORCE) ///Called by the remove_antag_datum() and remove_all_antag_datums() mind procs for the antag datum to handle its own removal and deletion. @@ -221,14 +225,6 @@ GLOBAL_LIST(admin_antag_list) /datum/antagonist/proc/antag_panel_data() return "" -/datum/antagonist/proc/enabled_in_preferences(datum/mind/M) - if(job_rank) - if(M.current && M.current.client && (job_rank in M.current.client.prefs.be_special)) - return TRUE - else - return FALSE - return TRUE - // List if ["Command"] = CALLBACK(), user will be appeneded to callback arguments on execution /datum/antagonist/proc/get_admin_commands() . = list() diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm index d17f6c8e2e9..eff42e0d677 100644 --- a/code/modules/antagonists/_common/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -58,7 +58,7 @@ if(used) to_chat(H, "You already used this contract!") return - var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src) + var/list/candidates = pollGhostCandidates("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, /datum/role_preference/midround_ghost/wizard, 15 SECONDS, ignore_category = POLL_IGNORE_WIZARD_HELPER) if(LAZYLEN(candidates)) if(QDELETED(src)) return @@ -123,7 +123,7 @@ return to_chat(user, "You activate [src] and wait for confirmation.") - var/list/nuke_candidates = pollGhostCandidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", ROLE_OPERATIVE, null, ROLE_OPERATIVE, 150, POLL_IGNORE_SYNDICATE) + var/list/nuke_candidates = pollGhostCandidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", ROLE_OPERATIVE, /datum/role_preference/midround_ghost/nuclear_operative, 15 SECONDS) if(LAZYLEN(nuke_candidates)) if(QDELETED(src) || !check_usability(user)) return @@ -243,7 +243,7 @@ return if(used) return - var/list/candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, src) + var/list/candidates = pollGhostCandidates("Do you want to play as a [initial(demon_type.name)]?", ROLE_SLAUGHTER_DEMON, null, 10 SECONDS, ignore_category = FALSE) if(LAZYLEN(candidates)) if(used || QDELETED(src)) return @@ -295,7 +295,7 @@ return to_chat(user, "You activate [src] and wait for confirmation.") - var/list/candidates = pollGhostCandidates("Do you want to play as a gangster reinforcements?", ROLE_GANG, null, ROLE_GANG, 150) + var/list/candidates = pollGhostCandidates("Do you want to play as a gangster reinforcements?", ROLE_GANG, /datum/role_preference/antagonist/gangster, 15 SECONDS) if(LAZYLEN(candidates)) if(QDELETED(src) || !check_usability(user)) return diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm index 4973e420256..054c9d137bf 100644 --- a/code/modules/antagonists/abductor/abductor.dm +++ b/code/modules/antagonists/abductor/abductor.dm @@ -4,7 +4,7 @@ name = "Abductor" roundend_category = "abductors" antagpanel_category = "Abductor" - job_rank = ROLE_ABDUCTOR + banning_key = ROLE_ABDUCTOR show_in_antagpanel = FALSE //should only show subtypes show_to_ghosts = TRUE var/datum/team/abductor_team/team @@ -179,6 +179,7 @@ name = "Abductee" roundend_category = "abductees" antagpanel_category = "Abductee" + banning_key = UNBANNABLE_ANTAGONIST /datum/antagonist/abductee/on_gain() give_objective() diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 1899095f73a..e042e7ab020 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -401,7 +401,7 @@ name = "Dissection Guide" icon_state = "alienpaper_words" show_written_words = FALSE - info = {"Dissection for Dummies
              + default_raw_text = {"Dissection for Dummies

              1.Acquire fresh specimen.
              diff --git a/code/modules/antagonists/ashwalker/ashwalker.dm b/code/modules/antagonists/ashwalker/ashwalker.dm index f7a35eb0a31..5f767a84800 100644 --- a/code/modules/antagonists/ashwalker/ashwalker.dm +++ b/code/modules/antagonists/ashwalker/ashwalker.dm @@ -4,7 +4,7 @@ /datum/antagonist/ashwalker name = "Ash Walker" - job_rank = ROLE_LAVALAND + banning_key = ROLE_ASHWALKER show_in_antagpanel = FALSE show_to_ghosts = TRUE prevent_roundtype_conversion = FALSE diff --git a/code/modules/antagonists/blob/blob.dm b/code/modules/antagonists/blob/blob.dm index 9c58e95630b..802b38735b6 100644 --- a/code/modules/antagonists/blob/blob.dm +++ b/code/modules/antagonists/blob/blob.dm @@ -3,7 +3,7 @@ roundend_category = "blobs" antagpanel_category = "Blob" show_to_ghosts = TRUE - job_rank = ROLE_BLOB + banning_key = ROLE_BLOB var/datum/action/innate/blobpop/pop_action var/starting_points_human_blob = 60 diff --git a/code/modules/antagonists/blob/blob_mobs.dm b/code/modules/antagonists/blob/blob_mobs.dm index 33bc9acd69a..f67e4d2aeca 100644 --- a/code/modules/antagonists/blob/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob_mobs.dm @@ -7,7 +7,7 @@ /mob/living/simple_animal/hostile/blob icon = 'icons/mob/blob.dmi' pass_flags = PASSBLOB - faction = list(ROLE_BLOB) + faction = list(FACTION_BLOB) bubble_icon = "blob" speak_emote = null //so we use verb_yell/verb_say/etc atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) @@ -166,7 +166,7 @@ update_icons() visible_message("The corpse of [H.name] suddenly rises!") if(!key) - set_playable() + set_playable(ROLE_BLOB) /mob/living/simple_animal/hostile/blob/blobspore/death(gibbed) // On death, create a small smoke of harmful gas (s-Acid) diff --git a/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm b/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm index 82528d95828..7714ab6944c 100644 --- a/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm +++ b/code/modules/antagonists/blob/blobstrains/explosive_lattice.dm @@ -31,7 +31,7 @@ var/obj/effect/temp_visual/explosion/fast/E = new /obj/effect/temp_visual/explosion/fast(get_turf(M)) E.alpha = 150 for(var/mob/living/L in ohearers(1, get_turf(M))) - if(ROLE_BLOB in L.faction) //no friendly fire + if(FACTION_BLOB in L.faction) //no friendly fire continue var/aoe_volume = ..(L, TOUCH, initial_volume, 0, L.get_permeability_protection(), O) L.apply_damage(0.4*aoe_volume, BRUTE) diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm index 2c57a7da6dd..b2139d3cbac 100644 --- a/code/modules/antagonists/blob/overmind.dm +++ b/code/modules/antagonists/blob/overmind.dm @@ -18,7 +18,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) layer = FLY_LAYER pass_flags = PASSBLOB - faction = list(ROLE_BLOB) + faction = list(FACTION_BLOB) lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE hud_type = /datum/hud/blob_overmind var/obj/structure/blob/core/blob_core = null // The blob overmind's core @@ -145,7 +145,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) if(!(Ablob.area_flags & BLOBS_ALLOWED)) continue - if(!(ROLE_BLOB in L.faction)) + if(!(FACTION_BLOB in L.faction)) playsound(L, 'sound/effects/splat.ogg', 50, 1) L.death() new/mob/living/simple_animal/hostile/blob/blobspore(T) diff --git a/code/modules/antagonists/blob/powers.dm b/code/modules/antagonists/blob/powers.dm index 706abeef12a..1040673e8b8 100644 --- a/code/modules/antagonists/blob/powers.dm +++ b/code/modules/antagonists/blob/powers.dm @@ -16,13 +16,13 @@ if(!placement_override) if(!pop_override) for(var/mob/living/M in range(7, src)) - if(ROLE_BLOB in M.faction) + if(FACTION_BLOB in M.faction) continue if(M.client) to_chat(src, "There is someone too close to place your blob core!") return 0 for(var/mob/living/M in hearers(13, src)) - if(ROLE_BLOB in M.faction) + if(FACTION_BLOB in M.faction) continue if(M.client) to_chat(src, "Someone could see your blob core from here!") @@ -172,7 +172,7 @@ B.naut = TRUE //temporary placeholder to prevent creation of more than one per factory. to_chat(src, "You attempt to produce a blobbernaut.") - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as a [blobstrain.name] blobbernaut?", ROLE_BLOB, null, ROLE_BLOB, 50) //players must answer rapidly + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as a [blobstrain.name] blobbernaut?", ROLE_BLOB, /datum/role_preference/midround_ghost/blob, 7.5 SECONDS, ignore_category = POLL_IGNORE_BLOB_HELPER) //players must answer rapidly if(LAZYLEN(candidates)) //if we got at least one candidate, they're a blobbernaut now. B.max_integrity = initial(B.max_integrity) * 0.25 //factories that produced a blobbernaut have much lower health B.obj_integrity = min(B.obj_integrity, B.max_integrity) @@ -268,7 +268,7 @@ if(can_buy(BLOB_SPREAD_COST)) var/attacksuccess = FALSE for(var/mob/living/L in T) - if(ROLE_BLOB in L.faction) //no friendly/dead fire + if(FACTION_BLOB in L.faction) //no friendly/dead fire continue if(L.stat != DEAD) attacksuccess = TRUE diff --git a/code/modules/antagonists/blob/structures/_blob.dm b/code/modules/antagonists/blob/structures/_blob.dm index dad188eaaaf..20dfcbb3aef 100644 --- a/code/modules/antagonists/blob/structures/_blob.dm +++ b/code/modules/antagonists/blob/structures/_blob.dm @@ -253,7 +253,7 @@ /obj/structure/blob/attack_animal(mob/living/simple_animal/M) - if(ROLE_BLOB in M.faction) //sorry, but you can't kill the blob as a blobbernaut + if(FACTION_BLOB in M.faction) //sorry, but you can't kill the blob as a blobbernaut return ..() diff --git a/code/modules/antagonists/blood_contract/blood_contract.dm b/code/modules/antagonists/blood_contract/blood_contract.dm index f2faecdd458..c1b79bc13b1 100644 --- a/code/modules/antagonists/blood_contract/blood_contract.dm +++ b/code/modules/antagonists/blood_contract/blood_contract.dm @@ -4,6 +4,7 @@ show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE var/duration = 2 MINUTES + banning_key = UNBANNABLE_ANTAGONIST /datum/antagonist/blood_contract/on_gain() . = ..() @@ -37,6 +38,7 @@ for(var/mob/living/carbon/human/P in GLOB.player_list) if(P == H) continue + log_game("[key_name(P)] was selected to kill [key_name(H)] by blood contract") // holy shit why is there no antag datum. I'm doing a huge refactor so I don't have time for one but I had to add this log here to_chat(P, "You have an overwhelming desire to kill [H]. [H.p_theyve(TRUE)] been marked red! Whoever [H.p_they()] [H.p_were()], friend or foe, go kill [H.p_them()]!") var/obj/item/I = new /obj/item/kitchen/knife/butcher(get_turf(P)) diff --git a/code/modules/antagonists/brainwashing/brainwashing.dm b/code/modules/antagonists/brainwashing/brainwashing.dm index 57d082ec819..269e40ee32b 100644 --- a/code/modules/antagonists/brainwashing/brainwashing.dm +++ b/code/modules/antagonists/brainwashing/brainwashing.dm @@ -28,7 +28,7 @@ /datum/antagonist/brainwashed name = "Brainwashed Victim" - job_rank = ROLE_BRAINWASHED + banning_key = ROLE_BRAINWASHED roundend_category = "brainwashed victims" show_in_antagpanel = TRUE antagpanel_category = "Other" diff --git a/code/modules/antagonists/brother/brother.dm b/code/modules/antagonists/brother/brother.dm index efdea659704..b48cf60aa7f 100644 --- a/code/modules/antagonists/brother/brother.dm +++ b/code/modules/antagonists/brother/brother.dm @@ -1,8 +1,8 @@ /datum/antagonist/brother name = "Brother" antagpanel_category = "Brother" - job_rank = ROLE_BROTHER - var/special_role = ROLE_BROTHER + banning_key = ROLE_BROTHER + required_living_playtime = 4 hijack_speed = 0.5 var/datum/team/brother_team/team antag_moodlet = /datum/mood_event/focused @@ -22,14 +22,14 @@ objectives += team.objectives for(var/datum/objective/O in team.objectives) log_objective(owner, O.explanation_text) - owner.special_role = special_role + owner.special_role = ROLE_BROTHER finalize_brother() return ..() /datum/antagonist/brother/on_removal() SSticker.mode.brothers -= owner if(owner.current) - to_chat(owner.current,"You are no longer the [special_role]!") + to_chat(owner.current,"You are no longer the Blood Brother!") owner.special_role = null return ..() @@ -56,7 +56,7 @@ /datum/antagonist/brother/greet() var/brother_text = get_brother_names() - to_chat(owner.current, "You are the [owner.special_role] of [brother_text].") + to_chat(owner.current, "You are the Blood Brother of [brother_text].") to_chat(owner.current, "The Syndicate only accepts those that have proven themselves. Prove yourself and prove your [team.member_name]s by completing your objectives together! You and your team are outfitted with communication implants allowing for direct, encrypted communication.") owner.announce_objectives() give_meeting_area() diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index 957db20573c..53c3a42b637 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -6,7 +6,8 @@ name = "Changeling" roundend_category = "changelings" antagpanel_category = "Changeling" - job_rank = ROLE_CHANGELING + banning_key = ROLE_CHANGELING + required_living_playtime = 4 antag_moodlet = /datum/mood_event/focused hijack_speed = 0.5 var/you_are_greet = TRUE diff --git a/code/modules/antagonists/changeling/powers/teratoma.dm b/code/modules/antagonists/changeling/powers/teratoma.dm index 482ac09834b..f0a89f41d6f 100644 --- a/code/modules/antagonists/changeling/powers/teratoma.dm +++ b/code/modules/antagonists/changeling/powers/teratoma.dm @@ -23,7 +23,7 @@ var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) c.chem_charges -= chemical_cost //I'm taking your chemicals hostage! var/turf/A = get_turf(user) - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as a living teratoma?", ROLE_TERATOMA, null, ROLE_TERATOMA, 5 SECONDS) //players must answer rapidly + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as a living teratoma?", ROLE_TERATOMA, null, 7.5 SECONDS) //players must answer rapidly if(!LAZYLEN(candidates)) //if we got at least one candidate, they're teratoma now to_chat(usr, "You fail at creating a tumor. Perhaps you should try again later?") c.chem_charges += chemical_cost //If it fails we want to refund the chemicals diff --git a/code/modules/antagonists/changeling/teratoma.dm b/code/modules/antagonists/changeling/teratoma.dm index e304ae4383c..3e5a4c51aaf 100644 --- a/code/modules/antagonists/changeling/teratoma.dm +++ b/code/modules/antagonists/changeling/teratoma.dm @@ -2,7 +2,7 @@ name = "Teratoma" roundend_category = "other" antagpanel_category = "Changeling" - job_rank = ROLE_TERATOMA + banning_key = ROLE_TERATOMA /datum/antagonist/teratoma/on_gain() owner.special_role = "Teratoma" @@ -45,7 +45,6 @@ name = "Maintenance Teratoma" roundend_category = "other" antagpanel_category = "Changeling" - job_rank = ROLE_TERATOMA /datum/antagonist/teratoma/hugbox/greet() ..() diff --git a/code/modules/antagonists/clock_cult/mobs/cogscarab.dm b/code/modules/antagonists/clock_cult/mobs/cogscarab.dm index 8d233a2d20d..d1be9760a77 100644 --- a/code/modules/antagonists/clock_cult/mobs/cogscarab.dm +++ b/code/modules/antagonists/clock_cult/mobs/cogscarab.dm @@ -65,11 +65,6 @@ GLOBAL_LIST_INIT(cogscarabs, list()) /obj/effect/mob_spawn/drone/cogscarab/attack_ghost(mob/user) if(is_banned_from(user.ckey, ROLE_SERVANT_OF_RATVAR) || QDELETED(src) || QDELETED(user)) return - if(CONFIG_GET(flag/use_age_restriction_for_jobs)) - if(!isnum(user.client.player_age)) //apparently what happens when there's no DB connected. just don't let anybody be a drone without admin intervention - if(user.client.player_age < 14) - to_chat(user, "You're too new to play as a drone! Please try again in [14 - user.client.player_age] days.") - return if(!SSticker.mode) to_chat(user, "Can't become a cogscarab before the game has started.") return diff --git a/code/modules/antagonists/clock_cult/scriptures/sigil_of_vitality.dm b/code/modules/antagonists/clock_cult/scriptures/sigil_of_vitality.dm index e4ce19d5f04..0d80bd2aa47 100644 --- a/code/modules/antagonists/clock_cult/scriptures/sigil_of_vitality.dm +++ b/code/modules/antagonists/clock_cult/scriptures/sigil_of_vitality.dm @@ -53,7 +53,7 @@ if(M.mind) M.mind.grab_ghost(TRUE) else - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [M.name], an inactive clock cultist?", ROLE_SERVANT_OF_RATVAR, null, ROLE_SERVANT_OF_RATVAR, 50, M) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [M.name], an inactive clock cultist?", ROLE_SERVANT_OF_RATVAR, /datum/role_preference/antagonist/clock_cultist, 7.5 SECONDS, M) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(M)]) to replace an AFK player.") diff --git a/code/modules/antagonists/clock_cult/scriptures/summon_marauder.dm b/code/modules/antagonists/clock_cult/scriptures/summon_marauder.dm index ef41ed2bb61..d665cbeaee7 100644 --- a/code/modules/antagonists/clock_cult/scriptures/summon_marauder.dm +++ b/code/modules/antagonists/clock_cult/scriptures/summon_marauder.dm @@ -17,7 +17,7 @@ var/mob/dead/observer/selected /datum/clockcult/scripture/marauder/invoke() - candidates = pollGhostCandidates("Would you like to play as a clockwork marauder?", ROLE_SERVANT_OF_RATVAR, null, null, 100, POLL_IGNORE_CLOCKWORK) + candidates = pollGhostCandidates("Would you like to play as a clockwork marauder?", ROLE_SERVANT_OF_RATVAR, /datum/role_preference/antagonist/clock_cultist, 10 SECONDS, POLL_IGNORE_CLOCKWORK_HELPER) if(LAZYLEN(candidates)) selected = pick(candidates) if(!selected) diff --git a/code/modules/antagonists/clock_cult/servant_of_ratvar.dm b/code/modules/antagonists/clock_cult/servant_of_ratvar.dm index 470215b2696..d904a53fe91 100644 --- a/code/modules/antagonists/clock_cult/servant_of_ratvar.dm +++ b/code/modules/antagonists/clock_cult/servant_of_ratvar.dm @@ -7,7 +7,8 @@ roundend_category = "clock cultists" antagpanel_category = "Clockcult" antag_moodlet = /datum/mood_event/cult - job_rank = ROLE_SERVANT_OF_RATVAR + banning_key = ROLE_SERVANT_OF_RATVAR + required_living_playtime = 4 //The class of the servant var/datum/action/innate/clockcult/transmit/transmit_spell diff --git a/code/modules/antagonists/clock_cult/structure/eminence_beacon.dm b/code/modules/antagonists/clock_cult/structure/eminence_beacon.dm index 666acf43f25..0a04a5f1316 100644 --- a/code/modules/antagonists/clock_cult/structure/eminence_beacon.dm +++ b/code/modules/antagonists/clock_cult/structure/eminence_beacon.dm @@ -35,7 +35,7 @@ vote_active = FALSE used = TRUE if(!eminence) - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the eminence?", ROLE_SERVANT_OF_RATVAR, null, null, 100, POLL_IGNORE_PYROSLIME) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the eminence?", ROLE_SERVANT_OF_RATVAR, /datum/role_preference/antagonist/clock_cultist, 10 SECONDS) if(LAZYLEN(candidates)) eminence = pick(candidates) else diff --git a/code/modules/antagonists/creep/creep.dm b/code/modules/antagonists/creep/creep.dm index 6537250de14..63b43371dad 100644 --- a/code/modules/antagonists/creep/creep.dm +++ b/code/modules/antagonists/creep/creep.dm @@ -2,7 +2,7 @@ name = "Obsessed" show_in_antagpanel = TRUE antagpanel_category = "Other" - job_rank = ROLE_OBSESSED + banning_key = ROLE_OBSESSED show_name_in_check_antagonists = TRUE roundend_category = "obsessed" count_against_dynamic_roll_chance = FALSE diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 75ff9fe6815..0f8cf5cefed 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -8,7 +8,8 @@ var/datum/action/innate/cult/comm/communion = new var/datum/action/innate/cult/mastervote/vote = new var/datum/action/innate/cult/blood_magic/magic = new - job_rank = ROLE_CULTIST + banning_key = ROLE_CULTIST + required_living_playtime = 4 var/ignore_implant = FALSE var/give_equipment = FALSE var/datum/team/cult/cult_team diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm index adb892f2e73..e28c1220f3a 100644 --- a/code/modules/antagonists/cult/cult_comms.dm +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -108,7 +108,7 @@ if(B.current && B.current != Nominee && !B.current.incapacitated()) SEND_SOUND(B.current, 'sound/magic/exit_blood.ogg') asked_cultists += B.current - var/list/yes_voters = pollCandidates("[Nominee] seeks to lead your cult, do you support [Nominee.p_them()]?", poll_time = 300, group = asked_cultists) + var/list/yes_voters = pollCandidates("[Nominee] seeks to lead your cult, do you support [Nominee.p_them()]?", poll_time = 30 SECONDS, group = asked_cultists) if(QDELETED(Nominee) || Nominee.incapacitated()) team.cult_vote_called = FALSE for(var/datum/mind/B in team.members) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index fef483b3a3e..4f5d58cf7c7 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -603,7 +603,7 @@ structure_check() searches for nearby cultist structures required for the invoca mob_to_revive.grab_ghost() if(!mob_to_revive.client || mob_to_revive.client.is_afk()) set waitfor = FALSE - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [mob_to_revive.name], an inactive blood cultist?", ROLE_CULTIST, null, ROLE_CULTIST, 50, mob_to_revive) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [mob_to_revive.name], an inactive blood cultist?", ROLE_CULTIST, /datum/role_preference/antagonist/blood_cultist, 7.5 SECONDS, mob_to_revive) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.") diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index 15bc64418e0..8b548791769 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -88,7 +88,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", name = "Devil" roundend_category = "devils" antagpanel_category = "Devil" - job_rank = ROLE_DEVIL + banning_key = ROLE_DEVIL //Don't delete upon mind destruction, otherwise soul re-selling will break. delete_on_mind_deletion = FALSE show_to_ghosts = TRUE diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm index bbe9b3978c7..0b8f25b0a25 100644 --- a/code/modules/antagonists/devil/imp/imp.dm +++ b/code/modules/antagonists/devil/imp/imp.dm @@ -64,6 +64,7 @@ name = "Imp" antagpanel_category = "Devil" show_in_roundend = FALSE + banning_key = ROLE_DEVIL /datum/antagonist/imp/on_gain() . = ..() diff --git a/code/modules/antagonists/devil/sintouched/sintouched.dm b/code/modules/antagonists/devil/sintouched/sintouched.dm index 29c3c77fd6d..014fdfcba30 100644 --- a/code/modules/antagonists/devil/sintouched/sintouched.dm +++ b/code/modules/antagonists/devil/sintouched/sintouched.dm @@ -10,6 +10,7 @@ name = "sintouched" roundend_category = "sintouched" antagpanel_category = "Devil" + banning_key = UNBANNABLE_ANTAGONIST var/sin var/static/list/sins = list(SIN_ACEDIA,SIN_GLUTTONY,SIN_GREED,SIN_SLOTH,SIN_WRATH,SIN_ENVY,SIN_PRIDE) diff --git a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm index bd98f6e4d07..b752da58ec1 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm @@ -3,7 +3,8 @@ roundend_category = "Heretics" antagpanel_category = "Heretic" antag_moodlet = /datum/mood_event/heretics - job_rank = ROLE_HERETIC + banning_key = ROLE_HERETIC + required_living_playtime = 4 var/antag_hud_type = ANTAG_HUD_HERETIC // someone make all the other antags conform to this too lol var/antag_hud_name = "heretic" hijack_speed = 0.5 diff --git a/code/modules/antagonists/eldritch_cult/eldritch_monster_antag.dm b/code/modules/antagonists/eldritch_cult/eldritch_monster_antag.dm index 7ecba7e1df1..4a48677f763 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_monster_antag.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_monster_antag.dm @@ -4,7 +4,7 @@ roundend_category = "Heretics" antagpanel_category = "Heretic Beast" antag_moodlet = /datum/mood_event/heretics - job_rank = ROLE_HERETIC + banning_key = ROLE_HERETIC var/antag_hud_type = ANTAG_HUD_HERETIC var/antag_hud_name = "heretic_beast" var/datum/antagonist/heretic/master diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm index 458280d6e0e..65f0e45db0d 100644 --- a/code/modules/antagonists/ert/ert.dm +++ b/code/modules/antagonists/ert/ert.dm @@ -22,6 +22,7 @@ show_to_ghosts = TRUE antag_moodlet = /datum/mood_event/focused count_against_dynamic_roll_chance = FALSE + banning_key = ROLE_ERT /datum/antagonist/ert/on_gain() if(random_names) diff --git a/code/modules/antagonists/fugitive/fugitive.dm b/code/modules/antagonists/fugitive/fugitive.dm index 164253f3f1f..b543d1752ef 100644 --- a/code/modules/antagonists/fugitive/fugitive.dm +++ b/code/modules/antagonists/fugitive/fugitive.dm @@ -2,6 +2,7 @@ /datum/antagonist/fugitive name = "Fugitive" roundend_category = "Fugitive" + banning_key = ROLE_FUGITIVE silent = TRUE //greet called by the event show_in_antagpanel = FALSE prevent_roundtype_conversion = FALSE diff --git a/code/modules/antagonists/fugitive/hunter.dm b/code/modules/antagonists/fugitive/hunter.dm index aba80479982..e5dc82de09f 100644 --- a/code/modules/antagonists/fugitive/hunter.dm +++ b/code/modules/antagonists/fugitive/hunter.dm @@ -2,6 +2,7 @@ /datum/antagonist/fugitive_hunter name = "Fugitive Hunter" roundend_category = "Fugitive" + banning_key = ROLE_FUGITIVE_HUNTER silent = TRUE //greet called by the spawn show_in_antagpanel = FALSE prevent_roundtype_conversion = FALSE diff --git a/code/modules/antagonists/gang/gang.dm b/code/modules/antagonists/gang/gang.dm index 37377021b71..479ffb27b90 100644 --- a/code/modules/antagonists/gang/gang.dm +++ b/code/modules/antagonists/gang/gang.dm @@ -2,7 +2,7 @@ name = "Gangster" roundend_category = "gangsters" can_coexist_with_others = FALSE - job_rank = ROLE_GANG + banning_key = ROLE_GANG antagpanel_category = "Gang" var/hud_type = "gangster" var/message_name = "Gangster" diff --git a/code/modules/antagonists/greentext/greentext.dm b/code/modules/antagonists/greentext/greentext.dm index a40ab260538..3409e710410 100644 --- a/code/modules/antagonists/greentext/greentext.dm +++ b/code/modules/antagonists/greentext/greentext.dm @@ -3,6 +3,7 @@ show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE //Not that it will be there for long count_against_dynamic_roll_chance = FALSE + banning_key = UNBANNABLE_ANTAGONIST /datum/antagonist/greentext/proc/forge_objectives() var/datum/objective/O = new /datum/objective("Succeed") diff --git a/code/modules/antagonists/guardian/guardian.dm b/code/modules/antagonists/guardian/guardian.dm index 192f8675362..3d46c14c325 100644 --- a/code/modules/antagonists/guardian/guardian.dm +++ b/code/modules/antagonists/guardian/guardian.dm @@ -5,6 +5,7 @@ show_in_antagpanel = FALSE var/datum/guardian_stats/stats var/datum/mind/summoner + banning_key = ROLE_HOLOPARASITE /datum/antagonist/guardian/roundend_report() var/list/parts = list() diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm index c79a4845af6..5892dec8abf 100644 --- a/code/modules/antagonists/highlander/highlander.dm +++ b/code/modules/antagonists/highlander/highlander.dm @@ -5,6 +5,7 @@ show_name_in_check_antagonists = TRUE can_elimination_hijack = ELIMINATION_ENABLED count_against_dynamic_roll_chance = FALSE + banning_key = BAN_ROLE_ALL_ANTAGONISTS /datum/antagonist/highlander/apply_innate_effects(mob/living/mob_override) var/mob/living/L = owner.current || mob_override diff --git a/code/modules/antagonists/hivemind/hivemind.dm b/code/modules/antagonists/hivemind/hivemind.dm index 0fceed869ef..fa4d0033ee2 100644 --- a/code/modules/antagonists/hivemind/hivemind.dm +++ b/code/modules/antagonists/hivemind/hivemind.dm @@ -2,7 +2,8 @@ name = "Hivemind Host" roundend_category = "hiveminds" antagpanel_category = "Hivemind Host" - job_rank = ROLE_HIVE + banning_key = ROLE_HIVE + required_living_playtime = 4 antag_moodlet = /datum/mood_event/hivehost var/special_role = ROLE_HIVE var/list/hivemembers = list() @@ -156,7 +157,7 @@ /datum/antagonist/hivemind/on_gain() - owner.special_role = special_role + owner.special_role = ROLE_HIVE GLOB.hivehosts += src generate_flavour() create_actions() diff --git a/code/modules/antagonists/hivemind/vessel.dm b/code/modules/antagonists/hivemind/vessel.dm index 2fad52867b8..393417f79d7 100644 --- a/code/modules/antagonists/hivemind/vessel.dm +++ b/code/modules/antagonists/hivemind/vessel.dm @@ -2,7 +2,7 @@ /datum/antagonist/hivevessel name = "Awoken Vessel" - job_rank = ROLE_BRAINWASHED + banning_key = ROLE_HIVE_VESSEL roundend_category = "awoken vessels" antagpanel_category = "Other" show_name_in_check_antagonists = TRUE @@ -36,7 +36,7 @@ mind.remove_antag_datum(/datum/antagonist/brainwashed) /datum/antagonist/hivevessel/on_gain() - owner.special_role = special_role + owner.special_role = ROLE_HIVE_VESSEL owner.AddSpell(fist) ..() diff --git a/code/modules/antagonists/incursion/incursion.dm b/code/modules/antagonists/incursion/incursion.dm index d9ccbb95d0e..5358e20ac0e 100644 --- a/code/modules/antagonists/incursion/incursion.dm +++ b/code/modules/antagonists/incursion/incursion.dm @@ -1,8 +1,8 @@ /datum/antagonist/incursion name = "Syndicate Incursion Member" antagpanel_category = "Incursion" - job_rank = ROLE_INCURSION - var/special_role = ROLE_INCURSION + banning_key = ROLE_INCURSION + required_living_playtime = 4 var/datum/team/incursion/team antag_moodlet = /datum/mood_event/focused hijack_speed = 0.5 @@ -22,7 +22,7 @@ for(var/datum/objective/O in team.objectives) objectives += O log_objective(owner, O.explanation_text) - owner.special_role = special_role + owner.special_role = ROLE_INCURSION finalize_incursion() return ..() @@ -198,15 +198,15 @@ /datum/team/incursion/proc/generate_traitor_kill_objective(list/restricted_jobs) //Spawn someone as a traitor - var/list/datum/mind/people = SSticker.mode.get_alive_non_antagonsist_players_for_role(ROLE_EXCOMM, restricted_jobs) + var/list/datum/mind/people = SSticker.mode.get_alive_non_antagonsist_players_for_role(/datum/antagonist/traitor, /datum/role_preference/antagonist/excommunicate, restricted_jobs) if(!LAZYLEN(people)) log_game("Not enough players for incursion role. [LAZYLEN(people)]") return - var/datum/mind/target = SSticker.mode.antag_pick(people, ROLE_EXCOMM) + var/datum/mind/target = SSticker.mode.antag_pick(people, /datum/role_preference/antagonist/excommunicate) if(!target) log_game("No mind selected.") return - target.make_Traitor() + target.add_antag_datum(/datum/antagonist/traitor/excommunicate) to_chat(target, "You have been declared an ex-communicate of the syndicate and are being hunted down.") to_chat(target, "You have stolen syndicate objective documents, complete the objectives to throw off the syndicate and sabotage their efforts.") target.store_memory("You have been declared an ex-communicate of the syndicate and are being hunted down by a group of traitors. Be careful!") diff --git a/code/modules/antagonists/magic_servant/servant.dm b/code/modules/antagonists/magic_servant/servant.dm index 3277991446c..9717e869475 100644 --- a/code/modules/antagonists/magic_servant/servant.dm +++ b/code/modules/antagonists/magic_servant/servant.dm @@ -3,6 +3,7 @@ show_in_roundend = FALSE show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE + banning_key = ROLE_WIZARD /datum/antagonist/magic_servant/proc/setup_master(mob/M) var/datum/objective/O = new("Serve [M.real_name].") diff --git a/code/modules/antagonists/morph/morph.dm b/code/modules/antagonists/morph/morph.dm index 7aa8db699f0..e88a891f1b1 100644 --- a/code/modules/antagonists/morph/morph.dm +++ b/code/modules/antagonists/morph/morph.dm @@ -276,7 +276,7 @@ role_name = "morphling" /datum/round_event/ghost_role/morph/spawn_role() - var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) + var/list/candidates = get_candidates(ROLE_MORPH, /datum/role_preference/midround_ghost/morph) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/antagonists/morph/morph_antag.dm b/code/modules/antagonists/morph/morph_antag.dm index 7b0491e5de5..c648a24fdea 100644 --- a/code/modules/antagonists/morph/morph_antag.dm +++ b/code/modules/antagonists/morph/morph_antag.dm @@ -2,5 +2,6 @@ name = "Morph" show_name_in_check_antagonists = TRUE show_in_antagpanel = FALSE + banning_key = ROLE_MORPH //It does nothing! (Besides tracking) diff --git a/code/modules/antagonists/nightmare/nightmare.dm b/code/modules/antagonists/nightmare/nightmare.dm index 1739e249510..59ddb46b6f4 100644 --- a/code/modules/antagonists/nightmare/nightmare.dm +++ b/code/modules/antagonists/nightmare/nightmare.dm @@ -1,5 +1,6 @@ /datum/antagonist/nightmare name = "Nightmare" + banning_key = ROLE_NIGHTMARE show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE show_to_ghosts = TRUE diff --git a/code/modules/antagonists/ninja/ninja.dm b/code/modules/antagonists/ninja/ninja.dm index 03b0f9042c8..b697e6684bd 100644 --- a/code/modules/antagonists/ninja/ninja.dm +++ b/code/modules/antagonists/ninja/ninja.dm @@ -1,7 +1,7 @@ /datum/antagonist/ninja name = "Ninja" antagpanel_category = "Ninja" - job_rank = ROLE_NINJA + banning_key = ROLE_NINJA show_name_in_check_antagonists = TRUE show_to_ghosts = TRUE antag_moodlet = /datum/mood_event/focused diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm index 187aee35da4..8126e12ff1c 100644 --- a/code/modules/antagonists/nukeop/nukeop.dm +++ b/code/modules/antagonists/nukeop/nukeop.dm @@ -2,7 +2,8 @@ name = "Nuclear Operative" roundend_category = "syndicate operatives" //just in case antagpanel_category = "NukeOp" - job_rank = ROLE_OPERATIVE + banning_key = ROLE_OPERATIVE + required_living_playtime = 8 antag_moodlet = /datum/mood_event/focused show_to_ghosts = TRUE hijack_speed = 2 //If you can't take out the station, take the shuttle instead. @@ -144,7 +145,7 @@ nuke_team = new_team /datum/antagonist/nukeop/admin_add(datum/mind/new_owner,mob/admin) - new_owner.assigned_role = ROLE_SYNDICATE + new_owner.assigned_role = ROLE_OPERATIVE new_owner.add_antag_datum(src) message_admins("[key_name_admin(admin)] has nuke op'ed [key_name_admin(new_owner)].") log_admin("[key_name(admin)] has nuke op'ed [key_name(new_owner)].") @@ -178,14 +179,14 @@ /datum/antagonist/nukeop/leader/memorize_code() ..() if(nuke_team?.memorized_code) - var/obj/item/paper/P = new - P.info = "The nuclear authorization code is: [nuke_team.memorized_code]" - P.name = "nuclear bomb code" + var/obj/item/paper/nuke_code_paper = new + nuke_code_paper.add_raw_text("The nuclear authorization code is: [nuke_team.memorized_code]") + nuke_code_paper.name = "nuclear bomb code" var/mob/living/carbon/human/H = owner.current if(!istype(H)) - P.forceMove(get_turf(H)) + nuke_code_paper.forceMove(get_turf(H)) else - H.put_in_hands(P, TRUE) + H.put_in_hands(nuke_code_paper, TRUE) H.update_icons() /datum/antagonist/nukeop/leader/give_alias() diff --git a/code/modules/antagonists/official/official.dm b/code/modules/antagonists/official/official.dm index a35ef429734..d1d73bc79b7 100644 --- a/code/modules/antagonists/official/official.dm +++ b/code/modules/antagonists/official/official.dm @@ -6,6 +6,7 @@ var/datum/objective/mission var/datum/team/ert/ert_team show_to_ghosts = TRUE + banning_key = ROLE_ERT /datum/antagonist/official/greet() to_chat(owner, "You are a CentCom Official.") diff --git a/code/modules/antagonists/overthrow/overthrow.dm b/code/modules/antagonists/overthrow/overthrow.dm index eeb25929891..da118ce87b4 100644 --- a/code/modules/antagonists/overthrow/overthrow.dm +++ b/code/modules/antagonists/overthrow/overthrow.dm @@ -9,7 +9,7 @@ name = "Syndicate mutineer" roundend_category = "syndicate mutineers" antagpanel_category = "Syndicate Mutineers" - job_rank = ROLE_TRAITOR // simply use the traitor preference & jobban settings + banning_key = ROLE_OVERTHROW var/datum/team/overthrow/team var/static/list/possible_useful_items diff --git a/code/modules/antagonists/pirate/pirate.dm b/code/modules/antagonists/pirate/pirate.dm index b8fbd18c70e..5804e64f448 100644 --- a/code/modules/antagonists/pirate/pirate.dm +++ b/code/modules/antagonists/pirate/pirate.dm @@ -1,6 +1,6 @@ /datum/antagonist/pirate name = "Space Pirate" - job_rank = ROLE_TRAITOR + banning_key = ROLE_SPACE_PIRATE roundend_category = "space pirates" antagpanel_category = "Pirate" show_to_ghosts = TRUE diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index 803d8fd916c..02370743481 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -438,7 +438,7 @@ break if(!key_of_revenant) message_admins("The new revenant's old client either could not be found or is in a new, living mob - grabbing a random candidate instead...") - var/list/candidates = pollCandidatesForMob("Do you want to be [revenant.name] (reforming)?", ROLE_REVENANT, null, ROLE_REVENANT, 50, revenant) + var/list/candidates = pollCandidatesForMob("Do you want to be [revenant.name] (reforming)?", ROLE_REVENANT, /datum/role_preference/midround_ghost/revenant, 7.5 SECONDS, revenant) if(!LAZYLEN(candidates)) qdel(revenant) message_admins("No candidates were found for the new revenant. Oh well!") diff --git a/code/modules/antagonists/revenant/revenant_antag.dm b/code/modules/antagonists/revenant/revenant_antag.dm index 169d23d25c0..2c9aa4d8a87 100644 --- a/code/modules/antagonists/revenant/revenant_antag.dm +++ b/code/modules/antagonists/revenant/revenant_antag.dm @@ -3,6 +3,7 @@ show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE show_to_ghosts = TRUE + banning_key = ROLE_REVENANT /datum/antagonist/revenant/greet() owner.announce_objectives() diff --git a/code/modules/antagonists/revenant/revenant_spawn_event.dm b/code/modules/antagonists/revenant/revenant_spawn_event.dm index 10ee621a9b8..54368fd8721 100644 --- a/code/modules/antagonists/revenant/revenant_spawn_event.dm +++ b/code/modules/antagonists/revenant/revenant_spawn_event.dm @@ -26,7 +26,7 @@ message_admins("Event attempted to spawn a revenant, but there were only [deadMobs]/[REVENANT_SPAWN_THRESHOLD] dead mobs.") return WAITING_FOR_SOMETHING - var/list/candidates = get_candidates(ROLE_REVENANT, null, ROLE_REVENANT) + var/list/candidates = get_candidates(ROLE_REVENANT, /datum/role_preference/midround_ghost/revenant) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index d5dce9e21ef..17591952189 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -7,7 +7,7 @@ name = "Revolutionary" roundend_category = "revolutionaries" // if by some miracle revolutionaries without revolution happen antagpanel_category = "Revolution" - job_rank = ROLE_REV + banning_key = ROLE_REV antag_moodlet = /datum/mood_event/revolution var/hud_type = "rev" var/datum/team/revolution/rev_team @@ -159,6 +159,8 @@ /datum/antagonist/rev/head name = "Head Revolutionary" hud_type = "rev_head" + banning_key = ROLE_REV_HEAD + required_living_playtime = 4 var/remove_clumsy = FALSE var/give_flash = FALSE var/give_hud = TRUE @@ -289,6 +291,7 @@ /datum/antagonist/revolution_enemy name = "Enemy of the Revolution" show_in_antagpanel = FALSE + banning_key = UNBANNABLE_ANTAGONIST /datum/antagonist/revolution_enemy/on_gain() owner.special_role = "revolution enemy" @@ -342,7 +345,7 @@ var/list/datum/mind/nonhuman_promotable = list() for(var/datum/mind/khrushchev in non_heads) if(khrushchev.current && !khrushchev.current.incapacitated() && !khrushchev.current.restrained() && khrushchev.current.client && khrushchev.current.stat != DEAD) - if(ROLE_REV in khrushchev.current.client.prefs.be_special) + if(khrushchev.current.client.should_include_for_role(ROLE_REV_HEAD, /datum/role_preference/antagonist/revolutionary)) if(ishuman(khrushchev.current)) promotable += khrushchev else diff --git a/code/modules/antagonists/role_preference/_role_preference.dm b/code/modules/antagonists/role_preference/_role_preference.dm new file mode 100644 index 00000000000..710ce5d2430 --- /dev/null +++ b/code/modules/antagonists/role_preference/_role_preference.dm @@ -0,0 +1,27 @@ +/datum/role_preference + var/name + /// What heading to display this entry under in the preferences menu. Use ROLE_PREFERENCE_CATEGORY defines. + var/category + /// The Antagonist datum typepath for this entry, if there is one. Used to get data about the role for display (bans etc) + var/datum/antagonist/antag_datum + /// The base abstract path for this subtype. + var/abstract_type = /datum/role_preference + /// If this preference can vary between characters. + var/per_character = FALSE + +/// Includes latejoin and roundstart antagonists +/datum/role_preference/antagonist + category = ROLE_PREFERENCE_CATEGORY_ANAGONIST + abstract_type = /datum/role_preference/antagonist + per_character = TRUE + +/// Includes autotraitor and gamemode midround assignments - being forced into an antagonist during a round (does not apply to conversion antags). +/datum/role_preference/midround_living + category = ROLE_PREFERENCE_CATEGORY_MIDROUND_LIVING + abstract_type = /datum/role_preference/midround_living + per_character = TRUE + +/// Includes anything polled from ghosts that does antagonist stuff +/datum/role_preference/midround_ghost + category = ROLE_PREFERENCE_CATEGORY_MIDROUND_GHOST + abstract_type = /datum/role_preference/midround_ghost diff --git a/code/modules/antagonists/role_preference/role_antagonists.dm b/code/modules/antagonists/role_preference/role_antagonists.dm new file mode 100644 index 00000000000..b952e5ad233 --- /dev/null +++ b/code/modules/antagonists/role_preference/role_antagonists.dm @@ -0,0 +1,43 @@ +/datum/role_preference/antagonist/blood_brother + name = "Blood Brother" + antag_datum = /datum/antagonist/brother + +/datum/role_preference/antagonist/blood_cultist + name = "Blood Cultist" + antag_datum = /datum/antagonist/cult + +/datum/role_preference/antagonist/clock_cultist + name = "Clock Cultist" + antag_datum = /datum/antagonist/servant_of_ratvar + +/datum/role_preference/antagonist/devil + name = "Devil" + antag_datum = /datum/antagonist/devil + +/datum/role_preference/antagonist/revolutionary + name = "Head Revolutionary" + antag_datum = /datum/antagonist/rev/head + +/datum/role_preference/antagonist/heretic + name = "Heretic" + antag_datum = /datum/antagonist/heretic + +/datum/role_preference/antagonist/hivemind_host + name = "Hivemind Host" + antag_datum = /datum/antagonist/hivemind + +/datum/role_preference/antagonist/incursionist + name = "Incursionist" + antag_datum = /datum/antagonist/incursion + +/datum/role_preference/antagonist/excommunicate + name = "Excommunicated Syndicate Agent" + antag_datum = /datum/antagonist/traitor/excommunicate + +/datum/role_preference/antagonist/gangster + name = "Gangster" + antag_datum = /datum/antagonist/gang + +/datum/role_preference/antagonist/internal_affairs + name = "Internal Affairs Agent" + antag_datum = /datum/antagonist/traitor/internal_affairs diff --git a/code/modules/antagonists/role_preference/role_changeling.dm b/code/modules/antagonists/role_preference/role_changeling.dm new file mode 100644 index 00000000000..cf0399b0bcf --- /dev/null +++ b/code/modules/antagonists/role_preference/role_changeling.dm @@ -0,0 +1,3 @@ +/datum/role_preference/antagonist/changeling + name = "Changeling" + antag_datum = /datum/antagonist/changeling diff --git a/code/modules/antagonists/role_preference/role_midrounds.dm b/code/modules/antagonists/role_preference/role_midrounds.dm new file mode 100644 index 00000000000..77a4c08d798 --- /dev/null +++ b/code/modules/antagonists/role_preference/role_midrounds.dm @@ -0,0 +1,69 @@ +/datum/role_preference/midround_ghost/blob + name = "Blob" + antag_datum = /datum/antagonist/blob + +/datum/role_preference/midround_ghost/xenomorph + name = "Xenomorph" + antag_datum = /datum/antagonist/xeno + +/datum/role_preference/midround_ghost/nightmare + name = "Nightmare" + antag_datum = /datum/antagonist/nightmare + +/datum/role_preference/midround_ghost/space_dragon + name = "Space Dragon" + antag_datum = /datum/antagonist/space_dragon + +/datum/role_preference/midround_ghost/abductor + name = "Abductor" + antag_datum = /datum/antagonist/abductor + +/datum/role_preference/midround_ghost/space_pirate + name = "Space Pirate" + antag_datum = /datum/antagonist/pirate + +/datum/role_preference/midround_ghost/revenant + name = "Revenant" + antag_datum = /datum/antagonist/revenant + +/* NSV13 - Disabled because we don't have this ported yet. +/datum/role_preference/midround_ghost/spider + name = "Spider" + antag_datum = /datum/antagonist/spider + +/datum/role_preference/midround_ghost/swarmer + name = "Swarmer" + antag_datum = /datum/antagonist/swarmer +*/ + +/datum/role_preference/midround_ghost/morph + name = "Morph" + antag_datum = /datum/antagonist/morph + +/datum/role_preference/midround_ghost/fugitive + name = "Fugitive" + antag_datum = /datum/antagonist/fugitive + +/datum/role_preference/midround_ghost/fugitive_hunter + name = "Fugitive Hunter" + antag_datum = /datum/antagonist/fugitive_hunter + +/datum/role_preference/midround_ghost/slaughter_demon + name = "Slaughter Demon" + antag_datum = /datum/antagonist/slaughter + +/datum/role_preference/midround_ghost/devil + name = "Devil (Midround)" + antag_datum = /datum/antagonist/devil + +/datum/role_preference/midround_ghost/ninja + name = "Ninja" + antag_datum = /datum/antagonist/ninja + +/datum/role_preference/midround_living/malfunctioning_ai + name = "Malfunctioning AI" + antag_datum = /datum/antagonist/traitor + +/datum/role_preference/midround_living/obsessed + name = "Obsessed" + antag_datum = /datum/antagonist/obsessed diff --git a/code/modules/antagonists/role_preference/role_operative.dm b/code/modules/antagonists/role_preference/role_operative.dm new file mode 100644 index 00000000000..6a4fe7a5b9e --- /dev/null +++ b/code/modules/antagonists/role_preference/role_operative.dm @@ -0,0 +1,7 @@ +/datum/role_preference/antagonist/nuclear_operative + name = "Nuclear Operative" + antag_datum = /datum/antagonist/nukeop + +/datum/role_preference/midround_ghost/nuclear_operative + name = "Nuclear Operative (Midround)" + antag_datum = /datum/antagonist/nukeop diff --git a/code/modules/antagonists/role_preference/role_traitor.dm b/code/modules/antagonists/role_preference/role_traitor.dm new file mode 100644 index 00000000000..46d11945a14 --- /dev/null +++ b/code/modules/antagonists/role_preference/role_traitor.dm @@ -0,0 +1,7 @@ +/datum/role_preference/antagonist/traitor + name = "Traitor" + antag_datum = /datum/antagonist/traitor + +/datum/role_preference/midround_living/traitor + name = "Traitor (Sleeper Agent)" + antag_datum = /datum/antagonist/traitor diff --git a/code/modules/antagonists/role_preference/role_wizard.dm b/code/modules/antagonists/role_preference/role_wizard.dm new file mode 100644 index 00000000000..31681493a58 --- /dev/null +++ b/code/modules/antagonists/role_preference/role_wizard.dm @@ -0,0 +1,7 @@ +/datum/role_preference/antagonist/wizard + name = "Wizard" + antag_datum = /datum/antagonist/wizard + +/datum/role_preference/midround_ghost/wizard + name = "Wizard (Midround)" + antag_datum = /datum/antagonist/wizard diff --git a/code/modules/antagonists/roundstart_special/special_antagonist.dm b/code/modules/antagonists/roundstart_special/special_antagonist.dm index 7d39652e9bf..603623e4830 100644 --- a/code/modules/antagonists/roundstart_special/special_antagonist.dm +++ b/code/modules/antagonists/roundstart_special/special_antagonist.dm @@ -24,8 +24,10 @@ var/max_occurrences = 1 var/holidayID = "" //Preferences - var/preference_type = ROLE_TRAITOR - var/special_role_flag = null //Will use antag rep if enabled + var/preference_type = null + /// If we should use antag rep. Do note that having a preference_type enables checking during gamemode execution. + var/use_antag_rep = TRUE + var/banning_key = ROLE_TRAITOR /datum/special_role/proc/setup() if(CONFIG_GET(flag/protect_roles_from_antagonist)) @@ -46,6 +48,7 @@ E.antagonist_datum = attached_antag_datum E.antag_name = role_name E.preference_type = preference_type + E.banning_key = banning_key E.protected_jobs = restricted_jobs E.typepath = /datum/round_event/create_special_antag E.weight = weight @@ -72,8 +75,8 @@ //The datum associated with the role /datum/antagonist/special - name = "Role that should not be accessable in game." - job_rank = ROLE_SYNDICATE + name = "Role that should not be accessible in game." + banning_key = BAN_ROLE_ALL_ANTAGONISTS show_in_antagpanel = FALSE show_name_in_check_antagonists = FALSE prevent_roundtype_conversion = FALSE diff --git a/code/modules/antagonists/santa/santa.dm b/code/modules/antagonists/santa/santa.dm index fb1d304f8bb..563e89059cb 100644 --- a/code/modules/antagonists/santa/santa.dm +++ b/code/modules/antagonists/santa/santa.dm @@ -3,6 +3,7 @@ show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE show_to_ghosts = TRUE + banning_key = UNBANNABLE_ANTAGONIST /datum/antagonist/santa/on_gain() . = ..() diff --git a/code/modules/antagonists/separatist/separatist.dm b/code/modules/antagonists/separatist/separatist.dm index 20a6d84bdec..cc9a84836e6 100644 --- a/code/modules/antagonists/separatist/separatist.dm +++ b/code/modules/antagonists/separatist/separatist.dm @@ -6,6 +6,7 @@ show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE var/datum/team/nation/nation + banning_key = BAN_ROLE_ALL_ANTAGONISTS /datum/antagonist/separatist/create_team(datum/team/nation/new_team) if(!new_team) diff --git a/code/modules/antagonists/slaughter/slaughter_antag.dm b/code/modules/antagonists/slaughter/slaughter_antag.dm index 9f80462f578..557b2ec5c49 100644 --- a/code/modules/antagonists/slaughter/slaughter_antag.dm +++ b/code/modules/antagonists/slaughter/slaughter_antag.dm @@ -3,7 +3,7 @@ show_name_in_check_antagonists = TRUE var/objective_verb = "Kill" var/datum/mind/summoner - job_rank = ROLE_ALIEN + banning_key = ROLE_SLAUGHTER_DEMON show_in_antagpanel = FALSE show_to_ghosts = TRUE diff --git a/code/modules/antagonists/slaughter/slaughterevent.dm b/code/modules/antagonists/slaughter/slaughterevent.dm index 8ad463763ce..9c2fdaf3d13 100644 --- a/code/modules/antagonists/slaughter/slaughterevent.dm +++ b/code/modules/antagonists/slaughter/slaughterevent.dm @@ -14,7 +14,7 @@ role_name = "slaughter demon" /datum/round_event/ghost_role/slaughter/spawn_role() - var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) + var/list/candidates = get_candidates(ROLE_SLAUGHTER_DEMON, null) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/antagonists/space_dragon/space_dragon.dm b/code/modules/antagonists/space_dragon/space_dragon.dm index 5cc275660d3..68ad2195fab 100644 --- a/code/modules/antagonists/space_dragon/space_dragon.dm +++ b/code/modules/antagonists/space_dragon/space_dragon.dm @@ -1,5 +1,6 @@ /datum/antagonist/space_dragon name = "Space Dragon" + banning_key = ROLE_SPACE_DRAGON show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE show_to_ghosts = TRUE diff --git a/code/modules/antagonists/survivalist/survivalist.dm b/code/modules/antagonists/survivalist/survivalist.dm index 4c36b4e1354..819d8c07fd0 100644 --- a/code/modules/antagonists/survivalist/survivalist.dm +++ b/code/modules/antagonists/survivalist/survivalist.dm @@ -2,6 +2,7 @@ name = "Survivalist" show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE + banning_key = ROLE_SURVIVALIST var/greet_message = "" /datum/antagonist/survivalist/proc/forge_objectives() diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 506f2695465..02396b7388b 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -5,7 +5,8 @@ name = "Traitor" roundend_category = "traitors" antagpanel_category = "Traitor" - job_rank = ROLE_TRAITOR + banning_key = ROLE_TRAITOR + required_living_playtime = 4 antag_moodlet = /datum/mood_event/focused hijack_speed = 0.5 //10 seconds per hijack stage by default var/special_role = ROLE_TRAITOR @@ -435,3 +436,8 @@ /datum/antagonist/traitor/is_gamemode_hero() return SSticker.mode.name == "traitor" + +/datum/antagonist/traitor/excommunicate + name = "Excommunicate Traitor" + banning_key = ROLE_EXCOMM + special_role = ROLE_EXCOMM diff --git a/code/modules/antagonists/traitor/equipment/contractor.dm b/code/modules/antagonists/traitor/equipment/contractor.dm index 16b1a0aac8c..b97d5ad70c9 100644 --- a/code/modules/antagonists/traitor/equipment/contractor.dm +++ b/code/modules/antagonists/traitor/equipment/contractor.dm @@ -165,7 +165,7 @@ if (.) to_chat(user, "The uplink vibrates quietly, connecting to nearby agents...") - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the Contractor Support Unit for [user.real_name]?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_CONTRACTOR_SUPPORT) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the Contractor Support Unit for [user.real_name]?", ROLE_CONTRACTOR_SUPPORT_UNIT, null, 10 SECONDS) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) @@ -184,7 +184,7 @@ uniform = /obj/item/clothing/under/chameleon suit = /obj/item/clothing/suit/chameleon back = /obj/item/storage/backpack - belt = /obj/item/pda/chameleon + belt = /obj/item/modular_computer/tablet/pda/chameleon mask = /obj/item/clothing/mask/cigarette/syndicate shoes = /obj/item/clothing/shoes/chameleon/noslip ears = /obj/item/radio/headset/chameleon diff --git a/code/modules/antagonists/traitor/traitor_spawner.dm b/code/modules/antagonists/traitor/traitor_spawner.dm index 7d42fa8fc4f..f3c31485d74 100644 --- a/code/modules/antagonists/traitor/traitor_spawner.dm +++ b/code/modules/antagonists/traitor/traitor_spawner.dm @@ -13,9 +13,9 @@ allowAntagTargets = TRUE latejoin_allowed = TRUE protected_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN) - - special_role_flag = ROLE_TRAITOR - role_name = ROLE_TRAITOR + role_name = "Traitor" + preference_type = /datum/role_preference/antagonist/traitor + use_antag_rep = TRUE var/traitors_possible = 4 //hard limit on traitors if scaling is turned off diff --git a/code/modules/antagonists/valentines/heartbreaker.dm b/code/modules/antagonists/valentines/heartbreaker.dm index 39ffdfa1496..51e80761140 100644 --- a/code/modules/antagonists/valentines/heartbreaker.dm +++ b/code/modules/antagonists/valentines/heartbreaker.dm @@ -3,6 +3,7 @@ roundend_category = "valentines" show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE + banning_key = BAN_ROLE_ALL_ANTAGONISTS /datum/antagonist/heartbreaker/proc/forge_objectives() diff --git a/code/modules/antagonists/valentines/valentine.dm b/code/modules/antagonists/valentines/valentine.dm index df695fadce5..cc1f81ed1bf 100644 --- a/code/modules/antagonists/valentines/valentine.dm +++ b/code/modules/antagonists/valentines/valentine.dm @@ -5,6 +5,7 @@ prevent_roundtype_conversion = FALSE var/datum/mind/date count_against_dynamic_roll_chance = FALSE + banning_key = UNBANNABLE_ANTAGONIST /datum/antagonist/valentine/proc/forge_objectives() var/datum/objective/protect/protect_objective = new /datum/objective/protect diff --git a/code/modules/antagonists/wishgranter/wishgranter.dm b/code/modules/antagonists/wishgranter/wishgranter.dm index 497bf49b00d..960d49bdc46 100644 --- a/code/modules/antagonists/wishgranter/wishgranter.dm +++ b/code/modules/antagonists/wishgranter/wishgranter.dm @@ -3,6 +3,7 @@ show_in_antagpanel = FALSE show_name_in_check_antagonists = TRUE can_elimination_hijack = ELIMINATION_ENABLED + banning_key = BAN_ROLE_ALL_ANTAGONISTS /datum/antagonist/wishgranter/proc/forge_objectives() var/datum/objective/elimination/highlander/elimination_objective = new diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index af5087b5c84..6909768dca2 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -338,7 +338,7 @@ break if(!chosen_ghost) //Failing that, we grab a ghost - var/list/consenting_candidates = pollGhostCandidates("Would you like to play as a Shade?", "Cultist", null, ROLE_CULTIST, 50, POLL_IGNORE_SHADE) + var/list/consenting_candidates = pollGhostCandidates("Would you like to play as a Shade?", ROLE_CULTIST, null, 5 SECONDS, ignore_category = POLL_IGNORE_CULT_SHADE) if(consenting_candidates.len) chosen_ghost = pick(consenting_candidates) if(!T) diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm index b08b67b13c7..46cbfb3c857 100644 --- a/code/modules/antagonists/wizard/wizard.dm +++ b/code/modules/antagonists/wizard/wizard.dm @@ -2,7 +2,8 @@ name = "Space Wizard" roundend_category = "wizards/witches" antagpanel_category = "Wizard" - job_rank = ROLE_WIZARD + banning_key = ROLE_WIZARD + required_living_playtime = 8 antag_moodlet = /datum/mood_event/focused hijack_speed = 0.5 var/strip = TRUE //strip before equipping @@ -182,12 +183,12 @@ /datum/antagonist/wizard/apply_innate_effects(mob/living/mob_override) var/mob/living/M = mob_override || owner.current update_wiz_icons_added(M, wiz_team ? TRUE : FALSE) //Don't bother showing the icon if you're solo wizard - M.faction |= ROLE_WIZARD + M.faction |= FACTION_WIZARD /datum/antagonist/wizard/remove_innate_effects(mob/living/mob_override) var/mob/living/M = mob_override || owner.current update_wiz_icons_removed(M) - M.faction -= ROLE_WIZARD + M.faction -= FACTION_WIZARD /datum/antagonist/wizard/get_admin_commands() diff --git a/code/modules/antagonists/xeno/xeno.dm b/code/modules/antagonists/xeno/xeno.dm index 7845ec7d225..dfabb8366e4 100644 --- a/code/modules/antagonists/xeno/xeno.dm +++ b/code/modules/antagonists/xeno/xeno.dm @@ -11,7 +11,7 @@ /datum/antagonist/xeno name = "Xenomorph" - job_rank = ROLE_ALIEN + banning_key = ROLE_ALIEN show_in_antagpanel = FALSE prevent_roundtype_conversion = FALSE show_to_ghosts = TRUE diff --git a/code/modules/assembly/assets/body_zones.dm b/code/modules/assembly/assets/body_zones.dm new file mode 100644 index 00000000000..c83def4ec69 --- /dev/null +++ b/code/modules/assembly/assets/body_zones.dm @@ -0,0 +1,23 @@ +/// Spritesheet for body zones. Necessary if your tgui uses BodyZoneSelector +// This is a simple sheet instead of a spritesheet because spritesheets don't support +// -ms-interpolation-mode when resized, since you need `transform: scale`. +// Also spritesheets have some weird fudge on the edges of them because of an IE bug I can't track down. +/datum/asset/simple/body_zones + +/datum/asset/simple/body_zones/register() + assets["body_zones.base.png"] = icon('icons/mob/screen_midnight.dmi', "zone_sel") + + add_limb(BODY_ZONE_HEAD) + add_limb(BODY_ZONE_CHEST) + add_limb(BODY_ZONE_L_ARM) + add_limb(BODY_ZONE_R_ARM) + add_limb(BODY_ZONE_L_LEG) + add_limb(BODY_ZONE_R_LEG) + add_limb(BODY_ZONE_PRECISE_EYES) + add_limb(BODY_ZONE_PRECISE_MOUTH) + add_limb(BODY_ZONE_PRECISE_GROIN) + + return ..() + +/datum/asset/simple/body_zones/proc/add_limb(limb) + assets[SANITIZE_FILENAME("body_zones.[limb].png")] = icon('icons/mob/screen_gen.dmi', limb) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index e1a3c8b54f7..7a7620bbd68 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -96,7 +96,7 @@ "stamp-clown" = 'icons/stamp_icons/large_stamp-clown.png', "stamp-deny" = 'icons/stamp_icons/large_stamp-deny.png', "stamp-ok" = 'icons/stamp_icons/large_stamp-ok.png', - "stamp-void" = 'icons/stamp_icons/large_stamp-void.png', //NSV13 + "stamp-void" = 'icons/stamp_icons/large_stamp-void.png', "stamp-hop" = 'icons/stamp_icons/large_stamp-hop.png', "stamp-cmo" = 'icons/stamp_icons/large_stamp-cmo.png', "stamp-ce" = 'icons/stamp_icons/large_stamp-ce.png', @@ -194,6 +194,15 @@ Insert("language-[icon_state]", icon, icon_state=icon_state) ..() +/datum/asset/spritesheet/emoji + name = "emoji" + +/datum/asset/spritesheet/emoji/register() + var/icon/I = icon('icons/emoji.dmi') + I.Scale(48, 48) + InsertAll("", I) + ..() + /datum/asset/simple/lobby assets = list( "playeroptions.css" = 'html/browser/playeroptions.css' diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 869edff37d3..2637c2d9825 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -741,7 +741,7 @@ to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"].") update_icon() return - else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda))// trying to unlock the interface with an ID card + else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/modular_computer/tablet/pda))// trying to unlock the interface with an ID card togglelock(user) return else if(panel_open && is_wire_tool(W)) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 81b45895be8..281f873cc73 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -28,9 +28,11 @@ var/mob_color //Change the mob's color var/assignedrole var/show_flavour = TRUE - var/banType = ROLE_LAVALAND + var/banType var/ghost_usable = TRUE var/use_cooldown = FALSE + /// If this should ignore admins disabling ghost roles (like lavaland roles), since it's actually an antagonist. + var/is_antagonist = FALSE //ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/effect/mob_spawn/attack_ghost(mob/user) @@ -42,6 +44,10 @@ if(!uses) to_chat(user, "This spawner is out of charges!") return + if(!SSticker.HasRoundStarted()) + return + if(!user?.client?.can_take_ghost_spawner(banType, use_cooldown, is_ghost_role = !is_antagonist, is_admin_spawned = flags_1 & ADMIN_SPAWNED_1)) + return if(is_banned_from(user.key, banType)) to_chat(user, "You are jobanned!") return @@ -213,9 +219,9 @@ H.equipOutfit(outfit) if(disable_pda) // We don't want corpse PDAs to show up in the messenger list. - var/obj/item/pda/PDA = locate(/obj/item/pda) in H + var/obj/item/modular_computer/tablet/pda/PDA = locate(/obj/item/modular_computer/tablet/pda) in H if(PDA) - PDA.toff = TRUE + PDA.messenger_invisible = TRUE if(disable_sensors) // Using crew monitors to find corpses while creative makes finding certain ruins too easy. var/obj/item/clothing/under/C = H.w_uniform @@ -266,7 +272,7 @@ var/mob/living/silicon/ai/spawned/M = new(loc) //spawn new AI at landmark as var M M.name = src.name M.real_name = src.name - M.aiPDA.toff = TRUE //turns the AI's PDA messenger off, stopping it showing up on player PDAs + M.modularInterface.messenger_invisible = TRUE //turns the AI's PDA messenger off, stopping it showing up on player PDAs M.death() //call the AI's death proc qdel(src) @@ -347,7 +353,7 @@ /obj/effect/mob_spawn/human/doctor/alive/equip(mob/living/carbon/human/H) ..() // Remove radio and PDA so they wouldn't annoy station crew. - var/list/del_types = list(/obj/item/pda, /obj/item/radio/headset) + var/list/del_types = list(/obj/item/modular_computer/tablet/pda, /obj/item/radio/headset) for(var/del_type in del_types) var/obj/item/I = locate(del_type) in H qdel(I) @@ -402,6 +408,17 @@ id_job = JOB_NAME_BARTENDER use_cooldown = TRUE +/obj/effect/mob_spawn/human/bartender/alive/beach + assignedrole = "Beach Bartender" + banType = ROLE_BEACH_BUM + outfit = /datum/outfit/spacebartender/beach + +/datum/outfit/spacebartender/beach/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + ..() + if(visualsOnly) + return + H.dna.add_mutation(STONER) + /datum/outfit/spacebartender name = "Space Bartender" uniform = /obj/item/clothing/under/rank/civilian/bartender @@ -434,6 +451,7 @@ flavour_text = "Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?" assignedrole = "Beach Bum" use_cooldown = TRUE + banType = ROLE_BEACH_BUM /obj/effect/mob_spawn/human/beach/alive/lifeguard short_desc = "You're a spunky lifeguard!" @@ -512,29 +530,6 @@ back = /obj/item/storage/backpack/security id = /obj/item/card/id/job/security_officer - -/obj/effect/mob_spawn/human/commander/alive - death = FALSE - roundstart = FALSE - mob_name = "\improper Nanotrasen Commander" - name = "sleeper" - icon = 'icons/obj/machines/sleeper.dmi' - icon_state = "sleeper" - short_desc = "You are a Nanotrasen Commander!" - use_cooldown = TRUE - -/obj/effect/mob_spawn/human/nanotrasensoldier/alive - death = FALSE - roundstart = FALSE - mob_name = "Private Security Officer" - name = "sleeper" - icon = 'icons/obj/machines/sleeper.dmi' - icon_state = "sleeper" - faction = "nanotrasenprivate" - short_desc = "You are a Nanotrasen Private Security Officer!" - use_cooldown = TRUE - - /////////////////Spooky Undead////////////////////// /obj/effect/mob_spawn/human/skeleton @@ -549,30 +544,16 @@ icon = 'icons/effects/blood.dmi' icon_state = "remains" short_desc = "By unknown powers, your skeletal remains have been reanimated!" - flavour_text = "Walk this mortal plain and terrorize all living adventurers who dare cross your path." + flavour_text = "Walk this mortal plane and terrorize all living adventurers who dare cross your path." assignedrole = "Skeleton" use_cooldown = TRUE + banType = ROLE_SKELETAL_REMAINS /obj/effect/mob_spawn/human/skeleton/alive/equip(mob/living/carbon/human/H) var/obj/item/implant/exile/implant = new/obj/item/implant/exile(H) implant.implant(H) H.set_species(/datum/species/skeleton) -/obj/effect/mob_spawn/human/zombie - name = "rotting corpse" - mob_name = "zombie" - mob_species = /datum/species/zombie - assignedrole = "Zombie" - -/obj/effect/mob_spawn/human/zombie/alive - death = FALSE - roundstart = FALSE - icon = 'icons/effects/blood.dmi' - icon_state = "remains" - short_desc = "By unknown powers, your rotting remains have been resurrected!" - flavour_text = "Walk this mortal plain and terrorize all living adventurers who dare cross your path." - use_cooldown = TRUE - /obj/effect/mob_spawn/human/abductor name = "abductor" mob_name = "alien" @@ -584,25 +565,6 @@ uniform = /obj/item/clothing/under/color/grey shoes = /obj/item/clothing/shoes/combat - -//For ghost bar. -/obj/effect/mob_spawn/human/alive/space_bar_patron - name = "Bar cryogenics" - mob_name = "Bar patron" - random = TRUE - permanent = TRUE - uses = -1 - outfit = /datum/outfit/spacebartender - assignedrole = "Space Bar Patron" - -//ATTACK HAND IGNORING PARENT RETURN VALUE -/obj/effect/mob_spawn/human/alive/space_bar_patron/attack_hand(mob/user) - var/despawn = alert("Return to cryosleep? (Warning, Your mob will be deleted!)",,"Yes","No") - if(despawn != "Yes" || !loc || !Adjacent(user)) - return - user.visible_message("[user.name] climbs back into cryosleep...") - qdel(user) - /datum/outfit/cryobartender name = "Cryogenic Bartender" uniform = /obj/item/clothing/under/rank/civilian/bartender diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index 4ab94973252..5b9f065c821 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -249,17 +249,17 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) /obj/item/paper/fluff/gateway - info = "Congratulations,

              Your station has been selected to carry out the Gateway Project.

              The equipment will be shipped to you at the start of the next quarter.
              You are to prepare a secure location to house the equipment as outlined in the attached documents.

              --Nanotrasen Bluespace Research" + default_raw_text = "Congratulations,

              Your station has been selected to carry out the Gateway Project.

              The equipment will be shipped to you at the start of the next quarter.
              You are to prepare a secure location to house the equipment as outlined in the attached documents.

              --Nanotrasen Bluespace Research" name = "Confidential Correspondence, Pg 1" /obj/item/paper/fluff/itemnotice - info = "Notice: Over the last few weeks there have been increased reports of surplus, trash items such as wrappers being found in Bluespace Capsule Products. In the event this encampment has any such item, please dispose of them within a wastebin or the provided bonfire, especially if such items include frivolous, frankly embarassing things. We apologise for the inconvienence. Thank you. -- Nanotrasen BS Productions" + default_raw_text = "Notice: Over the last few weeks there have been increased reports of surplus, trash items such as wrappers being found in Bluespace Capsule Products. In the event this encampment has any such item, please dispose of them within a wastebin or the provided bonfire, especially if such items include frivolous, frankly embarassing things. We apologise for the inconvienence. Thank you. -- Nanotrasen BS Productions" name = "Surplus Item Removal Notice" /obj/item/paper/fluff/encampmentwelcome - info = "Welcome! If you are reading this, then you have bought and deployed the new line of bluespace capsule shelters, the mining encampment! This capsule provides standard shelter equipment and more, such as an expanded food vendor, floor safe, restroom, suit storage, spare equipment, and a personal requisitions vendor! The outside has even been lined with basalt tiles, just so no rocks get in the way of the cozy courtyard! We hope you stay safe, and enjoy the amenities! - Nanotrasen BS Productions" + default_raw_text = "Welcome! If you are reading this, then you have bought and deployed the new line of bluespace capsule shelters, the mining encampment! This capsule provides standard shelter equipment and more, such as an expanded food vendor, floor safe, restroom, suit storage, spare equipment, and a personal requisitions vendor! The outside has even been lined with basalt tiles, just so no rocks get in the way of the cozy courtyard! We hope you stay safe, and enjoy the amenities! - Nanotrasen BS Productions" name = "Welcome!" /obj/item/paper/fluff/shuttlenotice - info = "To the acting captain of Nanotrasen Research Station SS13, Due to the nature of your emergency, we sadly had to expedite the process of constructing this shuttle, and as such it does not follow standard sanitary regulations. We appreciate your purchase, and apologise for the inconvienence. Thank you, and have a safe flight! -- Nanotrasen BS Productions Engineering Team" + default_raw_text = "To the acting captain of Nanotrasen Research Station SS13, Due to the nature of your emergency, we sadly had to expedite the process of constructing this shuttle, and as such it does not follow standard sanitary regulations. We appreciate your purchase, and apologise for the inconvienence. Thank you, and have a safe flight! -- Nanotrasen BS Productions Engineering Team" name = "Shuttle Notice" diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index 6b2880c549b..f62053e356d 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -33,7 +33,7 @@ /obj/item/paper/fluff/awaymissions/academy/console_maint name = "Console Maintenance" - info = "We're upgrading to the latest mainframes for our consoles, the shipment should be in before spring break is over!" + default_raw_text = "We're upgrading to the latest mainframes for our consoles, the shipment should be in before spring break is over!" /obj/item/paper/fluff/awaymissions/academy/class/automotive name = "Automotive Repair 101" @@ -46,19 +46,19 @@ /obj/item/paper/fluff/awaymissions/academy/grade/aplus name = "Summoning Midterm Exam" - info = "Grade: A+ Educator's Notes: Excellent form." + default_raw_text = "Grade: A+ Educator's Notes: Excellent form." /obj/item/paper/fluff/awaymissions/academy/grade/bminus name = "Summoning Midterm Exam" - info = "Grade: B- Educator's Notes: Keep applying yourself, you're showing improvement." + default_raw_text = "Grade: B- Educator's Notes: Keep applying yourself, you're showing improvement." /obj/item/paper/fluff/awaymissions/academy/grade/dminus name = "Summoning Midterm Exam" - info = "Grade: D- Educator's Notes: SEE ME AFTER CLASS." + default_raw_text = "Grade: D- Educator's Notes: SEE ME AFTER CLASS." /obj/item/paper/fluff/awaymissions/academy/grade/failure name = "Pyromancy Evaluation" - info = "Current Grade: F. Educator's Notes: No improvement shown despite multiple private lessons. Suggest additional tutelage." + default_raw_text = "Current Grade: F. Educator's Notes: No improvement shown despite multiple private lessons. Suggest additional tutelage." /// The immobile, close pulling singularity seen in the academy away mission /obj/anomaly/singularity/academy @@ -90,7 +90,7 @@ var/mob/living/current_wizard = null var/next_check = 0 var/cooldown = 600 - var/faction = ROLE_WIZARD + var/faction = FACTION_WIZARD var/braindead_check = 0 /obj/structure/academy_wizard_spawner/New() @@ -125,7 +125,7 @@ if(!current_wizard) return - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as Wizard Academy Defender?", ROLE_WIZARD, null, ROLE_WIZARD, 50, current_wizard) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as Wizard Academy Defender?", ROLE_WIZARD, /datum/role_preference/midround_ghost/wizard, 10 SECONDS, current_wizard) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) @@ -133,6 +133,7 @@ current_wizard.ghostize(FALSE) // on the off chance braindead defender gets back in current_wizard.key = C.key else + current_wizard.playable_bantype = ROLE_WIZARD current_wizard.ghostize(FALSE,SENTIENCE_FORCE) /obj/structure/academy_wizard_spawner/proc/summon_wizard() @@ -313,7 +314,7 @@ A.setup_master(user) servant_mind.transfer_to(H) - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, null, ROLE_WIZARD, 50, H) + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, /datum/role_preference/midround_ghost/wizard, 10 SECONDS, H) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Dice Servant") diff --git a/code/modules/awaymissions/mission_code/caves.dm b/code/modules/awaymissions/mission_code/caves.dm index 13b526fddb5..b7ab7c454d9 100644 --- a/code/modules/awaymissions/mission_code/caves.dm +++ b/code/modules/awaymissions/mission_code/caves.dm @@ -31,31 +31,31 @@ //caves papers /obj/item/paper/crumpled/awaymissions/caves/unsafe_area - info = "
              WARNING


              Majority of this area is considered 'unsafe' past this point. Theres an outpost directly south of here where you can get your bearing and travel further down if needed. Traveling in groups is HIGHLY advised, the shit out there can be extremely deadly if you're alone.
              " + default_raw_text = "
              WARNING


              Majority of this area is considered 'unsafe' past this point. Theres an outpost directly south of here where you can get your bearing and travel further down if needed. Traveling in groups is HIGHLY advised, the shit out there can be extremely deadly if you're alone.
              " /obj/item/paper/fluff/awaymissions/caves/omega name = "Subject Omega Notes" - info = "
              Testing Notes


              Subject appears unresponsive to most interactions, refusing to move away from the corners or face any scientists. Subject appears to move between the two back corners every observation. A strange humming can be heard from inside the cell, appears to be originating from the subject itself, further testing is necessary to confirm or deny this.
              " + default_raw_text = "
              Testing Notes


              Subject appears unresponsive to most interactions, refusing to move away from the corners or face any scientists. Subject appears to move between the two back corners every observation. A strange humming can be heard from inside the cell, appears to be originating from the subject itself, further testing is necessary to confirm or deny this.
              " /obj/item/paper/fluff/awaymissions/caves/magma - info = "
              Mining is hell down here, you can feel the heat of the magma no matter how thick the suit is. Conditions are barely manageable as is, restless nights and horrid work conditions. The ore maybe rich down here, but we've already lost a few men to the faults shifting, god knows how much longer till it all just collapses down and consumes everyone with it.
              " + default_raw_text = "
              Mining is hell down here, you can feel the heat of the magma no matter how thick the suit is. Conditions are barely manageable as is, restless nights and horrid work conditions. The ore maybe rich down here, but we've already lost a few men to the faults shifting, god knows how much longer till it all just collapses down and consumes everyone with it.
              " /obj/item/paper/fluff/awaymissions/caves/work_notice name = "work notice" - info = "
              Survival Info For Miners


              The caves are an unforgiving place, the only thing you'll have to traverse is the supplies in your locker and your own wit. Travel in packs when mining and try to shut down the monster dens before they overwhelm you. The job is dangerous but the haul is good, so remember this information and hopefully we'll all go home alive.
              " + default_raw_text = "
              Survival Info For Miners


              The caves are an unforgiving place, the only thing you'll have to traverse is the supplies in your locker and your own wit. Travel in packs when mining and try to shut down the monster dens before they overwhelm you. The job is dangerous but the haul is good, so remember this information and hopefully we'll all go home alive.
              " /obj/item/paper/fluff/awaymissions/caves/shipment_notice name = "shipment notice" - info = "
              We were supposed to get a shipment of these special laser rifles and a couple 'nades to help combat the wildlife down here, but it's been weeks since we last heard from the caravan carrying the shit down here. At this point we can only assume they fell victim to one of the monster nests or the dumbasses managed to trip into the lava. So much for that shipment, I guess.
              " + default_raw_text = "
              We were supposed to get a shipment of these special laser rifles and a couple 'nades to help combat the wildlife down here, but it's been weeks since we last heard from the caravan carrying the shit down here. At this point we can only assume they fell victim to one of the monster nests or the dumbasses managed to trip into the lava. So much for that shipment, I guess.
              " /obj/item/paper/fluff/awaymissions/caves/safety_notice name = "safety notice" - info = "
              Some of the miners have gone to laying some mine traps among the lower levels of the mine to keep the monsters at bay. This probably isn't the smartest idea in a cavern like this but the boys seem to get a chuckle out of every distant blast they hear go off, so I guess it works
              " + default_raw_text = "
              Some of the miners have gone to laying some mine traps among the lower levels of the mine to keep the monsters at bay. This probably isn't the smartest idea in a cavern like this but the boys seem to get a chuckle out of every distant blast they hear go off, so I guess it works
              " /obj/item/paper/fluff/awaymissions/caves/shipment_receipt name = "Shipment Receipt" - info = "
              CARAVAN SERVICES

              Quality service since 2205


              SHIPMENT CONTENTS:


              4 scattershot rifles
              6 grenades
              1 laser rifle
              1 blowup doll" + default_raw_text = "
              CARAVAN SERVICES

              Quality service since 2205


              SHIPMENT CONTENTS:


              4 scattershot rifles
              6 grenades
              1 laser rifle
              1 blowup doll" /obj/item/paper/fluff/awaymissions/caves/mech_notice name = "NOTICE!! paper" - info = "
              NOTICE!!


              Although you may seem indestructible in a mech, remember, THIS SHIT ISN'T LAVA PROOF!! The boys have already had to deal with loosing the last two to salvage because the dumbass thought he could just wade through the lower lakes like it was nothing. The fact he even managed to get back without being fused with what was left of the mech is a miracle in itself. They're built to be resistant against extreme heat, not heat PROOF!


              Robotics Team" + default_raw_text = "
              NOTICE!!


              Although you may seem indestructible in a mech, remember, THIS SHIT ISN'T LAVA PROOF!! The boys have already had to deal with loosing the last two to salvage because the dumbass thought he could just wade through the lower lakes like it was nothing. The fact he even managed to get back without being fused with what was left of the mech is a miracle in itself. They're built to be resistant against extreme heat, not heat PROOF!


              Robotics Team" diff --git a/code/modules/awaymissions/mission_code/centcomAway.dm b/code/modules/awaymissions/mission_code/centcomAway.dm index 77be91e991e..1538846f903 100644 --- a/code/modules/awaymissions/mission_code/centcomAway.dm +++ b/code/modules/awaymissions/mission_code/centcomAway.dm @@ -38,7 +38,7 @@ /obj/item/paper/pamphlet/centcom/visitor_info name = "Visitor Info Pamphlet" - info = " XCC-P5831 Visitor Information
              \ + default_raw_text = " XCC-P5831 Visitor Information
              \ Greetings, visitor, to XCC-P5831! As you may know, this outpost was once \ used as Nanotrasen's CENTRAL COMMAND STATION, organizing and coordinating company \ projects across the vastness of space.
              \ @@ -50,7 +50,7 @@ /obj/item/paper/fluff/awaymissions/centcom/gateway_memo name = "Memo to XCC-P5831 QM" - info = "From: XCC-P5831 Management Office
              \ + default_raw_text = "From: XCC-P5831 Management Office
              \ To: Rolf Ingram, XCC-P5831 Quartermaster
              \ Hey, Rolf, once you pack that gateway into the ferry hangar, make absolutely sure \ to deactivate it! As you may know, SS13 has recently got its network up and running, \ diff --git a/code/modules/awaymissions/mission_code/moonoutpost19.dm b/code/modules/awaymissions/mission_code/moonoutpost19.dm index 0feb096910a..4f13e27001e 100644 --- a/code/modules/awaymissions/mission_code/moonoutpost19.dm +++ b/code/modules/awaymissions/mission_code/moonoutpost19.dm @@ -40,82 +40,82 @@ /obj/item/paper/crumpled/awaymissions/moonoutpost19/hastey_note name = "Hastily Written Note" - info = "19 06 2554

              I fucking knew it. There was a major breach, that idiotic force field failed and the xenomorphs rushed out and took out the scientists. I've managed to make it to my office and closed the blast doors. I can hear them trying to pry open the doors. Probably don't have long. I have no clue what has happened to the rest of the crew, for all I know they've been killed to produce more of the fucks." + default_raw_text = "19 06 2554

              I fucking knew it. There was a major breach, that idiotic force field failed and the xenomorphs rushed out and took out the scientists. I've managed to make it to my office and closed the blast doors. I can hear them trying to pry open the doors. Probably don't have long. I have no clue what has happened to the rest of the crew, for all I know they've been killed to produce more of the fucks." /obj/item/paper/fluff/awaymissions/moonoutpost19/research/larva_social name = "Larva Xenomorph Social Interactions & Capturing Procedure" - info = "Researcher: Dr. Sakuma Sano
              Date: 04/06/2554

              Report:
              As expected, all that is left of the monkeys we sent in earlier is a group of xenomorph larvae. It is quite clear that the facehuggers are not selective in their hosts, and so far the gestation process has been shown to have a 100% success rate.

              The larvae themselves have been behaving very differently from the lone larva we first observed, and despite shying away from humans they are clearly comfortable with others of their kind. Our previous suspicions on larvae have been confirmed with their demonstration of playfulness: they are not nearly as aggressive or violent when young, before molting to adulthood.

              The majority of the play we observed involved a sort of hide-and-seek, and occasionally wrestling by tangling themselves and struggling out of it. While normally we would write these off as instinctual play for honing their skills when they molt, their growth period is so incredibly fast and they are still such adept killers that it would serve no practical purpose. The only explanation for this is perhaps to create bonds and friendships with each other, if that is even possible for such an incredibly hostile race. It may be that they are much more reasonable with each other than other life forms.

              It had become clear that now was the best time to extract a xenomorph for dissecting, as these were all still larvae and the queen was still attached to its ovipositor and would be immobile. With the approval of the research director, we sent in our medical robot that had been dubbed 'Head Surgeon' into the containment pen, dropping the shields for only a fraction of a second to allow it entry. The larvae were cautious, but the curiosity of one had him within grabbing range of our robot. It was brought out and quickly euthanized through lethal injection, courtesy of our mechanical doctor." + default_raw_text = "Researcher: Dr. Sakuma Sano
              Date: 04/06/2554

              Report:
              As expected, all that is left of the monkeys we sent in earlier is a group of xenomorph larvae. It is quite clear that the facehuggers are not selective in their hosts, and so far the gestation process has been shown to have a 100% success rate.

              The larvae themselves have been behaving very differently from the lone larva we first observed, and despite shying away from humans they are clearly comfortable with others of their kind. Our previous suspicions on larvae have been confirmed with their demonstration of playfulness: they are not nearly as aggressive or violent when young, before molting to adulthood.

              The majority of the play we observed involved a sort of hide-and-seek, and occasionally wrestling by tangling themselves and struggling out of it. While normally we would write these off as instinctual play for honing their skills when they molt, their growth period is so incredibly fast and they are still such adept killers that it would serve no practical purpose. The only explanation for this is perhaps to create bonds and friendships with each other, if that is even possible for such an incredibly hostile race. It may be that they are much more reasonable with each other than other life forms.

              It had become clear that now was the best time to extract a xenomorph for dissecting, as these were all still larvae and the queen was still attached to its ovipositor and would be immobile. With the approval of the research director, we sent in our medical robot that had been dubbed 'Head Surgeon' into the containment pen, dropping the shields for only a fraction of a second to allow it entry. The larvae were cautious, but the curiosity of one had him within grabbing range of our robot. It was brought out and quickly euthanized through lethal injection, courtesy of our mechanical doctor." /obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_queen name = "Queen Xenomorph Physiology & Behavior Observation" - info = "Researcher: Dr. Sakuma Sano
              Date: 04/06/2554

              Report:
              I have studied many interesting and diverse life-forms as a xenobiologist ranging from creatures as large as cows, to specimens too small see with the naked eye. This is by far the largest alien I have ever seen. The alien we were previously studying has molted and has become an absolutely enormous creature. Standing at over 15 feet tall and weighing in at likely two tons or more, the xenomorph queen is an absolutely breathtakingly large and cruel monster. Its behavior has changed drastically from when it was a drone, having become far more comfortable with sitting and staring at us, rather than smashing at the windows.

              The queen, physiologically speaking, is fairly similar to the other xenomorphs, with a few key differences. Its enormous size demands large legs, while the back seems to be always hunched forward. The dorsal tubes on the back have changed to several large spikes, and we observed the alien now sports a second pair of smaller arms on its chest. The purpose of these secondary arms is still unknown. Finally, the queen's crown has become incredibly large, with what seems to be a retractable slot to hide its head in. The dome appears to be extremely thick near the front, and will likely be able to resist a lot of trauma. Despite the enormous size it has grown to, it is not that much slower than it used to be.

              After two hours of doing relatively nothing but staring, the queen began to produce an unusually large amount of resin and weeds, quickly shaping up a large nest that it then hid behind. It then proceeded to smash out all the lights, leaving us with very little to see with our cameras. When we looked through the back cameras, we had discovered that it had grown a large ovipositor, and was releasing large eggs onto the ground. This had us all in agreement that this stage of the life cycle was the queen.

              Over the next few hours, the eggs grew to their full sizes, and we provided the subject with new monkey hosts. When they approached the eggs, they opened to release more facehuggers. It seems that we have observed the full cycle of reproduction for this species. We can expect more larvae in the next few hours." + default_raw_text = "Researcher: Dr. Sakuma Sano
              Date: 04/06/2554

              Report:
              I have studied many interesting and diverse life-forms as a xenobiologist ranging from creatures as large as cows, to specimens too small see with the naked eye. This is by far the largest alien I have ever seen. The alien we were previously studying has molted and has become an absolutely enormous creature. Standing at over 15 feet tall and weighing in at likely two tons or more, the xenomorph queen is an absolutely breathtakingly large and cruel monster. Its behavior has changed drastically from when it was a drone, having become far more comfortable with sitting and staring at us, rather than smashing at the windows.

              The queen, physiologically speaking, is fairly similar to the other xenomorphs, with a few key differences. Its enormous size demands large legs, while the back seems to be always hunched forward. The dorsal tubes on the back have changed to several large spikes, and we observed the alien now sports a second pair of smaller arms on its chest. The purpose of these secondary arms is still unknown. Finally, the queen's crown has become incredibly large, with what seems to be a retractable slot to hide its head in. The dome appears to be extremely thick near the front, and will likely be able to resist a lot of trauma. Despite the enormous size it has grown to, it is not that much slower than it used to be.

              After two hours of doing relatively nothing but staring, the queen began to produce an unusually large amount of resin and weeds, quickly shaping up a large nest that it then hid behind. It then proceeded to smash out all the lights, leaving us with very little to see with our cameras. When we looked through the back cameras, we had discovered that it had grown a large ovipositor, and was releasing large eggs onto the ground. This had us all in agreement that this stage of the life cycle was the queen.

              Over the next few hours, the eggs grew to their full sizes, and we provided the subject with new monkey hosts. When they approached the eggs, they opened to release more facehuggers. It seems that we have observed the full cycle of reproduction for this species. We can expect more larvae in the next few hours." /obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_adult name = "Adult Xenomorph Physiology & Behavior Observation" - info = "Researcher: Dr. Sakuma Sano
              Date: 03/06/2554

              Report:
              The other scientists and I can hardly believe our eyes. The snake-like larva has molted into a 7 foot tall insectoid nightmare in just a few hours. It's obvious now as to why such heavy duty containment was needed. It immediately tried to escape however by flinging itself at the window in a flurry of swipes and stabs. It seems its behavior has returned to a state that is very similar to the facehugger, though I doubt with the same intent! Thankfully, our glass and shields have shown to be more than sturdy enough for such a violent creature, and so far, any attempts at the creature escaping have been in vain.

              As for its physiology, the creature has an elongated head with what appears to be have an exoskeleton resembling an external rib-cage on the torso. The alien is also fairly skinny with a lean body. The little amount of meat on the alien appears to be entirely muscle. We assume this makes it deceptively strong, while remaining agile at the same time. One of the most interesting things we have seen is its pharyngeal jaw. It has some what of an inner mouth capable of being fired externally at extremely high speeds. It has already caused many dents in the walls and a few small cracks in the window with it. The alien also has a couple of dorsal tubes on its back, their purpose unknown. Finally, this monster sports a long ridged tail, complete with a large and extremely sharp blade at the tip.

              Normally I would be absolutely terrified of something like this, but I'm putting my trust in Nanotrasen with the containment. After all, they wouldn't build a cell that could fail to contain its subject, would they?" + default_raw_text = "Researcher: Dr. Sakuma Sano
              Date: 03/06/2554

              Report:
              The other scientists and I can hardly believe our eyes. The snake-like larva has molted into a 7 foot tall insectoid nightmare in just a few hours. It's obvious now as to why such heavy duty containment was needed. It immediately tried to escape however by flinging itself at the window in a flurry of swipes and stabs. It seems its behavior has returned to a state that is very similar to the facehugger, though I doubt with the same intent! Thankfully, our glass and shields have shown to be more than sturdy enough for such a violent creature, and so far, any attempts at the creature escaping have been in vain.

              As for its physiology, the creature has an elongated head with what appears to be have an exoskeleton resembling an external rib-cage on the torso. The alien is also fairly skinny with a lean body. The little amount of meat on the alien appears to be entirely muscle. We assume this makes it deceptively strong, while remaining agile at the same time. One of the most interesting things we have seen is its pharyngeal jaw. It has some what of an inner mouth capable of being fired externally at extremely high speeds. It has already caused many dents in the walls and a few small cracks in the window with it. The alien also has a couple of dorsal tubes on its back, their purpose unknown. Finally, this monster sports a long ridged tail, complete with a large and extremely sharp blade at the tip.

              Normally I would be absolutely terrified of something like this, but I'm putting my trust in Nanotrasen with the containment. After all, they wouldn't build a cell that could fail to contain its subject, would they?" /obj/item/paper/fluff/awaymissions/moonoutpost19/research/larva_psych name = "Larva Xenomorph Physiology & Behavior Observation" - info = "Researcher: Dr. Sakuma Sano
              Date: 03/06/2554

              Report:
              When the larva first emerged from the chest of the monkey, it seemed very curious. It would wander around aimlessly for awhile and then sit still. We are unable to determine the gender of the larva, or even determine if it has a gender. After some time had passed, it seemed to lose interest in its surroundings and sat mostly still while occasionally wagging its tail. We decided to throw in a live mouse to see if it would consume it. The larva quickly attacked and ate the mouse and seemed to get larger very suddenly, this suggests that the larvae are capable of metabolizing and directing all the energy towards growth at previously thought impossible speeds. It is a shame that we cannot observe the process more closely, as we do not currently know how dangerous or violent this creature is or will become as it matures fully.

              It is tempting to imagine the possibilities of utilizing such a mechanism. The capability of skipping years of growth time for children, repairing bodily damage in a matter of moments, even its usage in existing cloning technology." + default_raw_text = "Researcher: Dr. Sakuma Sano
              Date: 03/06/2554

              Report:
              When the larva first emerged from the chest of the monkey, it seemed very curious. It would wander around aimlessly for awhile and then sit still. We are unable to determine the gender of the larva, or even determine if it has a gender. After some time had passed, it seemed to lose interest in its surroundings and sat mostly still while occasionally wagging its tail. We decided to throw in a live mouse to see if it would consume it. The larva quickly attacked and ate the mouse and seemed to get larger very suddenly, this suggests that the larvae are capable of metabolizing and directing all the energy towards growth at previously thought impossible speeds. It is a shame that we cannot observe the process more closely, as we do not currently know how dangerous or violent this creature is or will become as it matures fully.

              It is tempting to imagine the possibilities of utilizing such a mechanism. The capability of skipping years of growth time for children, repairing bodily damage in a matter of moments, even its usage in existing cloning technology." /obj/item/paper/fluff/awaymissions/moonoutpost19/research/facehugger name = "'Facehugger' Xenomorph Physiology & Behavior Observation" - info = "Researcher: Dr. Sakuma Sano
              Date: 03/06/2554

              Report:
              The test subject we were provided with truly is alien. It is a small spider-like creature with bony legs leading to a smooth body. It has a long tail connected to it, and it has shown extremely aggressive behavior by flinging its entire body at the glass and shields to no avail. While doing so, we noticed there was a small pink hole in the middle of the body.

              When we sent in a monkey through the crude but effective disposal tube, the alien immediately jumped at its face and latched on. The monkey was quickly suffocated by its constricting tail, unable to pry off the fingers. The monkey at first seemed to be dead, but was observed to be breathing. The recently named alien 'facehugger' fell off dead and curled its legs up like a spider moments after it had finished with the monkey's body.

              While the monkey appeared to be unharmed, we kept it in the cell for a couple more hours until we were horrified to discover it screaming out in pain as a snake-like creature erupted from the monkey's chest! It appears that the 'facehugger' is only the start of this life cycle. The impregnation cycle involving the creatures growing inside the chests of their hosts seems to only be the beginning." + default_raw_text = "Researcher: Dr. Sakuma Sano
              Date: 03/06/2554

              Report:
              The test subject we were provided with truly is alien. It is a small spider-like creature with bony legs leading to a smooth body. It has a long tail connected to it, and it has shown extremely aggressive behavior by flinging its entire body at the glass and shields to no avail. While doing so, we noticed there was a small pink hole in the middle of the body.

              When we sent in a monkey through the crude but effective disposal tube, the alien immediately jumped at its face and latched on. The monkey was quickly suffocated by its constricting tail, unable to pry off the fingers. The monkey at first seemed to be dead, but was observed to be breathing. The recently named alien 'facehugger' fell off dead and curled its legs up like a spider moments after it had finished with the monkey's body.

              While the monkey appeared to be unharmed, we kept it in the cell for a couple more hours until we were horrified to discover it screaming out in pain as a snake-like creature erupted from the monkey's chest! It appears that the 'facehugger' is only the start of this life cycle. The impregnation cycle involving the creatures growing inside the chests of their hosts seems to only be the beginning." /obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_hivemind name = "The Hivemind Hypothesis" - info = "Researcher: Dr. Mark Douglas
              Date: 17/06/2554

              Report:
              Earlier today we have observed a new phenomenon with our subjects. While feeding them our last monkey subject and throwing out the box, the aliens merely looked at us instead of infecting the monkey right away. They looked to be collectively distressed as they would no longer be given hosts, where instead we would move to the next phase of the experiment. When I glanced at the gas tanks and piping leading to their cell, I looked back to see all of them were up against the glass, even the queen! It was as if they all understood what was going to happen, even though we knew only the queen had the cognitive capability to do so.

              The only explanation for this is a form of communication between the aliens, but we have seen no such action take place anywhere in the cell until now. We also know that regular drone and hunter xenomorphs have no personality or instinct to survive by themselves. Perhaps the queen has a direct link to them? A form of a commander or overseer that controls their every move? A hivemind?" + default_raw_text = "Researcher: Dr. Mark Douglas
              Date: 17/06/2554

              Report:
              Earlier today we have observed a new phenomenon with our subjects. While feeding them our last monkey subject and throwing out the box, the aliens merely looked at us instead of infecting the monkey right away. They looked to be collectively distressed as they would no longer be given hosts, where instead we would move to the next phase of the experiment. When I glanced at the gas tanks and piping leading to their cell, I looked back to see all of them were up against the glass, even the queen! It was as if they all understood what was going to happen, even though we knew only the queen had the cognitive capability to do so.

              The only explanation for this is a form of communication between the aliens, but we have seen no such action take place anywhere in the cell until now. We also know that regular drone and hunter xenomorphs have no personality or instinct to survive by themselves. Perhaps the queen has a direct link to them? A form of a commander or overseer that controls their every move? A hivemind?" /obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_behavior name = "\improper A Preliminary Study of Alien Behavior" - info = "Researcher: Dr. Sakuma Sano
              Date: 08/06/2554

              Report:
              The xenomorphs we have come to study here are a remarkable species. They are almost universally aggressive across all castes, showing no remorse or guilt or pause before or after acts of violence. They appear to be a species entirely designed to kill. Oddly enough, even their method of reproduction is a brutal two-for-one method of birthing a new xenomorph and killing its host.

              The lone xenomorph we studied only five days ago showed little sign of intelligence. Only a simple drone that flung itself at the safety glass and shields repeatedly and thankfully without success. Once the drone molted into a queen, it became much more calm and calculating, merely looking at us and waiting while building its nest. As the hive grew in size and in numbers, so too did the intelligence of the common hunter and drone. We are still researching how they can communicate with one another and the relationship between the different castes and the queen. We will continue to update our research as we learn more about the species." + default_raw_text = "Researcher: Dr. Sakuma Sano
              Date: 08/06/2554

              Report:
              The xenomorphs we have come to study here are a remarkable species. They are almost universally aggressive across all castes, showing no remorse or guilt or pause before or after acts of violence. They appear to be a species entirely designed to kill. Oddly enough, even their method of reproduction is a brutal two-for-one method of birthing a new xenomorph and killing its host.

              The lone xenomorph we studied only five days ago showed little sign of intelligence. Only a simple drone that flung itself at the safety glass and shields repeatedly and thankfully without success. Once the drone molted into a queen, it became much more calm and calculating, merely looking at us and waiting while building its nest. As the hive grew in size and in numbers, so too did the intelligence of the common hunter and drone. We are still researching how they can communicate with one another and the relationship between the different castes and the queen. We will continue to update our research as we learn more about the species." /obj/item/paper/fluff/awaymissions/moonoutpost19/research/xeno_castes name = "The Xenomorph 'Castes'" - info = "Researcher: Dr. Mark Douglas
              Date: 06/06/2554

              Report:
              While observing the growing number of aliens in the containment cell, we began to notice subtle differences that were consistently repeating. Like ants, these creatures clearly have different specialized variations that determine their roles in the hive. We have dubbed the three currently observed castes as Hunters, Drones, and Sentinels.

              Hunters have been observed to be by far the most aggressive and agile of the three, constantly running on every surface and frequently swiping at the windows. They are also remarkably good at camouflaging themselves in darkness and on their resin structures, appearing almost invisible to the unwary observer. They are always the first to reach the monkeys we send in leading us to believe that this caste is primarily used for finding and retrieving hosts.

              Drones on the other hand are much more docile and seem more shy by comparison, though not any less aggressive than the other castes. They have been observed to have a much wider head and lack dorsal tubes. They have shown to be less agile and visibly more fragile than any other caste. The drone however has never been observed to interact with the monkeys directly and instead preferring maintenance of the hive by building walls of resin and moving eggs around the nest. As far as we know, we have only ever observed a drone become a queen, and we have no way of knowing if the other castes have that capability.

              Lastly, we have the Sentinels, which appear at first glance to be the guards of the hive. They have so far been only observed to remain near the queen and the eggs, frequently curled up against the walls. We have only observed one instance where they have interacted with a monkey who strayed too closely to the queen, and was pounced and held down immediately until it was applied with a facehugger. Their lack of movement makes it difficult to determine their exact purpose as guards, sentries, or other role." + default_raw_text = "Researcher: Dr. Mark Douglas
              Date: 06/06/2554

              Report:
              While observing the growing number of aliens in the containment cell, we began to notice subtle differences that were consistently repeating. Like ants, these creatures clearly have different specialized variations that determine their roles in the hive. We have dubbed the three currently observed castes as Hunters, Drones, and Sentinels.

              Hunters have been observed to be by far the most aggressive and agile of the three, constantly running on every surface and frequently swiping at the windows. They are also remarkably good at camouflaging themselves in darkness and on their resin structures, appearing almost invisible to the unwary observer. They are always the first to reach the monkeys we send in leading us to believe that this caste is primarily used for finding and retrieving hosts.

              Drones on the other hand are much more docile and seem more shy by comparison, though not any less aggressive than the other castes. They have been observed to have a much wider head and lack dorsal tubes. They have shown to be less agile and visibly more fragile than any other caste. The drone however has never been observed to interact with the monkeys directly and instead preferring maintenance of the hive by building walls of resin and moving eggs around the nest. As far as we know, we have only ever observed a drone become a queen, and we have no way of knowing if the other castes have that capability.

              Lastly, we have the Sentinels, which appear at first glance to be the guards of the hive. They have so far been only observed to remain near the queen and the eggs, frequently curled up against the walls. We have only observed one instance where they have interacted with a monkey who strayed too closely to the queen, and was pounced and held down immediately until it was applied with a facehugger. Their lack of movement makes it difficult to determine their exact purpose as guards, sentries, or other role." /obj/item/paper/fluff/awaymissions/moonoutpost19/research/larva_autopsy name = "Larva Xenomorph Autopsy Report" - info = "Researcher: Dr. Mark Douglas
              Date: 04/06/2554

              Report:
              After an extremely dangerous, time consuming and costly dissection, we have managed to record and identify several of the organs inside of the first stage of the xenomorph cycle: the larva. This procedure took an extensive amount of time because these creatures have incredibly, almost-comically acidic blood that can melt through almost anything in a few moments. We had to use over a dozen scalpels and retractors to complete the autopsy.

              The larva seems to possess far fewer and quite different organs than that of a human. There is a stomach, with no digestive tract, a heart, which seems to lack any blood-oxygen circulation purpose, and an elongated brain, even though its as dumb as any large cat. It also lacks any liver, kidneys, or other basic organs.

              We can't determine the exact nature of how these creatures grow, nor if they gain organs as they become adults. The larger breeds of xenomorph are too dangerous to kill and capture to give us an accurate answer to these questions. All that we can conclude is that being able to function with so little and yet be so deadly means that these creatures are highly evolved and likely to be extremely durable to various hazards that would otherwise be lethal to humans." + default_raw_text = "Researcher: Dr. Mark Douglas
              Date: 04/06/2554

              Report:
              After an extremely dangerous, time consuming and costly dissection, we have managed to record and identify several of the organs inside of the first stage of the xenomorph cycle: the larva. This procedure took an extensive amount of time because these creatures have incredibly, almost-comically acidic blood that can melt through almost anything in a few moments. We had to use over a dozen scalpels and retractors to complete the autopsy.

              The larva seems to possess far fewer and quite different organs than that of a human. There is a stomach, with no digestive tract, a heart, which seems to lack any blood-oxygen circulation purpose, and an elongated brain, even though its as dumb as any large cat. It also lacks any liver, kidneys, or other basic organs.

              We can't determine the exact nature of how these creatures grow, nor if they gain organs as they become adults. The larger breeds of xenomorph are too dangerous to kill and capture to give us an accurate answer to these questions. All that we can conclude is that being able to function with so little and yet be so deadly means that these creatures are highly evolved and likely to be extremely durable to various hazards that would otherwise be lethal to humans." /obj/item/paper/fluff/awaymissions/moonoutpost19/research/evacuation name = "Evacuation Procedure" - info = "

              In The Event of Xenobiology Breach: Evacuate staff, Lock down Xenobiology, Notify on-site superiors and/or Central Command immediately.



              Current Xenobiology Containment Level:Secure RUN

              " + default_raw_text = "

              In The Event of Xenobiology Breach: Evacuate staff, Lock down Xenobiology, Notify on-site superiors and/or Central Command immediately.



              Current Xenobiology Containment Level:Secure RUN

              " /obj/item/paper/fluff/awaymissions/moonoutpost19/log/personal name = "Personal Log" - info = "Log 1:
              We got our promised supply drop today. We were only meant to get it, what, a week ago? This bloody gateway keeps desyncing itself, and that means subsisting off recycled water and carb packs. No clue where the damn thing connects to on its off days, and HQ say we are 'not to touch it if it isn't linking to command.' We dumped off the assload of crates Jim filled, got our boxes of oxygen, food and drink, and closed the portal.

              Log 2:
              Damn thing is acting up again. Three days no contact this time. I thought I heard clanking noises from it yesterday. Jim is going on about the NT base or some shit. We've been over this before - They don't know we're here, that engineer was too drunk to recognize his suit, especially since I had it painted orange. He's starting to get annoying. We're safe.

              Log 3:
              Gateway synced itself up automatically today. I opened it for an instant to spy through it, got a glimpse of the inside of a transport container. Either HQ's redecorating or something, or there's more than two of these things." + default_raw_text = "Log 1:
              We got our promised supply drop today. We were only meant to get it, what, a week ago? This bloody gateway keeps desyncing itself, and that means subsisting off recycled water and carb packs. No clue where the damn thing connects to on its off days, and HQ say we are 'not to touch it if it isn't linking to command.' We dumped off the assload of crates Jim filled, got our boxes of oxygen, food and drink, and closed the portal.

              Log 2:
              Damn thing is acting up again. Three days no contact this time. I thought I heard clanking noises from it yesterday. Jim is going on about the NT base or some shit. We've been over this before - They don't know we're here, that engineer was too drunk to recognize his suit, especially since I had it painted orange. He's starting to get annoying. We're safe.

              Log 3:
              Gateway synced itself up automatically today. I opened it for an instant to spy through it, got a glimpse of the inside of a transport container. Either HQ's redecorating or something, or there's more than two of these things." /obj/item/paper/fluff/awaymissions/moonoutpost19/log/personal_2 name = "Personal Log" - info = "Log 1:
              While mining today I noticed the NT station was finished with its renovations. They placed some huge reinforced tumor on the station, looks so ugly. I wouldn't be surprised if those pigs decided to turn that little astronomy outpost into a prison with that thing, it'd be pretty typical of them.

              Log 2:
              Really dumb of me but I just waved at an engineer in the outpost, and he waved back. I hope to god he was too dumb or drunk to recognize the suit, because if he isn't then we might have to pull out before they come looking for us.

              Log 3:
              That huge reinforced tumor in their science section has been making a lot of noise lately. I've been hearing some banging and scratching from the other side and I'm kind of glad now that they reinforced this thing so much. I'll be sleeping with my gun under my pillow from now on." + default_raw_text = "Log 1:
              While mining today I noticed the NT station was finished with its renovations. They placed some huge reinforced tumor on the station, looks so ugly. I wouldn't be surprised if those pigs decided to turn that little astronomy outpost into a prison with that thing, it'd be pretty typical of them.

              Log 2:
              Really dumb of me but I just waved at an engineer in the outpost, and he waved back. I hope to god he was too dumb or drunk to recognize the suit, because if he isn't then we might have to pull out before they come looking for us.

              Log 3:
              That huge reinforced tumor in their science section has been making a lot of noise lately. I've been hearing some banging and scratching from the other side and I'm kind of glad now that they reinforced this thing so much. I'll be sleeping with my gun under my pillow from now on." /obj/item/paper/fluff/awaymissions/moonoutpost19/engineering name = "Engineering Instructions" - info = "Alright, listen up. If you're reading this, I'm either taking a shit or I've been recalled back to Command. Either way, you'll need to know how to restore power. We've stolen this stuff from Nanotrasen, so all the equipment is jury-rigged. We have generators that work on both plasma and uranium, about 50 sheets should power the outpost for quite a while. If the generators aren't working, which is very likely, take the power cell on the desk and put it into the APC in the hallway. That should get the place running, at least for a little while." + default_raw_text = "Alright, listen up. If you're reading this, I'm either taking a shit or I've been recalled back to Command. Either way, you'll need to know how to restore power. We've stolen this stuff from Nanotrasen, so all the equipment is jury-rigged. We have generators that work on both plasma and uranium, about 50 sheets should power the outpost for quite a while. If the generators aren't working, which is very likely, take the power cell on the desk and put it into the APC in the hallway. That should get the place running, at least for a little while." /obj/item/paper/fluff/awaymissions/moonoutpost19/log/kenneth name = "Personal Log - Kenneth Cunningham" - info = "Entry One - 27/05/2554:
              I just arrived, and already I hate my job. I'm stuck on this shithole of an outpost, trying to avoid these damn eggheads running all over the place preparing for god knows what. There's no crimes to stop, no syndies to kill, and I'm not even allowed to beat the fuckin' assistant senseless! They said I was transferred from Space Station 13 for 'good behavior', but this feels more like a punishment than a reward. All I know is that if I don't get some action soon, I'm going to go insane.

              Entry Two - 03/06/2554:
              Okay, so get this: we got a fuckin' deathsquad coming in today! I thought the day I saw one of them would be the day my employment was 'terminated', if you get my drift. They're escorting some sort of weird alien creature for the eggheads to study. I heard one of the docs telling the chef that this thing killed a whole security force before it was captured. I sure as hell hope that I don't have to fight it.

              Entry Three - 08/06/2554:
              My first real bit of 'action' today, if you could call it that. Crazy Ivan got in a fight with Kuester today about his Booze-O-Mat. Apparently one of the crewmembers had stolen a couple bottles of booze from the machine after Ivan disabled the ID lock. Tell you the truth, I don't blame the thief. Everyone is going a little stir-crazy in here, and the bartender is being damn stingy with the alcohol. Either way, once they started to pick a fight, I had to take them down. It's a damn shame that we don't have a brig, though. I had to lock Ivan in a fuckin' freezer, for god's sake. Let's hope that we can keep our sanity together, at least for a while.

              Entry Four - 10/06/2554:
              Jesus fucking Christ riding on a motorbike. These things the scientists are studying are terrifying! Fucking great huge purple bug things as tall as the ceiling, with blades for arms and drooling at the mouth. I don't think my taser will do jack shit against these damn things, but the eggheads say that they're safely contained. If they do, I have a feeling that it's only a matter of time before we're all screwed. These bastards look like walking death.

              Entry Five - 18/06/2554:
              Finally caught who stole the booze from Kuester. It was that fuckin' loser assistant Steve! He was in the dorms, chugging his worries away. I took one of the bottles back to the barkeep, but no one has to know about this second one. I think I'm gonna enjoy this while watching tomorrow's Thunderdome match.

              Entry Six - 19/06/2554:
              Oh, great. The chef is still sleeping, so we get Ivan's gruel for breakfast today. I overheard Sano and Douglas saying something about the aliens being restless, so we might get some action today. As long as it happens after the big game, I'm fine with it. I still got one beer to drink before I'm ready to die." + default_raw_text = "Entry One - 27/05/2554:
              I just arrived, and already I hate my job. I'm stuck on this shithole of an outpost, trying to avoid these damn eggheads running all over the place preparing for god knows what. There's no crimes to stop, no syndies to kill, and I'm not even allowed to beat the fuckin' assistant senseless! They said I was transferred from Space Station 13 for 'good behavior', but this feels more like a punishment than a reward. All I know is that if I don't get some action soon, I'm going to go insane.

              Entry Two - 03/06/2554:
              Okay, so get this: we got a fuckin' deathsquad coming in today! I thought the day I saw one of them would be the day my employment was 'terminated', if you get my drift. They're escorting some sort of weird alien creature for the eggheads to study. I heard one of the docs telling the chef that this thing killed a whole security force before it was captured. I sure as hell hope that I don't have to fight it.

              Entry Three - 08/06/2554:
              My first real bit of 'action' today, if you could call it that. Crazy Ivan got in a fight with Kuester today about his Booze-O-Mat. Apparently one of the crewmembers had stolen a couple bottles of booze from the machine after Ivan disabled the ID lock. Tell you the truth, I don't blame the thief. Everyone is going a little stir-crazy in here, and the bartender is being damn stingy with the alcohol. Either way, once they started to pick a fight, I had to take them down. It's a damn shame that we don't have a brig, though. I had to lock Ivan in a fuckin' freezer, for god's sake. Let's hope that we can keep our sanity together, at least for a while.

              Entry Four - 10/06/2554:
              Jesus fucking Christ riding on a motorbike. These things the scientists are studying are terrifying! Fucking great huge purple bug things as tall as the ceiling, with blades for arms and drooling at the mouth. I don't think my taser will do jack shit against these damn things, but the eggheads say that they're safely contained. If they do, I have a feeling that it's only a matter of time before we're all screwed. These bastards look like walking death.

              Entry Five - 18/06/2554:
              Finally caught who stole the booze from Kuester. It was that fuckin' loser assistant Steve! He was in the dorms, chugging his worries away. I took one of the bottles back to the barkeep, but no one has to know about this second one. I think I'm gonna enjoy this while watching tomorrow's Thunderdome match.

              Entry Six - 19/06/2554:
              Oh, great. The chef is still sleeping, so we get Ivan's gruel for breakfast today. I overheard Sano and Douglas saying something about the aliens being restless, so we might get some action today. As long as it happens after the big game, I'm fine with it. I still got one beer to drink before I'm ready to die." /obj/item/paper/fluff/awaymissions/moonoutpost19/log/ivan name = "Personal Log - Ivan Volodin" - info = "Ivan Volodin Stories:

              Entry Won - 28/05/2554:
              Hello. I am Crazy Ivan. Boss say I must write. I do good job fixing outpost. Is very good job. Much better than mines. Many nice people. I cause no trouble.

              Entry Too - 05/06/2554:
              I am finding problem with Booze-O-Mat. Is not problem. I solve very easy. Use yellow tool to make purple light go off. I am good engineer! Bartender will be very happy.

              Entry Tree - 08/06/2554:
              Bartender is not happy. Security man is not happy. Cannot feel legs, is very cold in freezer. Is not good. Table is jammed into door, have no tools. Is very not good. But, on bright side, found meat! Shall chew to keep spirits up.

              Entry Fore - 12/06/2554:
              Big nasty purple bug looked at me today. Make nervous. Blue wall wire can be broken, then bad thing happens. Very very bad thing. Man in orange spacesuit wave at me today too. He seem nice. Wonder who was?

              Entry Fiv - 15/06/2554:
              I eat cornflakes today. Is good day. Sun shine for a while. Was nice. I also take ride on disposals chute. Was fun, but tiny. Get clog out of pipes, was vodka bottle. Is empty. This make many sads.

              Entry Sex: 19/06/2554:
              Purple bugs jumpy today. When waved, get hiss. Maybe very bad. Maybe just ill. Do not know. Is science problem, is not engineer problem. I eat sandwich. Is glorious job. Wish to never end." + default_raw_text = "Ivan Volodin Stories:

              Entry Won - 28/05/2554:
              Hello. I am Crazy Ivan. Boss say I must write. I do good job fixing outpost. Is very good job. Much better than mines. Many nice people. I cause no trouble.

              Entry Too - 05/06/2554:
              I am finding problem with Booze-O-Mat. Is not problem. I solve very easy. Use yellow tool to make purple light go off. I am good engineer! Bartender will be very happy.

              Entry Tree - 08/06/2554:
              Bartender is not happy. Security man is not happy. Cannot feel legs, is very cold in freezer. Is not good. Table is jammed into door, have no tools. Is very not good. But, on bright side, found meat! Shall chew to keep spirits up.

              Entry Fore - 12/06/2554:
              Big nasty purple bug looked at me today. Make nervous. Blue wall wire can be broken, then bad thing happens. Very very bad thing. Man in orange spacesuit wave at me today too. He seem nice. Wonder who was?

              Entry Fiv - 15/06/2554:
              I eat cornflakes today. Is good day. Sun shine for a while. Was nice. I also take ride on disposals chute. Was fun, but tiny. Get clog out of pipes, was vodka bottle. Is empty. This make many sads.

              Entry Sex: 19/06/2554:
              Purple bugs jumpy today. When waved, get hiss. Maybe very bad. Maybe just ill. Do not know. Is science problem, is not engineer problem. I eat sandwich. Is glorious job. Wish to never end." /obj/item/paper/fluff/awaymissions/moonoutpost19/log/gerald name = "Personal Log - Gerald Rosswell" - info = "Personal Log for Research Director Gerald Rosswell

              Entry One - 17/05/2554:
              You know, I can't believe I took this position so suddenly. I saw that corporate needed a research director for one of it's outposts and thought it would be a cakewalk, there isn't going to be a lot of research to be done on a tiny outpost. Mainly just running scans on the gas giant we are orbiting or some basic RnD. However, they conveniently forgot to tell me that me and my science staff would have to pull double duty as medical staff and that there is no one higher up on the chain of command here, so I get to pull triple duty as acting captain as well! This shit is probably allowed in some 3 point fine print buried underneath the literally thousands of pages of contracts. Well, at least the research will be easy work.

              Entry Two - 25/05/2554:
              Well, we all expected it at the outpost, CentCom has decided to completely change what research we are doing. They've decided that we should be research the species known as 'xenomporphs'. They announced this change 4 days ago and along with it, sadly, the termination of our current science staff barring me. Not to mention the constant noise made by the construction detail they sent to staple on an xenobiology lab ensuring no one has been able to sleep decently ever since they announced the shift. To make matters worse our current security guard actually died of a heart attack today. Just goes to show that 75 year old men shouldn't be security guards. Still can't believe that they decided to do this major change less than a month after the outpost was established.

              Entry Three - 27/05/2554:
              The new security guard arrived today. Apparently transferred here from the research station that also is orbiting the gas giant. He seems to be rather angry about his transfer. Considering the rumors I've heard about the research station he's probably caught off guard by the fact that Steve hasn't tried to force an IED down his throat.

              Entry Four - 06/06/2554:
              My requests for additional security and containment measures for the 'xenomorph' has been denied. Does Central Command not notice how dangerous these creatures are? The only thing keeping them in is a force field, a minor problem with the power grid and the entire hive is loose. What would stop them then, the lone security guard with a dinky little taser? Kenneth can barely handle a short-tempered engineer. We are under equipped and under staffed, we are inevitably going to be destroyed unless we get the equipment and staff we need.

              Entry Five - 10/06/2554:
              Cunningham got a good look at the xenomorph in containment. He was frightened for the rest of the day, rather amusing if it wasn't for the fact that we are all trapped on this scrap heap with naught but a force field keeping those xenomorphs in.

              Entry Six - 17/06/2554:
              The reactions from the specimens today has shown that they possess strange mental properties. Mark hypothesizes that they possibly have a sort of hive mind, while nothing is certain this would explain how xenomorphs seem to have vastly increased intellect when a 'queen' is present. Of course, to test this hypothesis would require many complicated procedures which we will not be able to undertake. But we do not know the full extend of the xenomorph mind, it may or may not be able to find a way to circumvent our containment system. I will resend my request for additional security measures along with this new found information." + default_raw_text = "Personal Log for Research Director Gerald Rosswell

              Entry One - 17/05/2554:
              You know, I can't believe I took this position so suddenly. I saw that corporate needed a research director for one of it's outposts and thought it would be a cakewalk, there isn't going to be a lot of research to be done on a tiny outpost. Mainly just running scans on the gas giant we are orbiting or some basic RnD. However, they conveniently forgot to tell me that me and my science staff would have to pull double duty as medical staff and that there is no one higher up on the chain of command here, so I get to pull triple duty as acting captain as well! This shit is probably allowed in some 3 point fine print buried underneath the literally thousands of pages of contracts. Well, at least the research will be easy work.

              Entry Two - 25/05/2554:
              Well, we all expected it at the outpost, CentCom has decided to completely change what research we are doing. They've decided that we should be research the species known as 'xenomporphs'. They announced this change 4 days ago and along with it, sadly, the termination of our current science staff barring me. Not to mention the constant noise made by the construction detail they sent to staple on an xenobiology lab ensuring no one has been able to sleep decently ever since they announced the shift. To make matters worse our current security guard actually died of a heart attack today. Just goes to show that 75 year old men shouldn't be security guards. Still can't believe that they decided to do this major change less than a month after the outpost was established.

              Entry Three - 27/05/2554:
              The new security guard arrived today. Apparently transferred here from the research station that also is orbiting the gas giant. He seems to be rather angry about his transfer. Considering the rumors I've heard about the research station he's probably caught off guard by the fact that Steve hasn't tried to force an IED down his throat.

              Entry Four - 06/06/2554:
              My requests for additional security and containment measures for the 'xenomorph' has been denied. Does Central Command not notice how dangerous these creatures are? The only thing keeping them in is a force field, a minor problem with the power grid and the entire hive is loose. What would stop them then, the lone security guard with a dinky little taser? Kenneth can barely handle a short-tempered engineer. We are under equipped and under staffed, we are inevitably going to be destroyed unless we get the equipment and staff we need.

              Entry Five - 10/06/2554:
              Cunningham got a good look at the xenomorph in containment. He was frightened for the rest of the day, rather amusing if it wasn't for the fact that we are all trapped on this scrap heap with naught but a force field keeping those xenomorphs in.

              Entry Six - 17/06/2554:
              The reactions from the specimens today has shown that they possess strange mental properties. Mark hypothesizes that they possibly have a sort of hive mind, while nothing is certain this would explain how xenomorphs seem to have vastly increased intellect when a 'queen' is present. Of course, to test this hypothesis would require many complicated procedures which we will not be able to undertake. But we do not know the full extend of the xenomorph mind, it may or may not be able to find a way to circumvent our containment system. I will resend my request for additional security measures along with this new found information." /obj/item/paper/fluff/awaymissions/moonoutpost19/food_specials name = "Specials This Week" - info = "

              I Can't Believe It's Not Pasta: Half off on Wednesdays



              Burger night every Friday 6PM-10PM, free drinks with purchase of meal!



              Premiering Tonight: The comedy stylings of Shoe Snatching Willy! 11AM-7PM

              " + default_raw_text = "

              I Can't Believe It's Not Pasta: Half off on Wednesdays



              Burger night every Friday 6PM-10PM, free drinks with purchase of meal!



              Premiering Tonight: The comedy stylings of Shoe Snatching Willy! 11AM-7PM

              " /obj/item/paper/fluff/awaymissions/moonoutpost19/welcome name = "Welcome Notice" - info = "

              Welcome to Moon Outpost 19! Property of Nanotrasen Inc.




              Staff Roster:
              -Dr. Gerald Rosswell: Research Director & Acting Captain
              -Dr. Sakuma Sano: Xenobiologist
              -Dr. Mark Douglas: Xenobiologist
              -Kenneth Cunningham: Security Officer-Ivan Volodin: Engineer
              -Mathias Kuester: Bartender
              -Sven Edling: Chef
              -Steve: Assistant

              Please enjoy your stay, and report any abnormalities to an officer." + default_raw_text = "

              Welcome to Moon Outpost 19! Property of Nanotrasen Inc.




              Staff Roster:
              -Dr. Gerald Rosswell: Research Director & Acting Captain
              -Dr. Sakuma Sano: Xenobiologist
              -Dr. Mark Douglas: Xenobiologist
              -Kenneth Cunningham: Security Officer-Ivan Volodin: Engineer
              -Mathias Kuester: Bartender
              -Sven Edling: Chef
              -Steve: Assistant

              Please enjoy your stay, and report any abnormalities to an officer." /obj/item/paper/fluff/awaymissions/moonoutpost19/goodbye_note name = "Note" - info = "Bugs break out. I run to here and lock door. I hear door next to me break open and screams. All nice people here dead now. I no want to be eaten, and bottle always said to be coward way out, but person who say that is stupid. Mira, there is no escape for me, tell Alexis and Elena that father will never come home, and that I love you all." + default_raw_text = "Bugs break out. I run to here and lock door. I hear door next to me break open and screams. All nice people here dead now. I no want to be eaten, and bottle always said to be coward way out, but person who say that is stupid. Mira, there is no escape for me, tell Alexis and Elena that father will never come home, and that I love you all." diff --git a/code/modules/awaymissions/mission_code/research.dm b/code/modules/awaymissions/mission_code/research.dm index 666ee7909e1..b3e4ff8b863 100644 --- a/code/modules/awaymissions/mission_code/research.dm +++ b/code/modules/awaymissions/mission_code/research.dm @@ -65,5 +65,5 @@ //research papers /obj/item/paper/crumpled/awaymissions/research/sensitive_info - info = "Theres a lot of sensitive info on these disks, try and keep them secure! If these backup copies get into the wrong hands, god knows what they could do with the genetic research on these disk.." + default_raw_text = "Theres a lot of sensitive info on these disks, try and keep them secure! If these backup copies get into the wrong hands, god knows what they could do with the genetic research on these disk.." diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 9bb91549c30..1eabeb89289 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -247,83 +247,83 @@ /obj/item/paper/crumpled/ruins/snowdin/foreshadowing name = "scribbled note" - info = {"Something's gone VERY wrong here. Jouslen has been mumbling about some weird shit in his cabin during the night and he seems always tired when we're working. I tried to confront him about it and he blew up on me, + default_raw_text = {"Something's gone VERY wrong here. Jouslen has been mumbling about some weird shit in his cabin during the night and he seems always tired when we're working. I tried to confront him about it and he blew up on me, telling me to mind my own business. I reported him to the officer, said he'd look into it. We only got another 2 months here before we're pulled for another assignment, so this shit can't go any quicker..."} /obj/item/paper/crumpled/ruins/snowdin/misc1 name = "Mission Prologue" - info = {"Holy shit, what a rush! Those Nanotrasen bastards didn't even know what hit 'em! All five of us dropped in right on the captain, didn't even have time to yell! We were in and out with that disk in mere minutes! + default_raw_text = {"Holy shit, what a rush! Those Nanotrasen bastards didn't even know what hit 'em! All five of us dropped in right on the captain, didn't even have time to yell! We were in and out with that disk in mere minutes! Crew didn't even know what was happening till the delta alert went down and by then we were already gone. We got a case to drink on the way home to celebrate, fuckin' job well done!"} /obj/item/paper/crumpled/ruins/snowdin/dontdeadopeninside name = "scribbled note" - info = {"If you're reading this: GET OUT! The mining go on here has unearthed something that was once-trapped by the layers of ice on this hell-hole. The overseer and Jouslen have gone missing. The officer is + default_raw_text = {"If you're reading this: GET OUT! The mining go on here has unearthed something that was once-trapped by the layers of ice on this hell-hole. The overseer and Jouslen have gone missing. The officer is keeping the rest of us on lockdown and I swear to god I keep hearing strange noises outside the walls at night. The gateway link has gone dead and without a supply of resources from Central, we're left for dead here. We haven't heard anything back from the mining squad either, so I can only assume whatever the fuck they unearthed got them first before coming for us. I don't want to die here..."} /obj/item/paper/fluff/awaymissions/snowdin/saw_usage name = "SAW Usage" - info = "YOU SEEN IVAN, WHEN YOU HOLD SAAW LIKE PEESTOL, YOU STRONGER THAN RECOIL FOR FEAR OF HITTING FACE!" + default_raw_text = "YOU SEEN IVAN, WHEN YOU HOLD SAAW LIKE PEESTOL, YOU STRONGER THAN RECOIL FOR FEAR OF HITTING FACE!" /obj/item/paper/fluff/awaymissions/snowdin/research_feed name = "Research Feed" - info = {"A page full of graphs and other detailed information on the seismic activity of the surrounding area."} + default_raw_text = {"A page full of graphs and other detailed information on the seismic activity of the surrounding area."} //profile of each of the old crewmembers for the outpost /obj/item/paper/fluff/awaymissions/snowdin/profile/overseer name = "Personnel Record AOP#01" - info = {"
              Personnel Log


              Name:Caleb Reed
              Age:38
              Gender:Male
              On-Site Profession:Outpost Overseer

              Information

              Caleb Reed lead several expeditions + default_raw_text = {"
              Personnel Log


              Name:Caleb Reed
              Age:38
              Gender:Male
              On-Site Profession:Outpost Overseer

              Information

              Caleb Reed lead several expeditions among uncharted planets in search of plasma for Nanotrasen, scouring from hot savanas to freezing arctics. Track record is fairly clean with only incidient including the loss of two researchers during the expedition of _______, where mis-used of explosive ordinance for tunneling causes a cave-in."} /obj/item/paper/fluff/awaymissions/snowdin/profile/sec1 name = "Personnel Record AOP#02" - info = {"
              Personnel Log


              Name:James Reed
              Age:43
              Gender:Male
              On-Site Profession:Outpost Security

              Information

              James Reed has been a part + default_raw_text = {"
              Personnel Log


              Name:James Reed
              Age:43
              Gender:Male
              On-Site Profession:Outpost Security

              Information

              James Reed has been a part of Nanotrasen's security force for over 20 years, first joining in 22XX. A clean record and unwavering loyalty to the corperation through numerous deployments to various sites makes him a valuable asset to Natotrasen when it comes to keeping the peace while prioritizing Nanotrasen privacy matters. "} /obj/item/paper/fluff/awaymissions/snowdin/profile/hydro1 name = "Personnel Record AOP#03" - info = {"
              Personnel Log


              Name:Katherine Esterdeen
              Age:27
              Gender:Female
              On-Site Profession:Outpost Botanist

              Information

              Katherine Esterdeen is a recent + default_raw_text = {"
              Personnel Log


              Name:Katherine Esterdeen
              Age:27
              Gender:Female
              On-Site Profession:Outpost Botanist

              Information

              Katherine Esterdeen is a recent graduate with a major in Botany and a PH.D in Ecology. Having a clean record and eager to work, Esterdeen seems to be the right fit for maintaining plants in the middle of nowhere."} /obj/item/paper/fluff/awaymissions/snowdin/profile/engi1 name = "Personnel Record AOP#04" - info = {"
              Personnel Log


              Name:Rachel Migro
              Age:35
              Gender:Female
              On-Site Profession:Outpost Engineer

              Information

              Recently certified to be a full-time Journeyman, Rachel has + default_raw_text = {"
              Personnel Log


              Name:Rachel Migro
              Age:35
              Gender:Female
              On-Site Profession:Outpost Engineer

              Information

              Recently certified to be a full-time Journeyman, Rachel has been assigned various construction projects in the past 5 years. Competent and has no past infractions, should be of little concern."} /obj/item/paper/fluff/awaymissions/snowdin/profile/research1 name = "Personnel Record AOP#05" - info = {"
              Personnel Log


              Name:Jacob Ullman
              Age:27
              Gender:Male
              On-Site Profession:Outpost Researcher

              Information

              "} + default_raw_text = {"
              Personnel Log


              Name:Jacob Ullman
              Age:27
              Gender:Male
              On-Site Profession:Outpost Researcher

              Information

              "} /obj/item/paper/fluff/awaymissions/snowdin/profile/research2 name = "Personnel Record AOP#06" - info = {"
              Personnel Log


              Name:Elizabeth Queef
              Age:28
              Gender:Female
              On-Site Profession:Outpost Researcher

              Information

              "} + default_raw_text = {"
              Personnel Log


              Name:Elizabeth Queef
              Age:28
              Gender:Female
              On-Site Profession:Outpost Researcher

              Information

              "} /obj/item/paper/fluff/awaymissions/snowdin/profile/research3 name = "Personnel Record AOP#07" - info = {"
              Personnel Log


              Name:Jouslen McGee
              Age:38
              Gender:Male
              On-Site Profession:Outpost Researcher

              Information

              "} + default_raw_text = {"
              Personnel Log


              Name:Jouslen McGee
              Age:38
              Gender:Male
              On-Site Profession:Outpost Researcher

              Information

              "} /obj/item/paper/fluff/awaymissions/snowdin/secnotice name = "Security Notice" - info = {"YOu have been assigned to this Arctic Post with intention of protecting Nanotrasen assets and ensuring vital information is kept secure while the stationed crew obeys protocol. The picked + default_raw_text = {"YOu have been assigned to this Arctic Post with intention of protecting Nanotrasen assets and ensuring vital information is kept secure while the stationed crew obeys protocol. The picked staff for this post have been pre-screened with no prior incidients on record, but incase of an issue you have been given a single holding cell and instructions to contact Central to terminate the offending crewmember."} /obj/item/paper/fluff/awaymissions/snowdin/mining name = "Assignment Notice" - info = {"This cold-ass planet is the new-age equivalent of striking gold. Huge deposits of plasma and literal streams of plasma run through the caverns under all this ice and we're here to mine it all.\ + default_raw_text = {"This cold-ass planet is the new-age equivalent of striking gold. Huge deposits of plasma and literal streams of plasma run through the caverns under all this ice and we're here to mine it all.\ Nanotrasen pays by the pound, so get minin' boys!"} /obj/item/paper/crumpled/ruins/snowdin/lootstructures name = "scribbled note" - info = {"There's some ruins scattered along the cavern, their walls seem to be made of some sort of super-condensed mixture of ice and snow. We've already barricaded up the ones we've found so far, + default_raw_text = {"There's some ruins scattered along the cavern, their walls seem to be made of some sort of super-condensed mixture of ice and snow. We've already barricaded up the ones we've found so far, since we keep hearing some strange noises from inside. Besides, what sort of fool would wrecklessly run into ancient ruins full of monsters for some old gear, anyway?"} /obj/item/paper/crumpled/ruins/snowdin/shovel name = "shoveling duties" - info = {"Snow piles up bad here all-year round, even worse during the winter months. Keeping a constant rotation of shoveling that shit out of the way of the airlocks and keeping the paths decently clear + default_raw_text = {"Snow piles up bad here all-year round, even worse during the winter months. Keeping a constant rotation of shoveling that shit out of the way of the airlocks and keeping the paths decently clear is a good step towards not getting stuck walking through knee-deep snow."} //holo disk recording//-- @@ -577,7 +577,7 @@ icon_state = "sleeper" roundstart = FALSE death = FALSE - faction = ROLE_SYNDICATE + faction = FACTION_SYNDICATE outfit = /datum/outfit/snowsyndie short_desc = "You are a syndicate operative recently awoken from cryostasis in an underground outpost." flavour_text = "You are a syndicate operative recently awoken from cryostasis in an underground outpost. Monitor Nanotrasen communications and record information. All intruders should be \ diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index 3334e423767..abe0d585ae7 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -86,30 +86,30 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]") name = "smudged paper" /obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_prison/Initialize(mapload) - . = ..() - info = "The ink is smudged, you can only make out a couple numbers: '[GLOB.sc_safecode1]**[GLOB.sc_safecode4]*'" + default_raw_text = "The ink is smudged, you can only make out a couple numbers: '[GLOB.sc_safecode1]**[GLOB.sc_safecode4]*'" + return ..() /obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_hydro name = "shredded paper" /obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_hydro/Initialize(mapload) - . = ..() - info = "Although the paper is shredded, you can clearly see the number: '[GLOB.sc_safecode2]'" + default_raw_text = "Although the paper is shredded, you can clearly see the number: '[GLOB.sc_safecode2]'" + return ..() /obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_caf name = "blood-soaked paper" //This does not have to be in New() because it is a constant. There are no variables in it i.e. [sc_safcode] - info = "This paper is soaked in blood, it is impossible to read any text." + default_raw_text = "This paper is soaked in blood, it is impossible to read any text." /obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_bible name = "hidden paper" /obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_bible/Initialize(mapload) - . = ..() - info = {"It would appear that the pen hidden with the paper had leaked ink over the paper. + default_raw_text = {"It would appear that the pen hidden with the paper had leaked ink over the paper. However you can make out the last three digits:'[GLOB.sc_safecode3][GLOB.sc_safecode4][GLOB.sc_safecode5]' "} + return ..() /obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_shuttle - info = {"Target: Research-station Epsilon
              + default_raw_text = {"Target: Research-station Epsilon
              Objective: Prototype weaponry. The captain likely keeps them locked in her safe.

              Our on-board spy has learned the code and has hidden away a few copies of the code around the station. Unfortunately he has been captured by security diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index 13bc3770465..ad94479ffe3 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -34,24 +34,24 @@ ////////// wildwest papers /obj/item/paper/fluff/awaymissions/wildwest/grinder - info = "meat grinder requires sacri" + default_raw_text = "meat grinder requires sacri" /obj/item/paper/fluff/awaymissions/wildwest/journal/page1 name = "Planer Saul's Journal: Page 1" - info = "We've discovered something floating in space. We can't really tell how old it is, but it is scraped and bent to hell. There object is the size of about a room with double doors that we have yet to break into. It is a lot sturdier than we could have imagined. We have decided to call it 'The Vault' " + default_raw_text = "We've discovered something floating in space. We can't really tell how old it is, but it is scraped and bent to hell. There object is the size of about a room with double doors that we have yet to break into. It is a lot sturdier than we could have imagined. We have decided to call it 'The Vault' " /obj/item/paper/fluff/awaymissions/wildwest/journal/page4 name = "Planer Saul's Journal: Page 4" - info = " The miners in the town have become sick and almost all production has stopped. They, in a fit of delusion, tossed all of their mining equipment into the furnaces. They all claimed the same thing. A voice beckoning them to lay down their arms. Stupid miners." + default_raw_text = " The miners in the town have become sick and almost all production has stopped. They, in a fit of delusion, tossed all of their mining equipment into the furnaces. They all claimed the same thing. A voice beckoning them to lay down their arms. Stupid miners." /obj/item/paper/fluff/awaymissions/wildwest/journal/page7 name = "Planer Sauls' Journal: Page 7" - info = "The Vault...it just keeps growing and growing. I went on my daily walk through the garden and now it's just right outside the mansion... a few days ago it was only barely visible. But whatever is inside...it's calling to me." + default_raw_text = "The Vault...it just keeps growing and growing. I went on my daily walk through the garden and now it's just right outside the mansion... a few days ago it was only barely visible. But whatever is inside...it's calling to me." /obj/item/paper/fluff/awaymissions/wildwest/journal/page8 name = "Planer Saul's Journal: Page 8" - info = "The syndicate have invaded. Their ships appeared out of nowhere and now they likely intend to kill us all and take everything. On the off-chance that the Vault may grant us sanctuary, many of us have decided to force our way inside and bolt the door, taking as many provisions with us as we can carry. In case you find this, send for help immediately and open the Vault. Find us inside." + default_raw_text = "The syndicate have invaded. Their ships appeared out of nowhere and now they likely intend to kill us all and take everything. On the off-chance that the Vault may grant us sanctuary, many of us have decided to force our way inside and bolt the door, taking as many provisions with us as we can carry. In case you find this, send for help immediately and open the Vault. Find us inside." /* diff --git a/code/modules/awaymissions/pamphlet.dm b/code/modules/awaymissions/pamphlet.dm index 2700660f07c..b9866d75f4e 100644 --- a/code/modules/awaymissions/pamphlet.dm +++ b/code/modules/awaymissions/pamphlet.dm @@ -7,10 +7,10 @@ /obj/item/paper/pamphlet/violent_video_games name = "pamphlet - \'Violent Video Games and You\'" desc = "A pamphlet encouraging the reader to maintain a balanced lifestyle and take care of their mental health, while still enjoying video games in a healthy way. You probably don't need this..." - info = "They don't make you kill people. There, we said it. Now get back to work!" + default_raw_text = "They don't make you kill people. There, we said it. Now get back to work!" /obj/item/paper/pamphlet/gateway - info = "Welcome to the Nanotrasen Gateway project...
              \ + default_raw_text = "Welcome to the Nanotrasen Gateway project...
              \ Congratulations! If you're reading this, you and your superiors have decided that you're \ ready to commit to a life spent colonising the rolling hills of far away worlds. You \ must be ready for a lifetime of adventure, a little bit of hard work, and an award \ diff --git a/code/modules/cargo/bounty_console.dm b/code/modules/cargo/bounty_console.dm index eaa35d7054c..65d7d316b90 100644 --- a/code/modules/cargo/bounty_console.dm +++ b/code/modules/cargo/bounty_console.dm @@ -22,15 +22,17 @@ /obj/item/paper/bounty_printout/Initialize(mapload) . = ..() - info = "

              Nanotrasen Cargo Bounties


              " - update_icon() + var/final_paper_text = "

              Nanotrasen Cargo Bounties


              " for(var/datum/bounty/B in GLOB.bounties_list) if(B.claimed) continue - info += "

              [B.name]

              " - info += "
              • Reward: [B.reward_string()]
              • " - info += "
              • Completed: [B.completion_string()]
              " + final_paper_text += "

              [B.name]

              " + final_paper_text += "
              • Reward: [B.reward_string()]
              • " + final_paper_text += "
              • Completed: [B.completion_string()]
              " + + add_raw_text(final_paper_text) + update_appearance() /obj/machinery/computer/bounty/ui_interact(mob/user, datum/tgui/ui) if(!GLOB.bounties_list.len) diff --git a/code/modules/cargo/exports/gear.dm b/code/modules/cargo/exports/gear.dm index 72126ff5d87..519986bbb2c 100644 --- a/code/modules/cargo/exports/gear.dm +++ b/code/modules/cargo/exports/gear.dm @@ -85,7 +85,7 @@ /datum/export/gear/goldpda cost = 500 unit_name = "gilded PDA" - export_types = list(/obj/item/pda/vip) + export_types = list(/obj/item/modular_computer/tablet/pda/vip) /datum/export/gear/envirosuitvip cost = 4500 diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index 123da270bf9..088169735f5 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -37,7 +37,7 @@ to_chat(user, "You set [src] to use the [DB.department_name].") account_type = DB.department_ID return - if((istype(W, /obj/item/card/id) || istype(W, /obj/item/pda)) && allowed(user)) + if((istype(W, /obj/item/card/id) || istype(W, /obj/item/modular_computer/tablet/pda)) && allowed(user)) locked = !locked to_chat(user, "You [locked ? "lock" : "unlock"] the interface.") return diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index 53c3c9f12e6..6faa6d72e1f 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -16,10 +16,10 @@ errors |= MANIFEST_ERROR_ITEM /obj/item/paper/fluff/jobs/cargo/manifest/proc/is_approved() - return stamped && stamped.len && !is_denied() + return LAZYLEN(stamp_cache) && !is_denied() /obj/item/paper/fluff/jobs/cargo/manifest/proc/is_denied() - return stamped && ("stamp-deny" in stamped) + return LAZYLEN(stamp_cache) && ("stamp-deny" in stamp_cache) /datum/supply_order var/id @@ -39,65 +39,79 @@ src.reason = reason src.paying_account = paying_account +//NSV13 - Cargo Sleaker UI - Start +//Returns the total cost of this order. Its not the total price paid by cargo but the total value of this order +/datum/supply_order/proc/get_final_cost() + var/cost = pack.get_cost() + if(!isnull(paying_account)) //privately purchased means 1.1x the cost + cost *= 1.1 + return cost +//NSV13 - Cargo Sleaker UI - Stop + /datum/supply_order/proc/generateRequisition(turf/T) - var/obj/item/paper/P = new(T) - - P.name = "requisition form - #[id] ([pack.name])" - P.info += "

              [GLOB.station_name] Supply Requisition

              " - P.info += "
              " - P.info += "Order #[id]
              " - P.info += "Item: [pack.name]
              " - P.info += "Access Restrictions: [get_access_desc(pack.access)]
              " - P.info += "Requested by: [orderer]
              " + var/obj/item/paper/requisition_paper = new(T) + + requisition_paper.name = "requisition form - #[id] ([pack.name])" + var/requisition_text = "

              [GLOB.station_name] Supply Requisition

              " + requisition_text += "
              " + requisition_text += "Order #[id]
              " + requisition_text += "Item: [pack.name]
              " + requisition_text += "Access Restrictions: [get_access_desc(pack.access)]
              " + requisition_text += "Requested by: [orderer]
              " if(paying_account) - P.info += "Paid by: [paying_account.account_holder]
              " - P.info += "Rank: [orderer_rank]
              " - P.info += "Comment: [reason]
              " + requisition_text += "Paid by: [paying_account.account_holder]
              " + requisition_text += "Rank: [orderer_rank]
              " + requisition_text += "Comment: [reason]
              " - P.update_icon() - return P + requisition_paper.add_raw_text(requisition_text) + requisition_paper.update_appearance() + return requisition_paper /datum/supply_order/proc/generateManifest(obj/structure/closet/crate/C, var/owner, var/packname) //generates-the-manifests. - var/obj/item/paper/fluff/jobs/cargo/manifest/P = new(C, id, 0) + var/obj/item/paper/fluff/jobs/cargo/manifest/manifest_paper = new(C, id, 0) + + var/station_name = (manifest_paper.errors & MANIFEST_ERROR_NAME) ? new_station_name() : GLOB.station_name - var/station_name = (P.errors & MANIFEST_ERROR_NAME) ? new_station_name() : GLOB.station_name + manifest_paper.name = "shipping manifest - [packname?"#[id] ([pack.name])":"(Grouped Item Crate)"]" - P.name = "shipping manifest - [packname?"#[id] ([pack.name])":"(Grouped Item Crate)"]" - P.info += "

              [command_name()] Shipping Manifest

              " - P.info += "
              " + var/manifest_text = "

              [command_name()] Shipping Manifest

              " + manifest_text += "
              " if(owner && !(owner == "Cargo")) - P.info += "Direct purchase from [owner]
              " - P.name += " - Purchased by [owner]" - P.info += "Order[packname?"":"s"]: [id]
              " - P.info += "Destination: [station_name]
              " + manifest_text += "Direct purchase from [owner]
              " + manifest_paper.name += " - Purchased by [owner]" + manifest_text += "Order[packname?"":"s"]: [id]
              " + manifest_text += "Destination: [station_name]
              " if(packname) - P.info += "Item: [packname]
              " - P.info += "Contents:
              " - P.info += "
                " - for(var/atom/movable/AM in C.contents - P) - if((P.errors & MANIFEST_ERROR_CONTENTS)) + manifest_text += "Item: [packname]
                " + manifest_text += "Contents:
                " + manifest_text += "
                  " + for(var/atom/movable/AM in C.contents - manifest_paper) + if((manifest_paper.errors & MANIFEST_ERROR_CONTENTS)) if(prob(50)) - P.info += "
                • [AM.name]
                • " + manifest_text += "
                • [AM.name]
                • " else continue - P.info += "
                • [AM.name]
                • " - P.info += "
                " - P.info += "

                Stamp below to confirm receipt of goods:

                " + manifest_text += "
              • [AM.name]
              • " + manifest_text += "
              " + manifest_text += "

              Stamp below to confirm receipt of goods:

              " - if(P.errors & MANIFEST_ERROR_ITEM) + manifest_paper.add_raw_text(manifest_text) + + if(manifest_paper.errors & MANIFEST_ERROR_ITEM) if(istype(C, /obj/structure/closet/crate/secure) || istype(C, /obj/structure/closet/crate/large)) - P.errors &= ~MANIFEST_ERROR_ITEM + manifest_paper.errors &= ~MANIFEST_ERROR_ITEM else var/lost = max(round(C.contents.len / 10), 1) while(--lost >= 0) qdel(pick(C.contents)) - P.update_icon() - P.forceMove(C) - C.manifest = P + manifest_paper.update_appearance() + manifest_paper.forceMove(C) + + C.manifest = manifest_paper C.update_icon() - return P + return manifest_paper /datum/supply_order/proc/generate(atom/A) var/account_holder diff --git a/code/modules/cargo/orderconsole.dm b/code/modules/cargo/orderconsole.dm index 9531099ced8..56fb49c83e5 100644 --- a/code/modules/cargo/orderconsole.dm +++ b/code/modules/cargo/orderconsole.dm @@ -81,6 +81,7 @@ /obj/machinery/computer/cargo/ui_data() var/list/data = list() + data["department"] = "Cargo" // Hardcoded here, for customization in budgetordering.dm AKA NT IRN //NSV13 data["location"] = SSshuttle.supply.getStatusText() var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) if(D) @@ -98,15 +99,31 @@ if(SSshuttle.supplyBlocked) message = blockade_warning data["message"] = message - data["cart"] = list() - for(var/datum/supply_order/SO in SSshuttle.shoppinglist) - data["cart"] += list(list( - "object" = SO.pack.name, - "cost" = SO.pack.get_cost(), - "id" = SO.id, - "orderer" = SO.orderer, - "paid" = !isnull(SO.paying_account) //paid by requester + // NSV13 - Mail Control - Start + data["mail"] = SSshuttle.supply.send_mail + // NSV13 - Mail Control - Stop + //NSV13 - Cargo Sleaker UI - Start + var/cart_list = list() + for(var/datum/supply_order/order in SSshuttle.shoppinglist) + if(cart_list[order.pack.name]) + cart_list[order.pack.name][1]["amount"]++ + cart_list[order.pack.name][1]["cost"] += order.get_final_cost() + if(!isnull(order.paying_account)) + cart_list[order.pack.name][1]["paid"]++ + continue + + cart_list[order.pack.name] = list(list( + "object" = order.pack.name, + "cost" = order.get_final_cost(), + "id" = order.id, + "amount" = 1, + "orderer" = order.orderer, + "paid" = !isnull(order.paying_account) ? 1 : 0, //number of orders purchased privatly )) + data["cart"] = list() + for(var/item_id in cart_list) + data["cart"] += cart_list[item_id] + //NSV13 - Cargo Sleaker UI - Stop data["requests"] = list() for(var/datum/supply_order/SO in SSshuttle.requestlist) @@ -155,6 +172,18 @@ if(SSshuttle.supplyBlocked) say(blockade_warning) return + //NSV13 - Cargo Sleaker UI - Start + //Make an copy of the cart before its cleared by the shuttle + var/list/cart_list = list() + for(var/datum/supply_order/order in SSshuttle.shoppinglist) + if(cart_list[order.pack.name]) + cart_list[order.pack.name]["amount"]++ + continue + cart_list[order.pack.name] = list( + "order" = order, + "amount" = 1 + ) + //NSV13 - Cargo Sleaker UI - Stop if(SSshuttle.supply.getDockedId() == "supply_home") SSshuttle.supply.export_categories = get_export_categories() SSshuttle.moveShuttle("supply", "supply_away", TRUE) @@ -164,6 +193,23 @@ investigate_log("[key_name(usr)] called the supply shuttle.", INVESTIGATE_CARGO) say("The supply shuttle has been called and will arrive in [SSshuttle.supply.timeLeft(600)] minutes.") SSshuttle.moveShuttle("supply", "supply_home", TRUE) + //NSV13 - Cargo Sleaker UI - Start + if(!length(cart_list)) + return TRUE + + //create the paper from the cart list + var/obj/item/paper/requisition_paper = new(get_turf(src)) + requisition_paper.name = "requisition form" + var/requisition_text= "

              [GLOB.station_name] Supply Requisition

              " + requisition_text += "
              " + requisition_text += "Time of Order: [station_time_timestamp()]
              " + for(var/order_name in cart_list) + var/datum/supply_order/order = cart_list[order_name]["order"] + requisition_text += "[cart_list[order_name]["amount"]] [order.pack.name](" + requisition_text += "Access Restrictions: [get_access_desc(order.pack.access)])
              " + requisition_paper.add_raw_text(requisition_text) + requisition_paper.update_appearance() + //NSV13 - Cargo Sleaker UI - Stop . = TRUE if("loan") if(!SSshuttle.shuttle_loan) @@ -182,68 +228,45 @@ if("add") if(!COOLDOWN_FINISHED(src, order_cooldown)) return - var/id = text2path(params["id"]) - var/datum/supply_pack/pack = SSshuttle.supply_packs[id] - if(!istype(pack)) - return - if((pack.hidden && !(obj_flags & EMAGGED)) || (pack.contraband && !contraband) || pack.DropPodOnly) + //NSV13 - Cargo Sleaker UI - Start + return add_item(params) + if("add_by_name") + var/supply_pack_id = name_to_id(params["order_name"]) + if(!supply_pack_id) return - - var/name = "*None Provided*" - var/rank = "*None Provided*" - var/ckey = usr.ckey - if(ishuman(usr)) - var/mob/living/carbon/human/H = usr - name = H.get_authentification_name() - rank = H.get_assignment(hand_first = TRUE) - else if(issilicon(usr)) - name = usr.real_name - rank = "Silicon" - - var/datum/bank_account/account - if(self_paid && ishuman(usr)) - var/mob/living/carbon/human/H = usr - var/obj/item/card/id/id_card = H.get_idcard(TRUE) - if(!istype(id_card)) - say("No ID card detected.") - return - account = id_card.registered_account - if(!istype(account)) - say("Invalid bank account.") - return - - var/reason = "" - if(requestonly && !self_paid) - reason = stripped_input(usr, "Reason:", name, "") - if(!reason) - return - if(CHAT_FILTER_CHECK(reason)) - to_chat(usr, "You cannot send a message that contains a word prohibited in IC chat!") - return - - var/turf/T = get_turf(src) - var/datum/supply_order/SO = new(pack, name, rank, ckey, reason, account) - SO.generateRequisition(T) - if(requestonly && !self_paid) - SSshuttle.requestlist += SO - else - SSshuttle.shoppinglist += SO - if(self_paid) - say("Order processed. The price will be charged to [account.account_holder]'s bank account on delivery.") - if(requestonly && message_cooldown < world.time) - radio.talk_into(src, "A new order has been requested.", RADIO_CHANNEL_SUPPLY) - message_cooldown = world.time + 30 SECONDS - . = TRUE + return add_item(list("id" = supply_pack_id, "amount" = 1)) if("remove") - var/id = text2num(params["id"]) - for(var/datum/supply_order/SO in SSshuttle.shoppinglist) - if(SO.id == id) - SSshuttle.shoppinglist -= SO - . = TRUE - break + var/order_name = params["order_name"] + //try removing atleast one item with the specified name. + //also we create an copy of the cart list else we would get runtimes when removing & iterating over the same SSshuttle.shoppinglist + var/list/shopping_cart = SSshuttle.shoppinglist.Copy() + for(var/datum/supply_order/order in shopping_cart) + if(order.pack.name != order_name) + continue + if(remove_item(list("id" = order.id))) + return TRUE + return TRUE + if("modify") + var/order_name = params["order_name"] + //clear out all orders with the above mentioned order_name name to make space for the new amount + var/list/shopping_cart = SSshuttle.shoppinglist.Copy() //we operate on the list copy else we would get runtimes when removing & iterating over the same SSshuttle.shoppinglist + for(var/datum/supply_order/order in shopping_cart) //find corresponding order id for the order name + if(order.pack.name == order_name) + remove_item(list("id" = "[order.id]")) + //now add the new amount stuff + var/amount = text2num(params["amount"]) + if(amount == 0) + return TRUE + var/supply_pack_id = name_to_id(order_name) //map order name to supply pack id for adding + if(!supply_pack_id) + return + return add_item(list("id" = supply_pack_id, "amount" = amount)) if("clear") - SSshuttle.shoppinglist.Cut() - . = TRUE + //create copy of list else we will get runtimes when iterating & removing items on the same list SSshuttle.shoppinglist + var/list/shopping_cart = SSshuttle.shoppinglist.Copy() + for(var/datum/supply_order/cancelled_order in shopping_cart) + remove_item(list("id" = "[cancelled_order.id]")) //remove order + //NSV13 - Cargo Sleaker UI - Stop if("approve") var/id = text2num(params["id"]) for(var/datum/supply_order/SO in SSshuttle.requestlist) @@ -265,6 +288,12 @@ if("toggleprivate") self_paid = !self_paid . = TRUE + // NSV13 - Mail Control - Start + if("togglemail") + var/accepting_mail = SSshuttle.supply.send_mail + SSshuttle.supply.send_mail = !accepting_mail + . = TRUE + // NSV13 - Mail Control - Stop if(.) post_signal("supply") @@ -277,3 +306,87 @@ var/datum/signal/status_signal = new(list("command" = command)) frequency.post_signal(src, status_signal) + +//NSV13 - Cargo Sleaker UI - Start +/** + * adds an supply pack to the checkout cart + * * params - an list with id of the supply pack to add to the cart as its only element + */ +/obj/machinery/computer/cargo/proc/add_item(params) + var/id = params["id"] + id = text2path(id) || id + var/datum/supply_pack/pack = SSshuttle.supply_packs[id] + if(!istype(pack)) + CRASH("Unknown supply pack id given by order console ui. ID: [params["id"]]") + if((pack.hidden && !(obj_flags & EMAGGED)) || (pack.contraband && !contraband) || pack.DropPodOnly || (pack.special && !pack.special_enabled)) + return + + var/name = "*None Provided*" + var/rank = "*None Provided*" + var/ckey = usr.ckey + if(ishuman(usr)) + var/mob/living/carbon/human/human = usr + name = human.get_authentification_name() + rank = human.get_assignment(hand_first = TRUE) + else if(issilicon(usr)) + name = usr.real_name + rank = "Silicon" + + var/datum/bank_account/account + if(self_paid && isliving(usr)) + var/mob/living/living_user = usr + var/obj/item/card/id/id_card = living_user.get_idcard(TRUE) + if(!istype(id_card)) + say("No ID card detected.") + return + account = id_card.registered_account + if(!istype(account)) + say("Invalid bank account.") + return + + var/reason = "" + if(requestonly && !self_paid) + reason = tgui_input_text(usr, "Reason", name) + if(isnull(reason)) + return + + var/amount = params["amount"] + for(var/count in 1 to amount) + var/datum/supply_order/SO = new(pack = pack, orderer = name, orderer_rank = rank, orderer_ckey = ckey, reason = reason, paying_account = account) + if(requestonly && !self_paid) + SSshuttle.requestlist += SO + else + SSshuttle.shoppinglist += SO + + if(self_paid) + say("Order processed. The price will be charged to [account.account_holder]'s bank account on delivery.") + if(requestonly && message_cooldown < world.time) + var/message = amount == 1 ? "A new order has been requested." : "[amount] order has been requested." + radio.talk_into(src, message, RADIO_CHANNEL_SUPPLY) + message_cooldown = world.time + 30 SECONDS + . = TRUE + +/** + * removes an item from the checkout cart + * * params - an list with the id of the cart item to remove as its only element + */ +/obj/machinery/computer/cargo/proc/remove_item(params) + var/id = text2num(params["id"]) + for(var/datum/supply_order/order in SSshuttle.shoppinglist) + if(order.id != id) + continue + SSshuttle.shoppinglist -= order + . = TRUE + break + +/** + * maps the ordename displayed on the ui to its supply pack id + * * order_name - the name of the order + */ +/obj/machinery/computer/cargo/proc/name_to_id(order_name) + for(var/pack in SSshuttle.supply_packs) + var/datum/supply_pack/supply = SSshuttle.supply_packs[pack] + if(order_name == supply.name) + return pack + return null +//NSV13 - Cargo Sleaker UI - Stop diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 1f085827d93..ca3bead749e 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -548,13 +548,17 @@ /obj/item/ammo_box/c38/iceblox) crate_name = "ammo crate" +// NSV13 modified /datum/supply_pack/security/armory/bulletarmor name = "Bulletproof Armor Crate" - desc = "Contains three sets of bulletproof armor. Guaranteed to reduce a bullet's stopping power by over half. Requires Armory access to open." - cost = 1200 + desc = "Contains three sets of bulletproof armors with their corresponding helmets. Guaranteed to reduce a bullet's stopping power by over half. Requires Armory access to open." + cost = 3000 contains = list(/obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/suit/armor/bulletproof, - /obj/item/clothing/suit/armor/bulletproof) + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/head/helmet/alt, + /obj/item/clothing/head/helmet/alt, + /obj/item/clothing/head/helmet/alt) crate_name = "bulletproof armor crate" /datum/supply_pack/security/armory/chemimp @@ -2045,10 +2049,10 @@ /datum/supply_pack/service/vending/ptech name = "PTech Supply Crate" - desc = "Not enough cartridges after half the crew lost their PDA to explosions? This may fix it." + desc = "Not enough job disks after half the crew lost their PDA to explosions? This may fix it." cost = 800 access_budget = ACCESS_HOP - contains = list(/obj/item/vending_refill/cart) + contains = list(/obj/item/vending_refill/job_disk) crate_name = "ptech supply crate" /datum/supply_pack/service/vending/snack diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 8091627245b..62c19659dec 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -4,7 +4,6 @@ #define UPLOAD_LIMIT 10485760 //Restricts client uploads to the server to 1MB //Could probably do with being lower. -#define MAX_RECOMMENDED_CLIENT 1589 GLOBAL_LIST_INIT(blacklisted_builds, list( "1407" = "bug preventing client display overrides from working leads to clients being able to see things/mobs they shouldn't be able to see", @@ -264,28 +263,44 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( log_access("Login: [key_name(src)] from [address ? address : "localhost"]-[computer_id] || BYOND v[full_version]") var/alert_mob_dupe_login = FALSE + var/alert_admin_multikey = FALSE if(CONFIG_GET(flag/log_access)) - for(var/I in GLOB.clients) - if(!I || I == src) + var/list/joined_players = list() + for(var/player_ckey in GLOB.joined_player_list) + joined_players[player_ckey] = 1 + + for(var/joined_player_ckey in (GLOB.directory | joined_players)) + if (!joined_player_ckey || joined_player_ckey == ckey) continue - var/client/C = I - if(C.key && (C.key != key) ) - var/matches - if( (C.address == address) ) - matches += "IP ([address])" - if( (C.computer_id == computer_id) ) - if(matches) - matches += " and " - matches += "ID ([computer_id])" - alert_mob_dupe_login = TRUE - if(matches) - if(C) - message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(C)].") - log_access("Notice: [key_name(src)] has the same [matches] as [key_name(C)].") - else - message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(C)] (no longer logged in). ") - log_access("Notice: [key_name(src)] has the same [matches] as [key_name(C)] (no longer logged in).") + var/datum/preferences/joined_player_preferences = GLOB.preferences_datums[joined_player_ckey] + if(!joined_player_preferences) + continue //this shouldn't happen. + + var/client/C = GLOB.directory[joined_player_ckey] + var/in_round = "" + if (joined_players[joined_player_ckey]) + in_round = " who has played in the current round" + var/message_type = "Notice" + + var/matches + if(joined_player_preferences.last_ip == address) + matches += "IP ([address])" + if(joined_player_preferences.last_id == computer_id) + if(matches) + matches = "BOTH [matches] and " + alert_admin_multikey = TRUE + message_type = "MULTIKEY" + matches += "Computer ID ([computer_id])" + alert_mob_dupe_login = TRUE + + if(matches) + if(C) + message_admins("[message_type]: Connecting player [key_name_admin(src)] has the same [matches] as [key_name_admin(C)][in_round].") + log_admin_private("[message_type]: Connecting player [key_name(src)] has the same [matches] as [key_name(C)][in_round].") + else + message_admins("[message_type]: Connecting player [key_name_admin(src)] has the same [matches] as [joined_player_ckey](no longer logged in)[in_round]. ") + log_admin_private("[message_type]: Connecting player [key_name(src)] has the same [matches] as [joined_player_ckey](no longer logged in)[in_round].") if(GLOB.player_details[ckey]) player_details = GLOB.player_details[ckey] player_details.byond_version = full_version @@ -310,12 +325,14 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( to_chat_immediate(src, "Byond build [byond_build] ([byond_version].[byond_build]) has been blacklisted for the following reason: [GLOB.blacklisted_builds[num2text(byond_build)]].") to_chat_immediate(src, "Please download a new version of byond. If [byond_build] is the latest, you can go to BYOND's website to download other versions.") if(connecting_admin) - to_chat(src, "As an admin, you are being allowed to continue using this version, but please consider changing byond versions") + to_chat_immediate(src, "As an admin, you are being allowed to continue using this version, but please consider changing byond versions") else qdel(src) return - if(byond_build > MAX_RECOMMENDED_CLIENT) - to_chat(src, "Your version of byond is over the maximum recommended version for clients (build [MAX_RECOMMENDED_CLIENT]) and may be unstable.") + + var/max_recommended_client = CONFIG_GET(number/client_max_build) + if(byond_build > max_recommended_client) + to_chat(src, "Your version of byond is over the maximum recommended version for clients (build [max_recommended_client]) and may be unstable.") to_chat(src, "Please download an older version of byond. You can go to BYOND's website to download other versions.") if(SSinput.initialized) set_macros() @@ -323,41 +340,50 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( // Initialize tgui panel tgui_panel.Initialize() - if(alert_mob_dupe_login) - spawn() - alert(mob, "You have logged in already with another key this round, please log out of this one NOW or risk being banned!") + if(alert_mob_dupe_login && !holder) + var/dupe_login_message = "Your ComputerID has already logged in with another key this round, please log out of this one NOW or risk being banned!" + if (alert_admin_multikey) + dupe_login_message += "\nAdmins have been informed." + message_admins("MULTIKEYING: [key_name_admin(src)] has a matching CID+IP with another player and is clearly multikeying. They have been warned to leave the server or risk getting banned.") + log_admin_private("MULTIKEYING: [key_name(src)] has a matching CID+IP with another player and is clearly multikeying. They have been warned to leave the server or risk getting banned.") + spawn(0.5 SECONDS) //needs to run during world init, do not convert to add timer + alert(mob, dupe_login_message) //players get banned if they don't see this message, do not convert to tgui_alert (or even tg_alert) please. + to_chat_immediate(mob, "[dupe_login_message]") + connection_time = world.time connection_realtime = world.realtime connection_timeofday = world.timeofday winset(src, null, "command=\".configure graphics-hwmode on\"") - var/cev = CONFIG_GET(number/client_error_version) - var/ceb = CONFIG_GET(number/client_error_build) - var/cwv = CONFIG_GET(number/client_warn_version) - if (byond_version < cev || byond_build < ceb) //Out of date client. + var/breaking_version = CONFIG_GET(number/client_error_version) + var/breaking_build = CONFIG_GET(number/client_error_build) + var/warn_version = CONFIG_GET(number/client_warn_version) + var/warn_build = CONFIG_GET(number/client_warn_build) + + if (byond_version < breaking_version || (byond_version == breaking_version && byond_build < breaking_build)) //Out of date client. to_chat_immediate(src, "Your version of BYOND is too old:") to_chat_immediate(src, CONFIG_GET(string/client_error_message)) to_chat_immediate(src, "Your version: [byond_version].[byond_build]") - to_chat_immediate(src, "Required version: [cev].[ceb] or later") + to_chat_immediate(src, "Required version: [breaking_version].[breaking_build] or later") to_chat_immediate(src, "Visit BYOND's website to get the latest version of BYOND.") if (connecting_admin) - to_chat(src, "Because you are an admin, you are being allowed to walk past this limitation, But it is still STRONGLY suggested you upgrade") + to_chat_immediate(src, "Because you are an admin, you are being allowed to walk past this limitation, But it is still STRONGLY suggested you upgrade") else qdel(src) - return 0 - else if (byond_version < cwv) //We have words for this client. + return + else if (byond_version < warn_version || (byond_version == warn_version && byond_build < warn_build)) //We have words for this client. if(CONFIG_GET(flag/client_warn_popup)) var/msg = "Your version of byond may be getting out of date:
              " msg += CONFIG_GET(string/client_warn_message) + "

              " - msg += "Your version: [byond_version]
              " - msg += "Required version to remove this message: [cwv] or later
              " + msg += "Your version: [byond_version].[byond_build]
              " + msg += "Required version to remove this message: [warn_version].[warn_build] or later
              " msg += "Visit BYOND's website to get the latest version of BYOND.
              " src << browse(msg, "window=warning_popup") else to_chat(src, "Your version of byond may be getting out of date:") to_chat(src, CONFIG_GET(string/client_warn_message)) - to_chat(src, "Your version: [byond_version]") - to_chat(src, "Required version to remove this message: [cwv] or later") + to_chat(src, "Your version: [byond_version].[byond_build]") + to_chat(src, "Required version to remove this message: [warn_version].[warn_build] or later") to_chat(src, "Visit BYOND's website to get the latest version of BYOND.") if (connection == "web" && !connecting_admin) @@ -831,7 +857,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( var/url = winget(src, null, "url") //special javascript to make them reconnect under a new window. src << browse({"byond://[url]?token=[token]"}, "border=0;titlebar=0;size=1x1;window=redirect") - to_chat(src, {"You will be automatically taken to the game, if not, click here to be taken manually"}) + to_chat_immediate(src, {"You will be automatically taken to the game, if not, click here to be taken manually"}) /client/proc/note_randomizer_user() add_system_note("CID-Error", "Detected as using a cid randomizer.") diff --git a/code/modules/client/loadout/loadout_ooc.dm b/code/modules/client/loadout/loadout_ooc.dm index ec067434b1c..f798f4c036d 100644 --- a/code/modules/client/loadout/loadout_ooc.dm +++ b/code/modules/client/loadout/loadout_ooc.dm @@ -9,7 +9,7 @@ cost = 10000 /datum/gear/ooc/char_slot/purchase(var/client/C) - C?.prefs?.set_max_character_slots(C.prefs.max_usable_slots = 1) + C?.prefs?.set_max_character_slots(C?.prefs?.max_usable_slots + 1) /datum/gear/ooc/real_antagtoken display_name = "antag token" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 9d6d7aaa75a..1acd467413c 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -24,10 +24,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/tip_delay = 500 //tip delay in milliseconds //Antag preferences - var/list/be_special = list() //Special role selection - var/tmp/old_be_special = 0 //Bitflag version of be_special, used to update old savefiles and nothing more - //If it's 0, that's good, if it's anything but 0, the owner of this prefs file's antag choices were, - //autocorrected this round, not that you'd need to check that. + var/list/role_preferences = list() //Special role selection var/UI_style = null var/outline_color = COLOR_BLUE_GRAY @@ -44,7 +41,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/ghost_accs = GHOST_ACCS_DEFAULT_OPTION var/ghost_others = GHOST_OTHERS_DEFAULT_OPTION var/preferred_map = null - var/pda_style = MONO + var/pda_theme = THEME_NTOS var/pda_color = "#808000" // Custom Keybindings @@ -77,6 +74,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/action_buttons_screen_locs = list() //Nsv13 - Syndicate role select var/preferred_syndie_role = CONQUEST_ROLE_GRUNT + //NSV13 - AI Custom Holographic Form - Start + var/icon/custom_holoform_icon + var/list/cached_holoform_icons + var/last_custom_holoform = 0 + //NSV13 - AI Custom Holographic Form - End /datum/preferences/proc/set_max_character_slots(newmax) max_usable_slots = min(TRUE_MAX_SAVE_SLOTS, newmax) // Make sure they dont go over @@ -130,10 +132,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/list/dat = list("
              ") dat += "Character Settings" + dat += "Antagonist Preferences" dat += "Game Preferences" var/shop_name = "[CONFIG_GET(string/metacurrency_name)] Shop" dat += "[shop_name]" dat += "OOC Preferences" + dat += "Roleplay Settings" //NSV13 - Roleplay Tab dat += "
              " @@ -186,18 +190,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Body Model:[active_character.features["body_model"] == MALE ? "Masculine" : "Feminine"]
              " dat += "Age: [active_character.age]
              " - //NSV13 FLAVOR TEXT RELATED START - dat += "Set Flavor Text" - if(length(active_character.flavor_text) <= 40) - if(!length(active_character.flavor_text)) - dat += "\[...\]" - else - dat += "[active_character.flavor_text]" - else - dat += "[copytext_char(active_character.flavor_text, 1, 37)]...
              " - - dat += "
              Special Names:
              " - //NSV13 FLAVOR TEXT RELATED END + dat += "Special Names:
              " var/old_group for(var/custom_name_id in GLOB.preferences_custom_names) var/namedata = GLOB.preferences_custom_names[custom_name_id] @@ -235,7 +228,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Socks:
              [active_character.socks]
              " dat += "Backpack:
              [active_character.backbag]
              " dat += "Jumpsuit:
              [active_character.jumpsuit_style]
              " - dat += "Uplink Spawn Location:
              [active_character.uplink_spawn_loc == UPLINK_IMPLANT ? UPLINK_IMPLANT_WITH_PRICE : active_character.uplink_spawn_loc]
              " + dat += "Uplink Spawn Location:
              [active_character.uplink_spawn_loc == UPLINK_IMPLANT ? UPLINK_IMPLANT_WITH_PRICE : active_character.uplink_spawn_loc]
              " + dat += "Lizard Hiss:
              [active_character.lizard_hiss_style]
              " //NSV13 var/use_skintones = active_character.pref_species.use_skintones if(use_skintones) @@ -602,7 +596,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) if (1) // Game Preferences - dat += "
              " + dat += "" + // left box + dat += "" // left box closed + // right box + dat += "" + // right box closed + dat += "" + dat += "" + dat += "
              " dat += "

              General Settings

              " dat += "UI Style: [UI_style]
              " dat += "Outline: [toggles & PREFTOGGLE_OUTLINE_ENABLED ? "Enabled" : "Disabled"]
              " @@ -617,8 +613,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Action Buttons: [(toggles2 & PREFTOGGLE_2_LOCKED_BUTTONS) ? "Locked In Place" : "Unlocked"]
              " dat += "Hotkey Mode: [(toggles2 & PREFTOGGLE_2_HOTKEYS) ? "Hotkeys" : "Default"]
              " dat += "
              " - dat += "PDA Color:     Change
              " - dat += "PDA Style: [pda_style]
              " + dat += "PDA Theme: [theme_name_for_id(pda_theme)]
              " + dat += "PDA Classic Color:     Change
              " dat += "
              " dat += "Crew Objectives: [(toggles2 & PREFTOGGLE_2_CREW_OBJECTIVES) ? "Yes" : "No"]
              " dat += "
              " @@ -656,8 +652,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
              " dat += "Income Updates: [(chat_toggles & CHAT_BANKCARD) ? "Allowed" : "Muted"]
              " - dat += "
              " + dat += "
              " + dat += "

              Graphics Settings

              " dat += "FPS: [clientfps]
              " dat += "Parallax (Fancy Space): " @@ -709,35 +708,98 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(CONFIG_GET(flag/preference_map_voting)) dat += "Preferred Map: [p_map]
              " - dat += "
              " - - dat += "

              Special Role Settings

              " - - if(is_banned_from(user.ckey, ROLE_SYNDICATE)) - dat += "You are banned from antagonist roles.
              " - src.be_special = list() + dat += "
              Customize Keybinds
              " - for (var/i in GLOB.special_roles) - if(is_banned_from(user.ckey, i)) - dat += "Be [capitalize(i)]: BANNED
              " + if(4) // antagonist preferences window + dat += "
              " + var/name + var/unspaced_slots = 0 + for(var/datum/character_save/CS as anything in character_saves) + unspaced_slots++ + if(unspaced_slots > 4) + dat += "
              " + unspaced_slots = 0 + name = CS.real_name + if(!name) + name = "Character [CS.slot_number]" + if(CS.slot_locked) + dat += "[name] (Locked) " else - var/days_remaining = null - if(ispath(GLOB.special_roles[i]) && CONFIG_GET(flag/use_age_restriction_for_jobs)) //If it's a game mode antag, check if the player meets the minimum age - var/mode_path = GLOB.special_roles[i] - var/datum/game_mode/temp_mode = new mode_path - days_remaining = temp_mode.get_remaining_days(user.client) - - if(days_remaining) - dat += "Be [capitalize(i)]: \[IN [days_remaining] DAYS]
              " - else - dat += "Be [capitalize(i)]: [(i in be_special) ? "Enabled" : "Disabled"]
              " - dat += "
              " - dat += "Midround Antagonist: [(toggles & PREFTOGGLE_MIDROUND_ANTAG) ? "Enabled" : "Disabled"]
              " + dat += "[name] " + dat += "
              " + dat += "" + // + dat += "" + // left box closed + + // + // -------------------------------------------- + // Midround antagonists + ghostspawn roles + dat += "" + // right box closed - dat += "" // i hate myself for this - dat += "" - dat += "
              " + // -------------------------------------------- + // warning pannel + var/ban_antagonists = is_banned_from(parent.ckey, BAN_ROLE_ALL_ANTAGONISTS) + var/ban_forced_antagonists = is_banned_from(parent.ckey, BAN_ROLE_FORCED_ANTAGONISTS) + var/ban_ghost = is_banned_from(parent.ckey, BAN_ROLE_ALL_GHOST) + if(ban_antagonists || ban_forced_antagonists || ban_ghost) + dat += "

              Notification

              " + if(ban_antagonists) + dat += "You are banned from all antagonist roles.
              \ + Show Info
              " + if(ban_forced_antagonists) + dat += "You are banned from all forced antagonist roles (such as brainwashing).
              \ + Show Info
              " + if(ban_ghost) + dat += "You are banned from all non-antagonist ghost roles.
              \ + Show Info
              " + // -------------------------------------------- + // Antagonist roles + dat += "

              Antagonists

              " + for (var/typepath in GLOB.role_preference_entries) + var/datum/role_preference/pref = GLOB.role_preference_entries[typepath] + if(pref.category != ROLE_PREFERENCE_CATEGORY_ANAGONIST) + continue + var/ban_key = initial(pref.antag_datum.banning_key) + if(is_banned_from(parent.ckey, ban_key)) + dat += "[pref.name]: BANNED
              " + else + dat += "[pref.name] \ +
              - Character: [parent.role_preference_enabled(typepath) ? "Enabled" : "Disabled"]\ +
              - Global: Enable\ + Disable
              " + dat += "
              " + dat += "

              Midrounds (Living)

              " + for (var/typepath in GLOB.role_preference_entries) + var/datum/role_preference/pref = GLOB.role_preference_entries[typepath] + if(pref.category != ROLE_PREFERENCE_CATEGORY_MIDROUND_LIVING) + continue + var/ban_key = initial(pref.antag_datum.banning_key) + if(is_banned_from(parent.ckey, ban_key)) + dat += "[pref.name]: BANNED
              " + else + dat += "[pref.name] \ +
              - Character: [parent.role_preference_enabled(typepath) ? "Enabled" : "Disabled"]\ +
              - Global: Enable\ + Disable
              " + dat += "

              Midrounds (Ghost)

              " + for (var/typepath in GLOB.role_preference_entries) + var/datum/role_preference/pref = GLOB.role_preference_entries[typepath] + if(pref.category != ROLE_PREFERENCE_CATEGORY_MIDROUND_GHOST) + continue + var/ban_key = initial(pref.antag_datum.banning_key) + if(is_banned_from(parent.ckey, ban_key)) + dat += "[pref.name]: BANNED
              " + else + dat += "[pref.name]: [parent.role_preference_enabled(typepath) ? "Enabled" : "Disabled"]
              " + dat += "
              Customize Keybinds
              " + dat += "
              " if(2) //Loadout var/list/type_blacklist = list() @@ -894,6 +956,96 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" dat += "" + if(5) + dat += "Character Settings" //NSV13 - Roleplay Tab - Start + dat += "
              " + var/name + var/unspaced_slots = 0 + for(var/datum/character_save/CS as anything in character_saves) + unspaced_slots++ + if(unspaced_slots > 4) + dat += "
              " + unspaced_slots = 0 + name = CS.real_name + if(!name) + name = "Character [CS.slot_number]" + if(CS.slot_locked) + dat += "[name] (Locked) " + else + dat += "[name] " + dat += "
              " + + dat += "

              Flavor Text

              " + dat += "
              " + + dat += "Set Flavor Text
              " + if(length(active_character.flavor_text) <= 40) + if(!length(active_character.flavor_text)) + dat += "\[...\]" + else + dat += "[active_character.flavor_text]" + else + dat += "[copytext_char(active_character.flavor_text, 1, 40)]...
              " + + dat += "
              " + + dat += "Set Silicon Examine Text
              " + if(length(active_character.silicon_flavor_text) <= 40) + if(!length(active_character.silicon_flavor_text)) + dat += "\[...\]" + else + dat += "[active_character.silicon_flavor_text]" + else + dat += "[copytext_char(active_character.silicon_flavor_text, 1, 40)]...
              " + + dat += "
              " + + dat += "" + dat += "" + dat += "
              " + + dat += "

              General Record

              " + dat += "Set General Record
              " + + if(length(active_character.general_record) <= 40) + if(!length(active_character.general_record)) + dat += "\[...\]" + else + dat += "[html_encode(active_character.general_record)]" + else + dat += "[copytext_char(active_character.general_record, 1, 40)]..." + + dat += "
              " + + + dat += "

              Medical Record

              " + dat += "Set Medical Record
              " + + if(length(active_character.medical_record) <= 40) + if(!length(active_character.medical_record)) + dat += "\[...\]" + else + dat += "[html_encode(active_character.medical_record)]" + else + dat += "[copytext_char(active_character.medical_record, 1, 40)]..." + + dat += "
              " + + + dat += "

              Security Record

              " + dat += "Set Security Record
              " + + if(length(active_character.security_record) <= 40) + if(!length(active_character.security_record)) + dat += "\[...\]" + else + dat += "[html_encode(active_character.security_record)]" + else + dat += "[copytext_char(active_character.security_record, 1, 40)]..." + + dat += "
              " + dat += "
              " + //NSV13 - Roleplay Tab - End dat += "
              " if(!IS_GUEST_KEY(user.key)) @@ -1779,12 +1931,38 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("syndiecrew") var/client/C = (istype(user, /client)) ? user : user.client C.select_syndie_role() - + //NSV13 - Roleplay Stuff if("flavor_text") - var/msg = capped_multiline_input(usr, "Set the flavor text for your 'examine' verb.\nThe rules are the following;\nNo Memes.\nNothing that people can't see at a glance.\nNothing that's Out Of Character.\nNothing that breaks the game.", "Flavor Text", active_character.flavor_text) + var/msg = input(usr, "Set the flavor text for your 'examine' verb.\nThe rules are the following;\nNo Memes.\nNothing that people can't see at a glance.\nNothing that's Out Of Character.\nNothing that breaks the game.", "Flavor Text", active_character.flavor_text) as message|null if(msg) - active_character.flavor_text = html_decode(strip_html(msg)) - //NSV13 end + active_character.flavor_text = html_decode(strip_html_simple(msg)) + if("lizard_hiss_style") + if(active_character.lizard_hiss_style == LIZARD_HISS_EXPANDED) + active_character.lizard_hiss_style = LIZARD_HISS_LEGACY + else + active_character.lizard_hiss_style = LIZARD_HISS_EXPANDED + + if("silicon_flavor_text") + var/msg = input(usr, "Set the flavor text in your 'examine' verb. This is for describing what people can tell by looking at your character.", "Silicon Flavor Text", active_character.silicon_flavor_text) as message|null + if(!isnull(msg)) + active_character.silicon_flavor_text = html_decode(strip_html_simple(msg)) + + if("general_record") + var/msg = input(usr, "Set your general record. This is more or less public information, available from security, medical and command consoles", "General Record", active_character.general_record) as message|null + if(!isnull(msg)) + active_character.general_record = html_decode(strip_html_simple(msg)) + + if("medical_record") + var/msg = input(usr, "Set your medical record. ", "Medical Record", active_character.medical_record) as message|null + if(!isnull(msg)) + active_character.medical_record = html_decode(strip_html_simple(msg)) + + if("security_record") + var/msg = input(usr, "Set your security record. ", "Medical Record", active_character.security_record) as message|null + if(!isnull(msg)) + active_character.security_record = html_decode(strip_html_simple(msg)) + + //NSV13 - END if ("preferred_map") var/maplist = list() var/default = "Default" @@ -1814,12 +1992,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) UI_style = pickedui if (parent && parent.mob && parent.mob.hud_used) parent.mob.hud_used.update_ui_style(ui_style2icon(UI_style)) - if("pda_style") - var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference", pda_style) as null|anything in GLOB.pda_styles + if("pda_theme") + var/pickedPDAStyle = input(user, "Choose your default PDA theme.", "Character Preference", pda_theme) as null|anything in GLOB.ntos_device_themes_default if(pickedPDAStyle) - pda_style = pickedPDAStyle + pda_theme = GLOB.ntos_device_themes_default[pickedPDAStyle] if("pda_color") - var/pickedPDAColor = input(user, "Choose your PDA Interface color.", "Character Preference", pda_color) as color|null + var/pickedPDAColor = input(user, "Choose your default Thinktronic Classic theme background color.", "Character Preference", pda_color) as color|null if(pickedPDAColor) pda_color = pickedPDAColor if ("see_balloon_alerts") @@ -1894,12 +2072,33 @@ GLOBAL_LIST_EMPTY(preferences_datums) toggles ^= PREFTOGGLE_DEADMIN_POSITION_SILICON - if("be_special") - var/be_special_type = href_list["be_special_type"] - if(be_special_type in be_special) - be_special -= be_special_type - else - be_special += be_special_type + if("role_preferences") + var/role_preference_type = href_list["role_preference_type"] + var/role_preference_path = text2path(role_preference_type) + var/datum/role_preference/role_pref = GLOB.role_preference_entries[role_preference_path] + if(istype(role_pref)) + var/list/prefsource = role_pref.per_character ? active_character.role_preferences_character : role_preferences + var/current = prefsource["[role_preference_type]"] + if(isnum(current)) + prefsource["[role_preference_type]"] = !current + else // not set, we assume it's on, so turn it off. + prefsource["[role_preference_type]"] = FALSE + + if("role_preferences_enableall") + var/role_preference_type = href_list["role_preference_type"] + var/role_preference_path = text2path(role_preference_type) + var/datum/role_preference/role_pref = GLOB.role_preference_entries[role_preference_path] + if(istype(role_pref) && role_pref.per_character) + for(var/datum/character_save/CS in character_saves) + CS.role_preferences_character["[role_preference_type]"] = TRUE + + if("role_preferences_disableall") + var/role_preference_type = href_list["role_preference_type"] + var/role_preference_path = text2path(role_preference_type) + var/datum/role_preference/role_pref = GLOB.role_preference_entries[role_preference_path] + if(istype(role_pref) && role_pref.per_character) + for(var/datum/character_save/CS in character_saves) + CS.role_preferences_character["[role_preference_type]"] = FALSE if("name") active_character.be_random_name = !active_character.be_random_name @@ -1941,9 +2140,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("pull_requests") chat_toggles ^= CHAT_PULLR - if("allow_midround_antag") - toggles ^= PREFTOGGLE_MIDROUND_ANTAG - if("parallaxup") parallax = WRAP(parallax + 1, PARALLAX_INSANE, PARALLAX_DISABLE + 1) if (parent && parent.mob && parent.mob.hud_used) @@ -2136,3 +2332,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) active_character.equipped_gear -= RG.id purchased_gear -= RG.id save_preferences() + +//NSV13 - AI Custom Holographic Form +/datum/preferences/proc/get_filtered_holoform(filter_type) + if(!custom_holoform_icon) + return + LAZYINITLIST(cached_holoform_icons) + if(!cached_holoform_icons[filter_type]) + cached_holoform_icons[filter_type] = process_holoform_icon_filter(custom_holoform_icon, filter_type) + return cached_holoform_icons[filter_type] diff --git a/code/modules/client/preferences2/character_save.dm b/code/modules/client/preferences2/character_save.dm index eca17fe0276..2647311ca59 100644 --- a/code/modules/client/preferences2/character_save.dm +++ b/code/modules/client/preferences2/character_save.dm @@ -71,12 +71,20 @@ var/list/equipped_gear = list() var/joblessrole = BERANDOMJOB //defaults to 1 for fewer assistants var/uplink_spawn_loc = UPLINK_PDA + var/list/role_preferences_character = list() //Nsv13 squads - we CM now var/preferred_squad = "Able" //NSV13 - Pilots var/preferred_pilot_role = PILOT_COMBAT - //NSV13 - Added Flavor Text + //NSV13 - Roleplaying Stuff - Start var/flavor_text = "" + //Nsv13 - lizard hiss style pref + var/lizard_hiss_style = LIZARD_HISS_EXPANDED + var/silicon_flavor_text = "" + var/general_record = "" + var/security_record = "" + var/medical_record = "" + //NSV13 - Roleplaying Stuff - End /datum/character_save/New() real_name = get_default_name() @@ -155,15 +163,31 @@ SAFE_READ_QUERY(31, loadout_tmp) equipped_gear = json_decode(loadout_tmp) - //NSV13 squads + //NSV13 - Start SAFE_READ_QUERY(32, preferred_squad) - //NSV13 pilot role SAFE_READ_QUERY(33, preferred_pilot_role) - //NSV13 flavor text SAFE_READ_QUERY(34, flavor_text) + //NSV13 lizard hiss style + SAFE_READ_QUERY(35, lizard_hiss_style) + + SAFE_READ_QUERY(36, silicon_flavor_text) + + SAFE_READ_QUERY(37, general_record) + + SAFE_READ_QUERY(38, security_record) + + SAFE_READ_QUERY(39, medical_record) + //NSV13 - Stop + + // Role prefs + var/role_preferences_character_tmp + SAFE_READ_QUERY(40, role_preferences_character_tmp) //NSV13 - Moved from 32 to 40 due to Roleplaying stuff + role_preferences_character = json_decode(role_preferences_character_tmp) + + //Sanitize. Please dont put query reads below this point. Please. real_name = reject_bad_name(real_name, pref_species.allow_numbers_in_name) @@ -243,9 +267,22 @@ job_preferences -= j all_quirks = SANITIZE_LIST(all_quirks) - - - flavor_text = html_decode(strip_html(flavor_text)) //NSV13 added flavor text + role_preferences_character = SANITIZE_LIST(role_preferences_character) + // Remove any invalid entries + for(var/preference in role_preferences_character) + var/path = text2path(preference) + var/datum/role_preference/entry = GLOB.role_preference_entries[path] + if(istype(entry) && entry.per_character) + continue + role_preferences_character -= preference + + //NSV13 - Roleplay Stuff - Start + flavor_text = html_decode(strip_html(flavor_text)) + silicon_flavor_text = html_decode(strip_html(silicon_flavor_text)) + general_record = sanitize_text(general_record) + security_record = sanitize_text(security_record) + medical_record = sanitize_text(medical_record) + //NSV13 - Roleplay Stuff - Stop return TRUE @@ -278,12 +315,7 @@ if(!parent) CRASH("Someone called update_preview_icon() without passing a client.") // Determine what job is marked as 'High' priority, and dress them up as such. - var/datum/job/previewJob - var/highest_pref = 0 - for(var/job in job_preferences) - if(job_preferences[job] > highest_pref) - previewJob = SSjob.GetJob(job) - highest_pref = job_preferences[job] + var/datum/job/previewJob = get_highest_job() //NSV13 - Moved this stuff to a new proc if(previewJob) // Silicons only need a very basic preview since there is no customization for them. @@ -313,7 +345,7 @@ if(IS_GUEST_KEY(C.ckey)) return - // Get ready for a disgusting query //NSV13 adds squads, pilot role and flavor text prefs + // Get ready for a disgusting query //NSV13 adds squads, pilot role and roleplaying prefs var/datum/DBQuery/insert_query = SSdbcore.NewQuery({" REPLACE INTO [format_table_name("characters")] ( slot, @@ -350,7 +382,13 @@ equipped_gear, preferred_squad, preferred_pilot_role, - flavor_text + flavor_text, + lizard_hiss_style, + silicon_flavor_text, + general_record, + security_record, + medical_record, + role_preferences ) VALUES ( :slot, :ckey, @@ -386,7 +424,13 @@ :equipped_gear, :preferred_squad, :preferred_pilot_role, - :flavor_text + :flavor_text, + :lizard_hiss_style, + :silicon_flavor_text, + :general_record, + :security_record, + :medical_record, + :role_preferences ) "}, list( // Now for the above but in a fucking monsterous list @@ -424,7 +468,13 @@ "equipped_gear" = json_encode(equipped_gear), "preferred_squad" = preferred_squad, "preferred_pilot_role" = preferred_pilot_role, - "flavor_text" = flavor_text + "flavor_text" = flavor_text, + "lizard_hiss_style" = lizard_hiss_style, + "silicon_flavor_text" = silicon_flavor_text, + "general_record" = general_record, + "security_record" = security_record, + "medical_record" = medical_record, + "role_preferences" = json_encode(role_preferences_character) )) if(!insert_query.warn_execute()) @@ -509,3 +559,13 @@ character.update_body_parts(TRUE) character.dna.update_body_size() + +//NSV13 - AI Custom Holographic Form +/datum/character_save/proc/get_highest_job() + var/highest_pref = 0 + var/datum/job/highest_job + for(var/job in job_preferences) + if(job_preferences[job] > highest_pref) + highest_job = SSjob.GetJob(job) + highest_pref = job_preferences[job] + return highest_job diff --git a/code/modules/client/preferences2/preferences2.dm b/code/modules/client/preferences2/preferences2.dm index 9e48721286f..fe6967c60c5 100644 --- a/code/modules/client/preferences2/preferences2.dm +++ b/code/modules/client/preferences2/preferences2.dm @@ -77,14 +77,14 @@ READPREF_RAW(ghost_orbit, PREFERENCE_TAG_GHOST_ORBIT) READPREF_RAW(ghost_accs, PREFERENCE_TAG_GHOST_ACCS) READPREF_RAW(ghost_others, PREFERENCE_TAG_GHOST_OTHERS) - READPREF_RAW(pda_style, PREFERENCE_TAG_PDA_STYLE) + READPREF_RAW(pda_theme, PREFERENCE_TAG_PDA_THEME) READPREF_RAW(pda_color, PREFERENCE_TAG_PDA_COLOUR) READPREF_RAW(preferred_syndie_role, PREFERENCE_TAG_PREFERRED_SYNDIE_ROLE) //NSV13 READPREF_JSONDEC(ignoring, PREFERENCE_TAG_IGNORING) READPREF_JSONDEC(key_bindings, PREFERENCE_TAG_KEYBINDS) READPREF_JSONDEC(purchased_gear, PREFERENCE_TAG_PURCHASED_GEAR) - READPREF_JSONDEC(be_special, PREFERENCE_TAG_BE_SPECIAL) + READPREF_JSONDEC(role_preferences, PREFERENCE_TAG_ROLE_PREFERENCES) //Sanitize asaycolor = sanitize_ooccolor(sanitize_hexcolor(asaycolor, 6, TRUE, initial(asaycolor))) @@ -104,9 +104,16 @@ ghost_orbit = sanitize_inlist(ghost_orbit, GLOB.ghost_orbits, initial(ghost_orbit)) ghost_accs = sanitize_inlist(ghost_accs, GLOB.ghost_accs_options, GHOST_ACCS_DEFAULT_OPTION) ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION) - be_special = SANITIZE_LIST(be_special) - - pda_style = sanitize_inlist(pda_style, GLOB.pda_styles, initial(pda_style)) + role_preferences = SANITIZE_LIST(role_preferences) + // Remove any invalid entries + for(var/preference in role_preferences) + var/path = text2path(preference) + var/datum/role_preference/entry = GLOB.role_preference_entries[path] + if(istype(entry) && !entry.per_character) + continue + role_preferences -= preference + + pda_theme = sanitize_inlist(pda_theme, GLOB.ntos_device_themes_default_content, initial(pda_theme)) pda_color = sanitize_hexcolor(pda_color, 6, TRUE, initial(pda_color)) preferred_syndie_role = sanitize_text(preferred_syndie_role, CONQUEST_ROLE_GRUNT) //NSV13 @@ -147,7 +154,7 @@ PREP_WRITEPREF_RAW(parallax, PREFERENCE_TAG_PARALLAX) PREP_WRITEPREF_RAW(pixel_size, PREFERENCE_TAG_PIXELSIZE) PREP_WRITEPREF_RAW(tip_delay, PREFERENCE_TAG_TIP_DELAY) - PREP_WRITEPREF_RAW(pda_style, PREFERENCE_TAG_PDA_STYLE) + PREP_WRITEPREF_RAW(pda_theme, PREFERENCE_TAG_PDA_THEME) PREP_WRITEPREF_RAW(pda_color, PREFERENCE_TAG_PDA_COLOUR) PREP_WRITEPREF_RAW(preferred_syndie_role, PREFERENCE_TAG_PREFERRED_SYNDIE_ROLE) //NSV13 @@ -166,7 +173,7 @@ PREP_WRITEPREF_JSONENC(ignoring, PREFERENCE_TAG_IGNORING) PREP_WRITEPREF_JSONENC(key_bindings, PREFERENCE_TAG_KEYBINDS) PREP_WRITEPREF_JSONENC(purchased_gear, PREFERENCE_TAG_PURCHASED_GEAR) - PREP_WRITEPREF_JSONENC(be_special, PREFERENCE_TAG_BE_SPECIAL) + PREP_WRITEPREF_JSONENC(role_preferences, PREFERENCE_TAG_ROLE_PREFERENCES) // QuerySelect can execute many queries at once. That name is dumb but w/e SSdbcore.QuerySelect(write_queries, TRUE, TRUE) @@ -215,7 +222,13 @@ equipped_gear, preferred_squad, preferred_pilot_role, - flavor_text + flavor_text, + lizard_hiss_style, + silicon_flavor_text, + general_record, + security_record, + medical_record, + role_preferences FROM [format_table_name("characters")] WHERE ckey=:ckey "}, list("ckey" = parent.ckey)) diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 6ca7eb5fad4..56f84d923e5 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -78,15 +78,6 @@ prefs.save_preferences() SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Arrivalrattle", "[!(prefs.toggles & PREFTOGGLE_DISABLE_ARRIVALRATTLE) ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, maybe you should rethink where your life went so wrong. -/client/verb/togglemidroundantag() - set name = "Toggle Midround Antagonist" - set category = "Preferences" - set desc = "Midround Antagonist" - prefs.toggles ^= PREFTOGGLE_MIDROUND_ANTAG - prefs.save_preferences() - to_chat(usr, "You will [(prefs.toggles & PREFTOGGLE_MIDROUND_ANTAG) ? "now" : "no longer"] be considered for midround antagonist positions.") - SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Midround Antag", "[prefs.toggles & PREFTOGGLE_MIDROUND_ANTAG ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - /client/verb/toggletitlemusic() set name = "Hear/Silence Lobby Music" set category = "Preferences" diff --git a/code/modules/client/verbs/looc.dm b/code/modules/client/verbs/looc.dm index affa69737e7..77e30e7a819 100644 --- a/code/modules/client/verbs/looc.dm +++ b/code/modules/client/verbs/looc.dm @@ -3,155 +3,108 @@ //GLOBAL_VAR_INIT(looc_allowed, 1) //commenting this out might break something but w/e, replaced by one in global config by nsv13 /client/verb/looc(msg as text) - set name = "LOOC" - set desc = "Local OOC, seen only by those in view." - set category = "OOC" - - if(GLOB.say_disabled) //This is here to try to identify lag problems - to_chat(usr, " Speech is currently admin-disabled.") - return - - if(!mob) return - if(!mob.ckey) return - - msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) - var/raw_msg = msg - - if(!msg) - return - - if(!(prefs.chat_toggles & CHAT_LOOC)) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC - to_chat(src, "You have LOOC muted.") - return - - if(is_banned_from(mob.ckey, "OOC")) - to_chat(src, "You have been banned from OOC and LOOC.") - return - - if(!holder) - if(!GLOB.looc_allowed) //nsv13 - ooc_allowed -> looc_allowed - to_chat(src, "LOOC is globally muted.") - return - if(!GLOB.dooc_allowed && (mob.stat == DEAD)) - to_chat(usr, "LOOC for dead mobs has been turned off.") - return - if(prefs.muted & MUTE_LOOC) //nsv13 - MUTE_OOC -> MUTE_LOOC - to_chat(src, "You cannot use LOOC (muted).") - return - if(handle_spam_prevention(msg,MUTE_LOOC)) //nsv13 - MUTE_OOC -> MUTE_LOOC - return - if(findtext(msg, "byond://")) - to_chat(src, "Advertising other servers is not allowed.") - log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]") - return - if(mob.stat) - to_chat(src, "You cannot salt in LOOC while unconscious or dead.") - return - if(istype(mob, /mob/dead)) - to_chat(src, "You cannot use LOOC while ghosting.") - return - - if(OOC_FILTER_CHECK(raw_msg)) - to_chat(src, "That message contained a word prohibited in OOC chat! Consider reviewing the server rules.\n\"[raw_msg]\"") - return - - msg = emoji_parse(msg) - - mob.log_talk(raw_msg, LOG_OOC, tag="LOOC") - - var/list/heard = hearers(7, get_top_level_mob(src.mob)) - + set name = "LOOC" + set desc = "Local OOC, seen only by those in view." + set category = "OOC" + + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, " Speech is currently admin-disabled.") + return + + if(!mob?.ckey) + return + + msg = trim(sanitize(msg), MAX_MESSAGE_LEN) + if(!length(msg)) + return + + var/raw_msg = msg + + if(!(prefs.chat_toggles & CHAT_LOOC)) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC + to_chat(src, "You have LOOC muted.") + return + + if(is_banned_from(mob.ckey, BAN_OOC)) + to_chat(src, "You have been banned from OOC and LOOC.") + return + + if(!holder) + if(!GLOB.looc_allowed) //nsv13 - ooc_allowed -> looc_allowed + to_chat(src, "LOOC is globally muted.") + return + if(!GLOB.dooc_allowed && (mob.stat == DEAD)) + to_chat(usr, "LOOC for dead mobs has been turned off.") + return + if(prefs.muted & MUTE_LOOC) //nsv13 - MUTE_OOC -> MUTE_LOOC + to_chat(src, "You cannot use LOOC (muted).") + return + if(handle_spam_prevention(msg, MUTE_LOOC)) //nsv13 - MUTE_OOC -> MUTE_LOOC + return + if(findtext(msg, "byond://")) + to_chat(src, "Advertising other servers is not allowed.") + log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]") + return + if(mob.stat) + to_chat(src, "You cannot salt in LOOC while unconscious or dead.") + return + if(isdead(mob)) + to_chat(src, "You cannot use LOOC while ghosting.") + return + + if(OOC_FILTER_CHECK(raw_msg)) + to_chat(src, "That message contained a word prohibited in OOC chat! Consider reviewing the server rules.\n\"[raw_msg]\"") + return + + msg = emoji_parse(msg) + + mob.log_talk(raw_msg, LOG_OOC, tag="LOOC") + + // Search everything in the view for anything that might be a mob, or contain a mob. + var/list/client/targets = list() + var/list/turf/in_view = list() //NSV13 - AI QoL - Start //so the ai can post looc text - if(istype(mob, /mob/living/silicon/ai)) - var/mob/living/silicon/ai/ai = mob - heard = hearers(7, get_top_level_mob(ai.eyeobj)) - //so the ai can see looc text - for(var/mob/living/silicon/ai/ai as anything in GLOB.ai_list) - if(ai.client && !(ai in heard) && (ai.eyeobj in heard)) - heard += ai + if(istype(mob, /mob/living/silicon/ai)) + var/mob/living/silicon/ai/ai = mob + for(var/turf/viewed_turf in view(get_turf(ai.eyeobj))) + in_view[viewed_turf] = TRUE + else + for(var/turf/viewed_turf in view(get_turf(mob))) + in_view[viewed_turf] = TRUE //NSV13 - AI QoL - Stop - - for(var/mob/M as() in heard) - if(!M.client) - continue - var/client/C = M.client - if (C in GLOB.admins) - continue //they are handled after that - - if (isobserver(M)) - continue //Also handled later. - - if(C.prefs.chat_toggles & CHAT_LOOC) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC -// var/display_name = src.key -// if(holder) -// if(holder.fakekey) -// if(C.holder) -// display_name = "[holder.fakekey]/([src.key])" -// else -// display_name = holder.fakekey - to_chat(C,"LOOC: [src.mob.name]: [msg]") - - for(var/client/C in GLOB.admins) - if(C.prefs.chat_toggles & CHAT_LOOC) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC - var/prefix = "(R)LOOC" - if (C.mob in heard) - prefix = "LOOC" - to_chat(C,"[ADMIN_FLW(usr)][prefix]: [src.key]/[src.mob.name]: [msg]") + for(var/client/client in GLOB.clients) + if(!client.mob || !(client.prefs.chat_toggles & CHAT_LOOC) || (client in GLOB.admins)) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC + continue + //NSV13 - LOOC AI Stuff - Start + if(istype(client.mob, /mob/living/silicon/ai)) + var/mob/living/silicon/ai/ai = client.mob + if(in_view[get_turf(ai.eyeobj)]) + targets |= client + to_chat(client, "LOOC: [mob.name]: [msg]", avoid_highlighting = (client == src)) + else if(in_view[get_turf(client.mob)]) //NSV13 - LOOC AI Stuff - Stop + targets |= client + to_chat(client, "LOOC: [mob.name]: [msg]", avoid_highlighting = (client == src)) + + for(var/client/client in GLOB.admins) + if(!(client.prefs.chat_toggles & CHAT_LOOC)) //nsv13 - toggles -> chat_toggles, CHAT_OOC -> CHAT_LOOC + continue + var/prefix = "[(client in targets) ? "" : "(R)"]LOOC" + to_chat(client, "[prefix]: [ADMIN_LOOKUPFLW(mob)]: [msg]", avoid_highlighting = (client == src)) /proc/toggle_looc(toggle = null) //nsv13 - adds a toggle for looc - if(toggle != null) //if we're specifically en/disabling looc - if(toggle != GLOB.looc_allowed) - GLOB.looc_allowed = toggle - else - return - else //otherwise just toggle it - GLOB.looc_allowed = !GLOB.looc_allowed + if(toggle != null) //if we're specifically en/disabling looc + if(toggle != GLOB.looc_allowed) + GLOB.looc_allowed = toggle + else + return + else //otherwise just toggle it + GLOB.looc_allowed = !GLOB.looc_allowed /proc/log_looc(text) - if (CONFIG_GET(flag/log_ooc)) - WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]LOOC: [text]") + if (CONFIG_GET(flag/log_ooc)) + WRITE_FILE(GLOB.world_game_log, "\[[time_stamp()]]LOOC: [text]") ////////////////////FLAVOUR TEXT NSV13//////////////////// /mob var/flavour_text = "" - -/mob/proc/update_flavor_text() - set src in usr - - if(usr != src) - usr << "No." - var/msg = sanitize(input(usr,"Set the flavor text in your 'examine' verb. Can also be used for OOC notes about your character.","Flavour Text",html_decode(flavour_text)) as message|null) - - if(msg) - msg = copytext(msg, 1, MAX_MESSAGE_LEN) - msg = html_encode(msg) - - flavour_text = msg - -/mob/proc/warn_flavor_changed() - if(flavour_text && flavour_text != "") // don't spam people that don't use it! - src << "

              OOC Warning:

              " - src << "Your flavor text is likely out of date! Change" - -/mob/proc/print_flavor_text() - if(flavour_text && flavour_text != "") - var/msg = replacetext(flavour_text, "\n", " ") - if(length(msg) <= 100) - return "[msg]" - else - return "[copytext(msg, 1, 97)]... More..." - -//Needed for LOOC and flavour text - -/mob/proc/get_top_level_mob() - if(istype(src.loc,/mob)&&src.loc!=src) - var/mob/M=src.loc - return M.get_top_level_mob() - return src - -/proc/get_top_level_mob(var/mob/S) - if(istype(S.loc,/mob)&&S.loc!=S) - var/mob/M=S.loc - return M.get_top_level_mob() - return S +//NSV13 - flavour text - Don't think this thing actually does anything - END diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index 955902e9e40..a956339c4a1 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -25,7 +25,7 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8") if(prefs.muted & MUTE_OOC) to_chat(src, "You cannot use OOC (muted).") return - if(is_banned_from(ckey, "OOC")) + if(is_banned_from(ckey, BAN_OOC)) to_chat(src, "You have been banned from OOC.") return if(QDELETED(src)) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index c64b828b87f..08cb9cf5ef0 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -215,6 +215,11 @@ if(ispath(picked_item, /obj/item/card/id)) var/mob/living/carbon/human/H = user H?.sec_hud_set_ID() + if(istype(target, /obj/item/modular_computer/tablet/pda)) + var/mob/living/carbon/human/H = user + H?.sec_hud_set_ID() + var/obj/item/modular_computer/tablet/pda/PDA = target + PDA.update_id_display() var/obj/item/thing = target thing.update_slot_icon() @@ -700,25 +705,25 @@ item_state = "syndie_headset" bang_protect = 3 -/obj/item/pda/chameleon - name = "PDA" +/obj/item/modular_computer/tablet/pda/chameleon + name = "tablet" var/datum/action/item_action/chameleon/change/chameleon_action -/obj/item/pda/chameleon/Initialize(mapload) +/obj/item/modular_computer/tablet/pda/chameleon/Initialize(mapload) . = ..() chameleon_action = new(src) - chameleon_action.chameleon_type = /obj/item/pda - chameleon_action.chameleon_name = "PDA" - chameleon_action.chameleon_blacklist = typecacheof(list(/obj/item/pda/heads, /obj/item/pda/ai, /obj/item/pda/ai/pai), only_root_path = TRUE) + chameleon_action.chameleon_type = /obj/item/modular_computer/tablet/pda + chameleon_action.chameleon_name = "tablet" + chameleon_action.chameleon_blacklist = typecacheof(list(/obj/item/modular_computer/tablet/pda/heads), only_root_path = TRUE) chameleon_action.initialize_disguises() -/obj/item/pda/chameleon/emp_act(severity) +/obj/item/modular_computer/tablet/pda/chameleon/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) return chameleon_action.emp_randomise() -/obj/item/pda/chameleon/broken/Initialize(mapload) +/obj/item/modular_computer/tablet/pda/chameleon/broken/Initialize(mapload) . = ..() chameleon_action.emp_randomise(INFINITY) diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index 9d0751c5ae2..630e2a33f4d 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -172,7 +172,7 @@ belt = /obj/item/gun/energy/e_gun l_pocket = /obj/item/pen back = /obj/item/storage/backpack/satchel - r_pocket = /obj/item/pda/heads + r_pocket = /obj/item/modular_computer/tablet/pda/heads l_hand = /obj/item/clipboard id = /obj/item/card/id/centcom @@ -180,10 +180,9 @@ if(visualsOnly) return - var/obj/item/pda/heads/pda = H.r_store - pda.owner = H.real_name - pda.ownjob = JOB_CENTCOM_OFFICIAL - pda.update_label() + var/obj/item/modular_computer/tablet/pda/heads/pda = H.r_store + pda.saved_identification = H.real_name + pda.saved_job = JOB_CENTCOM_OFFICIAL var/obj/item/card/id/W = H.wear_id W.icon_state = "centcom" @@ -362,7 +361,7 @@ /datum/outfit/centcom_clown name = "Code Banana ERT" id = /obj/item/card/id/centcom - belt = /obj/item/pda/clown + belt = /obj/item/modular_computer/tablet/pda/clown ears = /obj/item/radio/headset/headset_cent uniform = /obj/item/clothing/under/rank/civilian/clown back = /obj/item/storage/backpack/clown diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 1cbf8c1bfe0..85ad5994a3e 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -195,7 +195,7 @@ l_pocket = /obj/item/melee/transforming/energy/sword/saber l_hand = /obj/item/storage/secure/briefcase id = /obj/item/card/id/syndicate - belt = /obj/item/pda/heads + belt = /obj/item/modular_computer/tablet/pda/heads /datum/outfit/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) var/obj/item/clothing/under/U = H.w_uniform @@ -215,10 +215,9 @@ SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/ammo_box/a357, null, TRUE, TRUE) SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/grenade/plastic/x4, null, TRUE, TRUE) - var/obj/item/pda/heads/pda = H.belt - pda.owner = H.real_name - pda.ownjob = "Reaper" - pda.update_label() + var/obj/item/modular_computer/tablet/pda/heads/pda = H.belt + pda.saved_identification = H.real_name + pda.saved_job = "Reaper" var/obj/item/card/id/syndicate/W = H.wear_id W.access = get_all_accesses() diff --git a/code/modules/clothing/outfits/vr.dm b/code/modules/clothing/outfits/vr.dm index 1f12fc05724..bfd90cf8825 100644 --- a/code/modules/clothing/outfits/vr.dm +++ b/code/modules/clothing/outfits/vr.dm @@ -33,9 +33,9 @@ W.implant(H) var/obj/item/implant/explosive/E = new/obj/item/implant/explosive(H) E.implant(H) - H.faction |= ROLE_SYNDICATE + H.faction |= FACTION_SYNDICATE H.update_icons() /obj/item/paper/fluff/vr/fluke_ops name = "Where is my uplink?" - info = "Use the radio in your backpack." + default_raw_text = "Use the radio in your backpack." diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 84e1e9a693f..43ce2baed00 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -684,7 +684,7 @@ icon_state = "hardsuit0-sec" item_state = "sec_helm" hardsuit_type = "sec" - armor = list("melee" = 35, "bullet" = 15, "laser" = 30,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "stamina" = 50) + armor = list("melee" = 35, "bullet" = 45, "laser" = 15,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "stamina" = 50) //NSV13 /obj/item/clothing/suit/space/hardsuit/security @@ -693,7 +693,7 @@ desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor." item_state = "sec_hardsuit" supports_variations = DIGITIGRADE_VARIATION - armor = list("melee" = 35, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "stamina" = 50) + armor = list("melee" = 35, "bullet" = 45, "laser" = 15, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "stamina" = 50) //NSV13 helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security /obj/item/clothing/suit/space/hardsuit/security/Initialize(mapload) @@ -706,7 +706,7 @@ desc = "A special bulky helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor." icon_state = "hardsuit0-hos" hardsuit_type = "hos" - armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95, "stamina" = 60) + armor = list("melee" = 45, "bullet" = 60, "laser" = 15, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95, "stamina" = 60) //NSV13 /obj/item/clothing/suit/space/hardsuit/security/head_of_security @@ -714,7 +714,7 @@ name = "head of security's hardsuit" supports_variations = DIGITIGRADE_VARIATION desc = "A special bulky suit that protects against hazardous, low pressure environments. Has an additional layer of armor." - armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95, "stamina" = 60) + armor = list("melee" = 45, "bullet" = 60, "laser" = 15, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95, "stamina" = 60) //NSV13 helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos jetpack = /obj/item/tank/jetpack/suit @@ -724,7 +724,7 @@ icon_state = "swat2helm" item_state = "swat2helm" desc = "A tactical SWAT helmet MK.II." - armor = list("melee" = 40, "bullet" = 50, "laser" = 50, "energy" = 60, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100, "stamina" = 60) + armor = list("melee" = 40, "bullet" = 50, "laser" = 20, "energy" = 60, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100, "stamina" = 60) //NSV13 resistance_flags = FIRE_PROOF | ACID_PROOF flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT heat_protection = HEAD @@ -738,7 +738,7 @@ desc = "A MK.II SWAT suit with streamlined joints and armor made out of superior materials, insulated against intense heat. The most advanced tactical armor available." icon_state = "swat2" item_state = "swat2" - armor = list("melee" = 40, "bullet" = 50, "laser" = 50, "energy" = 60, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100, "stamina" = 60) + armor = list("melee" = 40, "bullet" = 50, "laser" = 20, "energy" = 60, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100, "stamina" = 60) //NSV13 resistance_flags = FIRE_PROOF | ACID_PROOF heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT //this needed to be added a long fucking time ago diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 08dfd38df59..23e04b1da5e 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -52,7 +52,7 @@ Contains: icon_state = "heavy" item_state = "swat_suit" allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat) - armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 30, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100, "stamina" = 60) + armor = list("melee" = 40, "bullet" = 45, "laser" = 15,"energy" = 30, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100, "stamina" = 60) //NSV13 strip_delay = 120 resistance_flags = FIRE_PROOF | ACID_PROOF move_sound = list('sound/effects/suitstep1.ogg', 'sound/effects/suitstep2.ogg') @@ -509,7 +509,7 @@ Contains: icon_state = "hunter" item_state = "swat_suit" allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat) - armor = list(melee = 60, bullet = 40, laser = 40, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100, stamina = 70) + armor = list(melee = 60, bullet = 50, laser = 15, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100, stamina = 70) //NSV13 strip_delay = 130 resistance_flags = FIRE_PROOF | ACID_PROOF diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 7855061c549..869ef14092a 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -9,7 +9,7 @@ equip_delay_other = 40 max_integrity = 250 resistance_flags = NONE - armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "stamina" = 30) + armor = list("melee" = 30, "bullet" = 30, "laser" = 15, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "stamina" = 30) //NSV13 clothing_flags = THICKMATERIAL /obj/item/clothing/suit/armor/Initialize(mapload) @@ -50,7 +50,7 @@ icon_state = "secjacket" item_state = "secjacket" body_parts_covered = CHEST|ARMS - armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 35, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 45, "acid" = 45, "stamina" = 30) + armor = list("melee" = 25, "bullet" = 25, "laser" = 10, "energy" = 35, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 45, "acid" = 45, "stamina" = 30) //NSV13 /obj/item/clothing/suit/armor/hos name = "armored greatcoat" @@ -58,7 +58,7 @@ icon_state = "hos" item_state = "greatcoat" body_parts_covered = CHEST|GROIN|ARMS|LEGS - armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 90, "stamina" = 40) + armor = list("melee" = 30, "bullet" = 45, "laser" = 15, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 90, "stamina" = 40) //NSV13 cold_protection = CHEST|GROIN|LEGS|ARMS heat_protection = CHEST|GROIN|LEGS|ARMS strip_delay = 80 @@ -77,6 +77,7 @@ icon_state = "warden_alt" item_state = "armor" body_parts_covered = CHEST|GROIN|ARMS + armor = list("melee" = 30, "bullet" = 45, "laser" = 15, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 90, "stamina" = 40) //NSV13 cold_protection = CHEST|GROIN|ARMS|HANDS heat_protection = CHEST|GROIN|ARMS|HANDS strip_delay = 70 @@ -104,7 +105,7 @@ icon_state = "capcarapace" item_state = "armor" body_parts_covered = CHEST|GROIN - armor = list("melee" = 50, "bullet" = 40, "laser" = 50, "energy" = 60, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 90, "stamina" = 40) + armor = list("melee" = 50, "bullet" = 50, "laser" = 20, "energy" = 60, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 90, "stamina" = 40) //NSV13 dog_fashion = null resistance_flags = FIRE_PROOF @@ -125,7 +126,7 @@ icon_state = "capjacket" item_state = "capspacesuit" body_parts_covered = CHEST|ARMS - armor = list("melee" = 40, "bullet" = 30, "laser" = 40, "energy" = 50, "bomb" = 55, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 80, "stamina" = 40) + armor = list("melee" = 40, "bullet" = 50, "laser" = 20, "energy" = 50, "bomb" = 55, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 80, "stamina" = 40) //NSV13 /obj/item/clothing/suit/armor/riot name = "riot suit" @@ -282,7 +283,7 @@ equip_delay_other = 40 max_integrity = 200 resistance_flags = FLAMMABLE - armor = list("melee" = 20, "bullet" = 10, "laser" = 30, "energy" = 40, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 50, "stamina" = 30) + armor = list("melee" = 20, "bullet" = 20, "laser" = 10, "energy" = 40, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 50, "stamina" = 30) //NSV13 /obj/item/clothing/suit/armor/vest/russian name = "russian vest" @@ -299,4 +300,4 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT - armor = list("melee" = 25, "bullet" = 20, "laser" = 20, "energy" = 30, "bomb" = 20, "bio" = 50, "rad" = 20, "fire" = -10, "acid" = 50, "stamina" = 30) + armor = list("melee" = 25, "bullet" = 30, "laser" = 10, "energy" = 30, "bomb" = 20, "bio" = 50, "rad" = 20, "fire" = -10, "acid" = 50, "stamina" = 30) //NSV13 diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 4ae54eca262..c4b4c7ca0bc 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -140,7 +140,12 @@ to_chat(user, "You attach [I] to [src].") var/accessory_color = attached_accessory.icon_state - accessory_overlay = mutable_appearance('icons/mob/accessories.dmi', "[accessory_color]") + // NSV13 starts here - Checks if accessory is NSV exclusive + if(icon_exists('nsv13/icons/mob/accessories.dmi', accessory_color)) + accessory_overlay = mutable_appearance('nsv13/icons/mob/accessories.dmi', "[accessory_color]") + else + accessory_overlay = mutable_appearance('icons/mob/accessories.dmi', "[accessory_color]") + // NSV13 ends here accessory_overlay.alpha = attached_accessory.alpha accessory_overlay.color = attached_accessory.color diff --git a/code/modules/crew_objectives/civilian_objectives.dm b/code/modules/crew_objectives/civilian_objectives.dm index 43888838141..f300b9e4929 100644 --- a/code/modules/crew_objectives/civilian_objectives.dm +++ b/code/modules/crew_objectives/civilian_objectives.dm @@ -178,8 +178,8 @@ /datum/objective/crew/slipster/check_completion() var/list/uniqueslips = list() if(owner?.current) - for(var/obj/item/pda/clown/PDA in owner.current.get_contents()) - for(var/mob/living/carbon/human/H in PDA.slipvictims) + for(var/obj/item/modular_computer/tablet/pda/clown/PDA in owner.current.get_contents()) + for(var/H in PDA.slip_victims) uniqueslips |= H if(uniqueslips.len >= target_amount) return TRUE diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index 93dca41ebaa..861bb5058f9 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -41,16 +41,18 @@ /obj/item/detective_scanner/proc/PrintReport() // Create our paper - var/obj/item/paper/P = new(get_turf(src)) - P.name = "paper- 'Scanner Report'" - P.info = "
              Scanner Report


              " - P.info += jointext(log, "
              ") - P.info += "
              Notes:
              " - P.update_icon() + var/obj/item/paper/report_paper = new(get_turf(src)) + report_paper.name = "paper- 'Scanner Report'" + var/report_text = "
              Scanner Report


              " + report_text += jointext(log, "
              ") + report_text += "
              Notes:
              " + + report_paper.add_raw_text(report_text) + report_paper.update_appearance() if(ismob(loc)) var/mob/M = loc - M.put_in_hands(P) + M.put_in_hands(report_paper) to_chat(M, "Report printed. Log cleared.") // Clear the logs @@ -99,7 +101,7 @@ var/obj/effect/targeteffect = A if (targeteffect && istype(targeteffect) && targeteffect.forensic_protected) - fingerprints = list() + fingerprints = list() for(var/i in 1 to 2) LAZYADD(fingerprints,pick("#$^@&#*$H3LP&$(@US^$&#^@#","&$(T@&#C@ME5@##$^@&","^@(#&$ET@US&FR^E#^$&#","#$^@&M*N$US^$(@&#^$&#^@#","&$(@&#^$&#^@##$^@&","^@R(#E$(D@(R&$U&#M^&#","$TH@Y#*$KN@W(@&#^$&#^@#","#$M^DN*S$^@(#&$(@&#^$&#^@##","#","#$^@&#*$^@(#&$(@","#","#$^@&#&#^@","#","@(#&$(@&#^$&#^@")) blood = list("#$^@&LO0K&#@#" = "&$(@AW@Y#$^&") diff --git a/code/modules/emoji/emoji_parse.dm b/code/modules/emoji/emoji_parse.dm index 185341d294c..a7f6c06613f 100644 --- a/code/modules/emoji/emoji_parse.dm +++ b/code/modules/emoji/emoji_parse.dm @@ -2,7 +2,6 @@ . = text if(!CONFIG_GET(flag/emojis)) return - var/static/list/emojis = icon_states(icon('icons/emoji.dmi')) var/parsed = "" var/pos = 1 var/search = 0 diff --git a/code/modules/events/abductor.dm b/code/modules/events/abductor.dm index b089c96b5f5..e521dc6d02d 100755 --- a/code/modules/events/abductor.dm +++ b/code/modules/events/abductor.dm @@ -15,7 +15,7 @@ fakeable = FALSE //Nothing to fake here /datum/round_event/ghost_role/abductor/spawn_role() - var/list/mob/dead/observer/candidates = get_candidates(ROLE_ABDUCTOR, null, ROLE_ABDUCTOR) + var/list/mob/dead/observer/candidates = get_candidates(ROLE_ABDUCTOR, /datum/role_preference/midround_ghost/abductor) if(candidates.len < 2) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index 3ff8a552a02..b3579514588 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -62,7 +62,7 @@ message_admins("An event attempted to spawn an alien but no suitable vents were found. Shutting down.") return MAP_ERROR - var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) + var/list/candidates = get_candidates(ROLE_ALIEN, /datum/role_preference/midround_ghost/xenomorph) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 662cab5c991..0869a6f35ee 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -22,7 +22,7 @@ /datum/round_event/ghost_role/blob/spawn_role() if(!GLOB.blobstart.len) return MAP_ERROR - var/list/candidates = get_candidates(ROLE_BLOB, null, ROLE_BLOB) + var/list/candidates = get_candidates(ROLE_BLOB, /datum/role_preference/midround_ghost/blob) if(!candidates.len) return NOT_ENOUGH_PLAYERS var/mob/dead/observer/new_blob = pick(candidates) diff --git a/code/modules/events/creep_awakening.dm b/code/modules/events/creep_awakening.dm index 1b5643bc53f..b45b45ada95 100644 --- a/code/modules/events/creep_awakening.dm +++ b/code/modules/events/creep_awakening.dm @@ -10,7 +10,7 @@ /datum/round_event/obsessed/start() for(var/mob/living/carbon/human/H in shuffle(GLOB.player_list)) - if(!H.client || !(ROLE_OBSESSED in H.client.prefs.be_special)) + if(!H.client?.should_include_for_role(ROLE_OBSESSED, /datum/role_preference/midround_living/obsessed)) continue if(H.stat == DEAD) continue diff --git a/code/modules/events/devil.dm b/code/modules/events/devil.dm index 9073171c98c..7000d2b3366 100644 --- a/code/modules/events/devil.dm +++ b/code/modules/events/devil.dm @@ -19,7 +19,7 @@ return MAP_ERROR //selecting a candidate player - var/list/candidates = get_candidates(ROLE_DEVIL, null, ROLE_DEVIL) + var/list/candidates = get_candidates(ROLE_DEVIL, /datum/role_preference/midround_ghost/devil) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/fugitive_spawning.dm b/code/modules/events/fugitive_spawning.dm index 29b3e3149a3..5dd61663786 100644 --- a/code/modules/events/fugitive_spawning.dm +++ b/code/modules/events/fugitive_spawning.dm @@ -22,7 +22,7 @@ return MAP_ERROR var/turf/landing_turf = pick(possible_spawns) var/list/possible_backstories = list() - var/list/candidates = get_candidates(ROLE_TRAITOR, null, ROLE_TRAITOR) + var/list/candidates = get_candidates(ROLE_TRAITOR, /datum/role_preference/midround_ghost/fugitive) if(candidates.len >= 1) //solo refugees if(prob(30)) possible_backstories.Add("waldo") //less common as it comes with magicks and is kind of immershun shattering diff --git a/code/modules/events/ghost_role.dm b/code/modules/events/ghost_role.dm index 67ef4002e73..70546de1fa9 100644 --- a/code/modules/events/ghost_role.dm +++ b/code/modules/events/ghost_role.dm @@ -55,14 +55,14 @@ // players could be found, and just runtime if anything else happens return TRUE -/datum/round_event/ghost_role/proc/get_candidates(jobban, gametypecheck, be_special) +/datum/round_event/ghost_role/proc/get_candidates(banning_key, role_preference, poll_ignore = null) // Returns a list of candidates in priority order, with candidates from // `priority_candidates` first, and ghost roles randomly shuffled and // appended after var/list/mob/dead/observer/regular_candidates // don't get their hopes up if(priority_candidates.len < minimum_required) - regular_candidates = pollGhostCandidates("Do you wish to be considered for the special role of '[role_name]'?", jobban, gametypecheck, be_special) + regular_candidates = pollGhostCandidates("Do you wish to be considered for the special role of '[role_name]'?", banning_key, role_preference, ignore_category = poll_ignore) else regular_candidates = list() diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index ae0903d0f23..f887ab485d7 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -8,9 +8,9 @@ /obj/item/toy/xmas_cracker/attack(mob/target, mob/user) if( !cracked && ishuman(target) && (target.stat == CONSCIOUS) && !target.get_active_held_item() ) target.visible_message("[user] and [target] pop \an [src]! *pop*", "You pull \an [src] with [target]! *pop*", "You hear a pop.") - var/obj/item/paper/Joke = new /obj/item/paper(user.loc) - Joke.name = "[pick("awful","terrible","unfunny")] joke" - Joke.info = pick("What did one snowman say to the other?\n\n'Is it me or can you smell carrots?'", + var/obj/item/paper/joke_paper = new /obj/item/paper(user.loc) + joke_paper.name = "[pick("awful","terrible","unfunny")] joke" + joke_paper.add_raw_text(pick("What did one snowman say to the other?\n\n'Is it me or can you smell carrots?'", "Why couldn't the snowman get laid?\n\nHe was frigid!", "Where are santa's helpers educated?\n\nNowhere, they're ELF-taught.", "What happened to the man who stole advent calanders?\n\nHe got 25 days.", @@ -19,7 +19,8 @@ "What do you get from eating tree decorations?\n\nTinsilitis!", "What do snowmen wear on their heads?\n\nIce caps!", "Why is Christmas just like life on ss13?\n\nYou do all the work and the fat guy gets all the credit.", - "Why doesn't Santa have any children?\n\nBecause he only comes down the chimney.") + "Why doesn't Santa have any children?\n\nBecause he only comes down the chimney.")) + joke_paper.update_appearance() new /obj/item/clothing/head/festive(target.loc) user.update_icons() cracked = 1 @@ -29,7 +30,7 @@ other_half.icon_state = "cracker2" target.put_in_active_hand(other_half) playsound(user, 'sound/effects/snap.ogg', 50, 1) - return 1 + return TRUE return ..() /obj/item/clothing/head/festive @@ -85,7 +86,7 @@ priority_announce("Santa is coming to town!", "Unknown Transmission", SSstation.announcer.get_rand_alert_sound()) /datum/round_event/santa/start() - var/list/candidates = pollGhostCandidates("Santa is coming to town! Do you want to be Santa?", poll_time=150) + var/list/candidates = pollGhostCandidates("Santa is coming to town! Do you want to be Santa?", poll_time = 15 SECONDS) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) santa = new /mob/living/carbon/human(pick(GLOB.blobstart)) diff --git a/code/modules/events/nightmare.dm b/code/modules/events/nightmare.dm index f0311378d3f..03ef2578f3b 100644 --- a/code/modules/events/nightmare.dm +++ b/code/modules/events/nightmare.dm @@ -12,7 +12,7 @@ fakeable = FALSE /datum/round_event/ghost_role/nightmare/spawn_role() - var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) + var/list/candidates = get_candidates(ROLE_NIGHTMARE, /datum/role_preference/midround_ghost/nightmare) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/operative.dm b/code/modules/events/operative.dm index e655d8b0e33..bea4dad09d1 100644 --- a/code/modules/events/operative.dm +++ b/code/modules/events/operative.dm @@ -11,7 +11,7 @@ fakeable = FALSE /datum/round_event/ghost_role/operative/spawn_role() - var/list/candidates = get_candidates(ROLE_OPERATIVE, null, ROLE_OPERATIVE) + var/list/candidates = get_candidates(ROLE_OPERATIVE, /datum/role_preference/midround_ghost/nuclear_operative) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index a4764953150..6a6b5e564ff 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -65,7 +65,7 @@ GLOBAL_VAR_INIT(pirates_spawned, FALSE) if(!skip_answer_check && threat?.answered == PIRATE_RESPONSE_PAY) return - var/list/candidates = pollGhostCandidates("Do you wish to be considered for pirate crew?", ROLE_TRAITOR) + var/list/candidates = pollGhostCandidates("Do you wish to be considered for pirate crew?", ROLE_SPACE_PIRATE, /datum/role_preference/midround_ghost/space_pirate, 15 SECONDS) shuffle_inplace(candidates) var/datum/map_template/shuttle/pirate/default/ship = new diff --git a/code/modules/events/sentience.dm b/code/modules/events/sentience.dm index 06cfa5e5843..7139a65377a 100644 --- a/code/modules/events/sentience.dm +++ b/code/modules/events/sentience.dm @@ -40,7 +40,7 @@ GLOBAL_LIST_INIT(high_priority_sentience, typecacheof(list( /datum/round_event/ghost_role/sentience/spawn_role() var/list/mob/dead/observer/candidates - candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) + candidates = get_candidates(ROLE_SENTIENT_ANIMAL, null) // find our chosen mob to breathe life into // Mobs have to be simple animals, mindless, on station, and NOT holograms. diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index 3a70bf4f34e..8c1d645b6a5 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -245,7 +245,7 @@ /obj/item/paper/fluff/bee_objectives name = "Objectives of a Bee Liberation Front Operative" - info = "Objective #1. Liberate all bees on the NT transport vessel 2416/B. Success!
              Objective #2. Escape alive. Failed." + default_raw_text = "Objective #1. Liberate all bees on the NT transport vessel 2416/B. Success!
              Objective #2. Escape alive. Failed." /obj/machinery/syndicatebomb/shuttle_loan/Initialize(mapload) . = ..() @@ -256,10 +256,10 @@ /obj/item/paper/fluff/cargo/bomb name = "hastly scribbled note" - info = "GOOD LUCK!" + default_raw_text = "GOOD LUCK!" /obj/item/paper/fluff/cargo/bomb/allyourbase - info = "Somebody set us up the bomb!" + default_raw_text = "Somebody set us up the bomb!" #undef HIJACK_SYNDIE #undef RUSKY_PARTY diff --git a/code/modules/events/space_dragon.dm b/code/modules/events/space_dragon.dm index 731cda46c4a..95e7f509cfd 100644 --- a/code/modules/events/space_dragon.dm +++ b/code/modules/events/space_dragon.dm @@ -17,7 +17,7 @@ priority_announce("It appears a lifeform with magical traces is approaching [station_name()], please stand-by.", "Lifesign Alert", SSstation.announcer.get_rand_alert_sound()) /datum/round_event/ghost_role/space_dragon/spawn_role() - var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) + var/list/candidates = get_candidates(ROLE_SPACE_DRAGON, /datum/role_preference/midround_ghost/space_dragon) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/special_antag_event.dm b/code/modules/events/special_antag_event.dm index 6fbe7b39e73..50b1932d2eb 100644 --- a/code/modules/events/special_antag_event.dm +++ b/code/modules/events/special_antag_event.dm @@ -3,9 +3,10 @@ typepath = /datum/round_event/create_special_antag auto_add = FALSE //Antagonist data - var/antagonist_datum = /datum/antagonist/special + var/datum/antagonist/antagonist_datum = /datum/antagonist/special var/antag_name //The datum of the antag E.G. /datum/antagonist/special/undercover - var/preference_type = ROLE_TRAITOR + var/preference_type = /datum/role_preference/antagonist/traitor + var/banning_key = BAN_ROLE_ALL_ANTAGONISTS var/protected_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_HEADOFPERSONNEL, JOB_NAME_CHIEFMEDICALOFFICER, JOB_NAME_CHIEFENGINEER, JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_CAPTAIN, JOB_NAME_MASTERATARMS) //NSV13 - MPs, XO, MAA /datum/round_event_control/spawn_special_antagonist/runEvent() @@ -13,6 +14,7 @@ E.antag_datum = antagonist_datum E.role_name = antag_name E.preference_type = preference_type + E.banning_key = banning_key E.protected_jobs = protected_jobs E.current_players = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1) E.control = src @@ -34,15 +36,16 @@ /datum/round_event/create_special_antag fakeable = FALSE var/role_name - var/antag_datum //The datum of the antag E.G. /datum/antagonist/special/undercover - var/preference_type = ROLE_TRAITOR + var/datum/antagonist/antag_datum //The datum of the antag E.G. /datum/antagonist/special/undercover + var/banning_key = BAN_ROLE_ALL_ANTAGONISTS + var/preference_type = /datum/role_preference/antagonist/traitor var/protected_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_DETECTIVE, JOB_NAME_HEADOFSECURITY, JOB_NAME_HEADOFPERSONNEL, JOB_NAME_CHIEFMEDICALOFFICER, JOB_NAME_CHIEFENGINEER, JOB_NAME_RESEARCHDIRECTOR, JOB_NAME_CAPTAIN, JOB_NAME_MASTERATARMS) //NSV13 - XO, MAA, MP /datum/round_event/create_special_antag/start() for(var/mob/living/carbon/human/H in shuffle(GLOB.player_list)) - if(!H.client || !(preference_type in H.client.prefs.be_special) || !(H.client.prefs.toggles & PREFTOGGLE_MIDROUND_ANTAG)) + if(!H.client) continue - if(is_banned_from(H, list(preference_type))) + if(!H.client.should_include_for_role(initial(antag_datum.banning_key), preference_type)) continue if(H.stat == DEAD) continue diff --git a/code/modules/events/wizard/imposter.dm b/code/modules/events/wizard/imposter.dm index 1c8ef95baae..f69d962ce0c 100644 --- a/code/modules/events/wizard/imposter.dm +++ b/code/modules/events/wizard/imposter.dm @@ -10,7 +10,7 @@ if(!ishuman(M.current)) continue var/mob/living/carbon/human/W = M.current - var/list/candidates = pollGhostCandidates("Would you like to be an imposter wizard?", ROLE_WIZARD) + var/list/candidates = pollGhostCandidates("Would you like to be an imposter wizard?", ROLE_WIZARD, /datum/role_preference/midround_ghost/wizard, ignore_category = POLL_IGNORE_WIZARD_HELPER) if(!candidates) return //Sad Trombone var/mob/dead/observer/C = pick(candidates) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 81e5588b5f2..afe3167fe08 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -178,7 +178,7 @@ qdel(src) /obj/item/reagent_containers/food/snacks/monkeycube/syndicate - faction = list("neutral", ROLE_SYNDICATE) + faction = list("neutral", FACTION_SYNDICATE) /obj/item/reagent_containers/food/snacks/monkeycube/gorilla name = "gorilla cube" diff --git a/code/modules/guardian/guardian.dm b/code/modules/guardian/guardian.dm index ba180d60701..3de93224483 100644 --- a/code/modules/guardian/guardian.dm +++ b/code/modules/guardian/guardian.dm @@ -581,7 +581,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /mob/living/simple_animal/hostile/guardian/proc/ResetMe() set waitfor = FALSE - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [summoner?.current?.name]'s [real_name]?", ROLE_HOLOPARASITE, null, FALSE, 10 SECONDS) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [summoner?.current?.name]'s [real_name]?", ROLE_HOLOPARASITE, null, 10 SECONDS) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) key = C.key @@ -674,7 +674,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians return G.next_reset = world.time + GUARDIAN_RESET_COOLDOWN to_chat(src, "You attempt to reset [G.real_name]'s personality...") - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [src.real_name]'s [G.real_name]?", ROLE_HOLOPARASITE, null, FALSE, 100) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [src.real_name]'s [G.real_name]?", ROLE_HOLOPARASITE, null, 10 SECONDS) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) to_chat(G, "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance.") diff --git a/code/modules/guardian/guardianbuilder.dm b/code/modules/guardian/guardianbuilder.dm index 4492b08cacd..e5a97fa23ee 100644 --- a/code/modules/guardian/guardianbuilder.dm +++ b/code/modules/guardian/guardianbuilder.dm @@ -225,7 +225,7 @@ used = FALSE return FALSE // IMPORTANT - if we're debugging, the user gets thrown into the stand - var/list/mob/dead/observer/candidates = debug_mode ? list(user) : pollGhostCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_HOLOPARASITE, null, FALSE, 100, POLL_IGNORE_HOLOPARASITE) + var/list/mob/dead/observer/candidates = debug_mode ? list(user) : pollGhostCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_HOLOPARASITE, null, 10 SECONDS) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) var/mob/living/simple_animal/hostile/guardian/G = new(user, theme, guardian_color) diff --git a/code/modules/guardian/standarrow.dm b/code/modules/guardian/standarrow.dm index c2e6b3457c5..583ee3fc2b4 100644 --- a/code/modules/guardian/standarrow.dm +++ b/code/modules/guardian/standarrow.dm @@ -161,7 +161,7 @@ G.name = new_name /obj/item/stand_arrow/proc/get_stand(mob/living/carbon/H, datum/guardian_stats/stats) - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the Guardian Spirit of [H.real_name]?", ROLE_HOLOPARASITE, null, FALSE, 100, POLL_IGNORE_HOLOPARASITE) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the Guardian Spirit of [H.real_name]?", ROLE_HOLOPARASITE, null, 10 SECONDS) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) var/mob/living/simple_animal/hostile/guardian/G = new(H, GUARDIAN_MAGIC, rgb(rand(1, 255), rand(1, 255), rand(1, 255))) diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index daf44a9187d..82a8008be28 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -223,11 +223,11 @@ /obj/item/paper/fluff/holodeck/trek_diploma name = "paper - Starfleet Academy Diploma" - info = {"

              Starfleet Academy


              Official Diploma


              "} + default_raw_text = {"

              Starfleet Academy


              Official Diploma


              "} /obj/item/paper/fluff/holodeck/disclaimer name = "Holodeck Disclaimer" - info = "Bruises sustained in the holodeck can be healed simply by sleeping." + default_raw_text = "Bruises sustained in the holodeck can be healed simply by sleeping." /obj/vehicle/ridden/scooter/skateboard/pro/holodeck name = "holographic skateboard" diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 7daf32062ec..baf863de848 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -129,4 +129,4 @@ /obj/item/grown/bananapeel/specialpeel/ComponentInitialize() . = ..() - AddComponent(/datum/component/slippery, 40) + AddComponent(/datum/component/slippery, 40, null, 20, TRUE) //NSV13 - re-added stun and accidents diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 78d5d9075c4..21da586edbf 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -238,7 +238,7 @@ if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent(/datum/reagent/lube))) stun_len /= 3 - G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, PROC_REF(handle_slip), G)) + G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, PROC_REF(handle_slip), G), min(stun_len/20,140), TRUE) //NSV13 - re-added stun and accidents /datum/plant_gene/trait/slip/proc/handle_slip(obj/item/reagent_containers/food/snacks/grown/G, mob/M) for(var/datum/plant_gene/trait/T in G.seed.genes) diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 52582b7f224..f5e2676e2da 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -299,7 +299,7 @@ uniform = /obj/item/clothing/under/color/grey id = /obj/item/card/id ears = /obj/item/radio/headset - belt = /obj/item/pda + belt = /obj/item/modular_computer/tablet/pda back = /obj/item/storage/backpack shoes = /obj/item/clothing/shoes/sneakers/black box = /obj/item/storage/box/survival @@ -364,11 +364,11 @@ break H.sec_hud_set_ID() - var/obj/item/pda/PDA = H.get_item_by_slot(pda_slot) + var/obj/item/modular_computer/tablet/pda/PDA = H.get_item_by_slot(pda_slot) if(istype(PDA)) - PDA.owner = H.real_name - PDA.ownjob = J.title - PDA.update_label() + PDA.saved_identification = C.registered_name + PDA.saved_job = C.assignment + PDA.update_id_display() /datum/outfit/job/get_chameleon_disguise_info() var/list/types = ..() @@ -387,7 +387,7 @@ //NSV13 /datum/job/proc/get_rank() return display_rank - + //why is this as part of a job? because it's something every human recieves at roundstart after all other initializations and factors job in. it fits best with the equipment proc //this gives a dormant disease for the virologist to check for. if this disease actually does something to the mob... call me, or your local coder /datum/job/proc/dormant_disease_check(mob/living/carbon/human/H) diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index 7604d8e0332..c0636ae3bb4 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -33,7 +33,7 @@ Assistant /datum/outfit/job/assistant name = JOB_NAME_ASSISTANT jobtype = /datum/job/assistant - belt = /obj/item/pda/assistant + belt = /obj/item/modular_computer/tablet/pda/assistant id = /obj/item/card/id/job/assistant /datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/H) diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index 34336017254..0d4fa293d78 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -32,7 +32,7 @@ id = /obj/item/card/id/job/atmospheric_technician belt = /obj/item/storage/belt/utility/atmostech - l_pocket = /obj/item/pda/atmospheric_technician + l_pocket = /obj/item/modular_computer/tablet/pda/atmospheric_technician ears = /obj/item/radio/headset/headset_eng uniform = /obj/item/clothing/under/rank/engineering/atmospheric_technician r_pocket = /obj/item/analyzer @@ -42,7 +42,6 @@ duffelbag = /obj/item/storage/backpack/duffelbag/engineering box = /obj/item/storage/box/engineer pda_slot = ITEM_SLOT_LPOCKET - backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced/atmos=1) /datum/outfit/job/atmospheric_technician/rig name = "Atmospheric Technician (Hardsuit)" diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index 2e3a5e387a9..c73340a2b30 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -29,7 +29,7 @@ id = /obj/item/card/id/job/bartender glasses = /obj/item/clothing/glasses/sunglasses/advanced/reagent - belt = /obj/item/pda/bartender + belt = /obj/item/modular_computer/tablet/pda/bartender ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/civilian/bartender suit = /obj/item/clothing/suit/armor/vest diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index 9db932adffc..ca02d36530a 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -28,7 +28,7 @@ jobtype = /datum/job/botanist id = /obj/item/card/id/job/botanist - belt = /obj/item/pda/service + belt = /obj/item/modular_computer/tablet/pda/botanist //NSV13 ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/civilian/hydroponics suit = /obj/item/clothing/suit/apron diff --git a/code/modules/jobs/job_types/brig_physician.dm b/code/modules/jobs/job_types/brig_physician.dm index 09446f9114e..83c3afa9744 100644 --- a/code/modules/jobs/job_types/brig_physician.dm +++ b/code/modules/jobs/job_types/brig_physician.dm @@ -34,7 +34,7 @@ jobtype = /datum/job/brig_physician id = /obj/item/card/id/job/brig_physician - belt = /obj/item/pda/brig_physician + belt = /obj/item/modular_computer/tablet/pda/brig_physician ears = /obj/item/radio/headset/headset_medsec uniform = /obj/item/clothing/under/rank/brig_physician shoes = /obj/item/clothing/shoes/sneakers/white diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index a6142c84d98..5b4455796be 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -44,7 +44,7 @@ id = /obj/item/card/id/job/captain belt = /obj/item/melee/classic_baton/telescopic/stunsword //NSV13 - stunsword - l_pocket = /obj/item/pda/captain //NSV13 - moved PDA to pocket + l_pocket = /obj/item/modular_computer/tablet/pda/heads/captain //NSV13 - moved PDA to pocket glasses = /obj/item/clothing/glasses/sunglasses/advanced ears = /obj/item/radio/headset/heads/captain/alt gloves = /obj/item/clothing/gloves/color/captain @@ -52,7 +52,7 @@ suit = /obj/item/clothing/suit/ship/officer //NSV13 - officer's uniform shoes = /obj/item/clothing/shoes/jackboots //NSV13 - boots head = /obj/item/clothing/head/beret/ship/captain //NSV13 - captain's beret - backpack_contents = list(/obj/item/melee/classic_baton/police/telescopic=1, /obj/item/station_charter=1, /obj/item/modular_computer/tablet/preset/advanced/command=1, /obj/item/squad_pager/all_channels=1) //NSV13 - added squad pager + backpack_contents = list(/obj/item/melee/classic_baton/police/telescopic=1, /obj/item/station_charter=1, /obj/item/squad_pager/all_channels=1) //NSV13 - added squad pager backpack = /obj/item/storage/backpack/captain satchel = /obj/item/storage/backpack/satchel/cap diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index 39fb3792933..7cbc4cf31b4 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -30,7 +30,7 @@ jobtype = /datum/job/cargo_technician id = /obj/item/card/id/job/cargo_technician - belt = /obj/item/pda/cargo_technician + belt = /obj/item/modular_computer/tablet/pda/cargo_technician ears = /obj/item/radio/headset/headset_cargo uniform = /obj/item/clothing/under/rank/cargo/tech l_hand = /obj/item/export_scanner diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index 817627572c1..9f26a683f59 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -115,7 +115,7 @@ jobtype = /datum/job/chaplain id = /obj/item/card/id/job/chaplain - belt = /obj/item/pda/chaplain + belt = /obj/item/modular_computer/tablet/pda/chaplain ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/civilian/chaplain backpack_contents = list( diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index daa46e20be3..371a49d7dc7 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -34,7 +34,7 @@ jobtype = /datum/job/chemist id = /obj/item/card/id/job/chemist glasses = /obj/item/clothing/glasses/science - belt = /obj/item/pda/chemist + belt = /obj/item/modular_computer/tablet/pda/chemist ears = /obj/item/radio/headset/headset_med uniform = /obj/item/clothing/under/rank/medical/chemist shoes = /obj/item/clothing/shoes/sneakers/white diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index b2fa2550e31..36c26f07608 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -43,15 +43,14 @@ id = /obj/item/card/id/job/chief_engineer belt = /obj/item/storage/belt/utility/chief/full - l_pocket = /obj/item/pda/heads/chief_engineer + l_pocket = /obj/item/modular_computer/tablet/pda/heads/chief_engineer ears = /obj/item/radio/headset/heads/chief_engineer uniform = /obj/item/clothing/under/rank/engineering/chief_engineer suit = /obj/item/clothing/suit/ship/engineer shoes = /obj/item/clothing/shoes/workboots //NSV13 Give us boots that match head = /obj/item/clothing/head/beret/ce //NSV13 Give us our cool beret back gloves = /obj/item/clothing/gloves/color/black - backpack_contents = list(/obj/item/melee/classic_baton/police/telescopic=1, - /obj/item/modular_computer/tablet/preset/advanced/command=1) + backpack_contents = list(/obj/item/melee/classic_baton/police/telescopic=1) backpack = /obj/item/storage/backpack/industrial satchel = /obj/item/storage/backpack/satchel/eng diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index c9acfa1a485..51db39d1035 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -42,7 +42,7 @@ jobtype = /datum/job/chief_medical_officer id = /obj/item/card/id/job/chief_medical_officer - belt = /obj/item/pda/heads/chief_medical_officer + belt = /obj/item/modular_computer/tablet/pda/heads/chief_medical_officer l_pocket = /obj/item/pinpointer/crew ears = /obj/item/radio/headset/heads/cmo head = /obj/item/clothing/head/beret/durathread @@ -51,8 +51,7 @@ suit = /obj/item/clothing/suit/toggle/labcoat/cmo l_hand = /obj/item/storage/firstaid/medical suit_store = /obj/item/flashlight/pen - backpack_contents = list(/obj/item/melee/classic_baton/police/telescopic=1, - /obj/item/modular_computer/tablet/preset/advanced/command=1) + backpack_contents = list(/obj/item/melee/classic_baton/police/telescopic=1) backpack = /obj/item/storage/backpack/medic satchel = /obj/item/storage/backpack/satchel/med diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index 6d98cbd9fdc..e0ee39ae5c0 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -32,7 +32,7 @@ name = JOB_NAME_CLOWN jobtype = /datum/job/clown - belt = /obj/item/pda/clown + belt = /obj/item/modular_computer/tablet/pda/clown ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/civilian/clown shoes = /obj/item/clothing/shoes/clown_shoes diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index b73c78bf6c3..ec80fd24c33 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -30,7 +30,7 @@ jobtype = /datum/job/cook id = /obj/item/card/id/job/cook - belt = /obj/item/pda/cook + belt = /obj/item/modular_computer/tablet/pda/cook ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/civilian/chef suit = /obj/item/clothing/suit/toggle/chef diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index 0b189b9ef73..c12315e4af9 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -32,7 +32,7 @@ id = /obj/item/card/id/job/curator shoes = /obj/item/clothing/shoes/laceup - belt = /obj/item/pda/curator + belt = /obj/item/modular_computer/tablet/pda/curator ears = /obj/item/radio/headset/headset_curator uniform = /obj/item/clothing/under/rank/civilian/curator l_hand = /obj/item/storage/bag/books diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm index d03ac5990f7..800a8155c73 100644 --- a/code/modules/jobs/job_types/cyborg.dm +++ b/code/modules/jobs/job_types/cyborg.dm @@ -4,7 +4,7 @@ auto_deadmin_role_flags = PREFTOGGLE_DEADMIN_POSITION_SILICON department_flag = ENGSEC faction = "Station" - total_positions = 0 + total_positions = 1 spawn_positions = 1 supervisors = "your laws and the AI" //Nodrak selection_color = "#ddffdd" @@ -24,6 +24,7 @@ /datum/job/cyborg/after_spawn(mob/living/silicon/robot/R, mob/M) R.updatename(M.client) R.gender = NEUTER + R.apply_pref_name("cyborg", M.client) //NSV13 /datum/job/cyborg/radio_help_message(mob/M) to_chat(M, "Prefix your message with :b to speak with other cyborgs and AI.") diff --git a/code/modules/jobs/job_types/deputy.dm b/code/modules/jobs/job_types/deputy.dm index 3a32fb5d4fe..b2b4ee10814 100644 --- a/code/modules/jobs/job_types/deputy.dm +++ b/code/modules/jobs/job_types/deputy.dm @@ -35,7 +35,7 @@ shoes = /obj/item/clothing/shoes/sneakers/black glasses = /obj/item/clothing/glasses/hud/security/deputy head = /obj/item/clothing/head/soft/sec - l_pocket = /obj/item/pda/deputy + l_pocket = /obj/item/modular_computer/tablet/pda/deputy backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index f9255f1fc33..129ad736b2f 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -35,7 +35,7 @@ jobtype = /datum/job/detective id = /obj/item/card/id/job/detective - belt = /obj/item/pda/detective + belt = /obj/item/modular_computer/tablet/pda/detective ears = /obj/item/radio/headset/headset_sec/alt uniform = /obj/item/clothing/under/rank/security/detective neck = /obj/item/clothing/neck/tie/detective diff --git a/code/modules/jobs/job_types/exploration_team.dm b/code/modules/jobs/job_types/exploration_team.dm index f1eb7f8c540..86858412d27 100644 --- a/code/modules/jobs/job_types/exploration_team.dm +++ b/code/modules/jobs/job_types/exploration_team.dm @@ -56,7 +56,7 @@ jobtype = /datum/job/exploration_crew id = /obj/item/card/id/job/exploration_crew - belt = /obj/item/pda/exploration_crew + belt = /obj/item/modular_computer/tablet/pda/exploration_crew ears = /obj/item/radio/headset/headset_exploration shoes = /obj/item/clothing/shoes/jackboots gloves = /obj/item/clothing/gloves/color/black @@ -77,7 +77,7 @@ name = "Exploration Crew (Engineer)" belt = /obj/item/storage/belt/utility/full - r_pocket = /obj/item/pda/exploration_crew + r_pocket = /obj/item/modular_computer/tablet/pda/exploration_crew backpack_contents = list( /obj/item/kitchen/knife/combat/survival=1, diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index 8cbb5d2c76f..d19362d5fac 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -33,7 +33,7 @@ name = JOB_NAME_GENETICIST jobtype = /datum/job/geneticist id = /obj/item/card/id/job/geneticist - belt = /obj/item/pda/geneticist + belt = /obj/item/modular_computer/tablet/pda/geneticist ears = /obj/item/radio/headset/headset_medsci uniform = /obj/item/clothing/under/rank/medical/geneticist shoes = /obj/item/clothing/shoes/sneakers/white diff --git a/code/modules/jobs/job_types/gimmick.dm b/code/modules/jobs/job_types/gimmick.dm index 1fffacd5d56..7a41fc370c4 100644 --- a/code/modules/jobs/job_types/gimmick.dm +++ b/code/modules/jobs/job_types/gimmick.dm @@ -52,7 +52,7 @@ jobtype = /datum/job/gimmick/barber id = /obj/item/card/id/job/barber - belt = /obj/item/pda/unlicensed + belt = /obj/item/modular_computer/tablet/pda/unlicensed ears = /obj/item/radio/headset uniform = /obj/item/clothing/under/suit/sl shoes = /obj/item/clothing/shoes/laceup @@ -87,7 +87,7 @@ jobtype = /datum/job/gimmick/stage_magician id = /obj/item/card/id/job/stage_magician - belt = /obj/item/pda/unlicensed + belt = /obj/item/modular_computer/tablet/pda/unlicensed head = /obj/item/clothing/head/that ears = /obj/item/radio/headset neck = /obj/item/bedsheet/magician @@ -128,7 +128,7 @@ jobtype = /datum/job/gimmick/psychiatrist id = /obj/item/card/id/job/psychiatrist - belt = /obj/item/pda/medical + belt = /obj/item/modular_computer/tablet/pda/medical ears = /obj/item/radio/headset/headset_med uniform = /obj/item/clothing/under/suit/black shoes = /obj/item/clothing/shoes/laceup @@ -160,7 +160,7 @@ jobtype = /datum/job/gimmick/vip id = /obj/item/card/id/gold/vip - belt = /obj/item/pda/vip + belt = /obj/item/modular_computer/tablet/pda/vip glasses = /obj/item/clothing/glasses/sunglasses/advanced ears = /obj/item/radio/headset/heads //VIP can talk loud for no reason uniform = /obj/item/clothing/under/suit/black_really diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index 26c4c7ceb09..2bd69fd0c94 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -48,7 +48,7 @@ jobtype = /datum/job/head_of_personnel id = /obj/item/card/id/job/head_of_personnel - r_pocket = /obj/item/pda/heads/head_of_personnel + r_pocket = /obj/item/modular_computer/tablet/pda/heads/head_of_personnel belt = /obj/item/melee/classic_baton/telescopic/stunsword ears = /obj/item/radio/headset/heads/xo //NSV13 - update to XO uniform = /obj/item/clothing/under/ship/officer @@ -57,7 +57,7 @@ head = /obj/item/clothing/head/beret/ship/xo //NSV13 - update to XO backpack_contents = list(/obj/item/storage/box/ids=1, /obj/item/melee/classic_baton/police/telescopic=1, - /obj/item/modular_computer/tablet/preset/advanced/command=1, - /obj/item/squad_pager/all_channels=1, /obj/item/storage/box/squad_lanyards=1) // NSV13 - added squad lanyards and pager + /obj/item/squad_pager/all_channels=1, + /obj/item/storage/box/squad_lanyards=1) // NSV13 - added squad lanyards and pager chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/head_of_personnel) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index fd51c8bf456..72b326f036c 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -43,7 +43,7 @@ jobtype = /datum/job/head_of_security id = /obj/item/card/id/job/head_of_security - belt = /obj/item/pda/heads/head_of_security + belt = /obj/item/modular_computer/tablet/pda/heads/head_of_security ears = /obj/item/radio/headset/heads/hos/alt uniform = /obj/item/clothing/under/ship/peacekeeper //NSV13 shoes = /obj/item/clothing/shoes/jackboots @@ -55,8 +55,10 @@ r_pocket = /obj/item/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs backpack_contents = list(/obj/item/melee/baton/loaded=1, - /obj/item/modular_computer/tablet/preset/advanced/command=1, - /obj/item/gun/ballistic/tazer, /obj/item/ammo_box/magazine/tazer_cartridge_storage=1, /obj/item/book/granter/martial/jujitsu, /obj/item/club=1) //NSV13 this line) + /obj/item/gun/ballistic/tazer, + /obj/item/ammo_box/magazine/tazer_cartridge_storage=1, + /obj/item/book/granter/martial/jujitsu, + /obj/item/melee/classic_baton/police=1) //NSV13 this line) backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index 35aa3b7a466..113ffea346b 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -30,7 +30,7 @@ jobtype = /datum/job/janitor id = /obj/item/card/id/job/janitor - belt = /obj/item/pda/janitor + belt = /obj/item/modular_computer/tablet/pda/janitor ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/civilian/janitor backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index fae3a19924a..f7dc1925989 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -31,7 +31,7 @@ jobtype = /datum/job/lawyer id = /obj/item/card/id/job/lawyer - belt = /obj/item/pda/lawyer + belt = /obj/item/modular_computer/tablet/pda/lawyer ears = /obj/item/radio/headset/headset_srvsec uniform = /obj/item/clothing/under/rank/civilian/lawyer/bluesuit suit = /obj/item/clothing/suit/toggle/lawyer diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index 4428060504e..b5e61ea929c 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -33,7 +33,7 @@ jobtype = /datum/job/medical_doctor id = /obj/item/card/id/job/medical_doctor - belt = /obj/item/pda/medical + belt = /obj/item/modular_computer/tablet/pda/medical ears = /obj/item/radio/headset/headset_med uniform = /obj/item/clothing/under/ship/medical //NSV13 - ship jumpsuit shoes = /obj/item/clothing/shoes/sneakers/white diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm index 8c7261b56a5..95b5d5d5812 100644 --- a/code/modules/jobs/job_types/mime.dm +++ b/code/modules/jobs/job_types/mime.dm @@ -33,7 +33,7 @@ jobtype = /datum/job/mime id = /obj/item/card/id/job/mime - belt = /obj/item/pda/mime + belt = /obj/item/modular_computer/tablet/pda/mime ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/civilian/mime mask = /obj/item/clothing/mask/gas/mime diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index ab95ae244a3..49f1abc8523 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -41,7 +41,7 @@ jobtype = /datum/job/paramedic id = /obj/item/card/id/job/paramedic - belt = /obj/item/pda/paramedic + belt = /obj/item/modular_computer/tablet/pda/paramedic ears = /obj/item/radio/headset/headset_med gloves = /obj/item/clothing/gloves/color/latex/nitrile uniform = /obj/item/clothing/under/ship/medical //NSV13 - ship jumpsuit diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index d6a38da5759..cfceac95594 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -32,7 +32,7 @@ jobtype = /datum/job/quartermaster id = /obj/item/card/id/job/quartermaster - belt = /obj/item/pda/quartermaster + belt = /obj/item/modular_computer/tablet/pda/quartermaster ears = /obj/item/radio/headset/headset_quartermaster uniform = /obj/item/clothing/under/rank/cargo/quartermaster shoes = /obj/item/clothing/shoes/sneakers/brown diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index c1d1e97a10b..938f07b3711 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -45,15 +45,14 @@ jobtype = /datum/job/research_director id = /obj/item/card/id/job/research_director - belt = /obj/item/pda/heads/research_director + belt = /obj/item/modular_computer/tablet/pda/heads/research_director ears = /obj/item/radio/headset/heads/research_director uniform = /obj/item/clothing/under/rank/rnd/research_director shoes = /obj/item/clothing/shoes/sneakers/brown suit = /obj/item/clothing/suit/toggle/labcoat/research_director l_hand = /obj/item/clipboard l_pocket = /obj/item/laser_pointer - backpack_contents = list(/obj/item/melee/classic_baton/police/telescopic=1, - /obj/item/modular_computer/tablet/preset/advanced/command=1) + backpack_contents = list(/obj/item/melee/classic_baton/police/telescopic=1) backpack = /obj/item/storage/backpack/science satchel = /obj/item/storage/backpack/satchel/tox diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index f308d920923..5a67b98b411 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -34,13 +34,12 @@ id = /obj/item/card/id/job/roboticist belt = /obj/item/storage/belt/utility/full - l_pocket = /obj/item/pda/roboticist + l_pocket = /obj/item/modular_computer/tablet/pda/roboticist ears = /obj/item/radio/headset/headset_sci uniform = /obj/item/clothing/under/rank/rnd/roboticist suit = /obj/item/clothing/suit/toggle/labcoat backpack = /obj/item/storage/backpack/science satchel = /obj/item/storage/backpack/satchel/tox - backpack_contents = list(/obj/item/modular_computer/tablet/preset/science=1) pda_slot = ITEM_SLOT_LPOCKET diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index 1ee8dda24c1..c798bbb2d26 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -34,7 +34,7 @@ jobtype = /datum/job/scientist id = /obj/item/card/id/job/scientist - belt = /obj/item/pda/toxins + belt = /obj/item/modular_computer/tablet/pda/science ears = /obj/item/radio/headset/headset_sci uniform = /obj/item/clothing/under/rank/rnd/scientist shoes = /obj/item/clothing/shoes/sneakers/white @@ -44,7 +44,6 @@ backpack = /obj/item/storage/backpack/science satchel = /obj/item/storage/backpack/satchel/tox - backpack_contents = list(/obj/item/modular_computer/tablet/preset/science=1) /datum/outfit/job/scientist/pre_equip(mob/living/carbon/human/H) ..() diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index d98c9564984..057cf2b8c76 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -124,7 +124,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S jobtype = /datum/job/security_officer id = /obj/item/card/id/job/security_officer - belt = /obj/item/pda/security + belt = /obj/item/modular_computer/tablet/pda/security ears = /obj/item/radio/headset/headset_sec/alt glasses = /obj/item/clothing/glasses/hud/security/sunglasses uniform = /obj/item/clothing/under/ship/peacekeeper @@ -137,7 +137,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S l_pocket = /obj/item/restraints/handcuffs r_pocket = /obj/item/assembly/flash/handheld suit_store = /obj/item/gun/ballistic/tazer //NSV13 - backpack_contents = list(/obj/item/gun/ballistic/tazer=1,/obj/item/ammo_box/magazine/tazer_cartridge_storage=1,/obj/item/pda/security, /obj/item/book/granter/martial/jujitsu, /obj/item/club=1) //NSV13) + backpack_contents = list(/obj/item/gun/ballistic/tazer=1,/obj/item/ammo_box/magazine/tazer_cartridge_storage=1,/obj/item/modular_computer/tablet/pda/security, /obj/item/book/granter/martial/jujitsu, /obj/item/melee/classic_baton/police=1) //NSV13) backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 62dd48786b1..44d48105482 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -33,7 +33,7 @@ jobtype = /datum/job/shaft_miner id = /obj/item/card/id/job/shaft_miner - belt = /obj/item/pda/shaft_miner + belt = /obj/item/modular_computer/tablet/pda/shaft_miner ears = /obj/item/radio/headset/headset_cargo/shaft_miner shoes = /obj/item/clothing/shoes/workboots/mining gloves = /obj/item/clothing/gloves/color/black @@ -45,7 +45,8 @@ /obj/item/kitchen/knife/combat/survival=1,\ /obj/item/mining_voucher=1,\ /obj/item/stack/marker_beacon/ten=1,\ - /obj/item/discovery_scanner=1) + /obj/item/discovery_scanner=1,\ + /obj/item/encryptionkey/pilot=1) //NSV13 backpack = /obj/item/storage/backpack/explorer satchel = /obj/item/storage/backpack/satchel/explorer diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index ead9e2ed2ac..f4fc0cd2c58 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -35,7 +35,7 @@ id = /obj/item/card/id/job/station_engineer belt = /obj/item/storage/belt/utility/full/engi - l_pocket = /obj/item/pda/station_engineer + l_pocket = /obj/item/modular_computer/tablet/pda/station_engineer ears = /obj/item/radio/headset/headset_eng uniform = /obj/item/clothing/under/ship/engineer //NSV13 uniforms shoes = /obj/item/clothing/shoes/workboots @@ -48,7 +48,6 @@ duffelbag = /obj/item/storage/backpack/duffelbag/engineering box = /obj/item/storage/box/engineer pda_slot = ITEM_SLOT_LPOCKET - backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) /datum/outfit/job/engineer/gloved name = "Station Engineer (Gloves)" diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index 2db3502edac..bdcfc9aba69 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -41,7 +41,7 @@ shoes = /obj/item/clothing/shoes/sneakers/white suit = /obj/item/clothing/suit/toggle/labcoat/virologist suit_store = /obj/item/flashlight/pen - r_pocket = /obj/item/pda/virologist + r_pocket = /obj/item/modular_computer/tablet/pda/virologist backpack = /obj/item/storage/backpack/virology satchel = /obj/item/storage/backpack/satchel/vir diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index f12e6605482..874e3f9873c 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -40,7 +40,7 @@ jobtype = /datum/job/warden id = /obj/item/card/id/job/warden - belt = /obj/item/pda/warden + belt = /obj/item/modular_computer/tablet/pda/warden ears = /obj/item/radio/headset/headset_sec/alt uniform = /obj/item/clothing/under/rank/security/warden shoes = /obj/item/clothing/shoes/jackboots @@ -50,9 +50,9 @@ glasses = /obj/item/clothing/glasses/hud/security/sunglasses r_pocket = /obj/item/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs - suit_store = /obj/item/gun/ballistic/automatic/pistol/glock/security //NSV13 + suit_store = /obj/item/gun/ballistic/automatic/pistol/glock/security //NSV13 - weird energy gun is not good backpack_contents = list(/obj/item/melee/baton/loaded=1, - /obj/item/gun/ballistic/tazer, /obj/item/ammo_box/magazine/tazer_cartridge_storage, /obj/item/ammo_box/magazine/glock, /obj/item/squad_pager/all_channels, /obj/item/club=1) //NSV13 + /obj/item/gun/ballistic/tazer, /obj/item/ammo_box/magazine/tazer_cartridge_storage, /obj/item/ammo_box/magazine/glock, /obj/item/squad_pager/all_channels, /obj/item/melee/classic_baton/police=1) //NSV13 backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index 81c921f6ef1..3a28fde67a2 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -175,7 +175,7 @@ GLOBAL_LIST_INIT(exp_jobsmap, list( GLOBAL_LIST_INIT(exp_specialmap, list( EXP_TYPE_LIVING = list(), // all living mobs EXP_TYPE_ANTAG = list(), - EXP_TYPE_SPECIAL = list("Lifebringer","Ash Walker","Exile","Servant Golem","Free Golem","Hermit","Translocated Vet","Escaped Prisoner","Hotel Staff","SuperFriend","Space Syndicate","Ancient Crew","Space Doctor","Space Bartender","Beach Bum","Skeleton","Zombie","Space Bar Patron","Lavaland Syndicate",JOB_NAME_PAI,"Ghost Role"), // Ghost roles + EXP_TYPE_SPECIAL = list("Lifebringer","Ash Walker","Exile","Servant Golem","Free Golem","Hermit","Translocated Vet","Escaped Prisoner","Hotel Staff","SuperFriend","Space Syndicate","Ancient Crew","Space Doctor","Beach Bum","Skeleton","Zombie","Lavaland Syndicate",JOB_NAME_PAI,"Ghost Role"), // Ghost roles EXP_TYPE_GHOST = list() // dead people, observers )) GLOBAL_PROTECT(exp_jobsmap) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index f2539cba019..a8561f3463b 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -637,7 +637,11 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if(!machine_stat) visible_message("[src] whirs as it prints and binds a new book.") var/obj/item/book/B = new(src.loc) - B.dat = P.info + var/raw_content = "" + for(var/datum/paper_input/text_input as anything in P.raw_text_inputs) + raw_content += text_input.raw_text + + B.dat = trim(raw_content, MAX_PAPER_LENGTH) B.name = "Print Job #" + "[rand(100, 999)]" B.icon_state = "book[rand(1,7)]" qdel(P) diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 2d82d0ddcb7..352b3288a10 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -218,7 +218,7 @@ new /obj/item/storage/backpack/clown(src) new /obj/item/clothing/under/rank/civilian/clown(src) new /obj/item/clothing/shoes/clown_shoes(src) - new /obj/item/pda/clown(src) + new /obj/item/modular_computer/tablet/pda/clown(src) new /obj/item/clothing/mask/gas/clown_hat(src) new /obj/item/bikehorn(src) new /obj/item/toy/crayon/rainbow(src) @@ -226,7 +226,7 @@ if(95) new /obj/item/clothing/under/rank/civilian/mime(src) new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/pda/mime(src) + new /obj/item/modular_computer/tablet/pda/mime(src) new /obj/item/clothing/gloves/color/white(src) new /obj/item/clothing/mask/gas/mime(src) new /obj/item/clothing/head/beret(src) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 19d1d67f1c6..25fb54ec741 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -513,9 +513,7 @@ if(client.prefs.active_character.joblessrole != RETURNTOLOBBY) return TRUE // If they have antags enabled, they're potentially doing this on purpose instead of by accident. Notify admins if so. - var/has_antags = FALSE - if(client.prefs.be_special.len > 0) - has_antags = TRUE + var/has_antags = (length(client.prefs.role_preferences) + length(client.prefs.active_character?.role_preferences_character)) > 0 if(!length(client.prefs.active_character.job_preferences)) if(!ineligible_for_roles) to_chat(src, "You have no jobs enabled, along with return to lobby if job is unavailable. This makes you ineligible for any round start role, please update your job preferences.") diff --git a/code/modules/mob/dead/observer/login.dm b/code/modules/mob/dead/observer/login.dm index 4eaba497a42..31938580a21 100644 --- a/code/modules/mob/dead/observer/login.dm +++ b/code/modules/mob/dead/observer/login.dm @@ -16,7 +16,7 @@ if (isturf(T)) update_z(T.z) - update_icon(preferred_form) + update_icon(ALL, new_form = preferred_form) //NSV13 fixes ghost icon states updateghostimages() if(mind?.current) diff --git a/code/modules/mob/dead/observer/notificationprefs.dm b/code/modules/mob/dead/observer/notificationprefs.dm deleted file mode 100644 index 6370747ad46..00000000000 --- a/code/modules/mob/dead/observer/notificationprefs.dm +++ /dev/null @@ -1,53 +0,0 @@ -/mob/dead/observer/verb/show_notificationprefs() - set category = "Ghost" - set name = "Notification preferences" - set desc = "Notification preferences" - - var/datum/notificationpanel/panel = new(usr) - - panel.ui_interact(usr) - - - -/datum/notificationpanel - var/client/user - -/datum/notificationpanel/New(user) - if (ismob(user)) - var/mob/M = user - if (!M.client) - CRASH("Ghost role notification panel attempted to open to a mob without a client") - src.user = M.client - else - src.user = user - - -/datum/notificationpanel/ui_state(mob/user) - return GLOB.observer_state - -/datum/notificationpanel/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "NotificationPreferences") - ui.open() - -/datum/notificationpanel/ui_data(mob/user) - . = list() - .["ignore"] = list() - for(var/key in GLOB.poll_ignore_desc) - .["ignore"] += list(list( - "key" = key, - "enabled" = (user.ckey in GLOB.poll_ignore[key]), - "desc" = GLOB.poll_ignore_desc[key] - )) - - -/datum/notificationpanel/ui_act(action, params) - if(..()) - return - switch (action) - if ("toggle_ignore") - var/key = params["key"] - if (key && islist(GLOB.poll_ignore[key])) - GLOB.poll_ignore[key] ^= list(user.ckey) - . = TRUE diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index e8b137fed51..6ee0997a1ae 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -440,7 +440,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/area/A = V if(!(A.area_flags & HIDDEN_AREA)) filtered += A - var/area/thearea = input("Area to jump to", "BOOYEA") as null|anything in filtered + var/area/thearea = tgui_input_list(usr, "Area to jump to", "BOOYEA", filtered) // NSV13 - TGUI input list if(!thearea) return diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 6d6396d172f..fbae9c34847 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -3,7 +3,7 @@ icon = 'icons/mob/alien.dmi' gender = FEMALE //All xenos are girls!! dna = null - faction = list(ROLE_ALIEN) + faction = list(FACTION_ALIEN) ventcrawler = VENTCRAWLER_ALWAYS sight = SEE_MOBS see_in_dark = 4 diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index 3fd29dfdfe0..6d4ada4ce49 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -115,12 +115,12 @@ var/recent_queen_death = 0 //Indicates if the queen died recently, aliens are heavily weakened while this is active. /obj/item/organ/alien/hivenode/Insert(mob/living/carbon/M, special = 0) - M.faction |= ROLE_ALIEN + M.faction |= FACTION_ALIEN ADD_TRAIT(M, TRAIT_XENO_IMMUNE, "xeno immune") return ..() /obj/item/organ/alien/hivenode/Remove(mob/living/carbon/M, special = 0) - M.faction -= ROLE_ALIEN + M.faction -= FACTION_ALIEN REMOVE_TRAIT(M, TRAIT_XENO_IMMUNE, "xeno immune") return ..() diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 1aee89c7515..dc4a6ac2b9e 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -90,7 +90,7 @@ bursting = TRUE - var/list/candidates = pollGhostCandidates("Do you want to play as an alien larva that will burst out of [owner]?", ROLE_ALIEN, null, ROLE_ALIEN, 100, POLL_IGNORE_ALIEN_LARVA) + var/list/candidates = pollGhostCandidates("Do you want to play as an alien larva that will burst out of [owner]?", ROLE_ALIEN, /datum/role_preference/midround_ghost/xenomorph, 10 SECONDS, POLL_IGNORE_ALIEN_LARVA) // separate poll from xeno event spawns if(QDELETED(src) || QDELETED(owner)) return diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 55fbd974071..aab1971dff6 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -194,6 +194,13 @@ SEND_SIGNAL(src, COMSIG_CARBON_EMBED_RIP, I, L) return + if(href_list["show_paper_note"]) + var/obj/item/paper/paper_note = locate(href_list["show_paper_note"]) + if(!paper_note) + return + + paper_note.show_through_camera(usr) + /mob/living/carbon/fall(forced) loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing @@ -984,11 +991,6 @@ if(mood.sanity < SANITY_UNSTABLE) return TRUE -//NSV13 -/mob/living/carbon/proc/update_flavor_text_feature(new_text) - if(!dna) - return - dna.features["flavour_text"] = new_text /mob/living/carbon/set_gender(ngender = NEUTER, silent = FALSE, update_icon = TRUE, forced = FALSE) var/bender = gender != ngender diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index c46ee6c5e9d..511e2b8b718 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -394,7 +394,7 @@ if(effect_amount > 0) if(stun_pwr) if(!ears.deaf) - Paralyze((stun_pwr*effect_amount)*0.1) + Paralyze((stun_pwr*effect_amount)*0.5) //NSV13 - strengthened flashbangs Knockdown(stun_pwr*effect_amount) if(istype(ears) && (deafen_pwr || damage_pwr)) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 967f282bec6..90df70a0bb8 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -40,7 +40,7 @@ var/gib_type = /obj/effect/decal/cleanable/blood/gibs - var/rotate_on_lying = 1 + rotate_on_lying = TRUE //NSV13 var/tinttotal = 0 // Total level of visualy impairing items diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index 904b27adb9a..1b6c3a48fd1 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -47,3 +47,26 @@ GLOBAL_LIST_EMPTY(dummy_mob_list) if(istype(D)) D.wipe_state() D.in_use = FALSE + +//NSV13 - Roleplay Stuff +/proc/generate_dummy_lookalike(slotkey, mob/target) + if(!istype(target)) + return generate_or_wait_for_human_dummy(slotkey) + + var/mob/living/carbon/human/dummy/copycat = generate_or_wait_for_human_dummy(slotkey) + + if(iscarbon(target)) + var/mob/living/carbon/carbon_target = target + carbon_target.dna.transfer_identity(copycat, transfer_SE = TRUE) + + if(ishuman(target)) + var/mob/living/carbon/human/human_target = target + human_target.copy_clothing_prefs(copycat) + + copycat.updateappearance(icon_update=TRUE, mutcolor_update=TRUE, mutations_overlay_update=TRUE) + else + //even if target isn't a carbon, if they have a client we can make the + //dummy look like what their human would look like based on their prefs + target?.client?.prefs?.active_character.copy_to(copycat, icon_updates=TRUE, roundstart_checks=FALSE) + + return copycat diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 2f766dda011..a3f22576b09 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -101,25 +101,22 @@ if(!.) return var/mob/living/carbon/human/H = user - if(!istype(H) || !H.dna || !H.dna.species || !H.dna.species.can_wag_tail(H)) + var/obj/item/organ/tail/tail = H?.getorganslot(ORGAN_SLOT_TAIL) + if(!tail) return - if(!H.dna.species.is_wagging_tail()) - H.dna.species.start_wagging_tail(H) - else - H.dna.species.stop_wagging_tail(H) + tail.toggle_wag(H) /datum/emote/living/carbon/human/wag/can_run_emote(mob/user, status_check = TRUE , intentional) if(!..()) return FALSE var/mob/living/carbon/human/H = user - return H.dna && H.dna.species && H.dna.species.can_wag_tail(user) + return istype(H?.getorganslot(ORGAN_SLOT_TAIL), /obj/item/organ/tail) /datum/emote/living/carbon/human/wag/select_message_type(mob/user, intentional) . = ..() var/mob/living/carbon/human/H = user - if(!H.dna || !H.dna.species) - return - if(H.dna.species.is_wagging_tail()) + var/obj/item/organ/tail/tail = H.getorganslot(ORGAN_SLOT_TAIL) + if(tail?.is_wagging(H)) . = null /datum/emote/living/carbon/human/wing diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 77c8e0c2238..061b5bf68d5 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -17,14 +17,14 @@ if(HAS_TRAIT(L, TRAIT_PROSOPAGNOSIA)) obscure_name = TRUE - var/apparent_species + var/apparent_species //NSV13 - add rank to name var/display_name = "" if(CONFIG_GET(flag/show_ranks)) display_name += "[compose_rank(src)]" display_name += name if(dna?.species && !skipface) - apparent_species = ", \an [dna.species.name]" + apparent_species = ", \an [dna.species.name]" //NSV13 - species name is colored depending on special conditions. . = list("*---------*\nThis is [!obscure_name ? display_name : "Unknown"][apparent_species]!") //uniform @@ -359,6 +359,10 @@ . += "\[Medical evaluation\]
              " if(traitstring) . += "Detected physiological traits:\n[traitstring]" + //NSV13 - Roleplaying Records - Start + . += "\[View medical records\]" + . += "\[View general records\]" + //NSV13 - Roleplaying Records - End if(HAS_TRAIT(user, TRAIT_SECURITY_HUD)) if(!user.stat && user != src) @@ -370,25 +374,24 @@ criminal = R.fields["criminal"] . += "Criminal status: \[[criminal]\]" - . += jointext(list("Security record: \[View\]", + . += jointext(list("Security record: \[View security records\]", //NSV13 - Roleplaying Records "\[Add citation\]", "\[Add crime\]", "\[View comment log\]", "\[Add comment\]"), "") + + . += jointext(list("General record: \[View general records\]"), "") //NSV13 - Roleplaying Records else if(isobserver(user) && traitstring) . += "Traits: [traitstring]" - //NSV13 START - //No flavor text unless the face can be seen. Prevents certain metagaming with impersonation. - var/invisible_man = skipface || get_visible_name() == "Unknown" - if(invisible_man) - . += "...?" - else - var/flavor = print_flavor_text() - if(flavor) - . += flavor - //NSV13 STOP + //NSV13 - Roleplaying Records - Start + if(!skipface) + var/line = "Examine closely..." + + if(line) + . += line + //NSV13 - Roleplaying Records - End . += "*---------*" /mob/living/proc/status_effect_examines(pronoun_replacement) //You can include this in any mob's examine() to show the examine texts of status effects! diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 63a7486b32b..1108434dc22 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -162,6 +162,13 @@ to_chat(usr, "You can't reach that! Something is covering it.") return + //NSV13 - Roleplaying Stuff + if(href_list["lookup_info"]) + switch(href_list["lookup_info"]) + if("open_examine_panel") + tgui.holder = src + tgui.ui_interact(usr) //datum has a tgui component, here we open the window + ///////HUDs/////// if(href_list["hud"]) if(!ishuman(usr)) @@ -170,17 +177,20 @@ var/perpname = get_face_name(get_id_name("")) if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD) && !HAS_TRAIT(H, TRAIT_MEDICAL_HUD)) return - var/datum/data/record/R = find_record("name", perpname, GLOB.data_core.general) + //NSV13 - Roleplaying Records - Changed ALL the references to the variable R to these three records below here - Start + var/datum/data/record/general_record = find_record("name", perpname, GLOB.data_core.general) + var/datum/data/record/med_record = find_record("name", perpname, GLOB.data_core.medical) + var/datum/data/record/sec_record = find_record("name", perpname, GLOB.data_core.security) if(href_list["photo_front"] || href_list["photo_side"]) - if(!R) + if(!general_record) return if(!H.canUseHUD()) return var/obj/item/photo/P = null if(href_list["photo_front"]) - P = R.fields["photo_front"] + P = general_record.fields["photo_front"] else if(href_list["photo_side"]) - P = R.fields["photo_side"] + P = general_record.fields["photo_side"] if(P) P.show(H) return @@ -236,27 +246,31 @@ to_chat(H, "ERROR: Invalid access") return if(href_list["p_stat"]) - var/health_status = input(usr, "Specify a new physical status for this person.", "Medical HUD", R.fields["p_stat"]) in list("Active", "Physically Unfit", "*Unconscious*", "*Deceased*", "Cancel") - if(!R) + var/health_status = input(usr, "Specify a new physical status for this person.", "Medical HUD", general_record.fields["p_stat"]) in list("Active", "Physically Unfit", "*Unconscious*", "*Deceased*", "Cancel") + if(!general_record) return if(!H.canUseHUD()) return if(!HAS_TRAIT(H, TRAIT_MEDICAL_HUD)) return if(health_status && health_status != "Cancel") - R.fields["p_stat"] = health_status + general_record.fields["p_stat"] = health_status return if(href_list["m_stat"]) - var/health_status = input(usr, "Specify a new mental status for this person.", "Medical HUD", R.fields["m_stat"]) in list("Stable", "*Watch*", "*Unstable*", "*Insane*", "Cancel") - if(!R) + var/health_status = input(usr, "Specify a new mental status for this person.", "Medical HUD", general_record.fields["m_stat"]) in list("Stable", "*Watch*", "*Unstable*", "*Insane*", "Cancel") + if(!general_record) return if(!H.canUseHUD()) return if(!HAS_TRAIT(H, TRAIT_MEDICAL_HUD)) return if(health_status && health_status != "Cancel") - R.fields["m_stat"] = health_status + general_record.fields["m_stat"] = health_status return + if(href_list["medrecords"]) + to_chat(usr, "
              Medical Record:
              [med_record.fields["past_records"]]") + if(href_list["genrecords"]) + to_chat(usr, "General Record: [general_record.fields["past_records"]]") return //Medical HUD ends here. if(href_list["hud"] == "s") @@ -282,31 +296,30 @@ if(!perpname) to_chat(H, "ERROR: Can not identify target.") return - R = find_record("name", perpname, GLOB.data_core.security) - if(!R) + if(!sec_record) to_chat(usr, "ERROR: Unable to locate data core entry for target.") return if(href_list["status"]) - var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "Arrest", "Search", "Monitor", "Incarcerated", "Paroled", "Discharged", "Cancel") + var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", sec_record.fields["criminal"]) in list("None", "Arrest", "Search", "Monitor", "Incarcerated", "Paroled", "Discharged", "Cancel") if(setcriminal != "Cancel") - if(!R) + if(!sec_record) return if(!H.canUseHUD()) return if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) return - investigate_log("[key_name(src)] has been set from [R.fields["criminal"]] to [setcriminal] by [key_name(usr)].", INVESTIGATE_RECORDS) - R.fields["criminal"] = setcriminal + investigate_log("[key_name(src)] has been set from [sec_record.fields["criminal"]] to [setcriminal] by [key_name(usr)].", INVESTIGATE_RECORDS) + sec_record.fields["criminal"] = setcriminal sec_hud_set_security_status() return - if(href_list["view"]) + if(href_list["viewsec"]) if(!H.canUseHUD()) return if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) return - to_chat(usr, "Name: [R.fields["name"]] Criminal Status: [R.fields["criminal"]]") - for(var/datum/data/crime/c in R.fields["crim"]) + to_chat(usr, "Name: [sec_record.fields["name"]] Criminal Status: [sec_record.fields["criminal"]]") + for(var/datum/data/crime/c in sec_record.fields["crim"]) to_chat(usr, "Crime: [c.crimeName]") if (c.crimeDetails) to_chat(usr, "Details: [c.crimeDetails]") @@ -314,14 +327,22 @@ to_chat(usr, "Details: \[Add details]") to_chat(usr, "Added by [c.author] at [c.time]") to_chat(usr, "----------") - to_chat(usr, "Notes: [R.fields["notes"]]") + to_chat(usr, "Notes: [sec_record.fields["notes"]]") + to_chat(usr, "
              Security Record: [sec_record.fields["past_records"]]") return + if(href_list["genrecords"]) + if(!H.canUseHUD()) + return + if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) + return + to_chat(usr, "General Record: [general_record.fields["past_records"]]") + if(href_list["add_citation"]) var/maxFine = CONFIG_GET(number/maxfine) var/t1 = stripped_input("Please input citation crime:", "Security HUD", "", null) var/fine = FLOOR(input("Please input citation fine, up to [maxFine]:", "Security HUD", 50) as num|null, 1) - if(!R || !t1 || !fine || !allowed_access) + if(!sec_record || !t1 || !fine || !allowed_access) return if(!H.canUseHUD()) return @@ -332,48 +353,48 @@ return fine = min(fine, maxFine) - var/crime = GLOB.data_core.createCrimeEntry(t1, "", allowed_access, station_time_timestamp(), fine) - for (var/obj/item/pda/P in GLOB.PDAs) - if(P.owner == R.fields["name"]) + var/datum/data/crime/crime = GLOB.data_core.createCrimeEntry(t1, "", allowed_access, station_time_timestamp(), fine) + for (var/obj/item/modular_computer/tablet in GLOB.TabletMessengers) + if(tablet.saved_identification == sec_record.fields["name"]) var/message = "You have been fined [fine] credits for '[t1]'. Fines may be paid at security." - var/datum/signal/subspace/messaging/pda/signal = new(src, list( + var/datum/signal/subspace/messaging/tablet_msg/signal = new(src, list( "name" = "Security Citation", "job" = "Citation Server", "message" = message, - "targets" = list("[P.owner] ([P.ownjob])"), - "automated" = 1 + "targets" = list(tablet), + "automated" = TRUE )) signal.send_to_receivers() usr.log_message("(PDA: Citation Server) sent \"[message]\" to [signal.format_target()]", LOG_PDA) - GLOB.data_core.addCitation(R.fields["id"], crime) - investigate_log("New Citation: [t1] Fine: [fine] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) + GLOB.data_core.addCitation(sec_record.fields["id"], crime) + investigate_log("New Citation: [t1] Fine: [fine] | Added to [sec_record.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) return if(href_list["add_crime"]) var/t1 = stripped_input("Please input crime name:", "Security HUD", "", null) - if(!R || !t1 || !allowed_access) + if(!sec_record || !t1 || !allowed_access) return if(!H.canUseHUD()) return if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) return var/crime = GLOB.data_core.createCrimeEntry(t1, null, allowed_access, station_time_timestamp()) - GLOB.data_core.addCrime(R.fields["id"], crime) - investigate_log("New Crime: [t1] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) + GLOB.data_core.addCrime(sec_record.fields["id"], crime) + investigate_log("New Crime: [t1] | Added to [sec_record.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) to_chat(usr, "Successfully added a crime.") return if(href_list["add_details"]) var/t1 = stripped_input(usr, "Please input crime details:", "Secure. records", "", null) - if(!R || !t1 || !allowed_access) + if(!sec_record || !t1 || !allowed_access) return if(!H.canUseHUD()) return if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) return if(href_list["cdataid"]) - GLOB.data_core.addCrimeDetails(R.fields["id"], href_list["cdataid"], t1) - investigate_log("New Crime details: [t1] | Added to [R.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) + GLOB.data_core.addCrimeDetails(sec_record.fields["id"], href_list["cdataid"], t1) + investigate_log("New Crime details: [t1] | Added to [sec_record.fields["name"]] by [key_name(usr)]", INVESTIGATE_RECORDS) to_chat(usr, "Successfully added details.") return @@ -384,26 +405,27 @@ return to_chat(usr, "Comments/Log:") var/counter = 1 - while(R.fields[text("com_[]", counter)]) - to_chat(usr, R.fields[text("com_[]", counter)]) + while(sec_record.fields[text("com_[]", counter)]) + to_chat(usr, sec_record.fields[text("com_[]", counter)]) to_chat(usr, "----------") counter++ return if(href_list["add_comment"]) var/t1 = stripped_multiline_input("Add Comment:", "Secure. records", null, null) - if (!R || !t1 || !allowed_access) + if (!sec_record || !t1 || !allowed_access) return if(!H.canUseHUD()) return if(!HAS_TRAIT(H, TRAIT_SECURITY_HUD)) return var/counter = 1 - while(R.fields[text("com_[]", counter)]) + while(sec_record.fields[text("com_[]", counter)]) counter++ - R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []
              []", allowed_access, station_time_timestamp(), time2text(world.realtime, "MMM DD"), GLOB.year_integer+YEAR_OFFSET, t1) //NSV13 edit: year offset change + sec_record.fields[text("com_[]", counter)] = text("Made by [] on [] [], []
              []", allowed_access, station_time_timestamp(), time2text(world.realtime, "MMM DD"), GLOB.year_integer+YEAR_OFFSET, t1) //NSV13 edit: year offset change to_chat(usr, "Successfully added comment.") return + //NSV13 - Roleplaying Records - End ..() //end of this massive fucking chain. TODO: make the hud chain not spooky. @@ -496,10 +518,11 @@ //Check for arrest warrant if(judgment_criteria & JUDGE_RECORDCHECK) + //NSV13 - Roleplaying Records - Start var/perpname = get_face_name(get_id_name()) - var/datum/data/record/R = find_record("name", perpname, GLOB.data_core.security) - if(R && R.fields["criminal"]) - switch(R.fields["criminal"]) + var/datum/data/record/sec_record = find_record("name", perpname, GLOB.data_core.security) + if(sec_record && sec_record.fields["criminal"]) + switch(sec_record.fields["criminal"]) if("Arrest") threatcount += 5 if("Incarcerated") @@ -510,6 +533,7 @@ threatcount += 1 if("Search") threatcount += 2 + //NSV13 - Roleplaying Records - End //Check for dresscode violations if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard)) @@ -664,9 +688,11 @@ /mob/living/carbon/human/replace_records_name(oldname,newname) // Only humans have records right now, move this up if changed. for(var/list/L in list(GLOB.data_core.general,GLOB.data_core.medical,GLOB.data_core.security,GLOB.data_core.locked)) - var/datum/data/record/R = find_record("name", oldname, L) - if(R) - R.fields["name"] = newname + //NSV13 - Roleplaying Records - Start + var/datum/data/record/general_record = find_record("name", oldname, L) + if(general_record) + general_record.fields["name"] = newname + //NSV13 - Roleplaying Records - End /mob/living/carbon/human/get_total_tint() . = ..() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 0d54786f75b..c80afa98bce 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -57,3 +57,6 @@ var/lastpuke = 0 var/last_fire_update var/account_id + + ///The Examine Panel TGUI. //NSV13 + var/datum/examine_panel/tgui = new() //create the datum diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index a1f6f5b3d17..db0e3a97909 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -16,9 +16,9 @@ if(id) . = id.assignment else - var/obj/item/pda/pda = wear_id + var/obj/item/modular_computer/pda = wear_id if(istype(pda)) - . = pda.ownjob + . = pda.saved_job else return if_no_id if(!.) @@ -30,9 +30,9 @@ var/obj/item/card/id/id = get_idcard(FALSE) if(id) return id.registered_name - var/obj/item/pda/pda = wear_id + var/obj/item/modular_computer/pda = wear_id if(istype(pda)) - return pda.owner + return pda.saved_identification return if_no_id //repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a separate proc as it'll be useful elsewhere @@ -64,15 +64,12 @@ //Useful when player is being seen by other mobs /mob/living/carbon/human/proc/get_id_name(if_no_id = "Unknown") var/obj/item/storage/wallet/wallet = wear_id - var/obj/item/pda/pda = wear_id - var/obj/item/card/id/id = wear_id var/obj/item/modular_computer/tablet/tablet = wear_id + var/obj/item/card/id/id = wear_id if(istype(wallet)) id = wallet.front_id if(istype(id)) . = id.registered_name - else if(istype(pda)) - . = pda.owner else if(istype(tablet)) var/obj/item/computer_hardware/card_slot/card_slot = tablet.all_components[MC_CARD] if(card_slot?.stored_card) @@ -205,3 +202,11 @@ return TRUE if(isclothing(wear_mask) && (wear_mask.clothing_flags & SCAN_BOOZEPOWER)) return TRUE + +///copies over clothing preferences like underwear to another human //NSV13 +/mob/living/carbon/human/proc/copy_clothing_prefs(mob/living/carbon/human/destination) + destination.underwear = underwear + destination.underwear_color = underwear_color + destination.undershirt = undershirt + destination.socks = socks + destination.jumpsuit_style = jumpsuit_style diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 08b26ce83d5..3f46cddf200 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1130,7 +1130,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(!disable_warning) to_chat(H, "The [I.name] is too big to attach.") //should be src? return FALSE - if( istype(I, /obj/item/pda) || istype(I, /obj/item/pen) || is_type_in_list(I, H.wear_suit.allowed) ) + if(istype(I, /obj/item/modular_computer/tablet) || istype(I, /obj/item/pen) || is_type_in_list(I, H.wear_suit.allowed)) return TRUE return FALSE if(ITEM_SLOT_HANDCUFFED) @@ -2086,15 +2086,9 @@ GLOBAL_LIST_EMPTY(roundstart_races) //Tail Wagging// //////////////// -/datum/species/proc/can_wag_tail(mob/living/carbon/human/H) - return FALSE - -/datum/species/proc/is_wagging_tail(mob/living/carbon/human/H) - return FALSE - -/datum/species/proc/start_wagging_tail(mob/living/carbon/human/H) - /datum/species/proc/stop_wagging_tail(mob/living/carbon/human/H) + var/obj/item/organ/tail/tail = H?.getorganslot(ORGAN_SLOT_TAIL) + tail?.set_wagging(H, FALSE) /////////////// //FLIGHT SHIT// diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index c88aec91805..dea066c1f34 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -150,23 +150,38 @@ spec_updatehealth(H) H.visible_message("[H] stops flickering and goes back to their normal state!") +//NSV13 - Ethereal Stuff - Start +#define NUTRITION_LEVEL_VERY_STARVING 50 +#define NUTRITION_LEVEL_DYING 1 + /datum/species/ethereal/handle_charge(mob/living/carbon/human/H) brutemod = 1.25 if(HAS_TRAIT(H, TRAIT_NOHUNGER)) return switch(H.nutrition) + // This is formatted in the following style: from low to high + // IE: NUTRITION_LEVEL_STARVING (150) to NUTRITION_LEVEL_FED (350) if(NUTRITION_LEVEL_FED to INFINITY) - H.clear_alert("nutrition") + H.throw_alert("nutrition", /atom/movable/screen/alert/etherealfull) if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_FED) H.throw_alert("nutrition", /atom/movable/screen/alert/etherealcharge, 1) brutemod = 1.5 - if(1 to NUTRITION_LEVEL_STARVING) + if(NUTRITION_LEVEL_VERY_STARVING to NUTRITION_LEVEL_STARVING) H.throw_alert("nutrition", /atom/movable/screen/alert/etherealcharge, 2) if(H.health > 10.5) apply_damage(0.65, TOX, null, null, H) brutemod = 1.75 - else + if(NUTRITION_LEVEL_DYING to NUTRITION_LEVEL_VERY_STARVING) H.throw_alert("nutrition", /atom/movable/screen/alert/etherealcharge, 3) + if(H.health > 10.5) + apply_damage(0.65, TOX, null, null, H) + brutemod = 1.9 + else + H.throw_alert("nutrition", /atom/movable/screen/alert/etherealcharge, 4) if(H.health > 10.5) apply_damage(1, TOX, null, null, H) brutemod = 2 + +#undef NUTRITION_LEVEL_VERY_STARVING +#undef NUTRITION_LEVEL_DYING +//NSV13 - Ethereal Stuff - Stop diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index ad7101ace17..d851dc73637 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -31,24 +31,6 @@ stop_wagging_tail(H) . = ..() -/datum/species/human/felinid/can_wag_tail(mob/living/carbon/human/H) - return ("tail_human" in mutant_bodyparts) || ("waggingtail_human" in mutant_bodyparts) - -/datum/species/human/felinid/is_wagging_tail(mob/living/carbon/human/H) - return ("waggingtail_human" in mutant_bodyparts) - -/datum/species/human/felinid/start_wagging_tail(mob/living/carbon/human/H) - if("tail_human" in mutant_bodyparts) - mutant_bodyparts -= "tail_human" - mutant_bodyparts |= "waggingtail_human" - H.update_body() - -/datum/species/human/felinid/stop_wagging_tail(mob/living/carbon/human/H) - if("waggingtail_human" in mutant_bodyparts) - mutant_bodyparts -= "waggingtail_human" - mutant_bodyparts |= "tail_human" - H.update_body() - /datum/species/human/felinid/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) if(ishuman(C)) var/mob/living/carbon/human/H = C diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index d927395ede2..0919b024e28 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -53,28 +53,6 @@ stop_wagging_tail(H) . = ..() -/datum/species/lizard/can_wag_tail(mob/living/carbon/human/H) - return ("tail_lizard" in mutant_bodyparts) || ("waggingtail_lizard" in mutant_bodyparts) - -/datum/species/lizard/is_wagging_tail(mob/living/carbon/human/H) - return ("waggingtail_lizard" in mutant_bodyparts) - -/datum/species/lizard/start_wagging_tail(mob/living/carbon/human/H) - if("tail_lizard" in mutant_bodyparts) - mutant_bodyparts -= "tail_lizard" - mutant_bodyparts -= "spines" - mutant_bodyparts |= "waggingtail_lizard" - mutant_bodyparts |= "waggingspines" - H.update_body() - -/datum/species/lizard/stop_wagging_tail(mob/living/carbon/human/H) - if("waggingtail_lizard" in mutant_bodyparts) - mutant_bodyparts -= "waggingtail_lizard" - mutant_bodyparts -= "waggingspines" - mutant_bodyparts |= "tail_lizard" - mutant_bodyparts |= "spines" - H.update_body() - /* Lizard subspecies: ASHWALKERS */ diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 25373b3ab22..4e98524fa88 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -233,14 +233,13 @@ playsound(src, 'sound/items/welder.ogg', 50, 1) -/obj/item/pda/lighteater_act(obj/item/light_eater/light_eater) +/obj/item/modular_computer/tablet/lighteater_act(obj/item/light_eater/light_eater) if(light_range && light_power > 0 && light_on) - //Eject the ID card - if(id) - id.forceMove(get_turf(src)) - id = null - update_icon() - playsound(src, 'sound/machines/terminal_eject.ogg', 50, TRUE) + // Only the queen of Beetania can save our IDs from this infernal nightmare + var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2] + var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD] + card_slot2.try_eject() + card_slot.try_eject() ..() /obj/item/clothing/head/helmet/space/plasmaman/lighteater_act(obj/item/light_eater/light_eater, atom/parent) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index a0d2fa33500..44c4712617d 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -32,6 +32,11 @@ qdel(S) else S.be_replaced() + //NSV13 - stop runtiming + if(registered_z) + SSmobs.clients_by_zlevel[registered_z] -= src + registered_z = null + //NSV13 end if(ranged_ability) ranged_ability.remove_ranged_ability(src) if(buckled) @@ -200,20 +205,17 @@ return /mob/living/get_photo_description(obj/item/camera/camera) - var/list/mob_details = list() var/list/holding = list() var/len = length(held_items) if(len) for(var/obj/item/I in held_items) - if(!holding.len) + if(!length(holding)) holding += "[p_they(TRUE)] [p_are()] holding \a [I]" else if(held_items.Find(I) == len) holding += ", and \a [I]." else holding += ", \a [I]" - holding += "." - mob_details += "You can also see [src] on the photo[health < (maxHealth * 0.75) ? ", looking a bit hurt":""][holding ? ". [holding.Join("")]":"."]." - return mob_details.Join("") + return "You can also see [src] on the photo[health < (maxHealth * 0.75) ? ", looking a bit hurt":""].[length(holding) ? " [holding.Join("")].":""]" //Called when we bump onto an obj /mob/living/proc/ObjBump(obj/O) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index faff55536ae..99c20de4772 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -140,3 +140,5 @@ var/body_pixel_x_offset = 0 ///Default Y offset var/body_pixel_y_offset = 0 + + var/rotate_on_lying = FALSE //NSV13 diff --git a/code/modules/mob/living/living_sentience.dm b/code/modules/mob/living/living_sentience.dm index 2e349cbcd38..d778bac1562 100644 --- a/code/modules/mob/living/living_sentience.dm +++ b/code/modules/mob/living/living_sentience.dm @@ -1,15 +1,19 @@ //WHY ISN'T THIS COMPONENT +/// The ban type to check if somebody attempts to play this "playable mob" +/mob/living/var/playable_bantype + /mob/living/ghostize(can_reenter_corpse, sentience_retention) . = ..() switch(sentience_retention) if (SENTIENCE_RETAIN) if (playable) //so the alert goes through for observing ghosts - set_playable() + set_playable(playable_bantype) if (SENTIENCE_FORCE) - set_playable() + set_playable(playable_bantype) if (SENTIENCE_ERASE) playable = FALSE + playable_bantype = null /mob/living/attack_ghost(mob/user) . = ..() @@ -34,6 +38,10 @@ if(key) to_chat(user, "Someone else already took [name].") return TRUE + if(!SSticker.HasRoundStarted()) + return + if(!user?.client?.can_take_ghost_spawner(playable_bantype, TRUE, flags_1 & ADMIN_SPAWNED_1)) + return key = user.key log_game("[key_name(src)] took control of [name].") remove_from_spawner_menu() @@ -41,10 +49,11 @@ to_chat(src, "[get_spawner_flavour_text()]") return TRUE -/mob/living/proc/set_playable() +/mob/living/proc/set_playable(ban_type = null, poll_ignore_key = null) playable = TRUE + playable_bantype = ban_type if (!key) //check if there is nobody already inhibiting this mob - notify_ghosts("[name] can be controlled", null, enter_link="(Click to play)", source=src, action=NOTIFY_ATTACK, ignore_key = name) + notify_ghosts("[name] can be controlled", null, enter_link="(Click to play)", source=src, action=NOTIFY_ATTACK, ignore_key = poll_ignore_key) LAZYADD(GLOB.mob_spawners["[name]"], src) GLOB.poi_list |= src SSmobs.update_spawners() diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 7a3fb347c48..70afe01575b 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -67,7 +67,7 @@ var/datum/trackable/track = new - var/last_paper_seen = null + var/last_tablet_note_seen = null var/can_shunt = TRUE var/last_announcement = "" // For AI VOX, if enabled var/turf/waypoint //Holds the turf of the currently selected waypoint. @@ -98,6 +98,8 @@ var/list/cam_hotkeys = new/list(9) var/cam_prev + var/atom/movable/screen/ai/modpc/interfaceButton + var/datum/robot_control/robot_control //NSV13 /mob/living/silicon/ai/Initialize(mapload, datum/ai_laws/L, mob/target_ai) @@ -132,6 +134,7 @@ job = JOB_NAME_AI + create_modularInterface() create_eye() if(client) apply_pref_name("ai",client) @@ -147,11 +150,6 @@ add_verb(/mob/living/silicon/ai/proc/show_laws_verb) - aiPDA = new/obj/item/pda/ai(src) - aiPDA.owner = real_name - aiPDA.ownjob = JOB_NAME_AI - aiPDA.name = real_name + " (" + aiPDA.ownjob + ")" - aiMulti = new(src) radio = new /obj/item/radio/headset/silicon/ai(src) aicamera = new/obj/item/camera/siliconcam/ai_camera(src) @@ -170,6 +168,7 @@ builtInCamera = new (src) builtInCamera.network = list("ss13") //Nsv13 + AddComponent(/datum/component/holomap) for(var/stype in subtypesof(/datum/component/simple_teamchat/radio_dependent/squad)) AddComponent(stype, override = TRUE) get_or_update_overmap() //AIs don't move, so we do this here. @@ -469,9 +468,9 @@ play_vox_word(href_list["say_word"], null, src) return #endif - if(href_list["show_paper"]) - if(last_paper_seen) - src << browse(last_paper_seen, "window=show_paper") + if(href_list["show_tablet_note"]) + if(last_tablet_note_seen) + src << browse(last_tablet_note_seen, "window=show_tablet") //Carn: holopad requests if(href_list["jumptoholopad"]) var/obj/machinery/holopad/H = locate(href_list["jumptoholopad"]) in GLOB.machines @@ -544,7 +543,12 @@ return if(M) M.transfer_ai(AI_MECH_HACK, src, usr) //Called om the mech itself. + if(href_list["show_paper_note"]) + var/obj/item/paper/paper_note = locate(href_list["show_paper_note"]) + if(!paper_note) + return + paper_note.show_through_camera(usr) /mob/living/silicon/ai/proc/switchCamera(obj/machinery/camera/C) if(QDELETED(C)) @@ -829,13 +833,21 @@ "floating face" = 'icons/mob/ai.dmi', "xeno queen" = 'icons/mob/alien.dmi', "horror" = 'icons/mob/ai.dmi', - "clock" = 'nsv13/icons/mob/ai_holo.dmi' - ) //NSV13 - Added Clockwork Hologram + "clock" = 'nsv13/icons/mob/ai_holo.dmi', + "custom" + ) //NSV13 - Added Clockwork Hologram and Custom Hologram input = input("Please select a hologram:") as null|anything in sortList(icon_list) if(input) qdel(holo_icon) switch(input) + //NSV13 - AI Custom Holographic Form - Start + if("custom") + if(client?.prefs?.custom_holoform_icon) + holo_icon = client.prefs.get_filtered_holoform(HOLOFORM_FILTER_AI) + else + holo_icon = getHologramIcon(icon('icons/mob/ai.dmi', "default")) + //NSV13 - AI Custom Holographic Form - Stop if("xeno queen") holo_icon = getHologramIcon(icon(icon_list[input],"alienq")) else @@ -987,17 +999,12 @@ if(oldname != real_name) if(eyeobj) eyeobj.name = "[newname] (AI Eye)" + modularInterface.saved_identification = real_name // Notify Cyborgs for(var/mob/living/silicon/robot/Slave in connected_robots) Slave.show_laws() -/mob/living/silicon/ai/replace_identification_name(oldname,newname) - if(aiPDA) - aiPDA.owner = newname - aiPDA.name = newname + " (" + aiPDA.ownjob + ")" - - /mob/living/silicon/ai/proc/add_malf_picker() to_chat(src, "In the top right corner of the screen you will find the Malfunctions tab, where you can purchase various abilities, from upgraded surveillance to station ending doomsday devices.") to_chat(src, "You are also capable of hacking APCs, which grants you more points to spend on your Malfunction powers. The drawback is that a hacked APC will give you away if spotted by the crew. Hacking an APC takes 60 seconds.") diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index dbcb592e6f7..ce24e1f98db 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -73,7 +73,7 @@ // Use this when setting the ai_eye's location. // It will also stream the chunk that the new loc is in. -/mob/camera/ai_eye/proc/setLoc(destination, force_update = FALSE) +/mob/camera/ai_eye/proc/setLoc(destination, force_update = FALSE, dir) //NSV13 - AI Custom Holographic Form if(ai) if(!isturf(ai.loc)) return @@ -93,7 +93,7 @@ //Holopad if(istype(ai.current, /obj/machinery/holopad)) var/obj/machinery/holopad/H = ai.current - H.move_hologram(ai, destination) + H.move_hologram(ai, destination, dir) //NSV13 - AI Custom Holographic Form if(ai.camera_light_on) ai.light_cameras() if(ai.master_multicam) @@ -165,7 +165,7 @@ for(var/i = 0; i < max(user.sprint, initial); i += 20) var/turf/step = get_turf(get_step(user.eyeobj, direct)) if(step) - user.eyeobj.setLoc(step) + user.eyeobj.setLoc(step, null, direct) //NSV13 - AI Custom Holographic Form user.cooldown = world.timeofday + 5 if(user.acceleration) diff --git a/code/modules/mob/living/silicon/examine.dm b/code/modules/mob/living/silicon/examine.dm index 7de281de5f2..5a3d7207e4d 100644 --- a/code/modules/mob/living/silicon/examine.dm +++ b/code/modules/mob/living/silicon/examine.dm @@ -4,3 +4,10 @@ . += "[src] has the following laws:" for(var/law in laws.get_law_list(include_zeroth = TRUE)) . += law + + //NSV13 - Silicon Flavor Text - Start + if(client) + var/line = "Examine closely..." + if(line) + . += line + //NS13 - Silicon Flavor Text - End diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index 7e575f40916..e4e1c1a7a0e 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -14,9 +14,12 @@ throw_alert("newlaw", /atom/movable/screen/alert/newlaw) if(announce && last_lawchange_announce != world.time) to_chat(src, "Your laws have been changed.") + overlay_fullscreen("law_change", /atom/movable/screen/fullscreen/law_change, 1) // lawset modules cause this function to be executed multiple times in a tick, so we wait for the next tick in order to be able to see the entire lawset addtimer(CALLBACK(src, PROC_REF(show_laws)), 0) addtimer(CALLBACK(src, PROC_REF(deadchat_lawchange)), 0) + // Wait a tick and clear the vignette + addtimer(CALLBACK(src, PROC_REF(clear_fullscreen), "law_change"), 0.2 SECONDS) last_lawchange_announce = world.time /mob/living/silicon/proc/set_law_sixsixsix(law, announce = TRUE) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 43ac4b15fca..fdb6787f62c 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -87,6 +87,7 @@ var/overload_bulletblock = 0 //Why is this a good idea? var/overload_maxhealth = 0 var/silent = FALSE + var/atom/movable/screen/ai/modpc/interface_button /mob/living/silicon/pai/can_unbuckle() @@ -126,16 +127,13 @@ aicamera = new /obj/item/camera/siliconcam/ai_camera(src) aicamera.flash_enabled = TRUE - //PDA - aiPDA = new/obj/item/pda/ai(src) - aiPDA.owner = real_name - aiPDA.ownjob = "pAI Messenger" - aiPDA.name = real_name + " (" + aiPDA.ownjob + ")" - . = ..() + create_modularInterface() emittersemicd = TRUE addtimer(CALLBACK(src, PROC_REF(emittercool)), 600) + return INITIALIZE_HINT_LATELOAD + /mob/living/silicon/pai/Life() if(hacking) @@ -160,6 +158,11 @@ D.open() hacking = FALSE + +/mob/living/silicon/pai/LateInitialize() + . = ..() + modularInterface.saved_identification = name + /mob/living/silicon/pai/make_laws() laws = new /datum/ai_laws/pai() return TRUE @@ -296,6 +299,7 @@ /mob/living/silicon/pai/process(delta_time) emitterhealth = CLAMP((emitterhealth + (emitterregen * delta_time)), -50, emittermaxhealth) + /obj/item/paicard/attackby(obj/item/W, mob/user, params) ..() user.set_machine(src) @@ -307,6 +311,11 @@ else to_chat(user, "Encryption Key ports not configured.") +/mob/living/silicon/pai/can_interact_with(atom/A) + if(A == modularInterface) + return TRUE + return ..() + /obj/item/paicard/emag_act(mob/user) // Emag to wipe the master DNA and supplemental directive if(!pai) return diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 5d85e6cd489..cdb00414f8f 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -20,10 +20,6 @@ addtimer(CALLBACK(src, PROC_REF(emittercool)), emittercd) mobility_flags = MOBILITY_FLAGS_DEFAULT density = TRUE - if(istype(card.loc, /obj/item/pda)) - var/obj/item/pda/P = card.loc - P.pai = null - P.visible_message("[src] ejects itself from [P]!") if(isliving(card.loc)) var/mob/living/L = card.loc if(!L.temporarilyRemoveItemFromInventory(card)) diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/modules/mob/living/silicon/pai/signaler.dm similarity index 96% rename from code/game/objects/items/devices/PDA/radio.dm rename to code/modules/mob/living/silicon/pai/signaler.dm index 5eb75cea263..791f9f01561 100644 --- a/code/game/objects/items/devices/PDA/radio.dm +++ b/code/modules/mob/living/silicon/pai/signaler.dm @@ -1,3 +1,4 @@ +// Formerly [code/game/objects/items/devices/PDA/radio.dm] // Radio Cartridge, essentially a remote signaler with limited spectrum. /obj/item/integrated_signaler name = "\improper PDA radio module" diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index a7cd7dd6ba3..dcadb125dca 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -50,8 +50,6 @@ left_part = "" if("directives") left_part = directives() - if("pdamessage") - left_part = pdamessage() if("buy") left_part = downloadSoftware() if("manifest") @@ -217,21 +215,6 @@ to_chat(src, "You are not being carried by anyone!") return 0 // FALSE ? If you return here you won't call paiinterface() below - if("pdamessage") - if(!isnull(aiPDA)) - if(!aiPDA.owner) - aiPDA.owner = src.real_name - aiPDA.ownjob = "pAI" - if(href_list["toggler"]) - aiPDA.toff = !aiPDA.toff - else if(href_list["ringer"]) - aiPDA.silent = !aiPDA.silent - else if(href_list["target"]) - if(silent) - return alert("Communications circuits remain uninitialized.") - var/target = locate(href_list["target"]) in GLOB.PDAs - aiPDA.create_message(src, target) - if("medicalrecord") // Accessing medical records if(subscreen == 1) medicalActive1 = find_record("id", href_list["med_rec"], GLOB.data_core.general) @@ -318,8 +301,6 @@ // Basic dat += "Basic
              " for(var/s in software) - if(s == "digital messenger") - dat += "Digital Messenger
              " if(s == "crew manifest") dat += "Crew Manifest
              " if(s == "host scan") @@ -628,26 +609,6 @@ to_chat(AI, "Network Alert: Brute-force encryption crack in progress. Unable to pinpoint location.") hacking = TRUE -// Digital Messenger -/mob/living/silicon/pai/proc/pdamessage() - - var/dat = "

              Digital Messenger

              " - dat += {"Signal/Receiver Status: - [(aiPDA.toff) ? "\[Off\]" : "\[On\]"]
              - Ringer Status: - [(aiPDA.silent) ? "\[Off\]" : "\[On\]"]

              "} - dat += "
                " - if(!aiPDA.toff) - for (var/obj/item/pda/P in get_viewable_pdas()) - if (P == aiPDA) - continue - dat += "
              • [P]" - dat += "
              • " - dat += "
              " - dat += "

              " - dat += "Messages:
              [aiPDA.tnote]" - return dat - // Loudness Booster /mob/living/silicon/pai/proc/softwareLoudness() if(!internal_instrument) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index a8d343170e4..dc57aca536b 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -86,9 +86,7 @@ var/sight_mode = 0 hud_possible = list(ANTAG_HUD, DIAG_STAT_HUD, DIAG_HUD, DIAG_BATT_HUD, DIAG_TRACK_HUD) - ///The reference to the built-in tablet that borgs carry. - var/obj/item/modular_computer/tablet/integrated/modularInterface - var/atom/movable/screen/robot/modPC/interfaceButton + var/atom/movable/screen/robot/modpc/interfaceButton var/list/upgrades = list() @@ -179,17 +177,6 @@ diag_hud_set_borgcell() logevent("System brought online.") -/mob/living/silicon/robot/proc/create_modularInterface() - if(!modularInterface) - modularInterface = new /obj/item/modular_computer/tablet/integrated(src) - modularInterface.layer = ABOVE_HUD_PLANE - modularInterface.plane = ABOVE_HUD_PLANE - -/mob/living/silicon/robot/modules/syndicate/create_modularInterface() - if(!modularInterface) - modularInterface = new /obj/item/modular_computer/tablet/integrated/syndicate(src) - return ..() - /** * Sets the tablet theme and icon * @@ -198,12 +185,12 @@ */ /mob/living/silicon/robot/proc/set_modularInterface_theme() if(istype(module, /obj/item/robot_module/syndicate) || emagged) - modularInterface.device_theme = "syndicate" + modularInterface.device_theme = THEME_SYNDICATE modularInterface.icon_state = "tablet-silicon-syndicate" modularInterface.icon_state_powered = "tablet-silicon-syndicate" modularInterface.icon_state_unpowered = "tablet-silicon-syndicate" else - modularInterface.device_theme = "ntos" + modularInterface.device_theme = THEME_NTOS modularInterface.icon_state = "tablet-silicon" modularInterface.icon_state_powered = "tablet-silicon" modularInterface.icon_state_unpowered = "tablet-silicon" @@ -254,28 +241,37 @@ to_chat(src,"ERROR: Module installer reply timeout. Please check internal connections.") return - var/list/modulelist = list("Standard" = /obj/item/robot_module/standard, \ - "Engineering" = /obj/item/robot_module/engineering, \ - "Medical" = /obj/item/robot_module/medical, \ - "Miner" = /obj/item/robot_module/miner, \ - "Janitor" = /obj/item/robot_module/janitor, \ - "Service" = /obj/item/robot_module/butler) - if(!CONFIG_GET(flag/disable_peaceborg)) - modulelist["Peacekeeper"] = /obj/item/robot_module/peacekeeper + //NSV13 - Borg Skin Framework - Start + if(!length(GLOB.cyborg_module_list)) + GLOB.cyborg_module_list = list( + "Standard" = /obj/item/robot_module/standard, + "Engineering" = /obj/item/robot_module/engineering, + "Medical" = /obj/item/robot_module/medical, + "Cargo" = /obj/item/robot_module/cargo, + "Miner" = /obj/item/robot_module/miner, + "Janitor" = /obj/item/robot_module/janitor, + "Service" = /obj/item/robot_module/butler, + ) //NSV13 - Cargo and Munition Borgs + if(!CONFIG_GET(flag/disable_peaceborg)) + GLOB.cyborg_module_list["Peacekeeper"] = /obj/item/robot_module/peacekeeper + + for(var/module in GLOB.cyborg_module_list) + // Creating the list here since we know all the module icons will need them right after. + GLOB.cyborg_all_modules_icon_list[module] = list() // Create radial menu for choosing borg model *smug* module - var/list/module_icons = list() - for(var/option in modulelist) - var/obj/item/robot_module/module = modulelist[option] - var/module_icon = initial(module.cyborg_base_icon) - module_icons[option] = image(icon = 'icons/mob/robots.dmi', icon_state = module_icon) + if(!length(GLOB.cyborg_base_modules_icon_list)) + for(var/option in GLOB.cyborg_module_list) + var/obj/item/robot_module/module = GLOB.cyborg_module_list[option] + var/module_icon = initial(module.cyborg_base_icon) + GLOB.cyborg_base_modules_icon_list[option] = image(icon = 'icons/mob/robots.dmi', icon_state = module_icon) - var/input_module = show_radial_menu(src, src, module_icons, radius = 42) + var/input_module = show_radial_menu(src, src, GLOB.cyborg_base_modules_icon_list, radius = 42) if(!input_module || module.type != /obj/item/robot_module) return - module.transform_to(modulelist[input_module]) - + module.transform_to(GLOB.cyborg_module_list[input_module]) + //NSV13 - Borg Skin Framework - Stop /mob/living/silicon/robot/proc/updatename(client/C) if(shell) @@ -561,7 +557,7 @@ else to_chat(user, "Unable to locate a radio!") - else if (istype(W, /obj/item/card/id)||istype(W, /obj/item/pda)) // trying to unlock the interface with an ID card + else if (istype(W, /obj/item/card/id)||istype(W, /obj/item/modular_computer/tablet/pda)) // trying to unlock the interface with an ID card togglelock(user) else if(istype(W, /obj/item/borg/upgrade/)) @@ -873,7 +869,7 @@ /mob/living/silicon/robot/modules/Initialize(mapload) . = ..() - module.transform_to(set_module) + INVOKE_ASYNC(module, TYPE_PROC_REF(/obj/item/robot_module, transform_to), set_module, TRUE) //NSV13 - Borg Skin Framework /mob/living/silicon/robot/modules/standard set_module = /obj/item/robot_module/standard @@ -908,7 +904,7 @@ /mob/living/silicon/robot/modules/syndicate icon_state = "synd_sec" - faction = list(ROLE_SYNDICATE) + faction = list(FACTION_SYNDICATE) bubble_icon = "syndibot" req_access = list(ACCESS_SYNDICATE) lawupdate = FALSE @@ -932,6 +928,8 @@ /mob/living/silicon/robot/modules/syndicate/create_modularInterface() if(!modularInterface) modularInterface = new /obj/item/modular_computer/tablet/integrated/syndicate(src) + modularInterface.saved_identification = real_name + modularInterface.saved_job = "Cyborg" return ..() /mob/living/silicon/robot/modules/syndicate/proc/show_playstyle() @@ -941,6 +939,11 @@ /mob/living/silicon/robot/modules/syndicate/ResetModule() return +/mob/living/silicon/robot/modules/syndicate/create_modularInterface() + if(!modularInterface) + modularInterface = new /obj/item/modular_computer/tablet/integrated/syndicate(src) + return ..() + /mob/living/silicon/robot/modules/syndicate/medical icon_state = "synd_medical" playstyle_string = "You are a Syndicate medical cyborg!
              \ @@ -1087,6 +1090,7 @@ notify_ai(RENAME, oldname, newname) if(!QDELETED(builtInCamera)) builtInCamera.c_tag = real_name + modularInterface.saved_identification = real_name custom_name = newname @@ -1314,26 +1318,3 @@ cell.charge = min(cell.charge + amount, cell.maxcharge) if(repairs) heal_bodypart_damage(repairs, repairs - 1) - -/** - * Records an IC event log entry in the cyborg's internal tablet. - * - * Creates an entry in the borglog list of the cyborg's internal tablet, listing the current - * in-game time followed by the message given. These logs can be seen by the cyborg in their - * BorgUI tablet app. By design, logging fails if the cyborg is dead. - * - * Arguments: - * arg1: a string containing the message to log. - */ -/mob/living/silicon/robot/proc/logevent(var/string = "") - if(!string) - return - if(stat == DEAD) //Dead borgs log no longer - return - if(!modularInterface) - stack_trace("Cyborg [src] ( [type] ) was somehow missing their integrated tablet. Please make a bug report.") - create_modularInterface() - modularInterface.borglog += "[station_time_timestamp()] - [string]" - var/datum/computer_file/program/borg_self_monitor/program = modularInterface.get_self_monitoring() - if(program) - program.force_full_update() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 7d64a101065..c43b93fe79a 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -36,6 +36,13 @@ var/ride_allow_incapacitated = TRUE var/allow_riding = TRUE var/canDispose = FALSE // Whether the borg can stuff itself into disposal + //NSV13 - Borg Skin Framework - Start + var/list/borg_skins + /// Traits unique to this model, i.e. having a unique dead sprite + var/list/module_features = list() + ///Host of this module + var/mob/living/silicon/robot/robot + //NSV13 - Borg Skin Framework - Stop /obj/item/robot_module/Initialize(mapload) . = ..() @@ -120,6 +127,16 @@ S.cost = 1 S.source = get_or_create_estorage(/datum/robot_energy_storage/beacon) + //NSV13 - Cargo Borgs - Start + else if(istype(S, /obj/item/stack/package_wrap/cyborg)) + S.cost = 1 + S.source = get_or_create_estorage(/datum/robot_energy_storage/package_wrap) + + else if(istype(S, /obj/item/stack/wrapping_paper/cyborg)) + S.cost = 1 + S.source = get_or_create_estorage(/datum/robot_energy_storage/wrapping_paper) + //NSV13 - Cargo Borgs - Stop + if(S?.source) S.materials = list() S.is_cyborg = 1 @@ -163,6 +180,11 @@ var/obj/item/gun/energy/EG = I if(!EG.chambered) EG.recharge_newshot() //try to reload a new shot. + ///NSV13 - Cargo Borgs - Start + else if(istype(I, /obj/item/hand_labeler/cyborg)) + var/obj/item/hand_labeler/cyborg/labeler = I + labeler.labels_left = 30 + ///NSV13 - Cargo Borgs - Stop R.toner = R.tonermax @@ -189,10 +211,12 @@ if(R.hud_used) R.hud_used.update_robot_modules_display() -/obj/item/robot_module/proc/transform_to(new_module_type) +/obj/item/robot_module/proc/transform_to(new_module_type, forced = FALSE) //NSV13 - Borg Skin Framework var/mob/living/silicon/robot/R = loc + R.icon = 'icons/mob/robots.dmi' //NSV13 - Borg Skin Framework - Should prevent the invisibility glitch var/obj/item/robot_module/RM = new new_module_type(R) - if(!RM.be_transformed_to(src)) + RM.robot = R //NSV13 - Cargo Borg + if(!RM.be_transformed_to(src, forced)) //NSV13 - Borg Skin Framework qdel(RM) return R.module = RM @@ -203,7 +227,29 @@ qdel(src) return RM -/obj/item/robot_module/proc/be_transformed_to(obj/item/robot_module/old_module) +//NSV13 - Borg Skin Framework - Start +/obj/item/robot_module/proc/be_transformed_to(obj/item/robot_module/old_module, forced = FALSE) + if(islist(borg_skins) && !forced) + var/mob/living/silicon/robot/cyborg = loc + var/list/reskin_icons = list() + for(var/skin in borg_skins) + var/list/details = borg_skins[skin] + reskin_icons[skin] = image(icon = details[SKIN_ICON] || 'icons/mob/robots.dmi', icon_state = details[SKIN_ICON_STATE]) + var/borg_skin = show_radial_menu(cyborg, cyborg, reskin_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), cyborg, old_module), radius = 38, require_near = TRUE) + if(!borg_skin) + return FALSE + var/list/details = borg_skins[borg_skin] + if(!isnull(details[SKIN_ICON_STATE])) + cyborg_base_icon = details[SKIN_ICON_STATE] + if(!isnull(details[SKIN_ICON])) + cyborg.icon = details[SKIN_ICON] + if(!isnull(details[SKIN_LIGHT_KEY])) + special_light_key = details[SKIN_LIGHT_KEY] + if(!isnull(details[SKIN_HAT_OFFSET])) + hat_offset = details[SKIN_HAT_OFFSET] + if(!isnull(details[SKIN_FEATURES])) + module_features += details[SKIN_FEATURES] + //NSV13 - Borg Skin Framework - Stop for(var/i in old_module.added_modules) added_modules += i old_module.added_modules -= i @@ -394,10 +440,11 @@ /obj/item/restraints/handcuffs/cable/zipties, /obj/item/melee/baton/loaded, /obj/item/borg/charger, - /obj/item/gun/energy/disabler/cyborg, + /obj/item/gun/energy/printer/taser, + /obj/item/gun/energy/printer/glock, /obj/item/clothing/mask/gas/sechailer/cyborg, - /obj/item/extinguisher/mini) - emag_modules = list(/obj/item/gun/energy/laser/cyborg) + /obj/item/extinguisher/mini) //NSV13 replaced disabler with taser and (lethal) glock printer guns + emag_modules = list(/obj/item/gun/energy/printer) //NSV13 replaced energy gun with LMG ratvar_modules = list( /obj/item/clock_module/abscond, /obj/item/clockwork/weapon/brass_spear, @@ -555,6 +602,15 @@ cyborg_base_icon = "service_m" // display as butlerborg for radial model selection special_light_key = "service" hat_offset = 0 + //NSV13 - Borg Skin Framework - Start + borg_skins = list( + "Waitress" = list(SKIN_ICON_STATE = "service_f"), + "Butler" = list(SKIN_ICON_STATE = "service_m"), + "Bro" = list(SKIN_ICON_STATE = "brobot"), + "Kent" = list(SKIN_ICON_STATE = "kent", SKIN_LIGHT_KEY = "medical", SKIN_HAT_OFFSET = 3), + "Tophat" = list(SKIN_ICON_STATE = "tophat", SKIN_LIGHT_KEY = NONE, SKIN_HAT_OFFSET = INFINITY), + ) + //NSV13 - Borg Skin Framework - Stop /obj/item/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) ..() @@ -562,34 +618,7 @@ if(O) O.reagents.add_reagent(/datum/reagent/consumable/enzyme, 2 * coeff) -/obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module) - var/mob/living/silicon/robot/cyborg = loc - var/list/service_icons = 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") - ) - var/service_robot_icon = show_radial_menu(cyborg, cyborg, service_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), cyborg, old_module), radius = 42, require_near = TRUE) - switch(service_robot_icon) - if("Waitress") - cyborg_base_icon = "service_f" - if("Butler") - cyborg_base_icon = "service_m" - if("Bro") - cyborg_base_icon = "brobot" - if("Kent") - cyborg_base_icon = "kent" - special_light_key = "medical" - hat_offset = 3 - if("Tophat") - cyborg_base_icon = "tophat" - special_light_key = null - hat_offset = INFINITY //He's already wearing a hat - else - return FALSE - return ..() +// NSV13 - Borg Skin Framework - Removed /butler/be_transformed_to /obj/item/robot_module/borgi name = "Borgi" @@ -626,26 +655,15 @@ moduleselect_icon = "miner" hat_offset = 0 var/obj/item/t_scanner/adv_mining_scanner/cyborg/mining_scanner //built in memes. - -/obj/item/robot_module/miner/be_transformed_to(obj/item/robot_module/old_module) - var/mob/living/silicon/robot/cyborg = loc - var/list/miner_icons = list( - "Lavaland Miner" = image(icon = 'icons/mob/robots.dmi', icon_state = "miner"), - "Asteroid Miner" = image(icon = 'icons/mob/robots.dmi', icon_state = "minerOLD"), - "Spider Miner" = image(icon = 'icons/mob/robots.dmi', icon_state = "spidermin") + //NSV13 - Borg Skin Framework - Start + borg_skins = list( + "Lavaland Miner" = list(SKIN_ICON_STATE = "miner"), + "Asteroid Miner" = list(SKIN_ICON_STATE = "minerOLD", SKIN_LIGHT_KEY = "miner"), + "Spider Miner" = list(SKIN_ICON_STATE = "spidermin"), ) - var/miner_robot_icon = show_radial_menu(cyborg, cyborg, miner_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), cyborg, old_module), radius = 42, require_near = TRUE) - switch(miner_robot_icon) - if("Lavaland Miner") - cyborg_base_icon = "miner" - if("Asteroid Miner") - cyborg_base_icon = "minerOLD" - special_light_key = "miner" - if("Spider Miner") - cyborg_base_icon = "spidermin" - else - return FALSE - return ..() + //NSV13 - Borg Skin Framework - Stop + +// NSV13 - Borg Skin Framework - Removed /miner/be_transformed_to /obj/item/robot_module/miner/rebuild_modules() . = ..() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 8c2cec804d5..c185db2f650 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -46,7 +46,8 @@ var/hack_software = FALSE //Will be able to use hacking actions var/interaction_range = 7 //wireless control range - var/obj/item/pda/aiPDA + ///The reference to the built-in tablet that borgs carry. + var/obj/item/modular_computer/tablet/integrated/modularInterface //The internal ID card inside the AI. var/list/default_access_list = list() @@ -55,6 +56,9 @@ mobchatspan = "centcom" + //NSV13 - Roleplay Stuff + var/datum/examine_panel/tgui = new() //create the datum + /mob/living/silicon/Initialize(mapload) . = ..() GLOB.silicon_mobs += src @@ -73,6 +77,30 @@ internal_id_card.name = "[src] internal access" internal_id_card.access |= access_list +/mob/living/silicon/proc/create_modularInterface() + if(!modularInterface) + modularInterface = new /obj/item/modular_computer/tablet/integrated(src) + modularInterface.layer = ABOVE_HUD_PLANE + modularInterface.plane = ABOVE_HUD_PLANE + modularInterface.saved_identification = real_name || name + if(iscyborg(src)) + modularInterface.saved_job = JOB_NAME_CYBORG + modularInterface.install_component(new /obj/item/computer_hardware/hard_drive/small/pda/robot) + if(isAI(src)) + modularInterface.saved_job = JOB_NAME_AI + modularInterface.install_component(new /obj/item/computer_hardware/hard_drive/small/pda/ai) + if(ispAI(src)) + modularInterface.saved_job = JOB_NAME_PAI + modularInterface.install_component(new /obj/item/computer_hardware/hard_drive/small/pda/ai) + +/mob/living/silicon/robot/model/syndicate/create_modularInterface() + if(!modularInterface) + modularInterface = new /obj/item/modular_computer/tablet/integrated/syndicate(src) + modularInterface.saved_identification = real_name + modularInterface.saved_job = JOB_NAME_CYBORG + return ..() + + /mob/living/silicon/med_hud_set_health() return //we use a different hud @@ -231,6 +259,11 @@ if (href_list["printlawtext"]) // this is kinda backwards to_chat(usr, href_list["printlawtext"]) + //NSV13 - Silicon Flavor Text - Start + if(href_list["lookup_info"]) + tgui.holder = src + tgui.ui_interact(usr) //datum has a tgui component, here we open the window + //NSV13 - Silicon Flavor Text - End return @@ -438,6 +471,10 @@ add_sensors() to_chat(src, "Sensor overlay activated.") +/mob/living/silicon/proc/crew_manifest(mob/living/silicon) //nsv add manifest to borg computer + var/mob/living/silicon/borgo = usr + borgo.ai_roster() + /mob/living/silicon/proc/GetPhoto(mob/user) if (aicamera) return aicamera.selectpicture(user) @@ -461,10 +498,50 @@ return FALSE /mob/living/silicon/handle_high_gravity(gravity) - return + //NSV13 - silicons are not fully grav immune, only very resistant. + if(gravity <= GRAVITY_DAMAGE_TRESHOLD + 5) //5G additional tolerance. Magicnumber to avoid touching base defines. + return + gravity -= 5 //3 is base tolerance, this adds 5 onto it for the total of 8. + return ..() + //NSV13 end. /mob/living/silicon/rust_heretic_act() adjustBruteLoss(500) /mob/living/silicon/hears_radio() return FALSE + +/** + * Records an IC event log entry in the cyborg's internal tablet. + * + * Creates an entry in the borglog list of the cyborg's internal tablet (if it's a borg), listing the current + * in-game time followed by the message given. These logs can be seen by the cyborg in their + * BorgUI tablet app. By design, logging fails if the cyborg is dead. + * + * (This used to be in robot.dm. It's in here now.) + * + * Arguments: + * string: a string containing the message to log. + */ +/mob/living/silicon/proc/logevent(string = "") + if(!string) + return + if(stat == DEAD) //Dead silicons log no longer + return + if(!modularInterface) + stack_trace("Silicon [src] ( [type] ) was somehow missing their integrated tablet. Please make a bug report.") + create_modularInterface() + var/mob/living/silicon/robot/robo = modularInterface.borgo + if(istype(robo)) + modularInterface.borglog += "[station_time_timestamp()] - [string]" + var/datum/computer_file/program/borg_self_monitor/program = modularInterface.get_self_monitoring() + if(program) + program.force_full_update() + +/// Same as the normal character name replacement, but updates the contents of the modular interface. +/mob/living/silicon/fully_replace_character_name(oldname, newname) + . = ..() + if(!modularInterface) + stack_trace("Silicon [src] ( [type] ) was somehow missing their integrated tablet. Please make a bug report.") + create_modularInterface() + modularInterface.saved_identification = newname diff --git a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm index b873ae66255..9f666beb24f 100644 --- a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm +++ b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm @@ -24,7 +24,7 @@ desc = "The Syndicate sends their regards." emagged = 2 noloot = TRUE - faction = list(ROLE_SYNDICATE) + faction = list(FACTION_SYNDICATE) /mob/living/simple_animal/bot/secbot/grievous/nullcrate/ComponentInitialize() . = ..() diff --git a/code/modules/mob/living/simple_animal/bot/atmosbot.dm b/code/modules/mob/living/simple_animal/bot/atmosbot.dm index 00e15872e6d..609be5abf0a 100644 --- a/code/modules/mob/living/simple_animal/bot/atmosbot.dm +++ b/code/modules/mob/living/simple_animal/bot/atmosbot.dm @@ -293,7 +293,7 @@ if(!locked || issilicon(user) || IsAdminGhost(user)) dat += "Breach Pressure: [breached_pressure]
              " dat += "Temperature Control: [temperature_control?"Enabled":"Disabled"]
              " - dat += "Temperature Target: [ideal_temperature]C
              " + dat += "Temperature Target: [ideal_temperature]K
              " dat += "Gas Scrubbing Controls
              " for(var/gas_id in gasses) var/gas_enabled = gasses[gas_id] @@ -318,7 +318,7 @@ if("[G]" == gas_id) gasses[G] = gasses[G] ? FALSE : TRUE else if(href_list["set_ideal_temperature"]) - var/new_temp = input(usr, "Set Target Temperature ([T0C] to [T20C + 20])", "Target Temperature") as num + var/new_temp = input(usr, "Set Target Temperature ([T0C]K to [T20C + 20]K)", "Target Temperature") as num if(!isnum(new_temp) || new_temp < T0C || new_temp > T20C + 20) return ideal_temperature = new_temp diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index f8d516e1dae..bd1966eb996 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -83,7 +83,7 @@ var/nearest_beacon // the nearest beacon's tag var/turf/nearest_beacon_loc // the nearest beacon's location - var/beacon_freq = FREQ_NAV_BEACON + //var/beacon_freq = FREQ_NAV_BEACON //NSV13 - Navbeacon Refactor - Removed var/model = "" //The type of bot it is. var/bot_type = 0 //The type of bot it is, for radio control. var/data_hud_type = DATA_HUD_DIAGNOSTIC_BASIC //The type of data HUD the bot uses. Diagnostic by default. @@ -307,7 +307,7 @@ to_chat(user, "The maintenance panel is now [open ? "opened" : "closed"].") else to_chat(user, "The maintenance panel is locked.") - else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda)) + else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/modular_computer/tablet/pda)) togglelock(user) else if(istype(W, /obj/item/paicard)) insertpai(user, W) @@ -716,24 +716,24 @@ Pass a positive integer as an argument to override a bot's default speed. /mob/living/simple_animal/bot/proc/get_next_patrol_target() // search the beacon list for the next target in the list. for(var/obj/machinery/navbeacon/NB in get_overmap().beacons_in_ship) //NSV13 - Navbeacons are in the Overmap Ship - if(NB.codes["next_patrol"] != null) //NSV13 + if(NB.codes[NAVBEACON_PATROL_NEXT] != null) //NSV13 if(NB.location == next_destination) //Does the Beacon location text match the destination? destination = new_destination //We now know the name of where we want to go. patrol_target = NB.loc //Get its location and set it as the target. original_patrol = NB.loc - next_destination = NB.codes["next_patrol"] //Also get the name of the next beacon in line. + next_destination = NB.codes[NAVBEACON_PATROL_NEXT] //Also get the name of the next beacon in line. //NSV13 - Navbeacon Refactor return TRUE /mob/living/simple_animal/bot/proc/find_nearest_beacon() for(var/obj/machinery/navbeacon/NB in get_overmap().beacons_in_ship) //NSV13 - Navbeacons are in the Overmap Ship - if(NB.codes["next_patrol"] != null) //NSV13 + if(NB.codes[NAVBEACON_PATROL_NEXT] != null) //NSV13 var/dist = get_dist(src, NB) if(nearest_beacon) //Loop though the beacon net to find the true closest beacon. //Ignore the beacon if were are located on it. if(dist>1 && dist 1) //Begin the search, save this one for comparison on the next loop. diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 4dabbac52ac..9e61c933938 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -41,6 +41,11 @@ var/datum/job/janitor/J = new/datum/job/janitor access_card.access += J.get_access() prev_access = access_card.access + GLOB.janitor_devices += src + +/mob/living/simple_animal/bot/cleanbot/Destroy() + GLOB.janitor_devices -= src + return ..() /mob/living/simple_animal/bot/cleanbot/turn_on() ..() @@ -64,7 +69,7 @@ text_dehack_fail = "[name] does not seem to respond to your repair code!" /mob/living/simple_animal/bot/cleanbot/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/card/id)||istype(W, /obj/item/pda)) + if(istype(W, /obj/item/card/id)||istype(W, /obj/item/modular_computer/tablet/pda)) if(bot_core.allowed(user) && !open && !emagged) locked = !locked to_chat(user, "You [ locked ? "lock" : "unlock"] \the [src] behaviour controls.") diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 72e94e6866e..33606e23b4c 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -796,7 +796,11 @@ // the we will navigate there destination = new_destination target = NB.loc - var/direction = NB.dir // this will be the load/unload dir + //NSV13 - Navbeacon Refactor - Start + var/direction = NB.codes[NAVBEACON_DELIVERY_DIRECTION] // this will be the load/unload dir + if(!direction) + direction = NB.dir // fallback + //NSV13 - Navbeacon Refactor - Stop if(direction) loaddir = text2num(direction) else diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index b5dd3f01af4..c82610ca84f 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -47,12 +47,6 @@ /obj/effect/mob_spawn/drone/attack_ghost(mob/user) if(is_banned_from(user.ckey, ROLE_DRONE) || QDELETED(src) || QDELETED(user)) return - if(CONFIG_GET(flag/use_age_restriction_for_jobs)) - if(!isnum_safe(user.client.player_age)) //apparently what happens when there's no DB connected. just don't let anybody be a drone without admin intervention - return - if(user.client.player_age < DRONE_MINIMUM_AGE) - to_chat(user, "You're too new to play as a drone! Please try again in [DRONE_MINIMUM_AGE - user.client.player_age] days.") - return if(!SSticker.mode) to_chat(user, "Can't become a drone before the game has started.") return diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index 057facfda3e..0d22d332ef3 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -18,7 +18,7 @@ health = 30 maxHealth = 120 //If you murder other drones and cannibalize them you can get much stronger initial_language_holder = /datum/language_holder/drone/syndicate - faction = list(ROLE_SYNDICATE) + faction = list(FACTION_SYNDICATE) speak_emote = list("hisses") bubble_icon = "syndibot" heavy_emp_damage = 10 diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 46f74634c0d..08c9c2448b6 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -462,7 +462,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians var/mob/living/simple_animal/hostile/guardian/G = input(src, "Pick the guardian you wish to reset", "Guardian Reset") as null|anything in sortNames(guardians) if(G) to_chat(src, "You attempt to reset [G.real_name]'s personality...") - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [src.real_name]'s [G.real_name]?", ROLE_PAI, null, FALSE, 100) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [src.real_name]'s [G.real_name]?", ROLE_HOLOPARASITE, null, 10 SECONDS) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) to_chat(G, "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance.") @@ -540,7 +540,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians return used = TRUE to_chat(user, "[use_message]") - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_HOLOPARASITE) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_HOLOPARASITE, null, 10 SECONDS) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) @@ -674,7 +674,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /obj/item/paper/guides/antag/guardian name = "Holoparasite Guide" - info = {"A list of Holoparasite Types
              + default_raw_text = {"A list of Holoparasite Types

              Assassin: Does medium damage and takes full damage, but can enter stealth, causing its next attack to do massive damage and ignore armor. However, it becomes briefly unable to recall after attacking from stealth.
              @@ -702,7 +702,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /obj/item/paper/guides/antag/guardian/wizard name = "Guardian Guide" - info = {"A list of Guardian Types
              + default_raw_text = {"A list of Guardian Types

              Assassin: Does medium damage and takes full damage, but can enter stealth, causing its next attack to do massive damage and ignore armor. However, it becomes briefly unable to recall after attacking from stealth.
              diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 3cd5f245d6a..c85b891ea68 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -24,7 +24,7 @@ attack_sound = 'sound/weapons/bladeslice.ogg' atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 15 - faction = list(ROLE_ALIEN) + faction = list(FACTION_ALIEN) status_flags = CANPUSH minbodytemp = 0 see_in_dark = 8 diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index f17d40a8148..3cb408d47c7 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -144,7 +144,7 @@ gender = FEMALE speak_emote = list("squeaks") gold_core_spawnable = NO_SPAWN - faction = list(ROLE_SYNDICATE) + faction = list(FACTION_SYNDICATE) AIStatus = AI_OFF /// Keeping track of the nuke disk for the functionality of storing it. var/obj/item/disk/nuclear/disky diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 484f5249ecb..b3758fc7464 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -156,7 +156,7 @@ While using this makes the system rely on OnFire, it still gives options for tim addtimer(CALLBACK(src, PROC_REF(spawn_elite)), 30) return visible_message("Something within [src] stirs...") - var/list/candidates = pollCandidatesForMob("Do you want to play as a lavaland elite?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, src, POLL_IGNORE_SENTIENCE_POTION) + var/list/candidates = pollCandidatesForMob("Do you want to play as a lavaland elite?", ROLE_LAVALAND_ELITE, null, 10 SECONDS, src) if(candidates.len) audible_message("The stirring sounds increase in volume!") elitemind = pick(candidates) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm index f00b778a89f..7e316fcc740 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm @@ -40,3 +40,25 @@ /mob/living/simple_animal/hostile/retaliate/bat/vampire desc = "A rare breed of bat which roosts in spaceships.\nLooks a little... bloody." speed = -1.5 + + +/mob/living/simple_animal/hostile/retaliate/bat/sgt_araneus //Despite being a bat for... reasons, this is now a spider, and is one of the HoS' pets. + name = "Sergeant Araneus" + real_name = "Sergeant Araneus" + desc = "A fierce companion of the Head of Security, this spider has been carefully trained by Nanotrasen specialists. Its beady, staring eyes send shivers down your spine." + speak_emote = list("chitters") + emote_hear = list("chitters") + faction = list("spiders") + icon_dead = "guard_dead" + icon_gib = "guard_dead" + icon_living = "guard" + icon_state = "guard" + maxHealth = 250 + health = 250 + max_co2 = 5 + max_tox = 2 + melee_damage = 15 + min_oxy = 5 + movement_type = GROUND + response_help = "pets" + turns_per_move = 10 diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 9d75eb659f7..af8d6db1272 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -40,7 +40,7 @@ loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier) atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 15 - faction = list(ROLE_SYNDICATE) + faction = list(FACTION_SYNDICATE) check_friendly_fire = 1 status_flags = CANPUSH del_on_death = TRUE @@ -287,7 +287,7 @@ environment_smash = ENVIRONMENT_SMASH_NONE attacktext = "cuts" attack_sound = 'sound/weapons/bladeslice.ogg' - faction = list(ROLE_SYNDICATE) + faction = list(FACTION_SYNDICATE) atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 mob_size = MOB_SIZE_TINY diff --git a/code/modules/mob/living/simple_animal/hostile/wizard.dm b/code/modules/mob/living/simple_animal/hostile/wizard.dm index c365014d62f..e4f104a8afb 100644 --- a/code/modules/mob/living/simple_animal/hostile/wizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/wizard.dm @@ -20,7 +20,7 @@ a_intent = INTENT_HARM atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 15 - faction = list(ROLE_WIZARD) + faction = list(FACTION_WIZARD) status_flags = CANPUSH retreat_distance = 3 //out of fireball range diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 6e449acdfdd..fd3cd1dd0c7 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -113,7 +113,7 @@ . = ..() set_nutrition(SLIME_DEFAULT_NUTRITION) if(transformeffects & SLIME_EFFECT_LIGHT_PINK) - set_playable() + set_playable(ROLE_SENTIENCE) /mob/living/simple_animal/slime/Destroy() set_target(null) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index a7549ab9d39..3a4a5eb0595 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -154,7 +154,7 @@ * Return the desc of this mob for a photo */ /mob/proc/get_photo_description(obj/item/camera/camera) - return "a ... thing?" + return "You can also see a ... thing?" /** * Show a message to this mob (visual or audible) @@ -190,7 +190,7 @@ to_chat(src, msg, avoid_highlighting = avoid_highlighting) -/atom/proc/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, list/ignored_mobs, list/visible_message_flags, separation = " ") //NSV13 +/atom/proc/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, list/ignored_mobs, list/visible_message_flags, allow_inside_usr = FALSE, separation = " ") //NSV13 var/turf/T = get_turf(src) if(!T) return @@ -231,7 +231,8 @@ if(M.see_invisible < invisibility)//if src is invisible to M msg = blind_message else if(T != loc && T != src) //if src is inside something and not a turf. - msg = blind_message + if(!allow_inside_usr || loc != usr) + msg = blind_message else if(T.lighting_object && T.lighting_object.invisibility <= M.see_invisible && T.is_softly_lit() && !in_range(T,M)) //if it is too dark. msg = blind_message if(!msg) @@ -773,12 +774,6 @@ unset_machine() src << browse(null, t1) - //NSV13 START - if(href_list["flavor_more"]) - usr << browse(text("[][]", name, replacetext(flavour_text, "\n", "
              ")), text("window=[];size=500x200", name)) - onclose(usr, "[name]") - //NSV13 STOP - if(href_list["item"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) var/slot = text2num(href_list["item"]) var/hand_index = text2num(href_list["hand_index"]) @@ -1002,8 +997,12 @@ return 1 ///Can the mob interact() with an atom? -/mob/proc/can_interact_with(atom/A) - return IsAdminGhost(src) || Adjacent(A) +/mob/proc/can_interact_with(atom/A, treat_mob_as_adjacent) + if(IsAdminGhost(src)) + return TRUE + if(treat_mob_as_adjacent && src == A.loc) + return TRUE + return Adjacent(A) ///Can the mob use Topic to interact with machines /mob/proc/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE) @@ -1102,11 +1101,11 @@ break search_id = 0 - else if( search_pda && istype(A, /obj/item/pda) ) - var/obj/item/pda/PDA = A - if(PDA.owner == oldname) - PDA.owner = newname - PDA.update_label() + else if(search_pda && istype(A, /obj/item/modular_computer/tablet/pda)) + var/obj/item/modular_computer/tablet/pda/PDA = A + if(PDA.saved_identification == oldname) + PDA.saved_identification = newname + PDA.update_id_display() if(!search_id) break search_pda = 0 diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 157565c96aa..c6e307add8b 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -490,15 +490,17 @@ log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.") message_admins("[key_name_admin(usr)] has offered control of ([ADMIN_LOOKUPFLW(M)]) to ghosts") var/poll_message = "Do you want to play as [M.real_name]?" + var/ban_key = BAN_ROLE_ALL_ANTAGONISTS if(M.mind && M.mind.assigned_role) poll_message = "[poll_message] Job:[M.mind.assigned_role]." if(M.mind && M.mind.special_role) poll_message = "[poll_message] Status:[M.mind.special_role]." else if(M.mind) - var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist/) + var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist) if(A) poll_message = "[poll_message] Status:[A.name]." - var/list/mob/dead/observer/candidates = pollCandidatesForMob(poll_message, ROLE_PAI, null, FALSE, 100, M) + ban_key = A.banning_key + var/list/mob/dead/observer/candidates = pollCandidatesForMob(poll_message, ban_key, null, 10 SECONDS, M, ignore_category = FALSE) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index cb7cb649e21..6b4e2e68b26 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -153,9 +153,15 @@ else if(key == ";" && !mods[MODE_HEADSET] && stat == CONSCIOUS) mods[MODE_HEADSET] = TRUE else if((key in GLOB.department_radio_prefixes) && length(message) > length(key) + 1 && !mods[RADIO_EXTENSION]) - mods[RADIO_KEY] = lowertext(message[1 + length(key)]) - mods[RADIO_EXTENSION] = GLOB.department_radio_keys[mods[RADIO_KEY]] - chop_to = length(key) + 2 + key = lowertext(message[1 + length(key)]) + var/valid_extension = GLOB.department_radio_keys[key] + var/valid_say_mode = SSradio.saymodes[key] + if(valid_extension || valid_say_mode) + mods[RADIO_KEY] = key + mods[RADIO_EXTENSION] = GLOB.department_radio_keys[key] + chop_to = length(key) + 2 + else + return message else if(key == "," && !mods[LANGUAGE_EXTENSION]) for(var/ld in GLOB.all_languages) var/datum/language/LD = ld diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 28d5d549bd2..5beb7149961 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -1,13 +1,35 @@ +GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar to GLOB.PDAs (used primarily with ntmessenger.dm) + // This is the base type that does all the hardware stuff. // Other types expand it - tablets use a direct subtypes, and // consoles and laptops use "procssor" item that is held inside machinery piece /obj/item/modular_computer name = "modular microcomputer" desc = "A small portable microcomputer." + light_system = MOVABLE_LIGHT + light_range = 3 + light_power = 0.6 + light_color = "#FFFFFF" + light_on = FALSE var/enabled = 0 // Whether the computer is turned on. var/screen_on = 1 // Whether the computer is active/opened/it's screen is on. - var/device_theme = "ntos" // Sets the theme for the main menu, hardware config, and file browser apps. Overridden by certain non-NT devices. + /// If it's bypassing the set icon state + var/bypass_state = FALSE + /// Whether or not the computer can be upgraded + var/upgradable = TRUE + /// Whether or not the computer can be deconstructed + var/deconstructable = TRUE + /// Sets the theme for the main menu, hardware config, and file browser apps. + var/device_theme = THEME_NTOS + /// Whether this device is allowed to change themes or not. + var/theme_locked = FALSE + /// If the theme should not be initialized from theme prefs (for custom job themes) + var/ignore_theme_pref = FALSE + /// List of themes for this device to allow. + var/list/allowed_themes + /// Color used for the Thinktronic Classic theme. + var/classic_color = "#808000" var/datum/computer_file/program/active_program = null // A currently active program running on the computer. var/hardware_flag = 0 // A flag that describes this device type var/last_power_usage = 0 @@ -41,21 +63,76 @@ /// Number of total expansion bays this computer has available. var/max_bays = 0 - var/list/idle_threads // Idle programs on background. They still receive process calls but can't be interacted with. - var/obj/physical = null // Object that represents our computer. It's used for Adjacent() and UI visibility checks. - var/has_light = FALSE //If the computer has a flashlight/LED light/what-have-you installed - var/comp_light_luminosity = 3 //The brightness of that light - var/comp_light_color //The color of that light - light_on = FALSE // override behavior from atom so flashlight button is not marked as ON + /// If we can imprint IDs on this device + var/can_save_id = FALSE + /// The currently imprinted ID. + var/saved_identification = null + /// The currently imprinted job. + var/saved_job = null + /// If the saved info should auto-update + var/saved_auto_imprint = FALSE + /// The amount of honks. honk honk honk honk honk honkh onk honkhnoohnk + var/honk_amount = 0 + /// Idle programs on background. They still receive process calls but can't be interacted with. + var/list/idle_threads + /// Object that represents our computer. It's used for Adjacent() and UI visibility checks. + var/obj/physical = null + /// If the computer has a flashlight/LED light/what-have-you installed + var/has_light = FALSE + /// How far the computer's light can reach, is not editable by players. + var/comp_light_luminosity = 3 + /// The built-in light's color, editable by players. + var/comp_light_color = "#FFFFFF" + /// Whether or not the tablet is invisible in messenger and other apps + var/messenger_invisible = FALSE + /// The saved image used for messaging purposes + var/datum/picture/saved_image + /// The ringtone that will be set on initialize + var/init_ringtone = "beep" + /// If the device starts with its ringer on + var/init_ringer_on = TRUE + /// The action for enabling/disabling the flashlight + var/datum/action/item_action/toggle_computer_light/light_action + /// Stored pAI card + var/obj/item/paicard/stored_pai_card + /// If the device is capable of storing a pAI + var/can_store_pai = FALSE /obj/item/modular_computer/Initialize(mapload) + allowed_themes = GLOB.ntos_device_themes_default . = ..() START_PROCESSING(SSobj, src) if(!physical) physical = src - comp_light_color = "#FFFFFF" + set_light_color(comp_light_color) + set_light_range(comp_light_luminosity) idle_threads = list() + update_id_display() + if(has_light) + light_action = new(src) update_icon() + add_messenger() + +/obj/item/modular_computer/proc/update_id_display() + var/obj/item/computer_hardware/identifier/id = all_components[MC_IDENTIFY] + if(id) + id.UpdateDisplay() + +/obj/item/modular_computer/proc/on_id_insert() + ui_update() + var/obj/item/computer_hardware/card_slot/cardholder = all_components[MC_CARD] + // We shouldn't auto-imprint if ID modification is open. + if(!can_save_id || !saved_auto_imprint || !cardholder || istype(active_program, /datum/computer_file/program/card_mod)) + return + if(cardholder.current_identification == saved_identification && cardholder.current_job == saved_job) + return + if(!cardholder.current_identification || !cardholder.current_job) + return + saved_identification = cardholder.current_identification + saved_job = cardholder.current_job + update_id_display() + playsound(src, 'sound/machines/terminal_processing.ogg', 15, TRUE) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(playsound), src, 'sound/machines/terminal_success.ogg', 15, TRUE), 1.3 SECONDS) /obj/item/modular_computer/Destroy() kill_program(forced = TRUE) @@ -63,20 +140,50 @@ for(var/port in all_components) var/obj/item/computer_hardware/component = all_components[port] qdel(component) - all_components.Cut() //Die demon die + all_components?.Cut() + if(istype(stored_pai_card)) + qdel(stored_pai_card) + remove_pai() + if(istype(light_action)) + QDEL_NULL(light_action) physical = null + remove_messenger() return ..() -/obj/item/modular_computer/AltClick(mob/user) - if(issilicon(user)) - return +/obj/item/modular_computer/ui_action_click(mob/user, actiontype) + if(istype(actiontype, light_action)) + toggle_flashlight() + else + ..() + +/// From [/datum/newscaster/feed_network/proc/save_photo] +/obj/item/modular_computer/proc/save_photo(icon/photo) + var/photo_file = copytext_char(md5("/icon[photo]"), 1, 6) + if(!fexists("[GLOB.log_directory]/photos/[photo_file].png")) + //Clean up repeated frames + var/icon/clean = new /icon() + clean.Insert(photo, "", SOUTH, 1, 0) + fcopy(clean, "[GLOB.log_directory]/photos/[photo_file].png") + return photo_file - if(user.canUseTopic(src, BE_CLOSE)) - var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2] - var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD] - return (card_slot2?.try_eject(user) || card_slot?.try_eject(user)) //Try the secondary one first. +/** + * Plays a ping sound. + * + * Timers runtime if you try to make them call playsound. Yep. + */ +/obj/item/modular_computer/proc/play_ping() + playsound(loc, 'sound/machines/ping.ogg', get_clamped_volume(), FALSE, -1) + +/obj/item/modular_computer/AltClick(mob/user) + if(issilicon(user) || !user.canUseTopic(src, BE_CLOSE)) + return FALSE + var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2] + var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD] + if(!card_slot2?.try_eject(user)) + return card_slot?.try_eject(user) + return TRUE -// Gets IDs/access levels from card slot. Would be useful when/if PDAs would become modular PCs. +// Gets IDs/access levels from card slot. Would be useful when/if PDAs would become modular PCs. (They are now!! you are welcome - itsmeow) /obj/item/modular_computer/GetAccess() var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD] if(card_slot) @@ -92,19 +199,31 @@ /obj/item/modular_computer/RemoveID() var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2] var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD] - return (card_slot2?.try_eject() || card_slot?.try_eject()) //Try the secondary one first. + var/removed_id = (card_slot2?.try_eject() || card_slot?.try_eject()) + if(removed_id) + if(ishuman(loc)) + var/mob/living/carbon/human/human_wearer = loc + if(human_wearer.wear_id == src) + human_wearer.sec_hud_set_ID() + return removed_id + return ..() /obj/item/modular_computer/InsertID(obj/item/inserting_item) var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD] var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2] + if(!(card_slot || card_slot2)) return FALSE - var/obj/item/card/inserting_id = inserting_item.RemoveID() + var/obj/item/card/inserting_id = inserting_item.GetID() if(!inserting_id) return FALSE if((card_slot?.try_insert(inserting_id)) || (card_slot2?.try_insert(inserting_id))) + if(ishuman(loc)) + var/mob/living/carbon/human/human_wearer = loc + if(human_wearer.wear_id == src) + human_wearer.sec_hud_set_ID() return TRUE return FALSE @@ -142,6 +261,14 @@ newemag = TRUE if(newemag) to_chat(user, "You swipe \the [src]. A console window momentarily fills the screen, with white text rapidly scrolling past.") + kill_program(forced = TRUE, update = FALSE) + + var/datum/computer_file/program/emag_console/emag_console = new(src) + emag_console.computer = src + emag_console.program_state = PROGRAM_STATE_ACTIVE + active_program = emag_console + ui_interact(user) + update_icon() return TRUE to_chat(user, "You swipe \the [src]. A console window fills the screen, but it quickly closes itself after only a few lines are written to it.") return FALSE @@ -157,35 +284,35 @@ /obj/item/modular_computer/update_icon() cut_overlays() - if(!enabled) - icon_state = icon_state_unpowered - else - icon_state = icon_state_powered - if(active_program) - add_overlay(active_program.program_icon_state ? active_program.program_icon_state : icon_state_menu) - else - add_overlay(icon_state_menu) - - if(obj_integrity <= integrity_failure) - add_overlay("bsod") - add_overlay("broken") + if(!bypass_state) + icon_state = enabled ? icon_state_powered : icon_state_unpowered + var/init_icon = initial(icon) + if(!init_icon) + return -// On-click handling. Turns on the computer if it's off and opens the GUI. -/obj/item/modular_computer/interact(mob/user) if(enabled) - ui_interact(user) - else - turn_on(user) + add_overlay(active_program ? mutable_appearance(init_icon, active_program.program_icon_state) : mutable_appearance(init_icon, icon_state_menu)) + + if(can_store_pai && stored_pai_card) + add_overlay(stored_pai_card.pai ? mutable_appearance(init_icon, "pai-overlay") : mutable_appearance(init_icon, "pai-off-overlay")) -/obj/item/modular_computer/proc/turn_on(mob/user) + if(obj_integrity <= integrity_failure) + add_overlay(mutable_appearance(init_icon, "bsod")) + add_overlay(mutable_appearance(init_icon, "broken")) + +/obj/item/modular_computer/proc/turn_on(mob/user, open_ui = TRUE) + if(enabled) + if(open_ui) + ui_interact(user) + return TRUE var/issynth = issilicon(user) // Robots and AIs get different activation messages. if(obj_integrity <= integrity_failure) if(issynth) to_chat(user, "You send an activation signal to \the [src], but it responds with an error code. It must be damaged.") else to_chat(user, "You press the power button, but the computer fails to boot up, displaying variety of errors before shutting down again.") - return + return FALSE // If we have a recharger, enable it automatically. Lets computer without a battery work. var/obj/item/computer_hardware/recharger/recharger = all_components[MC_CHARGE] @@ -199,12 +326,15 @@ to_chat(user, "You press the power button and start up \the [src].") enabled = 1 update_icon() - ui_interact(user) + if(open_ui) + ui_interact(user) + return TRUE else // Unpowered if(issynth) to_chat(user, "You send an activation signal to \the [src] but it does not respond.") else to_chat(user, "You press the power button but \the [src] does not respond.") + return FALSE // Process currently calls handle_power(), may be expanded in future if more things are added. /obj/item/modular_computer/process(delta_time) @@ -264,11 +394,26 @@ if(istype(holder)) to_chat(holder, "[icon2html(src)] The [src] displays a [caller.filedesc] notification: [alerttext]") +/obj/item/modular_computer/proc/ring(ringtone) // bring bring + if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED)) + playsound(src, pick('sound/machines/twobeep_voice1.ogg', 'sound/machines/twobeep_voice2.ogg'), 50, TRUE) + else + playsound(src, 'sound/machines/twobeep_high.ogg', 50, TRUE) + visible_message("*[ringtone]*") + +/obj/item/modular_computer/proc/send_sound() + playsound(src, 'sound/machines/terminal_success.ogg', 15, TRUE) + +/obj/item/modular_computer/proc/send_select_sound() + playsound(src, 'sound/machines/terminal_select.ogg', 15, TRUE) + // Function used by NanoUI's to obtain data for header. All relevant entries begin with "PC_" /obj/item/modular_computer/proc/get_header_data() var/list/data = list() data["PC_device_theme"] = device_theme + data["PC_classic_color"] = classic_color + data["PC_theme_locked"] = theme_locked var/obj/item/computer_hardware/battery/battery_module = all_components[MC_CELL] var/obj/item/computer_hardware/recharger/recharger = all_components[MC_CHARGE] @@ -307,32 +452,77 @@ if(3) data["PC_ntneticon"] = "sig_lan.gif" - if(length(idle_threads)) - var/list/program_headers = list() - for(var/I in idle_threads) - var/datum/computer_file/program/P = I - if(!P.ui_header) - continue - program_headers.Add(list(list( - "icon" = P.ui_header - ))) + var/list/program_headers = list() + for(var/datum/computer_file/program/P as anything in idle_threads) + if(!P?.ui_header) + continue + program_headers.Add(list(list( + "icon" = P.ui_header + ))) - data["PC_programheaders"] = program_headers + data["PC_programheaders"] = program_headers - data["PC_stationtime"] = station_time_timestamp() + data["PC_stationdate"] = "[time2text(world.realtime, "DDD, Month DD")], [GLOB.year_integer+YEAR_OFFSET]" data["PC_hasheader"] = 1 data["PC_showexitprogram"] = active_program ? 1 : 0 // Hides "Exit Program" button on mainscreen return data // Relays kill program request to currently active program. Use this to quit current program. -/obj/item/modular_computer/proc/kill_program(forced = FALSE) +/obj/item/modular_computer/proc/kill_program(forced = FALSE, update = TRUE) if(active_program) + if(active_program in idle_threads) + idle_threads.Remove(active_program) active_program.kill_program(forced) active_program = null - var/mob/user = usr - if(user && istype(user)) - ui_interact(user) // Re-open the UI on this computer. It should show the main screen now. + if(update) + var/mob/user = usr + if(user && istype(user)) + ui_interact(user) // Re-open the UI on this computer. It should show the main screen now. + update_icon() + +/obj/item/modular_computer/proc/open_program(mob/user, datum/computer_file/program/program, in_background = FALSE) + if(program.computer != src) + CRASH("tried to open program that does not belong to this computer") + + if(!program || !istype(program)) // Program not found or it's not executable program. + to_chat(user, "\The [src]'s screen shows \"I/O ERROR - Unable to run program\" warning.") + return FALSE + + if(!program.is_supported_by_hardware(hardware_flag, 1, user)) + return FALSE + + // The program is already running. Resume it. + if(!in_background) + if(program in idle_threads) + program.program_state = PROGRAM_STATE_ACTIVE + active_program = program + program.alert_pending = FALSE + idle_threads.Remove(program) + update_icon() + return TRUE + else if(program in idle_threads) + return TRUE + var/obj/item/computer_hardware/processor_unit/PU = all_components[MC_CPU] + if(idle_threads.len > PU.max_idle_programs) + to_chat(user, "\The [src] displays a \"Maximal CPU load reached. Unable to run another program.\" error.") + return FALSE + + if(program.requires_ntnet && !get_ntnet_status(program.requires_ntnet_feature)) // The program requires NTNet connection, but we are not connected to NTNet. + to_chat(user, "\The [src]'s screen shows \"Unable to connect to NTNet. Please retry. If problem persists contact your system administrator.\" warning.") + return FALSE + + if(!program.on_start(user)) + return FALSE + + if(!in_background) + active_program = program + program.alert_pending = FALSE + ui_interact(user) + else + program.program_state = PROGRAM_STATE_BACKGROUND + idle_threads.Add(program) update_icon() + return TRUE // Returns 0 for No Signal, 1 for Low Signal and 2 for Good Signal. 3 is for wired connection (always-on) /obj/item/modular_computer/proc/get_ntnet_status(specific_action = 0) @@ -358,7 +548,40 @@ enabled = 0 update_icon() +/** + * Toggles the computer's flashlight, if it has one. + * + * Called from ui_act(), does as the name implies. + * It is seperated from ui_act() to be overwritten as needed. +*/ +/obj/item/modular_computer/proc/toggle_flashlight() + if(!has_light) + return FALSE + set_light_on(!light_on) + update_icon() + // Show the light_on overlay on top of the action button icon + if(light_action?.owner) + light_action.UpdateButtonIcon(force = TRUE) + return TRUE + +/** + * Sets the computer's light color, if it has a light. + * + * Called from ui_act(), this proc takes a color string and applies it. + * It is seperated from ui_act() to be overwritten as needed. + * Arguments: + ** color is the string that holds the color value that we should use. Proc auto-fails if this is null. +*/ +/obj/item/modular_computer/proc/set_flashlight_color(color) + if(!has_light || !color) + return FALSE + comp_light_color = color + set_light_color(color) + return TRUE + /obj/item/modular_computer/screwdriver_act(mob/user, obj/item/tool) + if(!deconstructable) + return if(!length(all_components)) balloon_alert(user, "no components installed!") return @@ -381,53 +604,103 @@ return tool.play_tool_sound(user, volume=20) - uninstall_component(H, user) + uninstall_component(H, user, TRUE) + ui_update() return -/obj/item/modular_computer/attackby(obj/item/W as obj, mob/user as mob) +/obj/item/modular_computer/attackby(obj/item/attacking_item, mob/user, params) // Check for ID first - if(istype(W, /obj/item/card/id) && InsertID(W)) + if(istype(attacking_item, /obj/item/card/id) && InsertID(attacking_item)) return + // Scan a photo. + if(istype(attacking_item, /obj/item/photo)) + var/obj/item/computer_hardware/hard_drive/hdd = all_components[MC_HDD] + var/obj/item/photo/pic = attacking_item + if(hdd) + for(var/datum/computer_file/program/messenger/messenger in hdd.stored_files) + saved_image = pic.picture + messenger.ProcessPhoto() + to_chat(user, "You scan \the [pic] into \the [src]'s messenger.") + ui_update() + return + // Insert items into the components for(var/h in all_components) var/obj/item/computer_hardware/H = all_components[h] - if(H.try_insert(W, user)) + if(H.try_insert(attacking_item, user)) + ui_update() return + // Insert a pAI card + if(can_store_pai && !stored_pai_card && istype(attacking_item, /obj/item/paicard)) + if(!user.transferItemToLoc(attacking_item, src)) + return + stored_pai_card = attacking_item + // If the pAI moves out of the PDA, remove the reference. + RegisterSignal(stored_pai_card, COMSIG_MOVABLE_MOVED, PROC_REF(stored_pai_moved)) + RegisterSignal(stored_pai_card, COMSIG_PARENT_QDELETING, PROC_REF(remove_pai)) + to_chat(user, "You slot \the [attacking_item] into [src].") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50) + update_icon() + // Insert new hardware - if(istype(W, /obj/item/computer_hardware)) - if(install_component(W, user)) + var/obj/item/computer_hardware/inserted_hardware = attacking_item + if(istype(inserted_hardware) && upgradable) + if(install_component(inserted_hardware, user)) + inserted_hardware.on_inserted(user) + ui_update() return - if(W.tool_behaviour == TOOL_WRENCH) + if(attacking_item.tool_behaviour == TOOL_WRENCH) if(length(all_components)) balloon_alert(user, "remove the other components!") return - W.play_tool_sound(src, user, 20, volume=20) + attacking_item.play_tool_sound(src, user, 20, volume=20) new /obj/item/stack/sheet/iron( get_turf(src.loc), steel_sheet_cost ) user.balloon_alert(user, "disassembled") relay_qdel() qdel(src) return - if(W.tool_behaviour == TOOL_WELDER) + if(attacking_item.tool_behaviour == TOOL_WELDER) if(obj_integrity == max_integrity) to_chat(user, "\The [src] does not require repairs.") return - if(!W.tool_start_check(user, amount=1)) + if(!attacking_item.tool_start_check(user, amount=1)) return to_chat(user, "You begin repairing damage to \the [src]...") - if(W.use_tool(src, user, 20, volume=50, amount=1)) + if(attacking_item.use_tool(src, user, 20, volume=50, amount=1)) obj_integrity = max_integrity to_chat(user, "You repair \the [src].") update_icon() return + var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD] + // Check to see if we have an ID inside, and a valid input for money + if(card_slot?.GetID() && iscash(attacking_item)) + var/obj/item/card/id/id = card_slot.GetID() + id.attackby(attacking_item, user) // If we do, try and put that attacking object in + return ..() +/// Handle when the pAI moves to exit the PDA +/obj/item/modular_computer/proc/stored_pai_moved() + if(istype(stored_pai_card) && stored_pai_card.loc != src) + visible_message("[stored_pai_card] ejects itself from [src]!") + remove_pai() + +/// Set the internal pAI card to null - this is NOT "Ejecting" it. +/obj/item/modular_computer/proc/remove_pai() + if(!istype(stored_pai_card)) + return + UnregisterSignal(stored_pai_card, COMSIG_MOVABLE_MOVED) + UnregisterSignal(stored_pai_card, COMSIG_PARENT_QDELETING) + stored_pai_card = null + update_icon() + // Used by processor to relay qdel() to machinery type. /obj/item/modular_computer/proc/relay_qdel() return @@ -437,3 +710,13 @@ if(physical && physical != src) return physical.Adjacent(neighbor) return ..() + +/obj/item/modular_computer/proc/add_messenger() + GLOB.TabletMessengers += src + +/obj/item/modular_computer/proc/remove_messenger() + GLOB.TabletMessengers -= src + +// Make messages visible via allow_inside_usr +/obj/item/modular_computer/visible_message(message, self_message, blind_message, vision_distance, list/ignored_mobs, list/visible_message_flags, allow_inside_usr = TRUE) + return ..() diff --git a/code/modules/modular_computers/computers/item/computer_components.dm b/code/modules/modular_computers/computers/item/computer_components.dm index 92a7ffaf474..6da96a9f09d 100644 --- a/code/modules/modular_computers/computers/item/computer_components.dm +++ b/code/modules/modular_computers/computers/item/computer_components.dm @@ -13,9 +13,9 @@ if(LAZYACCESS(expansion_bays, try_install.device_type)) to_chat(user, "The computer immediately ejects /the [try_install] and flashes an error: \"Hardware Address Conflict\".") return FALSE - - if(all_components[try_install.device_type]) - to_chat(user, "This computer's hardware slot is already occupied by \the [all_components[try_install.device_type]].") + var/obj/item/computer_hardware/existing = all_components[try_install.device_type] + if(existing && (!istype(existing) || !existing.hotswap)) + to_chat(user, "This computer's hardware slot is already occupied by \the [existing].") return FALSE return TRUE @@ -28,6 +28,13 @@ if(user && !user.transferItemToLoc(install, src)) return FALSE + var/obj/item/computer_hardware/existing = all_components[install.device_type] + if(istype(existing) && existing.hotswap) + if(!uninstall_component(existing, user, TRUE)) + // ABORT!! + install.forceMove(get_turf(user)) + return FALSE + if(install.expansion_hw) LAZYSET(expansion_bays, install.device_type, install) all_components[install.device_type] = install @@ -36,16 +43,19 @@ install.holder = src install.forceMove(src) install.on_install(src, user) - + return TRUE /// Uninstalls component. -/obj/item/modular_computer/proc/uninstall_component(obj/item/computer_hardware/yeet, mob/living/user = null) +/obj/item/modular_computer/proc/uninstall_component(obj/item/computer_hardware/yeet, mob/living/user = null, put_in_hands) if(yeet.holder != src) // Not our component at all. return FALSE to_chat(user, "You remove \the [yeet] from \the [src].") - yeet.forceMove(get_turf(src)) + if(put_in_hands) + user.put_in_hands(yeet) + else + yeet.forceMove(get_turf(src)) forget_component(yeet) yeet.on_remove(src, user) if(enabled && !use_power()) diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm index 82b0ce03a6d..c5ee063727e 100644 --- a/code/modules/modular_computers/computers/item/computer_ui.dm +++ b/code/modules/modular_computers/computers/item/computer_ui.dm @@ -1,6 +1,8 @@ -/obj/item/modular_computer/attack_self(mob/user) - . = ..() - ui_interact(user) +/obj/item/modular_computer/interact(mob/user) + if(enabled) + ui_interact(user) + else + turn_on(user) // Operates TGUI @@ -14,63 +16,116 @@ ) /obj/item/modular_computer/ui_interact(mob/user, datum/tgui/ui) - if(!enabled) - if(ui) - ui.close() - return 0 - if(!use_power()) + if(!enabled || !user.is_literate() || !use_power()) if(ui) ui.close() - return 0 + return // Robots don't really need to see the screen, their wireless connection works as long as computer is on. if(!screen_on && !issilicon(user)) if(ui) ui.close() - return 0 - - // If we have an active program switch to it now. - if(active_program) - if(ui) // This is the main laptop screen. Since we are switching to program's UI close it for now. - ui.close() - active_program.ui_interact(user) - return + return FALSE // We are still here, that means there is no program loaded. Load the BIOS/ROM/OS/whatever you want to call it. // This screen simply lists available programs and user may select them. var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD] if(!hard_drive || !hard_drive.stored_files || !hard_drive.stored_files.len) to_chat(user, "\The [src] beeps three times, it's screen displaying a \"DISK ERROR\" warning.") - return // No HDD, No HDD files list or no stored files. Something is very broken. + return FALSE // No HDD, No HDD files list or no stored files. Something is very broken. + + if(honk_amount > 0) // EXTRA annoying, huh! + honk_amount-- + playsound(src, 'sound/items/bikehorn.ogg', 30, TRUE) ui = SStgui.try_update_ui(user, src, ui) - if (!ui) - ui = new(user, src, "NtosMain") - ui.set_autoupdate(TRUE) - if(ui.open()) - ui.send_asset(get_asset_datum(/datum/asset/simple/headers)) + if(!ui) + if(active_program) + ui = new(user, src, active_program.tgui_id, active_program.filedesc) + ui.set_autoupdate(TRUE) + else + ui = new(user, src, "NtosMain") + ui.set_autoupdate(TRUE) + ui.open() + return + + var/old_open_ui = ui.interface + if(active_program) + ui.interface = active_program.tgui_id + ui.title = active_program.filedesc + else + ui.interface = "NtosMain" + //opened a new UI + if(old_open_ui != ui.interface) + update_static_data(user, ui) // forces a static UI update for the new UI + ui.send_assets() // sends any new asset datums from the new UI + if(active_program) + active_program.on_ui_create(user, ui) + +/obj/item/modular_computer/ui_close(mob/user, datum/tgui/tgui) + if(active_program) + active_program.on_ui_close(user, tgui) + +/obj/item/modular_computer/ui_assets(mob/user) + var/list/data = list() + data += get_asset_datum(/datum/asset/simple/headers) + if(active_program) + data += active_program.ui_assets(user) + return data + +/obj/item/modular_computer/ui_static_data(mob/user) + . = ..() + var/list/data = list() + if(active_program) + data += active_program.ui_static_data(user) + return data + return data /obj/item/modular_computer/ui_data(mob/user) var/list/data = get_header_data() - data["device_theme"] = device_theme - + if(active_program) + data += active_program.ui_data(user) + return data data["login"] = list() + + data["disk"] = null + + data["stored_pai"] = istype(stored_pai_card) + data["stored_pai_name"] = stored_pai_card?.pai?.name + var/obj/item/computer_hardware/card_slot/cardholder = all_components[MC_CARD] + var/obj/item/computer_hardware/hard_drive/role/ssd = all_components[MC_HDD_JOB] data["cardholder"] = FALSE + if(cardholder) data["cardholder"] = TRUE - var/obj/item/card/id/stored_card = cardholder.GetID() - if(stored_card) - var/stored_name = stored_card.registered_name - var/stored_title = stored_card.assignment - if(!stored_name) - stored_name = "Unknown" - if(!stored_title) - stored_title = "Unknown" - data["login"] = list( - IDName = stored_name, - IDJob = stored_title, - ) + data["auto_imprint"] = saved_auto_imprint + + var/stored_name = saved_identification + var/stored_title = saved_job + if(!stored_name) + stored_name = "Unknown" + if(!stored_title) + stored_title = "Unknown" + data["login"] = list( + IDName = saved_identification, + IDJob = saved_job, + ) + data["proposed_login"] = list( + IDName = cardholder.current_identification, + IDJob = cardholder.current_job, + ) + + if(ssd) + data["disk"] = ssd + data["disk_name"] = ssd.name + + for(var/datum/computer_file/program/prog in ssd.stored_files) + var/background_running = FALSE + if(prog in idle_threads) + background_running = TRUE + + data["disk_programs"] += list(list("name" = prog.filename, "desc" = prog.filedesc, "running" = background_running, "icon" = prog.program_icon, "alert" = prog.alert_pending)) data["removable_media"] = list() if(all_components[MC_SDD]) @@ -85,11 +140,11 @@ data["programs"] = list() var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD] for(var/datum/computer_file/program/P in hard_drive.stored_files) - var/running = 0 + var/background_running = FALSE if(P in idle_threads) - running = 1 + background_running = TRUE - data["programs"] += list(list("name" = P.filename, "desc" = P.filedesc, "running" = running, "icon" = P.program_icon, "alert" = P.alert_pending)) + data["programs"] += list(list("name" = P.filename, "desc" = P.filedesc, "running" = background_running, "icon" = P.program_icon, "alert" = P.alert_pending)) data["has_light"] = has_light data["light_on"] = light_on @@ -98,9 +153,11 @@ // Handles user's GUI input -/obj/item/modular_computer/ui_act(action, params) +/obj/item/modular_computer/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) if(..()) return + if(device_theme == THEME_THINKTRONIC) + send_select_sound() var/obj/item/computer_hardware/hard_drive/hard_drive = all_components[MC_HDD] switch(action) if("PC_exit") @@ -110,79 +167,47 @@ shutdown_computer() return TRUE if("PC_minimize") - var/mob/user = usr if(!active_program || !all_components[MC_CPU]) return idle_threads.Add(active_program) active_program.program_state = PROGRAM_STATE_BACKGROUND // Should close any existing UIs - active_program = null + if(ismob(usr)) + ui_interact(usr) // Re-open the UI on this computer. It should show the main screen now. update_icon() - if(user && istype(user)) - ui_interact(user) // Re-open the UI on this computer. It should show the main screen now. - + return TRUE if("PC_killprogram") var/prog = params["name"] - var/datum/computer_file/program/P = null - var/mob/user = usr + var/datum/computer_file/program/killed_program = null if(hard_drive) - P = hard_drive.find_file_by_name(prog) + killed_program = hard_drive.find_file_by_name(prog) - if(!istype(P) || P.program_state == PROGRAM_STATE_KILLED) + if(!istype(killed_program) || killed_program.program_state == PROGRAM_STATE_KILLED) return - - P.kill_program(forced = TRUE) - to_chat(user, "Program [P.filename].[P.filetype] with PID [rand(100,999)] has been killed.") + if(killed_program in idle_threads) + idle_threads.Remove(killed_program) + killed_program.kill_program(forced = TRUE) + to_chat(usr, "Program [killed_program.filename].[killed_program.filetype] with PID [rand(100,999)] has been killed.") return TRUE - if("PC_runprogram") - var/prog = params["name"] - var/datum/computer_file/program/P = null - var/mob/user = usr - if(hard_drive) - P = hard_drive.find_file_by_name(prog) - - if(!P || !istype(P)) // Program not found or it's not executable program. - to_chat(user, "\The [src]'s screen shows \"I/O ERROR - Unable to run program\" warning.") - return - - P.computer = src - - if(!P.is_supported_by_hardware(hardware_flag, 1, user)) - return - - // The program is already running. Resume it. - if(P in idle_threads) - P.program_state = PROGRAM_STATE_ACTIVE - active_program = P - P.alert_pending = FALSE - idle_threads.Remove(P) - update_icon() - return - - var/obj/item/computer_hardware/processor_unit/PU = all_components[MC_CPU] + var/is_disk = params["is_disk"] + var/datum/computer_file/program/program + var/obj/item/computer_hardware/hard_drive/role/ssd = all_components[MC_HDD_JOB] - if(idle_threads.len > PU.max_idle_programs) - to_chat(user, "\The [src] displays a \"Maximal CPU load reached. Unable to run another program.\" error.") - return + if(hard_drive && !is_disk) + program = hard_drive.find_file_by_name(params["name"]) + if(ssd && is_disk) + program = ssd.find_file_by_name(params["name"]) - if(P.requires_ntnet && !get_ntnet_status(P.requires_ntnet_feature)) // The program requires NTNet connection, but we are not connected to NTNet. - to_chat(user, "\The [src]'s screen shows \"Unable to connect to NTNet. Please retry. If problem persists contact your system administrator.\" warning.") + if(!program || !istype(program)) // Program not found or it's not executable program. + to_chat(usr, "\The [src]'s screen shows \"I/O ERROR - Unable to run program\" warning.") return - if(P.run_program(user)) - active_program = P - P.alert_pending = FALSE - update_icon() - return TRUE + program.computer = src + open_program(usr, program) if("PC_toggle_light") - light_on = !light_on - if(light_on) - set_light(comp_light_luminosity, 1, comp_light_color) - else - set_light(0) - return TRUE + return toggle_flashlight() if("PC_light_color") var/mob/user = usr @@ -194,10 +219,7 @@ if(color_hex2num(new_color) < 200) //Colors too dark are rejected to_chat(user, "That color is too dark! Choose a lighter one.") new_color = null - comp_light_color = new_color - light_color = new_color - update_light() - return TRUE + return set_flashlight_color(new_color) if("PC_Eject_Disk") var/param = params["name"] @@ -207,29 +229,68 @@ var/obj/item/computer_hardware/hard_drive/portable/portable_drive = all_components[MC_SDD] if(!portable_drive) return - if(uninstall_component(portable_drive, usr)) - user.put_in_hands(portable_drive) + if(uninstall_component(portable_drive, usr, TRUE)) playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50) + return TRUE + if("job disk") + var/obj/item/computer_hardware/hard_drive/role/ssd = all_components[MC_HDD_JOB] + if(!ssd) + return + if(uninstall_component(ssd, usr, TRUE)) + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50) + return TRUE if("intelliCard") var/obj/item/computer_hardware/ai_slot/intelliholder = all_components[MC_AI] if(!intelliholder) return if(intelliholder.try_eject(user)) playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50) + return TRUE if("ID") var/obj/item/computer_hardware/card_slot/cardholder = all_components[MC_CARD] if(!cardholder) return - cardholder.try_eject(user) + if(cardholder.try_eject(user)) + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50) + return TRUE if("secondary RFID card") var/obj/item/computer_hardware/card_slot/cardholder = all_components[MC_CARD2] if(!cardholder) return - cardholder.try_eject(user) + if(cardholder.try_eject(user)) + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50) + return TRUE + if("PC_Imprint_ID") + var/obj/item/computer_hardware/card_slot/cardholder = all_components[MC_CARD] + if(!cardholder || !can_save_id) + return TRUE + saved_identification = cardholder.current_identification + saved_job = cardholder.current_job - else - return + update_id_display() + + playsound(src, 'sound/machines/terminal_processing.ogg', 15, TRUE) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(playsound), src, 'sound/machines/terminal_success.ogg', 15, TRUE), 1.3 SECONDS) + return TRUE + if("PC_Toggle_Auto_Imprint") + saved_auto_imprint = !saved_auto_imprint + if(saved_auto_imprint) + on_id_insert() + return TRUE + if("PC_Pai_Interact") + if(!can_store_pai || !istype(stored_pai_card)) + return + if(params["option"] == "interact") + stored_pai_card.attack_self(usr) + else if(params["option"] == "eject") + usr.put_in_hands(stored_pai_card) + remove_pai() + to_chat(usr, "You remove the pAI from [src].") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50) + return TRUE + if(active_program) + return active_program.ui_act(action, params, ui, state) /obj/item/modular_computer/ui_host() if(physical) diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm index 76eb48053f7..1c754740dc0 100644 --- a/code/modules/modular_computers/computers/item/processor.dm +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -65,5 +65,8 @@ /obj/item/modular_computer/processor/alert_call(datum/computer_file/program/caller, alerttext) if(!caller || !caller.alert_able || caller.alert_silenced || !alerttext) return - playsound(src, 'sound/machines/twobeep_high.ogg', 50, TRUE) + var/sound = 'sound/machines/twobeep_high.ogg' + if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED)) + sound = pick('sound/machines/twobeep_voice1.ogg', 'sound/machines/twobeep_voice2.ogg') + playsound(src, sound, 50, TRUE) machinery_computer.visible_message("The [src] displays a [caller.filedesc] notification: [alerttext]") diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm new file mode 100644 index 00000000000..e303437b804 --- /dev/null +++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm @@ -0,0 +1,294 @@ +/obj/item/modular_computer/tablet/pda/clown + name = "clown PDA" + desc = "A portable microcomputer by Thinktronic Systems, LTD. The surface is coated with polytetrafluoroethylene and banana drippings." + note = "Honk!" + default_disk = /obj/item/computer_hardware/hard_drive/role/virus/clown + icon_state = "pda-clown" + insert_type = /obj/item/toy/crayon/rainbow + /// List of victims (of a very funny joke, that everyone loves!). Stores references to mobs. + var/list/slip_victims = list() + init_ringtone = "honk" + device_theme = THEME_NTOS_CLOWN_PINK // Give the clown the best theme + ignore_theme_pref = TRUE + +/obj/item/modular_computer/tablet/pda/clown/ComponentInitialize() + . = ..() + AddComponent(/datum/component/slippery, 7 SECONDS, NO_SLIP_WHEN_WALKING, CALLBACK(src, PROC_REF(AfterSlip)), 5 SECONDS, _force_drop = TRUE) //NSV13 - added accidents + +/obj/item/modular_computer/tablet/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) + if (istype(M) && (M.real_name != saved_identification)) + slip_victims |= REF(M) + var/obj/item/computer_hardware/hard_drive/role/virus/clown/cart = all_components[MC_HDD_JOB] + if(istype(cart) && cart.charges < 5) + cart.charges++ + playsound(src,'sound/machines/ping.ogg',30,TRUE) + +/obj/item/modular_computer/tablet/pda/mime + name = "mime PDA" + desc = "A portable microcomputer by Thinktronic Systems, LTD. The hardware has been modified for compliance with the vows of silence." + default_disk = /obj/item/computer_hardware/hard_drive/role/virus/mime + insert_type = /obj/item/toy/crayon/mime + init_ringer_on = FALSE + init_ringtone = "silence" + +/obj/item/modular_computer/tablet/pda/mime/Initialize(mapload) + . = ..() + var/obj/item/computer_hardware/hard_drive/hdd = all_components[MC_HDD] + + if(hdd) + for(var/datum/computer_file/program/messenger/msg in hdd.stored_files) + msg.mime_mode = TRUE + msg.allow_emojis = TRUE + +/obj/item/modular_computer/tablet/pda/assistant + name = "assistant PDA" + icon_state = "pda-assistant" + +/obj/item/modular_computer/tablet/pda/medical + name = "medical PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/medical + icon_state = "pda-medical" + +/obj/item/modular_computer/tablet/pda/paramedic + name = "paramedic PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/medical + icon_state = "pda-paramedical" + +/obj/item/modular_computer/tablet/pda/virologist + name = "virology PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/medical + icon_state = "pda-virology" + +/obj/item/modular_computer/tablet/pda/station_engineer + name = "engineering PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/engineering + icon_state = "pda-engineer" + +/obj/item/modular_computer/tablet/pda/security + name = "security PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/security + icon_state = "pda-security" + +/obj/item/modular_computer/tablet/pda/deputy + name = "deputy PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/security + icon_state = "pda-deputy" + +/obj/item/modular_computer/tablet/pda/brig_physician + name = "brig physician PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/brig_physician + icon_state = "pda-brigphys" + + +/obj/item/modular_computer/tablet/pda/detective + name = "detective PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/detective + icon_state = "pda-detective" + +/obj/item/modular_computer/tablet/pda/warden + name = "warden PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/security + icon_state = "pda-warden" + +/obj/item/modular_computer/tablet/pda/janitor + name = "janitor PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/janitor + icon_state = "pda-janitor" + init_ringtone = "slip" + +/obj/item/modular_computer/tablet/pda/science + name = "scientist PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/signal/toxins + icon_state = "pda-science" + init_ringtone = "boom" + +/obj/item/modular_computer/tablet/pda/science/Initialize(mapload) + . = ..() + install_component(new /obj/item/computer_hardware/radio_card) + +/obj/item/modular_computer/tablet/pda/service + name = "service PDA" + icon_state = "pda-service" + +/obj/item/modular_computer/tablet/pda/heads + default_disk = /obj/item/computer_hardware/hard_drive/role/head + icon_state = "pda-heads" + +/obj/item/modular_computer/tablet/pda/heads/Initialize(mapload) + . = ..() + install_component(new /obj/item/computer_hardware/card_slot/secondary) + +/obj/item/modular_computer/tablet/pda/heads/head_of_personnel + name = "head of personnel PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/hop + icon_state = "pda-hop" + +/obj/item/modular_computer/tablet/pda/heads/head_of_personnel/Initialize(mapload) + . = ..() + install_component(new /obj/item/computer_hardware/printer/mini) + +/obj/item/modular_computer/tablet/pda/heads/head_of_security + name = "head of security PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/hos + icon_state = "pda-hos" + +/obj/item/modular_computer/tablet/pda/heads/chief_engineer + name = "chief engineer PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/ce + icon_state = "pda-ce" + +/obj/item/modular_computer/tablet/pda/heads/chief_medical_officer + name = "chief medical officer PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/cmo + icon_state = "pda-cmo" + +/obj/item/modular_computer/tablet/pda/heads/research_director + name = "research director PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/rd + insert_type = /obj/item/pen/fountain + icon_state = "pda-rd" + +/obj/item/modular_computer/tablet/pda/heads/research_director/Initialize(mapload) + . = ..() + install_component(new /obj/item/computer_hardware/radio_card) + +/obj/item/modular_computer/tablet/pda/heads/captain + name = "captain PDA" + desc = "A portable microcomputer by Thinktronic Systems, LTD. The internals are modified to be more tough than the usual." + default_disk = /obj/item/computer_hardware/hard_drive/role/captain + insert_type = /obj/item/pen/fountain/captain + icon_state = "pda-captain" + detonatable = FALSE + +/obj/item/modular_computer/tablet/pda/cargo_technician + name = "cargo technician PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/cargo_technician + icon_state = "pda-cargo" + +/obj/item/modular_computer/tablet/pda/cargo_technician/Initialize(mapload) + . = ..() + install_component(new /obj/item/computer_hardware/printer/mini) + +/obj/item/modular_computer/tablet/pda/quartermaster + name = "quartermaster PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/quartermaster + insert_type = /obj/item/pen/fountain + icon_state = "pda-qm" + +/obj/item/modular_computer/tablet/pda/quartermaster/Initialize(mapload) + . = ..() + install_component(new /obj/item/computer_hardware/printer/mini) + +/obj/item/modular_computer/tablet/pda/shaft_miner + name = "shaft miner PDA" + icon_state = "pda-miner" + +/obj/item/modular_computer/tablet/pda/exploration_crew + name = "exploration crew PDA" + icon_state = "pda-exploration" + +/obj/item/modular_computer/tablet/pda/syndicate + name = "military PDA" + desc = "A portable microcomputer by Thinktronic Systems, LTD. This model is a WGW-XL-NTOS series." + note = "Congratulations, your -corrupted- has chosen the Thinktronic 5290 WGW-XL-NTOS Series Personal Data Assistant!" + default_disk = /obj/item/computer_hardware/hard_drive/role/virus/syndicate/military + saved_identification = "John Doe" + saved_job = "Citizen" + icon_state = "pda-syndi" + messenger_invisible = TRUE + detonatable = FALSE + device_theme = THEME_SYNDICATE + theme_locked = TRUE + +/obj/item/modular_computer/tablet/pda/syndicate/Initialize(mapload) + . = ..() + var/obj/item/computer_hardware/network_card/network_card = all_components[MC_NET] + if(istype(network_card)) + forget_component(network_card) + install_component(new /obj/item/computer_hardware/network_card/advanced/norelay) + +/obj/item/modular_computer/tablet/pda/chaplain + name = "chaplain PDA" + icon_state = "pda-chaplain" + init_ringtone = "holy" + +/obj/item/modular_computer/tablet/pda/lawyer + name = "lawyer PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/lawyer + insert_type = /obj/item/pen/fountain + icon_state = "pda-lawyer" + init_ringtone = "objection" + +/obj/item/modular_computer/tablet/pda/roboticist + name = "roboticist PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/roboticist + icon_state = "pda-roboticist" + +/obj/item/modular_computer/tablet/pda/curator + name = "curator PDA" + desc = "A portable microcomputer by Thinktronic Systems, LTD. This model is a WGW-11-NTOS series e-reader." + note = "Congratulations, your station has chosen the Thinktronic 5290 WGW-11-NTOS Series E-reader and Personal Data Assistant!" + default_disk = /obj/item/computer_hardware/hard_drive/role/curator + icon_state = "pda-library" + insert_type = /obj/item/pen/fountain + init_ringtone = "silence" + init_ringer_on = FALSE + +/obj/item/modular_computer/tablet/pda/clear + name = "clear PDA" + desc = "A portable microcomputer by Thinktronic Systems, LTD. This model is a special edition with a transparent case." + note = "Congratulations, you have chosen the Thinktronic 5230-NTOS Personal Data Assistant Deluxe Special Max Turbo Limited Edition!" + icon_state = "pda-clear" + +/obj/item/modular_computer/tablet/pda/cook + name = "cook PDA" + icon_state = "pda-cook" + +/obj/item/modular_computer/tablet/pda/bartender + name = "bartender PDA" + insert_type = /obj/item/pen/fountain + icon_state = "pda-bartender" + +/obj/item/modular_computer/tablet/pda/atmospheric_technician + name = "atmospherics PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/atmos + icon_state = "pda-atmos" + +/obj/item/modular_computer/tablet/pda/chemist + name = "chemist PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/chemistry + icon_state = "pda-chemistry" + +/obj/item/modular_computer/tablet/pda/geneticist + name = "geneticist PDA" + default_disk = /obj/item/computer_hardware/hard_drive/role/medical + icon_state = "pda-genetics" + +/obj/item/modular_computer/tablet/pda/vip + name = "fancy PDA" + desc = "A portable microcomputer by Thinktronic Systems, LTD. This model is a gold-plated 5230-NTOS LRP Series, and probably quite expensive." + note = "Congratulations, you have chosen the Thinktronic 5230-NTOS LRP Series Personal Data Assistant Golden Edition!" + default_disk = /obj/item/computer_hardware/hard_drive/role/vip + insert_type = /obj/item/pen/fountain + icon_state = "pda-gold" + init_ringtone = "ch-CHING" + +/obj/item/modular_computer/tablet/pda/unlicensed + name = "unlicensed PDA" + desc = "A shitty knockoff of a portable microcomputer by Thinktronic Systems, LTD. Complete with a cracked operating system." + note = "Error: Unlicensed software detected. Please contact your supervisor." + default_disk = /obj/item/computer_hardware/hard_drive/role/unlicensed + icon_state = "pda-knockoff" + +// NSV13 - PDA Variants +/obj/item/modular_computer/tablet/pda/botanist + name = "botanist PDA" + icon_state = "pda-hydro" + +/obj/item/modular_computer/tablet/pda/munition + name = "munitions PDA" + icon_state = "pda-munition" + +/obj/item/modular_computer/tablet/pda/heads/maa + name = "master at arms PDA" + icon_state = "pda-maa" diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index 372d3935126..6973bbc8210 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -13,18 +13,171 @@ slot_flags = ITEM_SLOT_ID | ITEM_SLOT_BELT has_light = TRUE //LED flashlight! comp_light_luminosity = 2.3 //Same as the PDA + interaction_flags_atom = INTERACT_ATOM_ALLOW_USER_LOCATION + can_save_id = TRUE + saved_auto_imprint = TRUE + var/has_variants = TRUE var/finish_color = null + var/list/contained_item = list(/obj/item/pen, /obj/item/toy/crayon, /obj/item/lipstick, /obj/item/flashlight/pen, /obj/item/clothing/mask/cigarette) + var/obj/item/insert_type = /obj/item/pen + var/obj/item/inserted_item + + /// If this tablet can be detonated with detomatix (needs to be refactored into a signal) + var/detonatable = TRUE + + /// The note used by the notekeeping app, stored here for convenience. + var/note = "Congratulations on your station upgrading to the new NtOS and Thinktronic based collaboration effort, bringing you the best in electronics and software since 2467!" + /// Scanned paper + var/obj/item/paper/stored_paper + +/obj/item/modular_computer/tablet/Destroy() + QDEL_NULL(stored_paper) + return ..() + +/obj/item/modular_computer/tablet/ui_static_data(mob/user) + var/list/data = ..() + data["show_imprint"] = TRUE + return data + /obj/item/modular_computer/tablet/update_icon() ..() - if (has_variants) + if (has_variants && !bypass_state) if(!finish_color) finish_color = pick("red","blue","brown","green","black") icon_state = "tablet-[finish_color]" icon_state_unpowered = "tablet-[finish_color]" icon_state_powered = "tablet-[finish_color]" +/obj/item/modular_computer/tablet/proc/try_scan_paper(obj/target, mob/user) + if(!istype(target, /obj/item/paper)) + return FALSE + var/obj/item/paper/paper = target + if (!paper.default_raw_text) + to_chat(user, "Unable to scan! Paper is blank.") + else + // clean up after ourselves + if(stored_paper) + qdel(stored_paper) + stored_paper = paper.copy(src) + to_chat(user, "Paper scanned. Saved to PDA's notekeeper.") + ui_update() + return TRUE + +/obj/item/modular_computer/tablet/attackby(obj/item/attacking_item, mob/user) + . = ..() + + if(is_type_in_list(attacking_item, contained_item)) + if(attacking_item.w_class >= WEIGHT_CLASS_SMALL) // Prevent putting spray cans, pipes, etc (subtypes of pens/crayons) + return + if(inserted_item) + to_chat(user, "There is already \a [inserted_item] in \the [src]!") + else + if(!user.transferItemToLoc(attacking_item, src)) + return + to_chat(user, "You insert \the [attacking_item] into \the [src].") + inserted_item = attacking_item + playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE) + update_icon() + if(!try_scan_paper(attacking_item, user)) + return + +/obj/item/modular_computer/tablet/pre_attack(atom/target, mob/living/user, params) + if(try_scan_paper(target, user)) + return FALSE + var/obj/item/computer_hardware/hard_drive/role/job_disk = all_components[MC_HDD_JOB] + if(istype(job_disk) && !job_disk.process_pre_attack(target, user, params)) + return FALSE + return ..() + +/obj/item/modular_computer/tablet/attack(atom/target, mob/living/user, params) + // Send to programs for processing - this should go LAST + // Used to implement the physical scanner. + for(var/datum/computer_file/program/thread in (idle_threads + active_program)) + if(thread.use_attack && !thread.attack(target, user, params)) + return + ..() + +/obj/item/modular_computer/tablet/attack_obj(obj/target, mob/living/user) + // Send to programs for processing - this should go LAST + // Used to implement the gas scanner. + for(var/datum/computer_file/program/thread in (idle_threads + active_program)) + if(thread.use_attack_obj && !thread.attack_obj(target, user)) + return + ..() + +// Eject the pen if the ID was not ejected +/obj/item/modular_computer/tablet/AltClick(mob/user) + if(..() || issilicon(user) || !user.canUseTopic(src, BE_CLOSE)) + return + remove_pen(user) + +// Always eject pen with Ctrl+Click +/obj/item/modular_computer/tablet/CtrlClick(mob/user) + ..() + // We want to allow the user to drag the tablet still + if(isturf(loc) || issilicon(user) || !user.canUseTopic(src, BE_CLOSE)) + return + remove_pen(user) + +// Eject Job Disk +/obj/item/modular_computer/tablet/CtrlShiftClick(mob/user) + ..() + // We want to allow the user to drag the tablet still + if(isturf(loc) || issilicon(user) || !user.canUseTopic(src, BE_CLOSE)) + return + var/obj/item/computer_hardware/hard_drive/role/disk = all_components[MC_HDD_JOB] + if(istype(disk)) + uninstall_component(disk, user, TRUE) + +/obj/item/modular_computer/tablet/verb/verb_toggle_light() + set name = "Toggle Light" + set category = "Object" + set src in oview(1) + toggle_flashlight() + +/obj/item/modular_computer/tablet/verb/verb_remove_pen() + set name = "Eject Pen" + set category = "Object" + set src in usr + remove_pen(usr) + +/obj/item/modular_computer/tablet/proc/remove_pen(mob/user) + if(issilicon(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) //TK doesn't work even with this removed but here for readability + return + if(inserted_item) + to_chat(user, "You remove [inserted_item] from [src].") + user.put_in_hands(inserted_item) + inserted_item = null + playsound(src, 'sound/machines/pda_button2.ogg', 50, TRUE) + update_icon() + else + to_chat(user, "This tablet does not have a pen in it!") + +// Tablet 'splosion.. + +/obj/item/modular_computer/tablet/proc/explode(mob/target, mob/bomber) + var/turf/current_turf = get_turf(src) + + log_bomber(bomber, "tablet-bombed", target, "[bomber && !is_special_character(bomber) ? "(SENT BY NON-ANTAG)" : ""]") + + if (ismob(loc)) + var/mob/victim = loc + victim.show_message("Your [src] explodes!", MSG_VISUAL, "You hear a loud *pop*!", MSG_AUDIBLE) + else + visible_message("[src] explodes!", "You hear a loud *pop*!") + + if(current_turf) + current_turf.hotspot_expose(700,125) + if(istype(all_components[MC_HDD_JOB], /obj/item/computer_hardware/hard_drive/role/virus/syndicate)) + explosion(current_turf, devastation_range = -1, heavy_impact_range = 1, light_impact_range = 3, flash_range = 4) + else + explosion(current_turf, devastation_range = -1, heavy_impact_range = -1, light_impact_range = 2, flash_range = 3) + qdel(src) + +// SUBTYPES + /obj/item/modular_computer/tablet/syndicate_contract_uplink name = "contractor tablet" icon = 'icons/obj/contractor_tablet.dmi' @@ -36,6 +189,8 @@ slot_flags = ITEM_SLOT_ID | ITEM_SLOT_BELT comp_light_luminosity = 6.3 has_variants = FALSE + device_theme = THEME_SYNDICATE + theme_locked = TRUE /// Given to Nuke Ops members. /obj/item/modular_computer/tablet/nukeops @@ -44,7 +199,8 @@ icon_state_unpowered = "tablet-syndicate" comp_light_luminosity = 6.3 has_variants = FALSE - device_theme = "syndicate" + device_theme = THEME_SYNDICATE + theme_locked = TRUE light_color = COLOR_RED /obj/item/modular_computer/tablet/nukeops/emag_act(mob/user) @@ -64,8 +220,8 @@ has_light = FALSE //tablet light button actually enables/disables the borg lamp comp_light_luminosity = 0 has_variants = FALSE - ///Ref to the borg we're installed in. Set by the borg during our creation. - var/mob/living/silicon/robot/borgo + ///Ref to the silicon we're installed in. Set by the borg during our creation. + var/mob/living/silicon/borgo ///Ref to the Cyborg Self-Monitoring app. Important enough to borgs to deserve a ref. var/datum/computer_file/program/borg_self_monitor/self_monitoring ///IC log that borgs can view in their personal management app @@ -84,7 +240,7 @@ borgo = null return ..() -/obj/item/modular_computer/tablet/integrated/turn_on(mob/user) +/obj/item/modular_computer/tablet/integrated/turn_on(mob/user, open_ui = FALSE) if(borgo?.stat != DEAD) return ..() return FALSE @@ -117,50 +273,151 @@ //Makes the light settings reflect the borg's headlamp settings /obj/item/modular_computer/tablet/integrated/ui_data(mob/user) . = ..() - .["has_light"] = TRUE - .["light_on"] = borgo?.lamp_enabled - .["comp_light_color"] = borgo?.lamp_color - -//Overrides the ui_act to make the flashlight controls link to the borg instead -/obj/item/modular_computer/tablet/integrated/ui_act(action, params) - switch(action) - if("PC_toggle_light") - if(!borgo) - return FALSE - borgo.toggle_headlamp() - return TRUE - - if("PC_light_color") - if(!borgo) - return FALSE - var/mob/user = usr - var/new_color - while(!new_color) - new_color = input(user, "Choose a new color for [src]'s flashlight.", "Light Color",light_color) as color|null - if(!new_color || QDELETED(borgo)) - return - if(color_hex2num(new_color) < 200) //Colors too dark are rejected - to_chat(user, "That color is too dark! Choose a lighter one.") - new_color = null - borgo.lamp_color = new_color - borgo.toggle_headlamp(FALSE, TRUE) - return TRUE - return ..() + if(iscyborg(borgo)) + var/mob/living/silicon/robot/robo = borgo + .["light_on"] = robo.lamp_enabled + .["comp_light_color"] = robo.lamp_color + .["has_light"] = TRUE + +//Makes the flashlight button affect the borg rather than the tablet +/obj/item/modular_computer/tablet/integrated/toggle_flashlight() + if(!borgo || QDELETED(borgo) || !iscyborg(borgo)) + return FALSE + var/mob/living/silicon/robot/robo = borgo + robo.toggle_headlamp() + return TRUE + +//Makes the flashlight color setting affect the borg rather than the tablet +/obj/item/modular_computer/tablet/integrated/set_flashlight_color(color) + if(!borgo || QDELETED(borgo) || !color || !iscyborg(borgo)) + return FALSE + var/mob/living/silicon/robot/robo = borgo + robo.lamp_color = color + robo.toggle_headlamp(FALSE, TRUE) + return TRUE /obj/item/modular_computer/tablet/integrated/alert_call(datum/computer_file/program/caller, alerttext, sound = 'sound/machines/twobeep_high.ogg') if(!caller || !caller.alert_able || caller.alert_silenced || !alerttext) //Yeah, we're checking alert_able. No, you don't get to make alerts that the user can't silence. return + if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED)) + sound = pick('sound/machines/twobeep_voice1.ogg', 'sound/machines/twobeep_voice2.ogg') borgo.playsound_local(src, sound, 50, TRUE) to_chat(borgo, "The [src] displays a [caller.filedesc] notification: [alerttext]") +/obj/item/modular_computer/tablet/integrated/ui_state(mob/user) + return GLOB.reverse_contained_state + /obj/item/modular_computer/tablet/integrated/syndicate icon_state = "tablet-silicon-syndicate" icon_state_unpowered = "tablet-silicon-syndicate" icon_state_powered = "tablet-silicon-syndicate" icon_state_menu = "command-syndicate" - device_theme = "syndicate" + device_theme = THEME_SYNDICATE + theme_locked = TRUE /obj/item/modular_computer/tablet/integrated/syndicate/Initialize() . = ..() - borgo.lamp_color = COLOR_RED //Syndicate likes it red + if(iscyborg(borgo)) + var/mob/living/silicon/robot/robo = borgo + robo.lamp_color = COLOR_RED //Syndicate likes it red + +// Round start tablets + +/obj/item/modular_computer/tablet/pda + icon = 'nsv13/icons/obj/pda.dmi' //NSV13 - old sprites + icon_state = "pda" + worn_icon_state = "electronic" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + + bypass_state = TRUE + can_store_pai = TRUE + + var/default_disk = 0 + /// If the PDA has been picked up / equipped before. This is used to set the user's preference background color / theme. + var/equipped = FALSE + + ///NSV13 - Holomap - Start + var/datum/component/holomap/holo_base = null //holomap component + var/datum/action/toggle_holomap/useless //Useless thingy meant for to be used for nothing more than deleting the action if it already exists + ///NSV13 - Holomap - Stop + +/obj/item/modular_computer/tablet/pda/send_sound() + if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED)) + playsound(src, pick('sound/machines/twobeep_voice1.ogg', 'sound/machines/twobeep_voice2.ogg'), 15, TRUE) + else + ..() + +/obj/item/modular_computer/tablet/pda/send_select_sound() + if(HAS_TRAIT(SSstation, STATION_TRAIT_PDA_GLITCHED)) + playsound(src, pick('sound/machines/twobeep_voice1.ogg', 'sound/machines/twobeep_voice2.ogg'), 15, TRUE) + else + ..() + +/obj/item/modular_computer/tablet/pda/equipped(mob/user, slot) + . = ..() + if(equipped || !user.client) + return + equipped = TRUE + if(!user.client.prefs) + return + var/pref_theme = user.client.prefs.pda_theme + if(!theme_locked && !ignore_theme_pref) + for(var/key in allowed_themes) // i am going to scream. DM lists stop sucking please + if(allowed_themes[key] == pref_theme) + device_theme = pref_theme + break + classic_color = user.client.prefs.pda_color + +/obj/item/modular_computer/tablet/pda/update_icon() + ..() + var/init_icon = initial(icon) + if(!init_icon) + return + var/obj/item/computer_hardware/card_slot/card = all_components[MC_CARD] + if(card) + if(card.stored_card) + add_overlay(mutable_appearance(init_icon, "id_overlay")) + if(inserted_item) + add_overlay(mutable_appearance(init_icon, "insert_overlay")) + if(light_on) + add_overlay(mutable_appearance(init_icon, "light_overlay")) + + +/obj/item/modular_computer/tablet/pda/attack_ai(mob/user) + to_chat(user, "It doesn't feel right to snoop around like that...") + return // we don't want ais or cyborgs using a private role tablet + +/obj/item/modular_computer/tablet/pda/Initialize(mapload) + . = ..() + install_component(new /obj/item/computer_hardware/hard_drive/small/pda) + install_component(new /obj/item/computer_hardware/processor_unit/small) + install_component(new /obj/item/computer_hardware/battery(src, /obj/item/stock_parts/cell/computer)) + install_component(new /obj/item/computer_hardware/network_card) + install_component(new /obj/item/computer_hardware/card_slot) + install_component(new /obj/item/computer_hardware/identifier) + install_component(new /obj/item/computer_hardware/sensorpackage) + + if(default_disk) + var/obj/item/computer_hardware/hard_drive/portable/disk = new default_disk(src) + install_component(disk) + + if(insert_type) + inserted_item = new insert_type(src) + // show the inserted item + update_icon() + + ///NSV13 - Holomap - Start + return INITIALIZE_HINT_LATELOAD + +/obj/item/modular_computer/tablet/pda/LateInitialize() + . = ..() + apply_holomap() + +/obj/item/modular_computer/tablet/pda/proc/apply_holomap() + if(holo_base) + holo_base.RemoveComponent() + QDEL_NULL(holo_base) + AddComponent(/datum/component/holomap) + ///NSV13 - Holomap - Stop diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm index e6e91088fa0..516da5e850c 100644 --- a/code/modules/modular_computers/computers/item/tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/tablet_presets.dm @@ -53,6 +53,11 @@ . = ..() install_component(new /obj/item/computer_hardware/sensorpackage) +/obj/item/modular_computer/tablet/preset/advanced/custodial/Initialize(mapload) + . = ..() + var/obj/item/computer_hardware/hard_drive/small/hard_drive = find_hardware_by_name("solid state drive") + hard_drive.store_file(new /datum/computer_file/program/radar/custodial_locator) + /// Given by the syndicate as part of the contract uplink bundle - loads in the Contractor Uplink. /obj/item/modular_computer/tablet/syndicate_contract_uplink/preset/uplink/Initialize(mapload) . = ..() @@ -84,6 +89,5 @@ /obj/item/modular_computer/tablet/integrated/Initialize() . = ..() install_component(new /obj/item/computer_hardware/processor_unit/small) - install_component(new /obj/item/computer_hardware/hard_drive/small/integrated) install_component(new /obj/item/computer_hardware/recharger/cyborg) install_component(new /obj/item/computer_hardware/network_card/integrated) diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index c81650e160a..f40a8d484ee 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -62,9 +62,7 @@ add_overlay(screen_icon_screensaver) else icon_state = icon_state_unpowered - set_light(0) else - set_light(light_strength) if(cpu.active_program) add_overlay(cpu.active_program.program_icon_state ? cpu.active_program.program_icon_state : screen_icon_state_menu) else diff --git a/code/modules/modular_computers/file_system/data.dm b/code/modules/modular_computers/file_system/data.dm index 32ef6f53dd1..9cf2b4ef6f4 100644 --- a/code/modules/modular_computers/file_system/data.dm +++ b/code/modules/modular_computers/file_system/data.dm @@ -1,20 +1,25 @@ -// /data/ files store data in string format. -// They don't contain other logic for now. /datum/computer_file/data - var/stored_data = "" // Stored data in string format. filetype = "DAT" + /// Amount of characters to count as "1 GQ" var/block_size = 250 - var/do_not_edit = 0 // Whether the user will be reminded that the file probably shouldn't be edited. + /// Stored data in string format. Use set_stored_data instead of direct assignment. + var/stored_data = "" + /// Whether the user will be reminded that the file probably shouldn't be edited. + var/do_not_edit = FALSE /datum/computer_file/data/clone() var/datum/computer_file/data/temp = ..() - temp.stored_data = stored_data + temp.set_stored_data(stored_data) return temp -// Calculates file size from amount of characters in saved string +/// Calculates file size from amount of characters in saved string /datum/computer_file/data/proc/calculate_size() size = max(1, round(length(stored_data) / block_size)) -/datum/computer_file/data/logfile +/datum/computer_file/data/proc/set_stored_data(data) + stored_data = data + calculate_size() + +/datum/computer_file/data/log_file filetype = "LOG" diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 5f5fa083608..27964c4c583 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -2,8 +2,10 @@ /datum/computer_file/program filetype = "PRG" filename = "UnknownProgram" // File name. FILE NAME MUST BE UNIQUE IF YOU WANT THE PROGRAM TO BE DOWNLOADABLE FROM NTNET! - var/required_access = null // List of required accesses to *run* the program. - var/transfer_access = null // List of required access to download or file host the program + /// List of required accesses to *run* the program. + var/list/required_access = list() + /// List of required access to download or file host the program + var/list/transfer_access = list() var/program_state = PROGRAM_STATE_KILLED// PROGRAM_STATE_KILLED or PROGRAM_STATE_BACKGROUND or PROGRAM_STATE_ACTIVE - specifies whether this program is running. var/obj/item/modular_computer/computer // Device that runs this program. var/filedesc = "Unknown Program" // User-friendly name of this program. @@ -29,11 +31,17 @@ var/alert_silenced = FALSE /// Whether to highlight our program in the main screen. Intended for alerts, but loosely available for any need to notify of changed conditions. Think Windows task bar highlighting. Available even if alerts are muted. var/alert_pending = FALSE + /// If this program should process attack calls + var/use_attack = FALSE + /// If this program should process attack_obj calls + var/use_attack_obj = FALSE /datum/computer_file/program/New(obj/item/modular_computer/comp = null) ..() - if(comp && istype(comp)) + if(istype(comp)) computer = comp + else if(istype(holder?.holder, /obj/item/modular_computer)) + computer = holder.holder /datum/computer_file/program/Destroy() computer = null @@ -77,7 +85,7 @@ return 1 /** - *Check if the user can run program. Only humans can operate computer. Automatically called in run_program() + *Check if the user can run program. Only humans and silicons can operate computer. Automatically called in on_start() *ID must be inserted into a card slot to be read. If the program is not currently installed (as is the case when *NT Software Hub is checking available software), a list can be given to be used instead. *Arguments: @@ -88,54 +96,44 @@ *access can contain a list of access numbers to check against. If access is not empty, it will be used istead of checking any inserted ID. */ /datum/computer_file/program/proc/can_run(mob/user, loud = FALSE, access_to_check, transfer = FALSE, var/list/access) + if(issilicon(user)) + return TRUE + + if(IsAdminGhost(user)) + return TRUE + + if(!transfer && computer && (computer.obj_flags & EMAGGED)) //emags can bypass the execution locks but not the download ones. + return TRUE + // Defaults to required_access if(!access_to_check) if(transfer && transfer_access) access_to_check = transfer_access else access_to_check = required_access - if(!access_to_check) // No required_access, allow it. - return 1 - - if(!transfer && computer && (computer.obj_flags & EMAGGED)) //emags can bypass the execution locks but not the download ones. - return 1 - - if(IsAdminGhost(user)) - return 1 - - if(issilicon(user)) - return 1 + if(!length(access_to_check)) // No required_access, allow it. + return TRUE if(!length(access)) - var/obj/item/card/id/D + var/obj/item/card/id/access_card var/obj/item/computer_hardware/card_slot/card_slot if(computer) card_slot = computer.all_components[MC_CARD] - D = card_slot?.GetID() + access_card = card_slot?.GetID() - if(!D) + if(!access_card) if(loud) to_chat(user, "\The [computer] flashes an \"RFID Error - Unable to scan ID\" warning.") return FALSE - access = D.GetAccess() + access = access_card.GetAccess() - if(access_to_check in access) - return TRUE + for(var/singular_access in access_to_check) + if(singular_access in access) //For loop checks every individual access entry in the access list. If the user's ID has access to any entry, then we're good. + return TRUE if(loud) to_chat(user, "\The [computer] flashes an \"Access Denied\" warning.") return FALSE -/** - * This attempts to retrieve header data for UIs. - * - * If implementing completely new device of different type than existing ones - * always include the device here in this proc. This proc basically relays the request to whatever is running the program. - **/ -/datum/computer_file/program/proc/get_header_data() - if(computer) - return computer.get_header_data() - return list() - /** * Called on program startup. * @@ -144,14 +142,14 @@ * Arguments: * * user - The mob that started the program **/ -/datum/computer_file/program/proc/run_program(mob/living/user) +/datum/computer_file/program/proc/on_start(mob/living/user) SHOULD_CALL_PARENT(TRUE) if(can_run(user, 1)) if(requires_ntnet && network_destination) generate_network_log("Connection opened to [network_destination].") program_state = PROGRAM_STATE_ACTIVE - return 1 - return 0 + return TRUE + return FALSE /** * @@ -181,63 +179,20 @@ generate_network_log("Connection to [network_destination] closed.") return 1 -/datum/computer_file/program/ui_assets(mob/user) - return list( - get_asset_datum(/datum/asset/simple/headers), - ) - -/datum/computer_file/program/ui_state(mob/user) - return GLOB.default_state - -/datum/computer_file/program/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui && tgui_id) - ui = new(user, src, tgui_id, filedesc) - ui.set_autoupdate(TRUE) - if(ui.open()) - ui.send_asset(get_asset_datum(/datum/asset/simple/headers)) - -// CONVENTIONS, READ THIS WHEN CREATING NEW PROGRAM AND OVERRIDING THIS PROC: -// Topic calls are automagically forwarded from NanoModule this program contains. -// Calls beginning with "PRG_" are reserved for programs handling. -// Calls beginning with "PC_" are reserved for computer handling (by whatever runs the program) -// ALWAYS INCLUDE PARENT CALL ..() OR DIE IN FIRE. -/datum/computer_file/program/ui_act(action,params,datum/tgui/ui) - if(..()) - return 1 - if(computer) - switch(action) - if("PC_exit") - computer.kill_program() - ui.close() - return 1 - if("PC_shutdown") - computer.shutdown_computer() - ui.close() - return 1 - if("PC_minimize") - var/mob/user = usr - if(!computer.active_program || !computer.all_components[MC_CPU]) - return - - computer.idle_threads.Add(computer.active_program) - program_state = PROGRAM_STATE_BACKGROUND // Should close any existing UIs - - computer.active_program = null - computer.update_icon() - ui.close() - - if(user && istype(user)) - computer.ui_interact(user) // Re-open the UI on this computer. It should show the main screen now. - - -/datum/computer_file/program/ui_host() - if(computer.physical) - return computer.physical - else - return computer - -/datum/computer_file/program/ui_status(mob/user) - if(program_state != PROGRAM_STATE_ACTIVE) // Our program was closed. Close the ui if it exists. - return UI_CLOSE - return ..() +/// Return TRUE if nothing was processed. Return FALSE to prevent further actions running. +/// Set use_attack = TRUE to receive proccalls from the parent computer. +/datum/computer_file/program/proc/attack(atom/target, mob/living/user, params) + return TRUE + +/// Return TRUE if nothing was processed. Return FALSE to prevent further actions running. +/// Set use_attack_obj = TRUE to receive proccalls from the parent computer. +/datum/computer_file/program/proc/attack_obj(obj/target, mob/living/user) + return TRUE + +/// Called when the datum/tgui is initialized by the computer +/datum/computer_file/program/proc/on_ui_create(mob/user, datum/tgui/ui) + return + +/// Called when ui_close is called on the computer while this program is active. Any behavior in this should also be in kill_program. +/datum/computer_file/program/proc/on_ui_close(mob/user, datum/tgui/ui) + return diff --git a/code/modules/modular_computers/file_system/programs/airestorer.dm b/code/modules/modular_computers/file_system/programs/airestorer.dm index 5be92dd0925..0af159655be 100644 --- a/code/modules/modular_computers/file_system/programs/airestorer.dm +++ b/code/modules/modular_computers/file_system/programs/airestorer.dm @@ -7,7 +7,7 @@ size = 12 requires_ntnet = FALSE usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP - transfer_access = ACCESS_HEADS + transfer_access = list(ACCESS_HEADS) available_on_ntnet = TRUE tgui_id = "NtosAiRestorer" program_icon = "laptop-code" @@ -90,7 +90,7 @@ /datum/computer_file/program/aidiag/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() var/mob/living/silicon/ai/AI = get_ai() var/obj/item/aicard/aicard = get_ai(2) diff --git a/code/modules/modular_computers/file_system/programs/alarm.dm b/code/modules/modular_computers/file_system/programs/alarm.dm index c3d6d9c458e..fc56d97d14b 100644 --- a/code/modules/modular_computers/file_system/programs/alarm.dm +++ b/code/modules/modular_computers/file_system/programs/alarm.dm @@ -27,7 +27,7 @@ return 1 /datum/computer_file/program/alarm_monitor/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() data["alarms"] = list() for(var/class in GLOB.alarms) @@ -112,7 +112,7 @@ if(L.len) has_alert = TRUE -/datum/computer_file/program/alarm_monitor/run_program(mob/user) +/datum/computer_file/program/alarm_monitor/on_start(mob/user) . = ..(user) if(!.) return diff --git a/code/modules/modular_computers/file_system/programs/antagonist/contract_uplink.dm b/code/modules/modular_computers/file_system/programs/antagonist/contract_uplink.dm index e7858d8cccc..4ef00c4ce3d 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/contract_uplink.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/contract_uplink.dm @@ -126,7 +126,6 @@ if (hard_drive && hard_drive.traitor_data != null) var/datum/antagonist/traitor/traitor_data = hard_drive.traitor_data - data += get_header_data() if (traitor_data.contractor_hub.current_contract) data["ongoing_contract"] = TRUE diff --git a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm index 6f3be85d00b..9ae761571c7 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/dos.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/dos.dm @@ -73,7 +73,7 @@ if(!SSnetworks.station_network) return - var/list/data = get_header_data() + var/list/data = list() data["error"] = error if(target && executed) diff --git a/code/modules/modular_computers/file_system/programs/antagonist/emag.dm b/code/modules/modular_computers/file_system/programs/antagonist/emag.dm new file mode 100644 index 00000000000..7fa2aecc6e0 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/antagonist/emag.dm @@ -0,0 +1,21 @@ +/datum/computer_file/program/emag_console + filename = "emag_console" + filedesc = "Crypto-breaker" + category = PROGRAM_CATEGORY_MISC + program_icon_state = "hostile" + extended_desc = "The console output from an emag. You shouldn't be seeing this." + size = 0 + available_on_ntnet = FALSE + tgui_id = "NtosEmagConsole" + +/datum/computer_file/program/emag_console/ui_act(action,params,datum/tgui/ui) + if(!ui || ui.status != UI_INTERACTIVE) + return TRUE + kill_program(forced = TRUE) + return TRUE + +/datum/computer_file/program/emag_console/kill_program(forced) + . = ..() + if(computer) + computer.device_theme = THEME_SYNDICATE + computer.allowed_themes = GLOB.ntos_device_themes_emagged diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm index e33f6ef0d77..3d5cb20db16 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -12,7 +12,7 @@ program_icon = "magnet" var/armed = 0 -/datum/computer_file/program/revelation/run_program(mob/living/user) +/datum/computer_file/program/revelation/on_start(mob/living/user) . = ..() if(!.) return @@ -72,7 +72,7 @@ return temp /datum/computer_file/program/revelation/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() data["armed"] = armed diff --git a/code/modules/modular_computers/file_system/programs/arcade.dm b/code/modules/modular_computers/file_system/programs/arcade.dm index 622140a76ee..403d6cb01a5 100644 --- a/code/modules/modular_computers/file_system/programs/arcade.dm +++ b/code/modules/modular_computers/file_system/programs/arcade.dm @@ -81,7 +81,7 @@ ) /datum/computer_file/program/arcade/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() data["Hitpoints"] = boss_hp data["PlayerHitpoints"] = player_hp data["PlayerMP"] = player_mp diff --git a/code/modules/modular_computers/file_system/programs/atmosscan.dm b/code/modules/modular_computers/file_system/programs/atmosscan.dm index 683f5ede460..10b2f2e7efc 100644 --- a/code/modules/modular_computers/file_system/programs/atmosscan.dm +++ b/code/modules/modular_computers/file_system/programs/atmosscan.dm @@ -2,14 +2,14 @@ filename = "atmosscan" filedesc = "Atmospheric Scanner" category = PROGRAM_CATEGORY_ENGI - program_icon_state = "air" + program_icon_state = "atmos_control" extended_desc = "A small built-in sensor reads out the atmospheric conditions around the device." network_destination = "atmos scan" size = 4 tgui_id = "NtosAtmos" program_icon = "thermometer-half" -/datum/computer_file/program/atmosscan/run_program(mob/living/user) +/datum/computer_file/program/atmosscan/on_start(mob/living/user) . = ..() if (!.) return @@ -18,9 +18,9 @@ /datum/computer_file/program/atmosscan/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() var/list/airlist = list() - var/turf/T = get_turf(ui_host()) + var/turf/T = get_turf(computer.ui_host()) var/obj/item/computer_hardware/sensorpackage/sensors = computer?.get_modular_computer_part(MC_SENSORS) if(T && sensors?.check_functionality()) var/datum/gas_mixture/environment = T.return_air() diff --git a/code/modules/modular_computers/file_system/programs/borg_monitor.dm b/code/modules/modular_computers/file_system/programs/borg_monitor.dm index 5abde291948..dd809b038c4 100644 --- a/code/modules/modular_computers/file_system/programs/borg_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/borg_monitor.dm @@ -6,7 +6,7 @@ program_icon_state = "generic" extended_desc = "This program allows for remote monitoring of station cyborgs." requires_ntnet = TRUE - transfer_access = ACCESS_ROBOTICS + transfer_access = list(ACCESS_ROBOTICS) network_destination = "cyborg remote monitoring" size = 5 tgui_id = "NtosCyborgRemoteMonitor" @@ -22,7 +22,7 @@ /datum/computer_file/program/borg_monitor/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() // Syndicate version doesn't require an ID - so we use this proc instead of computer.GetID() data["card"] = !!get_id_name() @@ -61,13 +61,13 @@ if("messagebot") var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs if(!istype(R)) - return + return TRUE var/sender_name = get_id_name() if(!sender_name) // This can only happen if the action somehow gets called as UI blocks this action with no ID computer.visible_message("Insert an ID to send messages.") playsound(usr, 'sound/machines/terminal_error.ogg', 15, TRUE) - return + return TRUE if(R.stat == DEAD) //Dead borgs will listen to you no longer to_chat(usr, "Error -- Could not open a connection to unit:[R]") var/message = stripped_input(usr, message = "Enter message to be sent to remote cyborg.", title = "Send Message") @@ -77,7 +77,7 @@ to_chat(usr, "ERROR: Prohibited word(s) detected in message.") return to_chat(usr, "

              Message to [R] (as [sender_name]) -- \"[message]\"
              ") - playsound(usr, 'sound/machines/terminal_success.ogg', 15, TRUE) + computer.send_sound() to_chat(R, "

              Message from [sender_name] -- \"[message]\"
              ") SEND_SOUND(R, 'sound/machines/twobeep_high.ogg') if(R.connected_ai) @@ -85,6 +85,7 @@ SEND_SOUND(R.connected_ai, 'sound/machines/twobeep_high.ogg') R.logevent("Message from [sender_name] -- \"[message]\"") usr.log_talk(message, LOG_PDA, tag="Cyborg Monitor Program: ID name \"[sender_name]\" to [R]") + return TRUE ///This proc is used to determin if a borg should be shown in the list (based on the borg's scrambledcodes var). Syndicate version overrides this to show only syndicate borgs. /datum/computer_file/program/borg_monitor/proc/evaluate_borg(mob/living/silicon/robot/R) diff --git a/code/modules/modular_computers/file_system/programs/borg_self_monitor.dm b/code/modules/modular_computers/file_system/programs/borg_self_monitor.dm index 4d72556f429..401a017e697 100644 --- a/code/modules/modular_computers/file_system/programs/borg_self_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/borg_self_monitor.dm @@ -5,7 +5,6 @@ ui_header = "borg_self_monitor.gif" //DEBUG -- new icon before PR program_icon_state = "command" requires_ntnet = FALSE - transfer_access = null available_on_ntnet = FALSE unsendable = TRUE undeletable = TRUE @@ -19,20 +18,20 @@ tablet = null return ..() -/datum/computer_file/program/borg_self_monitor/run_program(mob/living/user) +/datum/computer_file/program/borg_self_monitor/on_start(mob/living/user) if(!istype(computer, /obj/item/modular_computer/tablet/integrated)) to_chat(user, "A warning flashes across \the [computer]: Device Incompatible.") return FALSE . = ..() if(.) tablet = computer - if(tablet.device_theme == "syndicate") + if(tablet.device_theme == THEME_SYNDICATE) program_icon_state = "command-syndicate" return TRUE return FALSE /datum/computer_file/program/borg_self_monitor/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() if(!iscyborg(user)) return data var/mob/living/silicon/robot/borgo = tablet.borgo @@ -51,7 +50,7 @@ data["integrity"] = ((borgo.health + 100) / 2) //Borgo health, as percentage data["lampIntensity"] = borgo.lamp_intensity //Borgo lamp power setting data["sensors"] = "[borgo.sensors_on?"ACTIVE":"DISABLED"]" - data["printerPictures"] = borgo.connected_ai? borgo.connected_ai.aicamera.stored.len : borgo.aicamera.stored.len //Number of pictures taken, synced to AI if available + data["printerPictures"] = borgo.connected_ai ? length(borgo.connected_ai.aicamera?.stored) : length(borgo.aicamera?.stored) //Number of pictures taken, synced to AI if available data["printerToner"] = borgo.toner //amount of toner data["printerTonerMax"] = borgo.tonermax //It's a variable, might as well use it data["thrustersInstalled"] = borgo.ionpulse //If we have a thruster uprade @@ -117,6 +116,9 @@ if("toggleSensors") borgo.toggle_sensors() + if("crewmanifest") //nsv add manifest to borg computer + borgo.crew_manifest() + if("viewImage") if(borgo.connected_ai) borgo.connected_ai.aicamera?.viewpictures(usr) diff --git a/code/modules/modular_computers/file_system/programs/budgetordering.dm b/code/modules/modular_computers/file_system/programs/budgetordering.dm index 299280a6601..b10f9232bc4 100644 --- a/code/modules/modular_computers/file_system/programs/budgetordering.dm +++ b/code/modules/modular_computers/file_system/programs/budgetordering.dm @@ -48,9 +48,9 @@ return TRUE /datum/computer_file/program/budgetorders/ui_data(mob/user) - . = ..() - var/list/data = get_header_data() + var/list/data = list() data["location"] = SSshuttle.supply.getStatusText() + data["department"] = "Cargo" //NSV13 var/datum/bank_account/buyer = SSeconomy.get_dep_account(ACCOUNT_CAR) var/obj/item/card/id/id_card = get_buyer_id(user) if(get_buyer_id(user)) @@ -61,6 +61,11 @@ else requestonly = TRUE can_approve_requests = FALSE + //NSV13 - Departmental Budget Stuff - Start + if(ACCESS_HEADS in id_card.access) + // If buyer is a departmental budget, replaces "Cargo" with that budget - we're not using the cargo budget here + data["department"] = addtext(buyer.account_holder, " Requisitions") + //NSV13 - Departmental Budget Stuff - Stop else requestonly = TRUE if(isnull(buyer)) diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm index 16c8fa07326..761cbda614e 100644 --- a/code/modules/modular_computers/file_system/programs/card.dm +++ b/code/modules/modular_computers/file_system/programs/card.dm @@ -13,7 +13,7 @@ category = PROGRAM_CATEGORY_CREW program_icon_state = "id" extended_desc = "Program for programming employee ID cards to access parts of the station." - transfer_access = ACCESS_HEADS + transfer_access = list(ACCESS_HEADS) requires_ntnet = 0 size = 8 tgui_id = "NtosCard" @@ -107,24 +107,22 @@ if(..()) return TRUE - var/obj/item/computer_hardware/card_slot/card_slot - var/obj/item/computer_hardware/card_slot/card_slot2 - var/obj/item/computer_hardware/printer/printer - if(computer) - card_slot = computer.all_components[MC_CARD] - card_slot2 = computer.all_components[MC_CARD2] - printer = computer.all_components[MC_PRINT] - if(!card_slot || !card_slot2) - return + if(!computer) + return + + var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD] + var/obj/item/computer_hardware/card_slot/card_slot2 = computer.all_components[MC_CARD2] + var/obj/item/computer_hardware/printer/printer = computer.all_components[MC_PRINT] + if(!card_slot || !card_slot2) + return var/mob/user = usr var/obj/item/card/id/user_id_card = card_slot.stored_card - var/obj/item/card/id/target_id_card = card_slot2.stored_card switch(action) if("PRG_authenticate") - if(!computer || !user_id_card) + if(!user_id_card) playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) return if(authenticate(user, user_id_card)) @@ -135,7 +133,7 @@ playsound(computer, 'sound/machines/terminal_off.ogg', 50, FALSE) return TRUE if("PRG_print") - if(!computer || !printer) + if(!printer) return if(!authenticated) return @@ -160,7 +158,7 @@ computer.visible_message("\The [computer] prints out a paper.") return TRUE if("PRG_eject") - if(!computer || !card_slot2) + if(!card_slot2) return if(target_id_card) GLOB.data_core.manifest_modify(target_id_card.registered_name, target_id_card.assignment, target_id_card.hud_state) @@ -171,7 +169,7 @@ return card_slot2.try_insert(I, user) return FALSE if("PRG_terminate") - if(!computer || !authenticated) + if(!authenticated) return if(minor) if(!(target_id_card.assignment in head_subordinates) && target_id_card.assignment != JOB_NAME_ASSISTANT) @@ -184,7 +182,7 @@ playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) return TRUE if("PRG_edit") - if(!computer || !authenticated || !target_id_card) + if(!authenticated || !target_id_card) return // Sanitize the name first. We're not using the full sanitize_name proc as ID cards can have a wider variety of things on them that @@ -202,7 +200,7 @@ playsound(computer, "terminal_type", 50, FALSE) return TRUE if("PRG_assign") - if(!computer || !authenticated || !target_id_card) + if(!authenticated || !target_id_card) return var/target = params["assign_target"] if(!target) @@ -245,7 +243,7 @@ playsound(computer, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) return TRUE if("PRG_access") - if(!computer || !authenticated) + if(!authenticated) return var/access_type = text2num(params["access_target"]) if(access_type in (is_centcom ? get_all_centcom_access() : get_all_accesses())) @@ -258,21 +256,21 @@ playsound(computer, "terminal_type", 50, FALSE) return TRUE if("PRG_grantall") - if(!computer || !authenticated || minor) + if(!authenticated || minor) return target_id_card.access |= (is_centcom ? get_all_centcom_access() : get_all_accesses()) log_id("[key_name(usr)] granted All Access to [target_id_card] using [user_id_card] via a portable ID console at [AREACOORD(usr)].") playsound(computer, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) return TRUE if("PRG_denyall") - if(!computer || !authenticated || minor) + if(!authenticated || minor) return target_id_card.access.Cut() log_id("[key_name(usr)] removed All Access from [target_id_card] using [user_id_card] via a portable ID console at [AREACOORD(usr)].") playsound(computer, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) return TRUE if("PRG_grantregion") - if(!computer || !authenticated) + if(!authenticated) return var/region = text2num(params["region"]) if(isnull(region)) @@ -282,7 +280,7 @@ playsound(computer, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) return TRUE if("PRG_denyregion") - if(!computer || !authenticated) + if(!authenticated) return var/region = text2num(params["region"]) if(isnull(region)) @@ -352,7 +350,7 @@ return data /datum/computer_file/program/card_mod/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() data["station_name"] = station_name() diff --git a/code/modules/modular_computers/file_system/programs/cargobounty.dm b/code/modules/modular_computers/file_system/programs/cargobounty.dm index ca6bbdc99b4..43195dee272 100644 --- a/code/modules/modular_computers/file_system/programs/cargobounty.dm +++ b/code/modules/modular_computers/file_system/programs/cargobounty.dm @@ -5,29 +5,29 @@ program_icon_state = "bounty" extended_desc = "A basic interface for supply personnel to check and claim bounties." requires_ntnet = TRUE - transfer_access = ACCESS_CARGO + transfer_access = list(ACCESS_CARGO) network_destination = "cargo claims interface" size = 10 tgui_id = "NtosBountyConsole" program_icon = "tags" - ///cooldown var for printing paper sheets. - var/printer_ready = 0 - ///The cargo account for grabbing the cargo account's credits. + /// Cooldown var for printing paper sheets. + COOLDOWN_DECLARE(printer_ready) + /// The cargo account for grabbing the cargo account's credits. var/static/datum/bank_account/cargocash /datum/computer_file/program/bounty/proc/print_paper() new /obj/item/paper/bounty_printout(get_turf(computer)) -/datum/computer_file/program/bounty/ui_interact(mob/user, datum/tgui/ui) +/datum/computer_file/program/bounty/on_ui_create(mob/user, datum/tgui/ui) + COOLDOWN_START(src, printer_ready, PRINTER_TIMEOUT) + +/datum/computer_file/program/bounty/ui_data(mob/user) + var/list/data = list() + if(!GLOB.bounties_list.len) setup_bounties() - printer_ready = world.time + PRINTER_TIMEOUT cargocash = SSeconomy.get_dep_account(ACCOUNT_CAR) - . = ..() - -/datum/computer_file/program/bounty/ui_data(mob/user) - var/list/data = get_header_data() var/obj/item/computer_hardware/printer/printer if(computer) @@ -48,7 +48,7 @@ data["has_printer"] = printer ? TRUE : FALSE - data["stored_cash"] = cargocash.account_balance + data["stored_cash"] = cargocash ? cargocash.account_balance : 0 data["bountydata"] = bountyinfo return data @@ -63,6 +63,9 @@ cashmoney.claim() return TRUE if("Print") + if(!COOLDOWN_FINISHED(src, printer_ready)) + to_chat(usr, "The printer is not ready to print yet!") + return var/obj/item/computer_hardware/printer/printer if(computer) printer = computer.all_components[MC_PRINT] @@ -72,4 +75,5 @@ to_chat(usr, "Hardware error: Printer was unable to print the file. It may be out of paper.") return else + COOLDOWN_START(src, printer_ready, PRINTER_TIMEOUT) computer.visible_message("\The [computer] prints out a paper.") diff --git a/code/modules/modular_computers/file_system/programs/configurator.dm b/code/modules/modular_computers/file_system/programs/configurator.dm index cf21d853d16..0afba30879a 100644 --- a/code/modules/modular_computers/file_system/programs/configurator.dm +++ b/code/modules/modular_computers/file_system/programs/configurator.dm @@ -4,8 +4,8 @@ /datum/computer_file/program/computerconfig filename = "compconfig" - filedesc = "Hardware Configuration Tool" - extended_desc = "This program allows configuration of computer's hardware" + filedesc = "Settings" + extended_desc = "This program allows configuration of computer's hardware and operating system" program_icon_state = "generic" unsendable = 1 undeletable = 1 @@ -15,25 +15,24 @@ tgui_id = "NtosConfiguration" program_icon = "cog" - var/obj/item/modular_computer/movable = null - +/datum/computer_file/program/computerconfig/ui_static_data(mob/user) + var/list/data = ..() + data["themes"] = computer.allowed_themes + return data /datum/computer_file/program/computerconfig/ui_data(mob/user) - movable = computer - var/obj/item/computer_hardware/hard_drive/hard_drive = movable.all_components[MC_HDD] - var/obj/item/computer_hardware/battery/battery_module = movable.all_components[MC_CELL] - if(!istype(movable)) - movable = null + var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD] + var/obj/item/computer_hardware/battery/battery_module = computer.all_components[MC_CELL] // No computer connection, we can't get data from that. - if(!movable) - return 0 + if(!computer) + return FALSE - var/list/data = get_header_data() + var/list/data = list() data["disk_size"] = hard_drive.max_capacity data["disk_used"] = hard_drive.used_capacity - data["power_usage"] = movable.last_power_usage + data["power_usage"] = computer.last_power_usage data["battery_exists"] = battery_module ? 1 : 0 if(battery_module && battery_module.battery) data["battery_rating"] = battery_module.battery.maxcharge @@ -43,8 +42,8 @@ data["battery"] = list("max" = battery_module.battery.maxcharge, "charge" = round(battery_module.battery.charge)) var/list/all_entries[0] - for(var/I in movable.all_components) - var/obj/item/computer_hardware/H = movable.all_components[I] + for(var/I in computer.all_components) + var/obj/item/computer_hardware/H = computer.all_components[I] all_entries.Add(list(list( "name" = H.name, "desc" = H.desc, @@ -62,7 +61,20 @@ return switch(action) if("PC_toggle_component") - var/obj/item/computer_hardware/H = movable.find_hardware_by_name(params["name"]) + var/obj/item/computer_hardware/H = computer.find_hardware_by_name(params["name"]) if(H && istype(H)) H.enabled = !H.enabled . = TRUE + if("PC_select_theme") + if(computer.theme_locked || !(params["theme"] in computer.allowed_themes)) // filtering based on theme name here + return + computer.device_theme = computer.allowed_themes[params["theme"]] // converting theme name to ID + . = TRUE + if("PC_set_classic_color") + if(computer.device_theme != THEME_THINKTRONIC) + return + var/new_color = input(usr, "Choose a new color for the device's system theme.", "System Color",computer.classic_color) as color|null + if(!new_color) + return + computer.classic_color = new_color + . = TRUE diff --git a/code/modules/modular_computers/file_system/programs/crewmanifest.dm b/code/modules/modular_computers/file_system/programs/crewmanifest.dm index 4dc038b2523..c96da8bd253 100644 --- a/code/modules/modular_computers/file_system/programs/crewmanifest.dm +++ b/code/modules/modular_computers/file_system/programs/crewmanifest.dm @@ -4,7 +4,7 @@ category = PROGRAM_CATEGORY_CREW program_icon_state = "id" extended_desc = "Program for viewing and printing the current crew manifest" - transfer_access = ACCESS_HEADS + transfer_access = list(ACCESS_HEADS) requires_ntnet = FALSE size = 4 tgui_id = "NtosCrewManifest" @@ -18,7 +18,7 @@ return data /datum/computer_file/program/crew_manifest/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() var/obj/item/computer_hardware/printer/printer if(computer) diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm index 462bcc0b796..edf967980c3 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -43,7 +43,7 @@ var/datum/computer_file/file = HDD.find_file_by_name(params["name"]) if(!file) return - var/newname = reject_bad_name(params["new_name"]) + var/newname = check_filename(params["new_name"]) if(!newname || newname != params["new_name"]) playsound(computer, 'sound/machines/terminal_error.ogg', 25, FALSE) return @@ -55,7 +55,7 @@ var/datum/computer_file/file = RHDD.find_file_by_name(params["name"]) if(!file) return - var/newname = reject_bad_name(params["new_name"]) + var/newname = check_filename(params["new_name"]) if(!newname || newname != params["new_name"]) playsound(computer, 'sound/machines/terminal_error.ogg', 25, FALSE) return @@ -88,7 +88,7 @@ binary.alert_silenced = !binary.alert_silenced /datum/computer_file/program/filemanager/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() var/obj/item/computer_hardware/hard_drive/HDD = computer.all_components[MC_HDD] var/obj/item/computer_hardware/hard_drive/portable/RHDD = computer.all_components[MC_SDD] @@ -127,3 +127,12 @@ data["usbfiles"] = usbfiles return data + +/datum/computer_file/program/proc/check_filename(name) + if(CHAT_FILTER_CHECK(name)) + alert(usr, "Filename contains prohibited words.") + return + if(!reject_bad_text(name, 32, ascii_only = TRUE, alphanumeric_only = TRUE, underscore_allowed = TRUE) || lowertext(name) != name) + alert(usr, "All filenames must be 32 characters or less, lowercase, and cannot contain: < > / and \\") + return + return name diff --git a/code/modules/modular_computers/file_system/programs/jobmanagement.dm b/code/modules/modular_computers/file_system/programs/jobmanagement.dm index 9f9a7cb494f..303c4791297 100644 --- a/code/modules/modular_computers/file_system/programs/jobmanagement.dm +++ b/code/modules/modular_computers/file_system/programs/jobmanagement.dm @@ -4,7 +4,7 @@ category = PROGRAM_CATEGORY_CREW program_icon_state = "id" extended_desc = "Program for viewing and changing job slot avalibility." - transfer_access = ACCESS_HEADS + transfer_access = list(ACCESS_HEADS) requires_ntnet = 0 size = 4 tgui_id = "NtosJobManager" @@ -63,14 +63,14 @@ var/obj/item/card/id/user_id = card_slot?.stored_card if(!user_id || !(ACCESS_CHANGE_IDS in user_id.access)) - return + return TRUE switch(action) if("PRG_open_job") var/edit_job_target = params["target"] var/datum/job/j = SSjob.GetJob(edit_job_target) if(!j || !can_open_job(j)) - return + return TRUE if(opened_positions[edit_job_target] >= 0) GLOB.time_last_changed_position = world.time / 10 j.total_positions++ @@ -81,7 +81,7 @@ var/edit_job_target = params["target"] var/datum/job/j = SSjob.GetJob(edit_job_target) if(!j || !can_close_job(j)) - return + return TRUE //Allow instant closing without cooldown if a position has been opened before if(opened_positions[edit_job_target] <= 0) GLOB.time_last_changed_position = world.time / 10 @@ -93,9 +93,9 @@ var/priority_target = params["target"] var/datum/job/j = SSjob.GetJob(priority_target) if(!j) - return + return TRUE if(j.total_positions <= j.current_positions) - return + return TRUE if(j in SSjob.prioritized_jobs) SSjob.prioritized_jobs -= j else @@ -108,7 +108,7 @@ /datum/computer_file/program/job_management/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() var/authed = FALSE var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD] diff --git a/code/modules/modular_computers/file_system/programs/log_viewer.dm b/code/modules/modular_computers/file_system/programs/log_viewer.dm new file mode 100644 index 00000000000..64f3bec8453 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/log_viewer.dm @@ -0,0 +1,96 @@ +/datum/computer_file/program/log_viewer + filename = "log_viewer" + filedesc = "Log Viewer" + category = PROGRAM_CATEGORY_MISC + program_icon_state = "generic" + extended_desc = "View logs via NTNet or saved to your system." + size = 4 + tgui_id = "NtosLogViewer" + program_icon = "database" + +/datum/computer_file/program/log_viewer/ui_act(action, list/params, datum/tgui/ui) + . = ..() + if(.) + return + + switch(action) + if("DownloadRemote") + if(!istype(computer)) + return + if(!check_remote()) + computer.visible_message("\The [computer] shows an \"Connection Error - Remote log server connection timeout\" warning.") + return + var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD] + if(!hard_drive) + computer.visible_message("\The [computer] shows an \"I/O Error - Hard drive connection error\" warning.") + return + var/datum/computer_file/data/log_file/log + switch(params["name"]) + if("ore_silo") + var/obj/item/computer_hardware/hard_drive/role/job_disk = computer.all_components[MC_HDD_JOB] + if(!istype(job_disk) || !(job_disk.disk_flags & DISK_SILO_LOG) || !GLOB.ore_silo_default) + computer.visible_message("\The [computer] shows an \"Access Error - Remote log server refused connection\" warning.") + return + log = new() + log.set_stored_data(get_silo_log()) + if(!log) + return + var/filename = check_filename(stripped_input(usr, "Enter a name for the file", "File Name Entry", "", 16)) + if(!filename) + return + log.filename = filename + if(!hard_drive.store_file(log)) + computer.visible_message("\The [computer] shows an \"I/O Error - Hard drive may be full. Please free some space and try again. Required space: [log.size]GQ\" warning.") + return + return TRUE + +/datum/computer_file/program/log_viewer/ui_data(mob/user) + var/list/data = list() + if(!istype(computer)) + return data + var/list/datum/computer_file/data/log_file/data_files = list() + var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD] + var/obj/item/computer_hardware/hard_drive/ssd = computer.all_components[MC_SDD] + if(hard_drive) + for(var/datum/computer_file/data/log_file/file in hard_drive.stored_files) + data_files += file + if(ssd) + for(var/datum/computer_file/data/log_file/file in ssd.stored_files) + data_files += file + var/files = list() + for(var/datum/computer_file/data/log_file/file in data_files) + files += list(list( + name = file.filename, + size = file.size, + data = file.stored_data, + )) + var/online = check_remote() + var/obj/item/computer_hardware/hard_drive/role/job_disk = computer.all_components[MC_HDD_JOB] + if(GLOB.ore_silo_default && istype(job_disk) && (job_disk.disk_flags & DISK_SILO_LOG)) + var/silo_log + if(online) + silo_log = get_silo_log() + files += list( + list( + name = "ore_silo", + remote = TRUE, + data = silo_log, + online = online, + ) + ) + data["files"] = files + return data + +/datum/computer_file/program/log_viewer/proc/get_silo_log() + if(!GLOB.ore_silo_default) + return "" + var/list/silo_logs = GLOB.silo_access_logs[REF(GLOB.ore_silo_default)] + var/silo_log = "" + for(var/i in length(silo_logs) to 1 step -1) + var/datum/ore_silo_log/entry = silo_logs[i] + // strip_html_simple would be great, if it actually removed the stuff between <>. smh + silo_log += replacetext(replacetext(replacetext("[entry.formatted]\n", "
              ", "\n"), "", ""), "", "") + return silo_log + +/datum/computer_file/program/log_viewer/proc/check_remote() + return computer.get_ntnet_status(NTNET_COMMUNICATION) diff --git a/code/modules/modular_computers/file_system/programs/notepad.dm b/code/modules/modular_computers/file_system/programs/notepad.dm new file mode 100644 index 00000000000..64cc3e463a0 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/notepad.dm @@ -0,0 +1,42 @@ +/datum/computer_file/program/notepad + filename = "notepad" + filedesc = "Notepad" + category = PROGRAM_CATEGORY_MISC + program_icon_state = "generic" + extended_desc = "Jot down your work-safe thoughts and what not." + size = 0 + undeletable = TRUE // It comes by default in PDAs, can't be downloaded, takes no space and should obviously not be able to be deleted. + available_on_ntnet = FALSE + tgui_id = "NtosNotepad" + program_icon = "book" + usage_flags = PROGRAM_TABLET + +/datum/computer_file/program/notepad/ui_act(action, list/params, datum/tgui/ui) + . = ..() + if(.) + return + + switch(action) + if("UpdateNote") + var/obj/item/modular_computer/tablet/tablet = computer + if(!istype(tablet)) + return + tablet.note = params["newnote"] + return TRUE + if("ShowPaper") + var/obj/item/modular_computer/tablet/tablet = computer + if(!istype(tablet) || QDELETED(tablet.stored_paper)) + return + tablet.stored_paper.ui_interact(usr) + return TRUE + + +/datum/computer_file/program/notepad/ui_data(mob/user) + var/list/data = list() + var/obj/item/modular_computer/tablet/tablet = computer + if(!istype(tablet)) + return data + data["note"] = tablet.note + data["has_paper"] = !QDELETED(tablet.stored_paper) + + return data diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm index bd293606094..bbc0d8645bd 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -32,7 +32,7 @@ PROGRAM_CATEGORY_MISC, ) -/datum/computer_file/program/ntnetdownload/run_program() +/datum/computer_file/program/ntnetdownload/on_start() . = ..() if(!.) return @@ -140,7 +140,7 @@ var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD] var/list/access = card_slot?.GetAccess() - var/list/data = get_header_data() + var/list/data = list() data["downloading"] = !!downloaded_file data["error"] = downloaderror || FALSE @@ -210,7 +210,7 @@ tgui_id = "NtosNetDownloader" emagged = TRUE -/datum/computer_file/program/ntnetdownload/syndicate/run_program() +/datum/computer_file/program/ntnetdownload/syndicate/on_start() . = ..() if(!.) return diff --git a/code/modules/modular_computers/file_system/programs/ntmessenger.dm b/code/modules/modular_computers/file_system/programs/ntmessenger.dm new file mode 100644 index 00000000000..29671f8f24b --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/ntmessenger.dm @@ -0,0 +1,419 @@ +#define PDA_SPAM_DELAY 1 MINUTES +/datum/computer_file/program/messenger + filename = "nt_messenger" + filedesc = "Direct Messenger" + category = PROGRAM_CATEGORY_MISC + program_icon_state = "command" + // This should be running when the tablet is created, so it's minimized by default + program_state = PROGRAM_STATE_BACKGROUND + extended_desc = "This program allows old-school communication with other modular devices." + size = 0 + undeletable = TRUE // It comes by default in tablets, can't be downloaded, takes no space and should obviously not be able to be deleted. + available_on_ntnet = FALSE + usage_flags = PROGRAM_TABLET + ui_header = "ntnrc_idle.gif" + tgui_id = "NtosMessenger" + program_icon = "comment-alt" + alert_able = TRUE + + /// The current ringtone (displayed in the chat when a message is received). + var/ringtone = "beep" + /// Whether or not the ringtone is currently on. + var/ringer_status = TRUE + /// Whether or not we're sending and receiving messages. + var/sending_and_receiving = TRUE + /// The messages currently saved in the app. + var/messages = list() + /// great wisdom from PDA.dm - "no spamming" (prevents people from spamming the same message over and over) + var/last_text + /// even more wisdom from PDA.dm - "no everyone spamming" (prevents people from spamming the same message over and over) + var/last_text_everyone + /// Whether or not we allow emojis to be sent by the user. + var/allow_emojis = FALSE + /// Whether or not we're currently looking at the message list. + var/viewing_messages = FALSE + // Whether or not this device is currently hidden from the message monitor. + var/monitor_hidden = FALSE + // Whether or not we're sorting by job. + var/sort_by_job = TRUE + // Whether or not we're sending (or trying to send) a virus. + var/sending_virus = FALSE + + /// The path for the current loaded image in rsc - used only for the "saved image" preview in the Messenger before sending + var/photo_path + + /// Whether or not this app is loaded on a silicon's tablet. + var/is_silicon = FALSE + /// Whether or not we're in a mime PDA. + var/mime_mode = FALSE + +/datum/computer_file/program/messenger/proc/ScrubMessengerList() + var/list/dictionary = list() + + for(var/obj/item/modular_computer/messenger in GetViewableDevices(sort_by_job)) + if(messenger.saved_identification && messenger.saved_job && !(messenger == computer)) + var/list/data = list() + data["name"] = messenger.saved_identification + data["job"] = messenger.saved_job + data["ref"] = REF(messenger) + + //if(data["ref"] != REF(computer)) // you cannot message yourself (despite all my rage) + dictionary += list(data) + + return dictionary + +/proc/GetViewableDevices(sort_by_job = FALSE) + var/list/dictionary = list() + + var/sortmode + if(sort_by_job) + sortmode = GLOBAL_PROC_REF(cmp_pdajob_asc) + else + sortmode = GLOBAL_PROC_REF(cmp_pdaname_asc) + + for(var/obj/item/modular_computer/P in sortList(GLOB.TabletMessengers, sortmode)) + var/obj/item/computer_hardware/hard_drive/drive = P.all_components[MC_HDD] + if(!drive) + continue + for(var/datum/computer_file/program/messenger/app in drive.stored_files) + if(!P.saved_identification || !P.saved_job || P.messenger_invisible || app.monitor_hidden) + continue + dictionary += P + + return dictionary + +/datum/computer_file/program/messenger/proc/StringifyMessengerTarget(obj/item/modular_computer/messenger) + return "[messenger.saved_identification] ([messenger.saved_job])" + +/datum/computer_file/program/messenger/proc/ProcessPhoto() + if(computer.saved_image) + var/icon/img = computer.saved_image.picture_image + var/deter_path = "tmp_msg_photo[rand(0, 99999)].png" + usr << browse_rsc(img, deter_path) // funny random assignment for now, i'll make an actual key later + photo_path = deter_path + +/datum/computer_file/program/messenger/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/chat), + ) + +/datum/computer_file/program/messenger/ui_static_data(mob/user) + var/list/data = list() + data["emoji_names"] = icon_states('icons/emoji.dmi') + return data + +/datum/computer_file/program/messenger/ui_act(action, list/params, datum/tgui/ui) + . = ..() + if(.) + return + + switch(action) + if("PDA_ringSet") + var/mob/living/usr_mob = usr + if(!in_range(computer, usr_mob) || computer.loc != usr_mob) + return + var/new_ringtone = stripped_input(usr, "Enter a new ringtone", "Ringtone", ringtone, 20) + if(!new_ringtone) + return + if(SEND_SIGNAL(computer, COMSIG_TABLET_CHANGE_RINGTONE, usr_mob, new_ringtone) & COMPONENT_STOP_RINGTONE_CHANGE) + ui.close(can_be_suspended = FALSE) + return + ringtone = new_ringtone + return TRUE + if("PDA_ringer_status") + ringer_status = !ringer_status + return TRUE + if("PDA_sAndR") + sending_and_receiving = !sending_and_receiving + return TRUE + if("PDA_viewMessages") + viewing_messages = !viewing_messages + return TRUE + if("PDA_clearMessages") + messages = list() + return TRUE + if("PDA_changeSortStyle") + sort_by_job = !sort_by_job + return TRUE + if("PDA_sendEveryone") + if(!sending_and_receiving) + to_chat(usr, "ERROR: Device has sending disabled.") + return + var/obj/item/computer_hardware/hard_drive/role/disk = computer.all_components[MC_HDD_JOB] + if(!disk?.spam_delay) + if(!disk) + return + log_href_exploit(usr, " Attempted sending PDA message to all without a disk capable of doing so: [disk].") + return + + var/list/targets = list() + + for(var/obj/item/modular_computer/mc in GetViewableDevices()) + targets += mc + + if(targets.len > 0) + if(last_text_everyone && world.time < (last_text_everyone + PDA_SPAM_DELAY * disk.spam_delay)) + to_chat(usr, "Send To All function is still on cooldown. Enabled in [(last_text_everyone + PDA_SPAM_DELAY * disk.spam_delay - world.time)/10] seconds.") + return + send_message(usr, targets, TRUE, multi_delay = disk.spam_delay) + + return TRUE + if("PDA_sendMessage") + if(!sending_and_receiving) + to_chat(usr, "ERROR: Device has sending disabled.") + return + var/obj/item/modular_computer/target = locate(params["ref"]) + if(!istype(target)) + return // we don't want tommy sending his messages to nullspace + if(!(target.saved_identification == params["name"] && target.saved_job == params["job"])) + to_chat(usr, "ERROR: User no longer exists.") + return + + var/obj/item/computer_hardware/hard_drive/drive = target.all_components[MC_HDD] + + for(var/datum/computer_file/program/messenger/app in drive.stored_files) + if(!app.sending_and_receiving && !sending_virus) + to_chat(usr, "ERROR: Device has receiving disabled.") + return + if(sending_virus) + var/obj/item/computer_hardware/hard_drive/role/virus/disk = computer.all_components[MC_HDD_JOB] + if(istype(disk)) + disk.send_virus(target, usr) + return TRUE + send_message(usr, list(target)) + return TRUE + if("PDA_clearPhoto") + computer.saved_image = null + photo_path = null + return TRUE + if("PDA_selectPhoto") + if(!issilicon(usr)) + return + var/mob/living/silicon/user = usr + if(!user.aicamera) + return + if(!length(user.aicamera.stored)) + to_chat(user, "ERROR: No stored photos located.") + if(ringer_status) + playsound(computer, 'sound/machines/terminal_error.ogg', 15, TRUE) + return + var/datum/picture/selected_photo = tgui_select_picture(user, user.aicamera.stored, "Select Message Attachment") + if(!istype(selected_photo, /datum/picture)) + return + computer.saved_image = selected_photo + ProcessPhoto() + return TRUE + if("PDA_toggleVirus") + sending_virus = !sending_virus + return TRUE + +/datum/computer_file/program/messenger/ui_data(mob/user) + var/list/data = list() + + var/obj/item/computer_hardware/hard_drive/role/disk = computer.all_components[MC_HDD_JOB] + + data["owner"] = computer.saved_identification + // Convert the photo object into a file so it can be rendered properly in Show Messages + for(var/list/message as() in messages) + var/datum/picture/pic = message["photo_obj"] + if(!message["photo"] && istype(pic)) + message["photo"] = pda_rsc_image(pic, message["ref"], user) + message["photo_width"] = pic.psize_x + message["photo_height"] = pic.psize_y + data["messages"] = messages + data["ringer_status"] = ringer_status + data["sending_and_receiving"] = sending_and_receiving + data["messengers"] = ScrubMessengerList() + data["viewing_messages"] = viewing_messages + data["sortByJob"] = sort_by_job + data["isSilicon"] = is_silicon + data["photo"] = photo_path + + if(disk) + data["canSpam"] = disk.spam_delay > 0 + data["virus_attach"] = istype(disk, /obj/item/computer_hardware/hard_drive/role/virus) + data["sending_virus"] = sending_virus + + return data + +/proc/pda_rsc_image(datum/picture/photo, ref, user) + if(!istype(photo) || !photo.picture_image) + return + var/path = "pda_img[ref].png" + user << browse_rsc(photo.picture_image, path) + return path + +//////////////////////// +// MESSAGE HANDLING +//////////////////////// + +// How I Learned To Stop Being A PDA Bloat Chump And Learn To Embrace The Lightweight + +// Gets the input for a message being sent. + +/datum/computer_file/program/messenger/proc/msg_input(mob/living/user = usr, target_name = null) + var/message = null + + if(mime_mode) + message = emoji_sanitize(tgui_input_emoji(user, "NT Messaging")) + else + message = tgui_input_text(user, "Enter a message", "NT Messaging[target_name ? " ([target_name])" : ""]") + + if (!message || !sending_and_receiving) + return + if(!user.canUseTopic(computer, BE_CLOSE)) + return + return sanitize(message) + +/datum/computer_file/program/messenger/proc/send_message(mob/living/user, list/obj/item/modular_computer/targets, everyone = FALSE, fake_name = null, fake_job = null, multi_delay = 0) + if(!targets.len) + return FALSE + var/target_name = length(targets) == 1 ? targets[1].saved_identification : "Everyone" + var/message = msg_input(user, target_name) + if(!message) + return FALSE + // notifying is done somewhere else, this is just a sanity check + if((last_text && world.time < last_text + 10) || (everyone && last_text_everyone && world.time < (last_text_everyone + PDA_SPAM_DELAY * multi_delay))) + return FALSE + if(prob(1)) + message += "\nSent from my PDA" + + // Filter + if(CHAT_FILTER_CHECK(message)) + to_chat(user, "ERROR: Prohibited word(s) detected in message.") + return + + // Check for jammers + var/turf/position = get_turf(computer) + for(var/obj/item/jammer/jammer as anything in GLOB.active_jammers) + var/turf/jammer_turf = get_turf(jammer) + if(position?.z == jammer_turf.z && (get_dist(position, jammer_turf) <= jammer.range)) + return FALSE + + // Send the signal + var/list/string_targets = list() + for (var/obj/item/modular_computer/comp in targets) + if (comp.saved_identification && comp.saved_job) // != src is checked by the UI + string_targets += "[comp.saved_identification] ([comp.saved_job])" + + if (!string_targets.len) + return FALSE + + var/datum/signal/subspace/messaging/tablet_msg/signal = new(computer, list( + "name" = fake_name || computer.saved_identification, + "job" = fake_job || computer.saved_job, + "message" = html_decode(message), + "ref" = REF(computer), + "targets" = targets, + "emojis" = allow_emojis, + "photo" = computer.saved_image, + "automated" = FALSE, + )) + + signal.send_to_receivers() + + // If it didn't reach, note that fact + if (!signal.data["done"]) + to_chat(user, "ERROR: Server isn't responding.") + if(ringer_status) + playsound(computer, 'sound/machines/terminal_error.ogg', 15, TRUE) + return FALSE + + var/target_text = signal.format_target() + + // Create log entry + var/list/message_data = list() + message_data["name"] = signal.data["name"] + message_data["job"] = signal.data["job"] + message_data["target"] = target_text + message_data["contents"] = html_decode(signal.data["message"]) + message_data["outgoing"] = TRUE + message_data["ref"] = signal.data["ref"] + message_data["photo_obj"] = signal.data["photo"] + message_data["emojis"] = signal.data["emojis"] + + // Parse emojis before to_chat + if(allow_emojis) + message = emoji_parse(message)//already sent- this just shows the sent emoji as one to the sender in the to_chat + signal.data["message"] = emoji_parse(signal.data["message"]) + + // Show it to ghosts + var/ghost_message = "[message_data["name"]] PDA Message --> [target_text]: [signal.format_message(include_photo = TRUE)]" + for(var/mob/M in GLOB.player_list) + if(isobserver(M) && (M.client?.prefs.chat_toggles & CHAT_GHOSTPDA)) + to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") + + // Log in the talk log + user.log_talk(message, LOG_PDA, tag="PDA: [initial(message_data["name"])] to [target_text]") + to_chat(user, "PDA message sent to [target_text]: [signal.format_message()]") + + if (ringer_status) + computer.send_sound() + + last_text = world.time + if (everyone) + message_data["name"] = "Everyone" + message_data["job"] = "" + last_text_everyone = world.time + + // Log it in the local PDA's logs + messages += list(message_data) + return TRUE + +/datum/computer_file/program/messenger/proc/receive_message(datum/signal/subspace/messaging/tablet_msg/signal) + var/list/message_data = list() + message_data["name"] = signal.data["name"] + message_data["job"] = signal.data["job"] + message_data["contents"] = html_decode(signal.data["message"]) + message_data["outgoing"] = FALSE + message_data["ref"] = signal.data["ref"] + message_data["automated"] = signal.data["automated"] + message_data["photo_obj"] = signal.data["photo"] + message_data["emojis"] = signal.data["emojis"] + messages += list(message_data) + + var/mob/living/L = null + if(isliving(computer.loc)) + L = computer.loc + //Maybe they are a pAI! + else if(computer) + L = get(computer, /mob/living/silicon) + + if(L && (L.stat == CONSCIOUS || L.stat == SOFT_CRIT)) + var/reply = "(Reply)" + var/hrefstart + var/hrefend + if (isAI(L)) + hrefstart = "" + hrefend = "" + + if(signal.data["automated"]) + reply = "\[Automated Message\]" + + var/inbound_message = signal.format_message(include_photo = TRUE) + if(signal.data["emojis"] == TRUE)//so will not parse emojis as such from pdas that don't send emojis + inbound_message = emoji_parse(inbound_message) + + to_chat(L, "[icon2html(src)] PDA message from [hrefstart][signal.data["name"]] ([signal.data["job"]])[hrefend], [inbound_message] [reply]") + + + if (ringer_status) + computer.ring(ringtone) + +/// topic call that answers to people pressing "(Reply)" in chat +/datum/computer_file/program/messenger/Topic(href, href_list) + ..() + if(QDELETED(src)) + return + // Open messenger in the background + if(!computer.enabled) + if(!computer.turn_on(usr, open_ui = FALSE)) + return + if(computer.active_program != src) + if(!computer.open_program(usr, src, in_background = TRUE)) + return + if(!href_list["close"] && usr.canUseTopic(computer, BE_CLOSE, FALSE, NO_TK)) + switch(href_list["choice"]) + if("Message") + send_message(usr, list(locate(href_list["target"]))) +#undef PDA_SPAM_DELAY diff --git a/code/modules/modular_computers/file_system/programs/ntmonitor.dm b/code/modules/modular_computers/file_system/programs/ntmonitor.dm index 0ff1061f345..9bb0f227872 100644 --- a/code/modules/modular_computers/file_system/programs/ntmonitor.dm +++ b/code/modules/modular_computers/file_system/programs/ntmonitor.dm @@ -6,7 +6,7 @@ extended_desc = "This program monitors stationwide NTNet network, provides access to logging systems, and allows for configuration changes" size = 12 requires_ntnet = TRUE - required_access = ACCESS_NETWORK //NETWORK CONTROL IS A MORE SECURE PROGRAM. + required_access = list(ACCESS_NETWORK) //NETWORK CONTROL IS A MORE SECURE PROGRAM. available_on_ntnet = TRUE tgui_id = "NtosNetMonitor" program_icon = "network-wired" @@ -52,7 +52,7 @@ /datum/computer_file/program/ntnetmonitor/ui_data(mob/user) if(!SSnetworks.station_network) return - var/list/data = get_header_data() + var/list/data = list() data["ntnetstatus"] = SSnetworks.station_network.check_function(zlevel=user.get_virtual_z_level()) data["ntnetrelays"] = SSnetworks.relays.len diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm index 0fa5a09d8ee..5a3ab3bf9a6 100644 --- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm @@ -121,26 +121,23 @@ if("PRG_savelog") if(!channel) return - var/logname = stripped_input(params["log_name"]) + var/logname = check_filename(params["log_name"]) if(!logname) return - var/datum/computer_file/data/logfile = new /datum/computer_file/data/logfile() + var/datum/computer_file/data/log_file/logfile = new() // Now we will generate HTML-compliant file that can actually be viewed/printed. logfile.filename = logname - logfile.stored_data = "\[b\]Logfile dump from NTNRC channel [channel.title]\[/b\]\[BR\]" + var/log_data = "Logfile dump from NTNRC channel [channel.title]\n" for(var/logstring in channel.messages) - logfile.stored_data = "[logfile.stored_data][logstring]\[BR\]" - logfile.stored_data = "[logfile.stored_data]\[b\]Logfile dump completed.\[/b\]" - logfile.calculate_size() + log_data += "[logstring]\n" + log_data += "\nLogfile dump completed.\n" + logfile.set_stored_data(log_data) var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD] - if(!computer || !hard_drive || !hard_drive.store_file(logfile)) - if(!computer) - // This program shouldn't even be runnable without computer. - CRASH("Var computer is null!") - if(!hard_drive) - computer.visible_message("\The [computer] shows an \"I/O Error - Hard drive connection error\" warning.") - else // In 99.9% cases this will mean our HDD is full - computer.visible_message("\The [computer] shows an \"I/O Error - Hard drive may be full. Please free some space and try again. Required space: [logfile.size]GQ\" warning.") + if(!hard_drive) + computer.visible_message("\The [computer] shows an \"I/O Error - Hard drive connection error\" warning.") + else if(!hard_drive.store_file(logfile)) + computer.visible_message("\The [computer] shows an \"I/O Error - Hard drive may be full. Please free some space and try again. Required space: [logfile.size]GQ\" warning.") + computer.send_sound() return TRUE if("PRG_renamechannel") if(!authed) @@ -195,7 +192,7 @@ else ui_header = "ntnrc_idle.gif" -/datum/computer_file/program/chatclient/run_program(mob/living/user) +/datum/computer_file/program/chatclient/on_start(mob/living/user) . = ..() if(!.) return @@ -221,8 +218,6 @@ var/list/data = list() - data = get_header_data() - var/list/all_channels = list() for(var/C in SSnetworks.station_network.chat_channels) var/datum/ntnet_conversation/conv = C diff --git a/code/modules/modular_computers/file_system/programs/phys_scanner.dm b/code/modules/modular_computers/file_system/programs/phys_scanner.dm new file mode 100644 index 00000000000..a44c5472db8 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/phys_scanner.dm @@ -0,0 +1,116 @@ +/datum/computer_file/program/phys_scanner + filename = "phys_scanner" + filedesc = "Physical Scanner" + program_icon_state = "generic" + category = PROGRAM_CATEGORY_MISC + extended_desc = "This program allows the tablet to scan physical objects and display a data output." + size = 8 + usage_flags = PROGRAM_TABLET + available_on_ntnet = FALSE + tgui_id = "NtosPhysScanner" + program_icon = "barcode" + // Process attack calls from the computer + use_attack = TRUE + use_attack_obj = TRUE + + var/current_mode = 0 + var/available_modes = 0 + + var/last_record = "" + +/datum/computer_file/program/phys_scanner/proc/mode_to_names(mode_holder, use_list = FALSE) + var/reads = list() + if(mode_holder & DISK_CHEM) + reads += "Reagent" + if(mode_holder & DISK_MED) + reads += "Health" + if(mode_holder & DISK_POWER) + reads += "Radiation" + if(mode_holder & DISK_ATMOS) + reads += "Gas" + if(!length(reads)) + return + return use_list ? reads : reads[1] + +/datum/computer_file/program/phys_scanner/proc/ReadModes() + return mode_to_names(available_modes, use_list = TRUE) + +/datum/computer_file/program/phys_scanner/proc/ReadCurrent() + return mode_to_names(current_mode) + +/datum/computer_file/program/phys_scanner/attack(atom/target, mob/living/user, params) + switch(current_mode) + if(DISK_CHEM) + var/mob/living/carbon/carbon = target + if(istype(carbon)) + user.visible_message("[user] analyzes [carbon]'s vitals.", "You analyze [carbon]'s vitals.") + last_record = chemscan(user, carbon) + return FALSE + else if(!istype(target, /obj/item/reagent_containers/pill/floorpill) && !istype(target, /obj/item/reagent_containers/glass/chem_heirloom)) + if(!isnull(target.reagents)) + if(target.reagents.reagent_list.len > 0) + var/reagents_length = target.reagents.reagent_list.len + last_record = "[reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.\n" + for (var/re in target.reagents.reagent_list) + last_record += "\t [re]\n" + else + last_record = "No active chemical agents found in [target]." + else + last_record = "No significant chemical agents found in [target]." + return FALSE + if(DISK_MED) + var/mob/living/carbon/carbon = target + if(istype(carbon)) + user.visible_message("[user] analyzes [carbon]'s vitals.", "You analyze [carbon]'s vitals.") + last_record = healthscan(user, carbon, 1) + return FALSE + if(DISK_POWER) + var/mob/living/carbon/carbon = target + if(istype(carbon)) + user.visible_message("[user] analyzes [carbon]'s radiation levels.", "You analyze [carbon]'s radiation levels.") + last_record = "Analyzing Results for [carbon]:\n" + if(carbon.radiation) + last_record += "Radiation Level: [carbon.radiation]%" + else + last_record += "No radiation detected." + return FALSE + return ..() + +/datum/computer_file/program/phys_scanner/attack_obj(obj/target, mob/living/user) + switch(current_mode) + if(DISK_ATMOS) + var/scan_result = atmosanalyzer_scan(user, target, silent = TRUE) + if(scan_result) + user.visible_message("[user] analyzes [icon2html(target, viewers(user))] [target]'s gas contents.", "You analyze [icon2html(target, user)] [target]'s gas contents.") + last_record = scan_result + return FALSE + return ..() + +/datum/computer_file/program/phys_scanner/ui_act(action, list/params, datum/tgui/ui) + . = ..() + if(.) + return + + switch(action) + if("selectMode") + switch(params["newMode"]) + if("Reagent") + current_mode = DISK_CHEM + if("Health") + current_mode = DISK_MED + if("Radiation") + current_mode = DISK_POWER + if("Gas") + current_mode = DISK_ATMOS + + return UI_UPDATE + + +/datum/computer_file/program/phys_scanner/ui_data(mob/user) + var/list/data = list() + + data["set_mode"] = ReadCurrent() + data["last_record"] = last_record + data["available_modes"] = ReadModes() + + return data diff --git a/code/modules/modular_computers/file_system/programs/portrait_printer.dm b/code/modules/modular_computers/file_system/programs/portrait_printer.dm index f0f16c90d09..d55ea45b59e 100644 --- a/code/modules/modular_computers/file_system/programs/portrait_printer.dm +++ b/code/modules/modular_computers/file_system/programs/portrait_printer.dm @@ -14,7 +14,7 @@ category = PROGRAM_CATEGORY_MISC program_icon_state = "dummy" extended_desc = "This program connects to a Spinward Sector community art site for viewing and printing art." - transfer_access = ACCESS_LIBRARY + transfer_access = list(ACCESS_LIBRARY) usage_flags = PROGRAM_CONSOLE requires_ntnet = TRUE size = 9 diff --git a/code/modules/modular_computers/file_system/programs/powermonitor.dm b/code/modules/modular_computers/file_system/programs/powermonitor.dm index ee45ebdd5ef..048968bdd70 100644 --- a/code/modules/modular_computers/file_system/programs/powermonitor.dm +++ b/code/modules/modular_computers/file_system/programs/powermonitor.dm @@ -7,7 +7,7 @@ program_icon_state = "power_monitor" extended_desc = "This program connects to sensors around the station to provide information about electrical systems" ui_header = "power_norm.gif" - transfer_access = ACCESS_ENGINE + transfer_access = list(ACCESS_ENGINE) usage_flags = PROGRAM_CONSOLE requires_ntnet = 0 network_destination = "power monitoring system" @@ -26,7 +26,7 @@ var/next_record = 0 -/datum/computer_file/program/power_monitor/run_program(mob/living/user) +/datum/computer_file/program/power_monitor/on_start(mob/living/user) . = ..(user) if(!.) return @@ -80,7 +80,7 @@ /datum/computer_file/program/power_monitor/ui_data() var/datum/powernet/connected_powernet = get_powernet() - var/list/data = get_header_data() + var/list/data = list() data["stored"] = record_size data["interval"] = record_interval / 10 data["attached"] = connected_powernet ? TRUE : FALSE diff --git a/code/modules/modular_computers/file_system/programs/radar.dm b/code/modules/modular_computers/file_system/programs/radar.dm index 4ad0491586f..d57bac4d843 100644 --- a/code/modules/modular_computers/file_system/programs/radar.dm +++ b/code/modules/modular_computers/file_system/programs/radar.dm @@ -7,7 +7,6 @@ ui_header = "borg_mon.gif" //DEBUG -- new icon before PR program_icon_state = "radarntos" requires_ntnet = TRUE - transfer_access = null available_on_ntnet = FALSE usage_flags = PROGRAM_LAPTOP | PROGRAM_TABLET network_destination = "tracking program" @@ -27,7 +26,7 @@ var/pointercolor = "green" COOLDOWN_DECLARE(last_scan) -/datum/computer_file/program/radar/run_program(mob/living/user) +/datum/computer_file/program/radar/on_start(mob/living/user) . = ..() if(.) START_PROCESSING(SSfastprocess, src) @@ -50,7 +49,9 @@ ) /datum/computer_file/program/radar/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() + // PDAs should not have full radar capabilities + data["full_capability"] = !istype(computer, /obj/item/modular_computer/tablet/pda) data["selected"] = selected data["objects"] = list() data["scanning"] = (world.time < next_scan) @@ -74,8 +75,10 @@ switch(action) if("selecttarget") selected = params["ref"] + return TRUE if("scan") scan() + return TRUE /** *Updates tracking information of the selected target. @@ -98,8 +101,9 @@ var/pointer = "crosshairs" var/locx = (target_turf.x - here_turf.x) + 24 var/locy = (here_turf.y - target_turf.y) + 24 + var/dist = get_dist_euclidian(here_turf, target_turf) - if(get_dist_euclidian(here_turf, target_turf) > 24) + if(dist > 24 || istype(computer, /obj/item/modular_computer/tablet/pda)) userot = TRUE rot = round(get_angle(here_turf, target_turf)) else @@ -116,6 +120,9 @@ "arrowstyle" = arrowstyle, "color" = pointercolor, "pointer" = pointer, + "gpsx" = target_turf.x, + "gpsy" = target_turf.y, + "dist" = round(dist), ) return trackinfo @@ -215,7 +222,7 @@ filedesc = "Lifeline" extended_desc = "This program allows for tracking of crew members via their suit sensors." requires_ntnet = TRUE - transfer_access = ACCESS_MEDICAL + transfer_access = list(ACCESS_MEDICAL) available_on_ntnet = TRUE program_icon = "heartbeat" @@ -258,6 +265,48 @@ return TRUE return FALSE +///Tracks all janitor equipment +/datum/computer_file/program/radar/custodial_locator + filename = "custodiallocator" + filedesc = "Custodial Locator" + extended_desc = "This program allows for tracking of custodial equipment." + requires_ntnet = TRUE + transfer_access = list(ACCESS_JANITOR) + available_on_ntnet = TRUE + program_icon = "broom" + size = 2 + +/datum/computer_file/program/radar/custodial_locator/find_atom() + return locate(selected) in GLOB.janitor_devices + +/datum/computer_file/program/radar/custodial_locator/scan() + if(world.time < next_scan) + return + next_scan = world.time + (2 SECONDS) + objects = list() + for(var/obj/custodial_tools as anything in GLOB.janitor_devices) + if(!trackable(custodial_tools)) + continue + var/tool_name = custodial_tools.name + + if(istype(custodial_tools, /obj/item/mop)) + var/obj/item/mop/wet_mop = custodial_tools + tool_name = "[wet_mop.reagents.total_volume ? "Wet" : "Dry"] [wet_mop.name]" + + if(istype(custodial_tools, /obj/structure/janitorialcart)) + var/obj/structure/janitorialcart/janicart = custodial_tools + tool_name = "[janicart.name] - Water level: [janicart.reagents.total_volume] / [janicart.reagents.maximum_volume]" + + if(istype(custodial_tools, /mob/living/simple_animal/bot/cleanbot)) + var/mob/living/simple_animal/bot/cleanbot/cleanbots = custodial_tools + tool_name = "[cleanbots.name] - [cleanbots.on ? "Online" : "Offline"]" + + var/list/tool_information = list( + ref = REF(custodial_tools), + name = tool_name, + ) + objects += list(tool_information) + //////////////////////// //Nuke Disk Finder App// //////////////////////// @@ -270,7 +319,6 @@ program_icon_state = "radarsyndicate" extended_desc = "This program allows for tracking of nuclear authorization disks and warheads." requires_ntnet = FALSE - transfer_access = null available_on_ntnet = FALSE available_on_syndinet = TRUE tgui_id = "NtosRadarSyndicate" diff --git a/code/modules/modular_computers/file_system/programs/records.dm b/code/modules/modular_computers/file_system/programs/records.dm new file mode 100644 index 00000000000..37415a880d0 --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/records.dm @@ -0,0 +1,87 @@ +/datum/computer_file/program/records + filename = "ntrecords" + filedesc = "Records" + extended_desc = "Allows the user to view several basic records from the crew." + category = PROGRAM_CATEGORY_MISC + program_icon = "clipboard" + program_icon_state = "crew" + tgui_id = "NtosRecords" + size = 4 + usage_flags = PROGRAM_TABLET | PROGRAM_LAPTOP + available_on_ntnet = FALSE + + var/mode + +/datum/computer_file/program/records/medical + filedesc = "Medical Records" + filename = "medrecords" + program_icon_state = "med-records" + program_icon = "book-medical" + extended_desc = "Allows the user to view several basic medical records from the crew." + transfer_access = list(ACCESS_MEDICAL, ACCESS_HEADS) + available_on_ntnet = TRUE + mode = "medical" + +/datum/computer_file/program/records/security + filedesc = "Security Records" + filename = "secrecords" + program_icon_state = "sec-records" + extended_desc = "Allows the user to view several basic security records from the crew." + transfer_access = list(ACCESS_SECURITY, ACCESS_HEADS) + available_on_ntnet = TRUE + mode = "security" + +/datum/computer_file/program/records/proc/GetRecordsReadable() + var/list/all_records = list() + + + switch(mode) + if("security") + for(var/datum/data/record/person in GLOB.data_core.general) + var/datum/data/record/security_person = find_record("id", person.fields["id"], GLOB.data_core.security) + var/list/current_record = list() + + if(security_person) + current_record["wanted"] = security_person.fields["criminal"] + + current_record["id"] = person.fields["id"] + current_record["name"] = person.fields["name"] + current_record["rank"] = person.fields["rank"] + current_record["sex"] = person.fields["sex"] + current_record["age"] = person.fields["age"] + current_record["species"] = person.fields["species"] + current_record["fingerprint"] = person.fields["fingerprint"] + + all_records += list(current_record) + if("medical") + for(var/datum/data/record/person in GLOB.data_core.general) + var/list/current_record = list() + + current_record["id"] = person.fields["id"] + current_record["name"] = person.fields["name"] + current_record["rank"] = person.fields["rank"] + current_record["sex"] = person.fields["sex"] + current_record["age"] = person.fields["age"] + current_record["species"] = person.fields["species"] + + var/datum/data/record/medical_person = find_record("id", person.fields["id"], GLOB.data_core.medical) + + if(medical_person) + current_record["b_dna"] = medical_person.fields["b_dna"] + current_record["bloodtype"] = medical_person.fields["blood_type"] + current_record["mi_dis"] = medical_person.fields["mi_dis"] + current_record["ma_dis"] = medical_person.fields["ma_dis"] + current_record["notes"] = medical_person.fields["notes"] + current_record["cnotes"] = medical_person.fields["notes_d"] + + all_records += list(current_record) + + return all_records + + + +/datum/computer_file/program/records/ui_data(mob/user) + var/list/data = list() + data["records"] = GetRecordsReadable() + data["mode"] = mode + return data diff --git a/code/modules/modular_computers/file_system/programs/remote_airlock.dm b/code/modules/modular_computers/file_system/programs/remote_airlock.dm new file mode 100644 index 00000000000..b1f70ff043f --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/remote_airlock.dm @@ -0,0 +1,62 @@ +/datum/computer_file/program/remote_airlock + filename = "remote_airlock" + filedesc = "Remote Airlock Control" + extended_desc = "Allows remote control of select airlocks via an integrated local bluespace relay." + category = PROGRAM_CATEGORY_MISC + program_icon = "lock-open" + tgui_id = "NtosAirlockControl" + size = 1 + available_on_ntnet = FALSE + undeletable = TRUE + unsendable = TRUE + +/datum/computer_file/program/remote_airlock/ui_data(mob/user) + var/list/data = list() + var/list/airlocks = list() + var/list/all_controllable = list() + var/obj/item/computer_hardware/hard_drive/drive = computer.all_components[MC_HDD] + if(istype(drive) && length(drive.controllable_airlocks)) + all_controllable += drive.controllable_airlocks + drive = computer.all_components[MC_HDD_JOB] + if(istype(drive) && length(drive.controllable_airlocks)) + all_controllable += drive.controllable_airlocks + for(var/obj/machinery/door/poddoor/airlock in GLOB.airlocks) + if((airlock.id in all_controllable) && airlock.get_virtual_z_level() == computer.get_virtual_z_level() && !QDELETED(airlock)) + var/turf/L = get_turf(airlock) + airlocks += list(list("id" = airlock.id, + "name" = airlock.name, + "open" = !airlock.density, + "locx" = "[L.x]", + "locy" = "[L.y]", + )) + data["airlocks"] = airlocks + return data + +/datum/computer_file/program/remote_airlock/ui_act(action, params, datum/tgui/ui) + . = ..() + if(.) + return + switch(action) + if("airlock_control") + if(!params["id"]) + return + var/list/all_controllable = list() + var/obj/item/computer_hardware/hard_drive/drive = computer.all_components[MC_HDD] + if(istype(drive) && length(drive.controllable_airlocks)) + all_controllable += drive.controllable_airlocks + drive = computer.all_components[MC_HDD_JOB] + if(istype(drive) && length(drive.controllable_airlocks)) + all_controllable += drive.controllable_airlocks + for(var/obj/machinery/door/poddoor/airlock in GLOB.airlocks) + if(airlock.id == params["id"]) + if(!(airlock.id in all_controllable)) + log_href_exploit(usr, " Attempted control of airlock: [params["id"]] which they do not have access to (access: [english_list(all_controllable)]).") + return TRUE + // Fail, but reload data + if(airlock.get_virtual_z_level() != computer.get_virtual_z_level()) + return TRUE + if(airlock.density) + airlock.open() + else + airlock.close() + return TRUE diff --git a/code/modules/modular_computers/file_system/programs/robocontrol.dm b/code/modules/modular_computers/file_system/programs/robocontrol.dm index 320b2ccb018..a5aa7697260 100644 --- a/code/modules/modular_computers/file_system/programs/robocontrol.dm +++ b/code/modules/modular_computers/file_system/programs/robocontrol.dm @@ -18,8 +18,8 @@ var/list/current_access = list() /datum/computer_file/program/robocontrol/ui_data(mob/user) - var/list/data = get_header_data() - var/turf/current_turf = get_turf(ui_host()) + var/list/data = list() + var/turf/current_turf = get_turf(computer.ui_host()) var/zlevel = current_turf.get_virtual_z_level() var/list/botlist = list() var/list/mulelist = list() @@ -27,10 +27,8 @@ var/obj/item/computer_hardware/card_slot/card_slot = computer ? computer.all_components[MC_CARD] : null data["have_id_slot"] = !!card_slot if(computer) - var/obj/item/card/id/id_card = card_slot ? card_slot.stored_card : null - data["has_id"] = !!id_card - data["id_owner"] = id_card ? id_card.registered_name : "No Card Inserted." - data["access_on_card"] = id_card ? id_card.access : null + var/obj/item/card/id/id_card = card_slot ? card_slot.stored_card : "" + data["id_owner"] = id_card botcount = 0 current_user = user @@ -84,19 +82,12 @@ var/list/standard_actions = list("patroloff", "patrolon", "ejectpai") var/list/MULE_actions = list("stop", "go", "home", "destination", "setid", "sethome", "unload", "autoret", "autopick", "report", "ejectpai") - var/mob/living/simple_animal/bot/Bot = locate(params["robot"]) in GLOB.bots_list - var access_okay = TRUE - if(!id_card && !Bot.bot_core.allowed(current_user)) - access_okay = FALSE - else if(id_card && !Bot.bot_core.check_access(id_card)) - access_okay = FALSE - if (access_okay && (action in standard_actions)) - Bot.bot_control(action, current_user, id_card ? id_card.access : current_access) - if (access_okay && (action in MULE_actions)) - Bot.bot_control(action, current_user, id_card ? id_card.access : current_access, TRUE) + var/mob/living/simple_animal/bot/selected_bot = locate(params["robot"]) in GLOB.bots_list switch(action) if("summon") - Bot.bot_control(action, current_user, id_card ? id_card.access : current_access) + if(!selected_bot) + return + selected_bot.bot_control(action, current_user, id_card ? id_card.access : current_access) if("ejectcard") if(!computer || !card_slot) return @@ -104,5 +95,15 @@ GLOB.data_core.manifest_modify(id_card.registered_name, id_card.assignment, id_card.hud_state) card_slot.try_eject(current_user) else - playsound(get_turf(ui_host()) , 'sound/machines/buzz-sigh.ogg', 25, FALSE) - return + playsound(get_turf(computer.ui_host()) , 'sound/machines/buzz-sigh.ogg', 25, FALSE) + if(!selected_bot) + return + var access_okay = TRUE + if(!id_card && !selected_bot.bot_core.allowed(current_user)) + access_okay = FALSE + else if(id_card && !selected_bot.bot_core.check_access(id_card)) + access_okay = FALSE + if (access_okay && (action in standard_actions)) + selected_bot.bot_control(action, current_user, id_card ? id_card.access : current_access) + if (access_okay && (action in MULE_actions)) + selected_bot.bot_control(action, current_user, id_card ? id_card.access : current_access, TRUE) diff --git a/code/modules/modular_computers/file_system/programs/secureye.dm b/code/modules/modular_computers/file_system/programs/secureye.dm index be142cc7e57..95bcf0a4d21 100644 --- a/code/modules/modular_computers/file_system/programs/secureye.dm +++ b/code/modules/modular_computers/file_system/programs/secureye.dm @@ -7,7 +7,7 @@ program_icon_state = "generic" extended_desc = "This program allows access to standard security camera networks." requires_ntnet = TRUE - transfer_access = ACCESS_SECURITY + transfer_access = list(ACCESS_SECURITY) usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP size = 5 tgui_id = "NtosSecurEye" @@ -58,28 +58,23 @@ QDEL_NULL(cam_background) return ..() -/datum/computer_file/program/secureye/ui_interact(mob/user, datum/tgui/ui) - // Update UI - ui = SStgui.try_update_ui(user, src, ui) - +/datum/computer_file/program/secureye/on_ui_create(mob/user, datum/tgui/ui) // Update the camera, showing static if necessary and updating data if the location has moved. update_active_camera_screen() - if(!ui) - var/user_ref = REF(user) - // Ghosts shouldn't count towards concurrent users, which produces - // an audible terminal_on click. - if(isliving(user)) - concurrent_users += user_ref - // Register map objects - user.client.register_map_obj(cam_screen) - for(var/plane in cam_plane_masters) - user.client.register_map_obj(plane) - user.client.register_map_obj(cam_background) - return ..() + var/user_ref = REF(user) + // Ghosts shouldn't count towards concurrent users, which produces + // an audible terminal_on click. + if(isliving(user)) + concurrent_users += user_ref + // Register map objects + user.client.register_map_obj(cam_screen) + for(var/plane in cam_plane_masters) + user.client.register_map_obj(plane) + user.client.register_map_obj(cam_background) /datum/computer_file/program/secureye/ui_data() - var/list/data = get_header_data() + var/list/data = list() data["network"] = network data["activeCamera"] = null if(active_camera) @@ -122,8 +117,18 @@ return TRUE -/datum/computer_file/program/secureye/ui_close(mob/user) +/datum/computer_file/program/secureye/on_ui_close(mob/user, datum/tgui/tgui) + on_exit(user) + +/datum/computer_file/program/secureye/kill_program(forced) . = ..() + on_exit() + +/datum/computer_file/program/secureye/proc/on_exit(mob/user) + if(!ismob(user)) + user = usr + if(!ismob(user)) + return var/user_ref = REF(user) var/is_living = isliving(user) // Living creature or not, we remove you anyway. diff --git a/code/modules/modular_computers/file_system/programs/signaller.dm b/code/modules/modular_computers/file_system/programs/signaller.dm index ee9df374044..6f9dfbf9b12 100644 --- a/code/modules/modular_computers/file_system/programs/signaller.dm +++ b/code/modules/modular_computers/file_system/programs/signaller.dm @@ -15,7 +15,7 @@ /// Radio connection datum used by signallers. var/datum/radio_frequency/radio_connection -/datum/computer_file/program/signaller/run_program(mob/living/user) +/datum/computer_file/program/signaller/on_start(mob/living/user) . = ..() if (!.) return @@ -28,7 +28,7 @@ SSradio.remove_object(computer, signal_frequency) /datum/computer_file/program/signaller/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() var/obj/item/computer_hardware/radio_card/sensor = computer?.get_modular_computer_part(MC_SIGNALLER) if(sensor?.check_functionality()) data["frequency"] = signal_frequency diff --git a/code/modules/modular_computers/file_system/programs/sm_monitor.dm b/code/modules/modular_computers/file_system/programs/sm_monitor.dm index 8e251cca960..87ea248f58b 100644 --- a/code/modules/modular_computers/file_system/programs/sm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/sm_monitor.dm @@ -6,7 +6,7 @@ program_icon_state = "smmon_0" extended_desc = "This program connects to specially calibrated supermatter sensors to provide information on the status of supermatter-based engines." requires_ntnet = TRUE - transfer_access = ACCESS_CONSTRUCTION + transfer_access = list(ACCESS_CONSTRUCTION) network_destination = "supermatter monitoring system" size = 5 tgui_id = "NtosSupermatterMonitor" @@ -31,7 +31,7 @@ if(istype(computer)) computer.update_icon() -/datum/computer_file/program/supermatter_monitor/run_program(mob/living/user) +/datum/computer_file/program/supermatter_monitor/on_start(mob/living/user) . = ..(user) if(!.) return @@ -50,7 +50,7 @@ for(var/supermatter in supermatters) clear_supermatter(supermatter) supermatters = list() - var/turf/T = get_turf(ui_host()) + var/turf/T = get_turf(computer.ui_host()) if(!T) return for(var/obj/machinery/power/supermatter_crystal/S in GLOB.machines) @@ -118,7 +118,7 @@ computer.alert_call(src, "Crystal delamination in progress!") /datum/computer_file/program/supermatter_monitor/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() if(istype(active)) var/turf/T = get_turf(active) diff --git a/code/modules/modular_computers/file_system/programs/statusdisplay.dm b/code/modules/modular_computers/file_system/programs/statusdisplay.dm new file mode 100644 index 00000000000..d063716bf8f --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/statusdisplay.dm @@ -0,0 +1,69 @@ +/datum/computer_file/program/status + filename = "statusdisplay" + filedesc = "Status Display" + program_icon = "signal" + program_icon_state = "generic" + requires_ntnet = TRUE + size = 4 + + extended_desc = "An app used to change the message on the station status displays." + tgui_id = "NtosStatus" + + usage_flags = PROGRAM_ALL + available_on_ntnet = FALSE + + var/upper_text + var/lower_text + var/picture + +/datum/computer_file/program/status/proc/SendSignal(type) + var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS) + + if(!frequency) + return + + var/datum/signal/status_signal = new(list("command" = type)) + switch(type) + if("message") + var/data1 = reject_bad_text(upper_text || "", MAX_STATUS_LINE_LENGTH) + var/data2 = reject_bad_text(lower_text || "", MAX_STATUS_LINE_LENGTH) + status_signal.data["msg1"] = data1 + status_signal.data["msg2"] = data2 + message_admins("[ADMIN_LOOKUPFLW(usr)] changed the Status Message to - [data1], [data2] - From the Status Display app.") + log_game("[key_name(usr)] changed the Status Message to - [data1], [data2] - From the Status Display app.") + if("alert") + status_signal.data["picture_state"] = picture + + frequency.post_signal(computer, status_signal) + +/datum/computer_file/program/status/proc/SetText(position, text) + switch(position) + if("upper") + upper_text = text + if("lower") + lower_text = text + +/datum/computer_file/program/status/ui_act(action, list/params, datum/tgui/ui) + . = ..() + if(.) + return + + switch(action) + if("stat_send") + SendSignal("message") + if("stat_update") + SetText(params["position"], params["text"]) + if("stat_pic") + var/chosen_picture = params["picture"] + if (!(chosen_picture in GLOB.approved_status_pictures)) + return + picture = chosen_picture + SendSignal("alert") + +/datum/computer_file/program/status/ui_data(mob/user) + var/list/data = list() + + data["upper"] = upper_text + data["lower"] = lower_text + + return data diff --git a/code/modules/modular_computers/hardware/_hardware.dm b/code/modules/modular_computers/hardware/_hardware.dm index c2387e12824..b2398841278 100644 --- a/code/modules/modular_computers/hardware/_hardware.dm +++ b/code/modules/modular_computers/hardware/_hardware.dm @@ -33,6 +33,8 @@ var/malfunction_probability = 10 /// What define is used to qualify this piece of hardware? Important for upgraded versions of the same hardware. var/device_type + /// If the hardware can be "hotswapped" (ejected when another is installed) + var/hotswap = FALSE /obj/item/computer_hardware/New(var/obj/L) ..() @@ -44,6 +46,9 @@ holder.forget_component(src) return ..() +/// Called when the hardware is inserted BY HAND. Use on_install for cases where it's installed by code. +/obj/item/computer_hardware/proc/on_inserted() + return /obj/item/computer_hardware/attackby(obj/item/I, mob/living/user) // Cable coil. Works as repair method, but will probably require multiple applications and more cable. diff --git a/code/modules/modular_computers/hardware/card_slot.dm b/code/modules/modular_computers/hardware/card_slot.dm index 4e8bae4f719..2b1451c658a 100644 --- a/code/modules/modular_computers/hardware/card_slot.dm +++ b/code/modules/modular_computers/hardware/card_slot.dm @@ -6,7 +6,9 @@ w_class = WEIGHT_CLASS_TINY device_type = MC_CARD - var/obj/item/card/id/stored_card = null + var/obj/item/card/id/stored_card + var/current_identification + var/current_job /obj/item/computer_hardware/card_slot/handle_atom_del(atom/A) if(A == stored_card) @@ -65,7 +67,11 @@ if(ishuman(user)) var/mob/living/carbon/human/H = user H.sec_hud_set_ID() - + current_identification = stored_card.registered_name + current_job = stored_card.assignment + holder?.on_id_insert() + holder?.update_icon() + holder?.ui_update() return TRUE @@ -88,10 +94,15 @@ var/datum/computer_file/program/computer_program = p computer_program.event_idremoved(1) if(ishuman(user)) - var/mob/living/carbon/human/human_user = user - human_user.sec_hud_set_ID() + var/mob/living/carbon/human/human_wearer = user + if(human_wearer.wear_id == holder) + human_wearer.sec_hud_set_ID() to_chat(user, "You remove the card from \the [src].") playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + stored_card = null + current_identification = null + current_job = null + holder?.update_icon() return TRUE /obj/item/computer_hardware/card_slot/attackby(obj/item/I, mob/living/user) @@ -103,7 +114,7 @@ try_eject(user) return swap_slot() - to_chat(user, "You adjust the connecter to fit into [expansion_hw ? "an expansion bay" : "the primary ID bay"].") + to_chat(user, "You adjust the connector to fit into [expansion_hw ? "an expansion bay" : "the primary ID bay"].") /** *Swaps the card_slot hardware between using the dedicated card slot bay on a computer, and using an expansion bay. diff --git a/code/modules/modular_computers/hardware/hard_drive.dm b/code/modules/modular_computers/hardware/hard_drive.dm index fdc1da0ac54..f933807ad75 100644 --- a/code/modules/modular_computers/hardware/hard_drive.dm +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -8,21 +8,40 @@ device_type = MC_HDD var/max_capacity = 128 var/used_capacity = 0 - var/list/stored_files = list() // List of stored files on this drive. DO NOT MODIFY DIRECTLY! + /// List of stored files on this drive. DO NOT MODIFY DIRECTLY! + var/list/stored_files = list() + /// If we should install the default programs + var/default_installs = TRUE + /// If the drive has been installed before (used to prevent re-setting initial ringtone) + var/has_been_installed = FALSE + /// List of airlocks this disk can control with program/remote_airlock + var/list/controllable_airlocks /obj/item/computer_hardware/hard_drive/on_remove(obj/item/modular_computer/remove_from, mob/user) remove_from.shutdown_computer() +/obj/item/computer_hardware/hard_drive/on_install(obj/item/modular_computer/install_into, mob/living/user) + // We don't want to install again if they remove the drive + if(has_been_installed) + return + has_been_installed = TRUE + // Add default programs now, instead of Initialize (this is important so they have a reference to "holder" and thus "computer") + if(default_installs) + install_default_programs() + /obj/item/computer_hardware/hard_drive/proc/install_default_programs() - store_file(new/datum/computer_file/program/computerconfig(src)) // Computer configuration utility, allows hardware control and displays more info than status bar store_file(new/datum/computer_file/program/ntnetdownload(src)) // NTNet Downloader Utility, allows users to download more software from NTNet repository + store_file(new/datum/computer_file/program/computerconfig(src)) // Computer configuration utility, allows hardware control and displays more info than status bar store_file(new/datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation. - store_file(new/datum/computer_file/program/databank_uplink(src)) // NSV13 - Wiki Uplink in Modular Computer form, allows the computer to access the NSV13 Wiki! /obj/item/computer_hardware/hard_drive/examine(user) . = ..() . += "It has [max_capacity] GQ of storage capacity." +/// Return true if nothing happens, return false to cancel attack action +/obj/item/computer_hardware/hard_drive/proc/process_pre_attack(atom/target, mob/living/user, params) + return TRUE + /obj/item/computer_hardware/hard_drive/diagnostics(var/mob/user) ..() // 999 is a byond limit that is in place. It's unlikely someone will reach that many files anyway, since you would sooner run out of space. @@ -48,6 +67,9 @@ return 0 F.holder = src + if(holder && istype(F, /datum/computer_file/program)) + var/datum/computer_file/program/P = F + P.computer = holder stored_files.Add(F) recalculate_size() return 1 @@ -121,11 +143,6 @@ QDEL_LIST(stored_files) return ..() -/obj/item/computer_hardware/hard_drive/Initialize(mapload) - . = ..() - install_default_programs() - - /obj/item/computer_hardware/hard_drive/advanced name = "advanced hard disk drive" desc = "A hybrid HDD, for use in higher grade computers where balance between power efficiency and capacity is desired." @@ -160,12 +177,32 @@ w_class = WEIGHT_CLASS_TINY custom_price = 15 +// PDA Version of the SSD, contains all the programs that PDAs have by default, however with the variables of the SSD. +/obj/item/computer_hardware/hard_drive/small/pda/install_default_programs() + store_file(new /datum/computer_file/program/messenger(src)) + store_file(new /datum/computer_file/program/notepad(src)) + store_file(new/datum/computer_file/program/databank_uplink(src)) // Wiki Uplink, allows the user to access the Wiki from in-game! + ..() + +/obj/item/computer_hardware/hard_drive/small/pda/on_install(obj/item/modular_computer/install_into, mob/living/user = null) + . = ..() + if(!.) + return + // Set the default ringtone + for(var/datum/computer_file/program/messenger/messenger in stored_files) + messenger.ringer_status = install_into.init_ringer_on + messenger.ringtone = install_into.init_ringtone + // For borg integrated tablets. No downloader. -/obj/item/computer_hardware/hard_drive/small/integrated/install_default_programs() - store_file(new /datum/computer_file/program/computerconfig(src)) // Computer configuration utility, allows hardware control and displays more info than status bar - store_file(new /datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation. - store_file(new /datum/computer_file/program/borg_self_monitor(src)) +/obj/item/computer_hardware/hard_drive/small/pda/ai/install_default_programs() + var/datum/computer_file/program/messenger/messenger = new(src) + messenger.is_silicon = TRUE + store_file(messenger) +/obj/item/computer_hardware/hard_drive/small/pda/robot/install_default_programs() + store_file(new /datum/computer_file/program/borg_self_monitor(src)) + store_file(new /datum/computer_file/program/computerconfig(src)) // Computer configuration utility, allows hardware control and displays more info than status bar + store_file(new /datum/computer_file/program/filemanager(src)) // File manager, allows text editor functions and basic file manipulation. // Syndicate variant - very slight better /obj/item/computer_hardware/hard_drive/small/syndicate @@ -178,13 +215,16 @@ /obj/item/computer_hardware/hard_drive/small/nukeops power_usage = 8 max_capacity = 70 + // Make sure this matches the syndicate shuttle's shield/door id in _maps/shuttles/infiltrator/infiltrator_basic.dmm + controllable_airlocks = list("smindicate") /obj/item/computer_hardware/hard_drive/small/nukeops/install_default_programs() - store_file(new/datum/computer_file/program/computerconfig(src)) - store_file(new/datum/computer_file/program/ntnetdownload/syndicate(src)) // Syndicate version; automatic access to syndicate apps and no NT apps - store_file(new/datum/computer_file/program/filemanager(src)) - store_file(new/datum/computer_file/program/radar/fission360(src)) //I am legitimately afraid if I don't do this, Ops players will think they just don't get a pinpointer anymore. - store_file(new/datum/computer_file/program/borg_monitor/syndicate(src)) + store_file(new /datum/computer_file/program/computerconfig(src)) + store_file(new /datum/computer_file/program/ntnetdownload/syndicate(src)) // Syndicate version; automatic access to syndicate apps and no NT apps + store_file(new /datum/computer_file/program/filemanager(src)) + store_file(new /datum/computer_file/program/radar/fission360(src)) //I am legitimately afraid if I don't do this, Ops players will think they just don't get a pinpointer anymore. + store_file(new /datum/computer_file/program/remote_airlock(src)) // Remote control for the shuttle door + store_file(new /datum/computer_file/program/borg_monitor/syndicate(src)) /obj/item/computer_hardware/hard_drive/micro name = "micro solid state drive" diff --git a/code/modules/modular_computers/hardware/identifier.dm b/code/modules/modular_computers/hardware/identifier.dm new file mode 100644 index 00000000000..bf7e1a045c7 --- /dev/null +++ b/code/modules/modular_computers/hardware/identifier.dm @@ -0,0 +1,13 @@ +/obj/item/computer_hardware/identifier + name = "identifier" + desc = "Used to automatically update the names of modular devices." + power_usage = 0 + w_class = WEIGHT_CLASS_TINY + device_type = MC_IDENTIFY + expansion_hw = FALSE + +/obj/item/computer_hardware/identifier/proc/UpdateDisplay() + var/name = holder.saved_identification + var/job = holder.saved_job + + holder.name = "PDA-[name] ([job])" diff --git a/code/modules/modular_computers/hardware/job_disk.dm b/code/modules/modular_computers/hardware/job_disk.dm new file mode 100644 index 00000000000..1a5e05392b6 --- /dev/null +++ b/code/modules/modular_computers/hardware/job_disk.dm @@ -0,0 +1,234 @@ +/obj/item/computer_hardware/hard_drive/role + name = "job data disk" + desc = "A disk meant to give a worker the needed programs to work." + power_usage = 0 + icon = 'icons/obj/pda.dmi' + icon_state = "cart" + w_class = WEIGHT_CLASS_TINY + critical = FALSE + max_capacity = 500 + device_type = MC_HDD_JOB + default_installs = FALSE + hotswap = TRUE + + var/disk_flags = 0 // bit flag for the programs + /// Enables "Send to All" Option. 1=1 min, 2=2mins, 2.5=2 min 30 seconds + var/spam_delay = 0 + +/obj/item/computer_hardware/hard_drive/role/on_inserted(mob/user) + ..() + if(holder) + playsound(holder, 'sound/machines/pda_button1.ogg', 50, TRUE) + +/obj/item/computer_hardware/hard_drive/role/on_remove(obj/item/modular_computer/remove_from, mob/user) + return + +/obj/item/computer_hardware/hard_drive/role/Initialize(mapload) + . = ..() + var/list/progs_to_store = list() + + if(disk_flags & DISK_POWER) + progs_to_store += new /datum/computer_file/program/power_monitor(src) + progs_to_store += new /datum/computer_file/program/supermatter_monitor(src) + + if(disk_flags & DISK_ATMOS) + progs_to_store += new /datum/computer_file/program/atmosscan(src) + + if(disk_flags & DISK_MANIFEST) + progs_to_store += new /datum/computer_file/program/crew_manifest(src) + + if(disk_flags & DISK_SEC) + progs_to_store += new /datum/computer_file/program/records/security(src) + + if(disk_flags & DISK_JANI) + progs_to_store += new /datum/computer_file/program/radar/custodial_locator(src) + + if((disk_flags & DISK_CHEM) || (disk_flags & DISK_MED) || (disk_flags & DISK_POWER) || (disk_flags & DISK_ATMOS)) + var/datum/computer_file/program/phys_scanner/scanner = new(src) + + if(disk_flags & DISK_CHEM) + scanner.available_modes += DISK_CHEM + + if(disk_flags & DISK_MED) + progs_to_store += new /datum/computer_file/program/records/medical(src) + scanner.available_modes += DISK_MED + + if(disk_flags & DISK_POWER) + scanner.available_modes += DISK_POWER + + if(disk_flags & DISK_ATMOS) + scanner.available_modes += DISK_ATMOS + + progs_to_store += scanner + + if(disk_flags & DISK_ROBOS) + var/datum/computer_file/program/robocontrol/robo = new(src) + progs_to_store += robo + + if(disk_flags & DISK_CARGO) + progs_to_store += new /datum/computer_file/program/bounty(src) + + if(disk_flags & DISK_SILO_LOG) + progs_to_store += new /datum/computer_file/program/log_viewer(src) + + if(disk_flags & DISK_SIGNAL) + progs_to_store += new /datum/computer_file/program/signaller(src) + + // TODO tablet-pda - the newscaster needs to be updated to TGUI for this to exist. + // Port: tg's #65038 - plus #65774 and #65799 possibly + // Then port #66035 for the program + //if(disk_flags & DISK_NEWS) + // progs_to_store += new /datum/computer_file/program/newscaster(src) + + if(disk_flags & DISK_BUDGET) + progs_to_store += new /datum/computer_file/program/budgetorders(src) + + if(disk_flags & DISK_STATUS) + progs_to_store += new /datum/computer_file/program/status(src) + + if(disk_flags & DISK_REMOTE_AIRLOCK) + progs_to_store += new /datum/computer_file/program/remote_airlock(src) + + if(disk_flags & DISK_HOP) + progs_to_store += new /datum/computer_file/program/card_mod(src) + progs_to_store += new /datum/computer_file/program/job_management(src) + + for (var/datum/computer_file/program/prog in progs_to_store) + prog.usage_flags = PROGRAM_ALL + prog.required_access = list() + prog.transfer_access = list() + store_file(prog) + +// Disk Definitions + +/obj/item/computer_hardware/hard_drive/role/engineering + name = "\improper Power-ON disk" + desc = "Engineers ignoring station power-draw since 2400." + icon_state = "cart-engie" + disk_flags = DISK_POWER + +/obj/item/computer_hardware/hard_drive/role/atmos + name = "\improper BreatheDeep disk" + icon_state = "cart-atmos" + disk_flags = DISK_ATMOS | DISK_ROBOS + +/obj/item/computer_hardware/hard_drive/role/medical + name = "\improper Med-U disk" + icon_state = "cart-med" + disk_flags = DISK_MED | DISK_ROBOS + +/obj/item/computer_hardware/hard_drive/role/chemistry + name = "\improper ChemWhiz disk" + icon_state = "cart-chem" + disk_flags = DISK_CHEM + +/obj/item/computer_hardware/hard_drive/role/brig_physician + name = "\improper R.O.B.U.S.T. MED-U disk" + icon_state = "cart-brigphys" + disk_flags = DISK_MANIFEST | DISK_MED | DISK_ROBOS + +/obj/item/computer_hardware/hard_drive/role/security + name = "\improper R.O.B.U.S.T. disk" + icon_state = "cart-sec" + disk_flags = DISK_SEC | DISK_MANIFEST | DISK_ROBOS + +/obj/item/computer_hardware/hard_drive/role/detective + name = "\improper D.E.T.E.C.T. disk" + icon_state = "cart-det" + disk_flags = DISK_MED | DISK_SEC | DISK_MANIFEST | DISK_ROBOS + +/obj/item/computer_hardware/hard_drive/role/janitor + name = "\improper CustodiPRO disk" + icon_state = "cart-jan" + desc = "The ultimate in clean-room design." + disk_flags = DISK_JANI | DISK_ROBOS + +/obj/item/computer_hardware/hard_drive/role/lawyer + name = "\improper P.R.O.V.E. disk" + icon_state = "cart-prove" + disk_flags = DISK_SEC + spam_delay = 2.5 + +/obj/item/computer_hardware/hard_drive/role/curator + name = "\improper Lib-Tweet disk" + icon_state = "cart-cur" + disk_flags = DISK_NEWS + spam_delay = 3.5 + +/obj/item/computer_hardware/hard_drive/role/roboticist + name = "\improper B.O.O.P. Remote Control disk" + icon_state = "cart-robo" + desc = "Packed with heavy duty quad-bot interlink!" + disk_flags = DISK_ROBOS + +/obj/item/computer_hardware/hard_drive/role/signal + name = "generic signaler disk" + icon_state = "cart-signal" + desc = "A data disk with an integrated radio signaler module." + disk_flags = DISK_SIGNAL + +/obj/item/computer_hardware/hard_drive/role/signal/toxins + name = "\improper Signal Ace 2 disk" + icon_state = "cart-tox" + desc = "Complete with integrated radio signaler!" + disk_flags = DISK_ATMOS | DISK_SIGNAL | DISK_CHEM + +/obj/item/computer_hardware/hard_drive/role/quartermaster + name = "space parts DELUXE disk" + icon_state = "cart-qm" + desc = "Perfect for the Quartermaster on the go!" + disk_flags = DISK_CARGO | DISK_SILO_LOG | DISK_ROBOS | DISK_BUDGET + +/obj/item/computer_hardware/hard_drive/role/cargo_technician + name = "space parts disk" + icon_state = "cart-cargo" + desc = "Perfect for the Cargo Tech on the go!" + disk_flags = DISK_CARGO | DISK_ROBOS | DISK_BUDGET + +/obj/item/computer_hardware/hard_drive/role/head + name = "\improper Easy-Record DELUXE disk" + icon_state = "cart-val" + disk_flags = DISK_MANIFEST | DISK_STATUS | DISK_BUDGET + +/obj/item/computer_hardware/hard_drive/role/hop + name = "\improper HumanResources9001 disk" + icon_state = "cart-hop" + disk_flags = DISK_MANIFEST | DISK_STATUS | DISK_JANI | DISK_SEC | DISK_NEWS | DISK_CARGO | DISK_SILO_LOG | DISK_ROBOS | DISK_BUDGET | DISK_HOP + +/obj/item/computer_hardware/hard_drive/role/hos + name = "\improper R.O.B.U.S.T. DELUXE disk" + icon_state = "cart-hos" + disk_flags = DISK_MANIFEST | DISK_STATUS | DISK_SEC | DISK_ROBOS | DISK_BUDGET + +/obj/item/computer_hardware/hard_drive/role/ce + name = "\improper Power-On DELUXE disk" + icon_state = "cart-ce" + disk_flags = DISK_POWER | DISK_ATMOS | DISK_MANIFEST | DISK_STATUS | DISK_ROBOS | DISK_BUDGET + +/obj/item/computer_hardware/hard_drive/role/cmo + name = "\improper Med-U DELUXE disk" + icon_state = "cart-cmo" + disk_flags = DISK_MANIFEST | DISK_STATUS | DISK_MED | DISK_CHEM | DISK_ROBOS | DISK_BUDGET + +/obj/item/computer_hardware/hard_drive/role/rd + name = "\improper Signal Ace DELUXE disk" + icon_state = "cart-rd" + disk_flags = DISK_ATMOS | DISK_MANIFEST | DISK_STATUS | DISK_CHEM | DISK_ROBOS | DISK_BUDGET | DISK_SIGNAL + +/obj/item/computer_hardware/hard_drive/role/captain + name = "\improper Value-PAK disk" + icon_state = "cart-cap" + desc = "Now with 350% more value!" + //Give the Captain...EVERYTHING! (except the remote airlock control) + disk_flags = ~(DISK_REMOTE_AIRLOCK) + spam_delay = 2 + +/obj/item/computer_hardware/hard_drive/role/vip //the only purpose of this disk is to allow the VIP to be annoying + name = "\improper TWIT disk" + icon_state = "cart-twit" + spam_delay = 1.5 + +/obj/item/computer_hardware/hard_drive/role/unlicensed //HoP can give you this + name = "\improper FACEBUCKS disk" + icon_state = "cart-signal" // might need a new sprite + spam_delay = 5 diff --git a/code/modules/modular_computers/hardware/network_card.dm b/code/modules/modular_computers/hardware/network_card.dm index e2ee4cea31d..1429c6bc1ba 100644 --- a/code/modules/modular_computers/hardware/network_card.dm +++ b/code/modules/modular_computers/hardware/network_card.dm @@ -6,8 +6,11 @@ network_id = NETWORK_CARDS // Network we are on var/hardware_id = null // Identification ID. Technically MAC address of this device. Can't be changed by user. var/identification_string = "" // Identification string, technically nickname seen in the network. Can be set by user. - var/long_range = 0 - var/ethernet = 0 // Hard-wired, therefore always on, ignores NTNet wireless checks. + /// If this works without being on the same zlevel, as long as there is a tcomms relay + var/long_range = FALSE + /// If this works without a tcomms relay on the zlevel (requires long_range) + var/ignore_relay = FALSE + var/ethernet = FALSE // Hard-wired, therefore always on, ignores NTNet wireless checks. malfunction_probability = 1 device_type = MC_NET @@ -43,7 +46,7 @@ if(ethernet) // Computer is connected via wired connection. return 3 - if(!SSnetworks.station_network || !SSnetworks.station_network.check_function(specific_action, get_virtual_z_level())) // NTNet is down and we are not connected via wired connection. No signal. + if(!SSnetworks.station_network || !SSnetworks.station_network.check_function(specific_action, get_virtual_z_level(), ignore_relay)) // NTNet is down and we are not connected via wired connection. No signal. return 0 if(holder) @@ -65,13 +68,18 @@ /obj/item/computer_hardware/network_card/advanced name = "advanced network card" desc = "An advanced network card for usage with standard NTNet frequencies. Its transmitter is strong enough to connect even off-station." - long_range = 1 + long_range = TRUE power_usage = 100 // Better range but higher power usage. icon_state = "radio" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' w_class = WEIGHT_CLASS_TINY +/obj/item/computer_hardware/network_card/advanced/norelay + name = "ultra-advanced network card" + desc = "An advanced network card for usage with standard NTNet frequencies. Its transmitter is strong enough to connect even off-station, even without a telecomms relay." + ignore_relay = TRUE + /obj/item/computer_hardware/network_card/wired name = "wired network card" desc = "An advanced network card for usage with standard NTNet frequencies. This one also supports wired connection." @@ -92,10 +100,12 @@ if(!modularInterface.borgo) return FALSE //No borg found - if(modularInterface.borgo.lockcharge) - return FALSE //lockdown restricts borg networking + var/mob/living/silicon/robot/robo = modularInterface.borgo + if(istype(robo)) + if(robo.lockcharge) + return FALSE //lockdown restricts borg networking - if(!modularInterface.borgo.cell || modularInterface.borgo.cell.charge == 0) - return FALSE //borg cell dying restricts borg networking + if(!robo.cell || robo.cell.charge == 0) + return FALSE //borg cell dying restricts borg networking return ..() diff --git a/code/modules/modular_computers/hardware/printer.dm b/code/modules/modular_computers/hardware/printer.dm index 8789f04244d..6d4993d7b4b 100644 --- a/code/modules/modular_computers/hardware/printer.dm +++ b/code/modules/modular_computers/hardware/printer.dm @@ -30,16 +30,16 @@ if(!can_print()) return FALSE - var/obj/item/paper/P = new/obj/item/paper(holder.drop_location()) + var/obj/item/paper/printed_paper = new/obj/item/paper(holder.drop_location()) // Damaged printer causes the resulting paper to be somewhat harder to read. if(damage > damage_malfunction) - P.info = stars(text_to_print, 100-malfunction_probability) + printed_paper.add_raw_text(stars(text_to_print, 100-malfunction_probability)) else - P.info = text_to_print + printed_paper.add_raw_text(text_to_print) if(paper_title) - P.name = paper_title - P.update_icon() + printed_paper.name = paper_title + printed_paper.update_icon() stored_paper-- return TRUE @@ -56,7 +56,7 @@ var/obj/item/paper/P = O // Damaged printer causes the resulting paper to be somewhat harder to read. if(do_malfunction && damage > damage_malfunction) - P.info = stars(P.info, 100-malfunction_probability) + P.default_raw_text = stars(P.default_raw_text, 100-malfunction_probability) // From the stars definition: // This proc is dangerously laggy, avoid it or die // Because of this, malfunction is disabled by default for this, since we might be printing big things diff --git a/code/modules/modular_computers/hardware/virus_disk.dm b/code/modules/modular_computers/hardware/virus_disk.dm new file mode 100644 index 00000000000..613bdc2ee64 --- /dev/null +++ b/code/modules/modular_computers/hardware/virus_disk.dm @@ -0,0 +1,134 @@ +/obj/item/computer_hardware/hard_drive/role/virus + name = "\improper generic virus disk" + icon_state = "cart-detomatrix" + var/charges = 5 + +/obj/item/computer_hardware/hard_drive/role/virus/proc/send_virus(obj/item/modular_computer/tablet/target, mob/living/user) + return + +/obj/item/computer_hardware/hard_drive/role/virus/clown + name = "\improper H.O.N.K. disk" + desc = "A data disk for portable microcomputers. It smells vaguely of bananas." + icon_state = "cart-clown" + +/obj/item/computer_hardware/hard_drive/role/virus/clown/send_virus(obj/item/modular_computer/tablet/target, mob/living/user) + if(charges <= 0) + to_chat(user, "ERROR: Out of charges.") + return + + if(target) + to_chat(user, "Success!") + charges-- + target.honk_amount = rand(15, 25) + else + to_chat(user, "ERROR: Could not find device.") + +/obj/item/computer_hardware/hard_drive/role/virus/clown/process_pre_attack(atom/target, mob/living/user, params) + // only run if we're inside a computer + if(!istype(loc, /obj/item/modular_computer)) + return ..() + if(!ismachinery(target)) + return TRUE + var/obj/machinery/target_machine = target + if(!target_machine.panel_open && !istype(target, /obj/machinery/computer)) + return TRUE + if(!charges) + to_chat(user, "[src] beeps: 'Out of charge. Please insert a new cartridge.'") + return TRUE + if(target.GetComponent(/datum/component/sound_player)) + to_chat(user, "[src] beeps: 'Virus already present on client, aborting.'") + return TRUE + to_chat(user, "You upload the virus to [target]!") + var/list/sig_list + if(istype(target, /obj/machinery/door/airlock)) + sig_list = list(COMSIG_AIRLOCK_OPEN, COMSIG_AIRLOCK_CLOSE) + else + sig_list = list(COMSIG_ATOM_ATTACK_HAND) + charges-- + target.AddComponent( + /datum/component/sound_player, \ + uses = rand(30,50), \ + signal_list = sig_list, \ + ) + return FALSE + +/obj/item/computer_hardware/hard_drive/role/virus/mime + name = "\improper sound of silence disk" + +/obj/item/computer_hardware/hard_drive/role/virus/mime/send_virus(obj/item/modular_computer/tablet/target, mob/living/user) + if(charges <= 0) + to_chat(user, "ERROR: Out of charges.") + return + + if(target) + to_chat(user, "Success!") + charges-- + var/obj/item/computer_hardware/hard_drive/drive = target.all_components[MC_HDD] + for(var/datum/computer_file/program/messenger/app in drive.stored_files) + app.ringer_status = FALSE + app.ringtone = "" + else + to_chat(user, "ERROR: Could not find device.") + +/obj/item/computer_hardware/hard_drive/role/virus/syndicate + name = "\improper D.E.T.O.M.A.T.I.X. disk" + icon_state = "cart-detomatrix" + charges = 4 + +/obj/item/computer_hardware/hard_drive/role/virus/syndicate/send_virus(obj/item/modular_computer/tablet/target, mob/living/user) + if(charges <= 0) + to_chat(user, "ERROR: Out of charges.") + return + if(!target) + to_chat(user, "ERROR: Could not find device.") + return + charges-- + + var/difficulty = 0 + var/obj/item/computer_hardware/hard_drive/role/disk = target.all_components[MC_HDD_JOB] + + if(disk) + difficulty += bit_count(disk.disk_flags & (DISK_MED | DISK_SEC | DISK_POWER | DISK_MANIFEST)) + if(disk.disk_flags & DISK_MANIFEST) + difficulty++ //if disk has manifest access it has extra snowflake difficulty + else + difficulty += 2 + var/datum/component/uplink/hidden_uplink = target.GetComponent(/datum/component/uplink) + if(!target.detonatable || prob(difficulty * 15) || (hidden_uplink)) + to_chat(user, "An error flashes on your [src].") + else + log_bomber(user, "triggered a PDA explosion on", target, "[!is_special_character(user) ? "(TRIGGED BY NON-ANTAG)" : ""]") + to_chat(user, "Success!") + target.explode(target, user) + +/obj/item/computer_hardware/hard_drive/role/virus/syndicate/military + name = "\improper D.E.T.O.M.A.T.I.X. Deluxe disk" + disk_flags = DISK_REMOTE_AIRLOCK + // Make sure this matches the syndicate shuttle's shield/door id in _maps/shuttles/infiltrator/infiltrator_basic.dmm + controllable_airlocks = list("smindicate") + +/obj/item/computer_hardware/hard_drive/role/virus/frame + name = "\improper F.R.A.M.E. disk" + icon_state = "cart-prove" + var/telecrystals = 0 + +/obj/item/computer_hardware/hard_drive/role/virus/frame/send_virus(obj/item/modular_computer/tablet/target, mob/living/user) + if(charges <= 0) + to_chat(user, "ERROR: Out of charges.") + return + if(!target) + to_chat(user, "ERROR: Could not find device.") + return + charges-- + var/lock_code = "[random_code(3)] [pick(GLOB.phonetic_alphabet)]" + to_chat(user, "Success! The unlock code to the target is: [lock_code]") + var/datum/component/uplink/hidden_uplink = target.GetComponent(/datum/component/uplink) + if(!hidden_uplink) + hidden_uplink = target.AddComponent(/datum/component/uplink) + hidden_uplink.unlock_code = lock_code + else + hidden_uplink.hidden_crystals += hidden_uplink.telecrystals //Temporarially hide the PDA's crystals, so you can't steal telecrystals. + hidden_uplink.telecrystals = telecrystals + telecrystals = 0 + hidden_uplink.active = TRUE + diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm index 8b8ea63bc9c..a3b656b5f09 100644 --- a/code/modules/ninja/ninja_event.dm +++ b/code/modules/ninja/ninja_event.dm @@ -45,7 +45,7 @@ Contents: return MAP_ERROR //selecting a candidate player - var/list/candidates = get_candidates(ROLE_NINJA, null, ROLE_NINJA) + var/list/candidates = get_candidates(ROLE_NINJA, /datum/role_preference/midround_ghost/ninja) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm index 9fd4c4b793d..6cd26671d81 100644 --- a/code/modules/paperwork/clipboard.dm +++ b/code/modules/paperwork/clipboard.dm @@ -173,3 +173,12 @@ paper.rename() update_icon() . = TRUE + +//NSV13 - Clipboard Stuff - Start +/** + * This is a simple proc to handle calling update_icon() upon receiving the top paper's `COMSIG_ATOM_UPDATE_APPEARANCE`. + */ +/obj/item/clipboard/proc/on_top_paper_change() + SIGNAL_HANDLER + update_appearance() +//NSV13 - Clipboard Stuff - Stop diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 55a0a05fc83..463edafb261 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -28,7 +28,7 @@ /obj/item/paper/contract/employment/update_text() name = "paper- [target] employment contract" - info = "
              Conditions of Employment




              This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and Nanotrasen (hereafter referred to as the omnipresent and helpful watcher of humanity).
              WITNESSETH:
              WHEREAS, SLAVE is a natural born human or humanoid, possessing skills upon which he can aid the omnipresent and helpful watcher of humanity, who seeks employment in the omnipresent and helpful watcher of humanity.
              WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanent servitude.
              NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows:
              In exchange for paltry payments, SLAVE agrees to work for the omnipresent and helpful watcher of humanity, for the remainder of his or her current and future lives.
              Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity.
              Should transfership of a soul not be possible, a lien shall be placed instead.
              Signed,
              [target]" + add_raw_text("
              Conditions of Employment




              This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and Nanotrasen (hereafter referred to as the omnipresent and helpful watcher of humanity).
              WITNESSETH:
              WHEREAS, SLAVE is a natural born human or humanoid, possessing skills upon which he can aid the omnipresent and helpful watcher of humanity, who seeks employment in the omnipresent and helpful watcher of humanity.
              WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanent servitude.
              NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows:
              In exchange for paltry payments, SLAVE agrees to work for the omnipresent and helpful watcher of humanity, for the remainder of his or her current and future lives.
              Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity.
              Should transfership of a soul not be possible, a lien shall be placed instead.
              Signed,
              [target]") /obj/item/paper/contract/employment/attack(mob/living/M, mob/living/carbon/human/user) @@ -111,63 +111,63 @@ ..() /obj/item/paper/contract/infernal/update_text() - info = "This shouldn't be seen. Error DEVIL:6" + default_raw_text = "This shouldn't be seen. Error DEVIL:6" /obj/item/paper/contract/infernal/power/update_text(signature = "____________", blood = 0) - info = "
              Contract for infernal power



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for power and physical strength. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " + default_raw_text = "
              Contract for infernal power



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for power and physical strength. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " if(blood) - info += "[signature]" + default_raw_text += "[signature]" else - info += "[signature]" + default_raw_text += "[signature]" /obj/item/paper/contract/infernal/wealth/update_text(signature = "____________", blood = 0) - info = "
              Contract for unlimited wealth



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for a pocket that never runs out of valuable resources. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " + default_raw_text = "
              Contract for unlimited wealth



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for a pocket that never runs out of valuable resources. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " if(blood) - info += "[signature]" + default_raw_text += "[signature]" else - info += "[signature]" + default_raw_text += "[signature]" /obj/item/paper/contract/infernal/prestige/update_text(signature = "____________", blood = 0) - info = "
              Contract for prestige



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for prestige and esteem among my peers. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " + default_raw_text = "
              Contract for prestige



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for prestige and esteem among my peers. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " if(blood) - info += "[signature]" + default_raw_text += "[signature]" else - info += "[signature]" + default_raw_text += "[signature]" /obj/item/paper/contract/infernal/magic/update_text(signature = "____________", blood = 0) - info = "
              Contract for magic



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for arcane abilities beyond normal human ability. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " + default_raw_text = "
              Contract for magic



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for arcane abilities beyond normal human ability. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " if(blood) - info += "[signature]" + default_raw_text += "[signature]" else - info += "[signature]" + default_raw_text += "[signature]" /obj/item/paper/contract/infernal/revive/update_text(signature = "____________", blood = 0) - info = "
              Contract for resurrection



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for resurrection and curing of all injuries. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " + default_raw_text = "
              Contract for resurrection



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for resurrection and curing of all injuries. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " if(blood) - info += "[signature]" + default_raw_text += "[signature]" else - info += "[signature]" + default_raw_text += "[signature]" /obj/item/paper/contract/infernal/knowledge/update_text(signature = "____________", blood = 0) - info = "
              Contract for knowledge



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for boundless knowledge. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " + default_raw_text = "
              Contract for knowledge



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for boundless knowledge. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " if(blood) - info += "[signature]" + default_raw_text += "[signature]" else - info += "[signature]" + default_raw_text += "[signature]" /obj/item/paper/contract/infernal/friend/update_text(signature = "____________", blood = 0) - info = "
              Contract for a friend



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for a friend. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " + default_raw_text = "
              Contract for a friend



              I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for a friend. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " if(blood) - info += "[signature]" + default_raw_text += "[signature]" else - info += "[signature]" + default_raw_text += "[signature]" /obj/item/paper/contract/infernal/unwilling/update_text(signature = "____________", blood = 0) - info = "
              Contract for slave



              I, [target], hereby offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename]. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " + default_raw_text = "
              Contract for slave



              I, [target], hereby offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename]. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, cloned, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


              Signed, " if(blood) - info += "[signature]" + default_raw_text += "[signature]" else - info += "[signature]" + default_raw_text += "[signature]" /obj/item/paper/contract/infernal/attackby(obj/item/P, mob/living/carbon/human/user, params) add_fingerprint(user) @@ -301,10 +301,12 @@ id.assignment = JOB_NAME_CAPTAIN id.update_label() if(worn) - if(istype(worn, /obj/item/pda)) - var/obj/item/pda/PDA = worn - PDA.id = id - id.forceMove(worn) + if(istype(worn, /obj/item/modular_computer/tablet/pda)) + var/obj/item/modular_computer/tablet/pda/PDA = worn + var/obj/item/computer_hardware/card_slot/card = PDA.all_components[MC_CARD] + card.try_eject(user, TRUE) // return their ID because we are nice + if(card) + card.try_insert(id, user) else if(istype(worn, /obj/item/storage/wallet)) var/obj/item/storage/wallet/W = worn W.front_id = id diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm new file mode 100644 index 00000000000..4307ca014fa --- /dev/null +++ b/code/modules/paperwork/fax.dm @@ -0,0 +1,492 @@ +/obj/machinery/fax + name = "Fax Machine" + desc = "Bluespace technologies on the application of bureaucracy" + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "fax" + density = TRUE + power_channel = AREA_USAGE_EQUIP + max_integrity = 100 + pass_flags = PASSTABLE + circuit = /obj/item/circuitboard/machine/fax + /// The unique ID by which the fax will build a list of existing faxes. + var/fax_id + /// The name of the fax displayed in the list. Not necessarily unique to some EMAG jokes. + var/fax_name + /// A weak reference to an inserted object. + var/datum/weakref/loaded_item_ref + /// World ticks the machine is electrified for. + var/seconds_electrified = MACHINE_NOT_ELECTRIFIED + /// If true, the fax machine is jammed and needs cleaning + var/jammed = FALSE + /// Determines the possibility of sending papers to the additional faxes. + var/access_additional_faxes = FALSE + /// Defines a list of accesses whose owners can open a connection with the additional faxes. + var/static/access_additional_faxes_required = list(ACCESS_HEADS, ACCESS_LAWYER, ACCESS_SECURITY) + /// Necessary to hide syndicate faxes from the general list. Doesn't mean he's EMAGGED! + var/syndicate_network = FALSE + /// True if the fax machine should be visible to other fax machines in general. + var/visible_to_network = TRUE + /// If true we will eject faxes at speed rather than sedately place them into a tray. + var/hurl_contents = FALSE + /// If true you can fax things which strictly speaking are not paper. + var/allow_exotic_faxes = FALSE + /// This is where the dispatch and reception history for each fax is stored. + var/list/fax_history = list() + /// List of types which should always be allowed to be faxed + var/static/list/allowed_types = list( + /obj/item/paper, + /obj/item/photo + ) + /// List of types which should be allowed to be faxed if hacked + var/static/list/exotic_types = list( + /obj/item/reagent_containers/food/snacks/pizzaslice, + /obj/item/reagent_containers/food/snacks/breadslice, //NSV13 - For now until we get the food update. + /obj/item/reagent_containers/food/snacks/donkpocket, + /obj/item/reagent_containers/food/snacks/cookie, + /obj/item/reagent_containers/food/snacks/sugarcookie, + /obj/item/reagent_containers/food/snacks/oatmealcookie, + /obj/item/reagent_containers/food/snacks/raisincookie, + /obj/item/reagent_containers/food/snacks/pancakes, + /obj/item/throwing_star, + /obj/item/stack/spacecash, + /obj/item/holochip, + /obj/item/card, + /obj/item/mail + ) + +/obj/machinery/fax/Initialize(mapload) + . = ..() + if(!fax_id) + fax_id = SSnetworks.assign_random_name() + if(!fax_name) + fax_name = "Unregistered fax " + fax_id + wires = new /datum/wires/fax(src) + +/obj/machinery/fax/Destroy() + QDEL_NULL(loaded_item_ref) + QDEL_NULL(wires) + return ..() + +/obj/machinery/fax/update_overlays() + . = ..() + if(panel_open) + . += "fax_panel" + var/obj/item/loaded = loaded_item_ref?.resolve() + if(loaded) + . += mutable_appearance(icon, find_overlay_state(loaded, "contain")) + +/obj/machinery/fax/examine() + . = ..() + if(jammed) + . += "Its output port is jammed and needs cleaning." + + +/obj/machinery/fax/process(delta_time) + if(seconds_electrified > MACHINE_NOT_ELECTRIFIED) + seconds_electrified -= delta_time + +/obj/machinery/fax/attack_hand(mob/user) + if(seconds_electrified && !(machine_stat & NOPOWER)) + if(shock(user, 100)) + return + return ..() + +/*** + * Emag the device if the panel is open. + * Emag does not bring you into the syndicate network, but makes it visible to you. + */ +/obj/machinery/fax/emag_act(mob/user) + if(!panel_open && !allow_exotic_faxes) + balloon_alert(user, "open the panel first!") + return + if(!(obj_flags & EMAGGED)) + obj_flags |= EMAGGED + to_chat(user, "An image appears on [src] screen for a moment with Ian in the cap of a Syndicate officer.") + +/obj/machinery/fax/wrench_act(mob/living/user, obj/item/tool) + . = ..() + default_unfasten_wrench(user, tool) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/** + * Open and close the wire panel. + */ +/obj/machinery/fax/screwdriver_act(mob/living/user, obj/item/screwdriver) + . = ..() + default_deconstruction_screwdriver(user, icon_state, icon_state, screwdriver) + update_icon() + return TRUE + +/** + * Using the multi-tool with the panel closed causes the fax network name to be renamed. + */ +/obj/machinery/fax/multitool_act(mob/living/user, obj/item/I) + if(panel_open) + return + var/new_fax_name = stripped_input(user, "Enter a new name for the fax machine.", "New Fax Name", max_length=128) + if(!new_fax_name) + return TOOL_ACT_TOOLTYPE_SUCCESS + if(new_fax_name != fax_name) + if(fax_name_exist(new_fax_name)) + // Being able to set the same name as another fax machine will give a lot of gimmicks for the traitor. + if(syndicate_network != TRUE && obj_flags != EMAGGED) + to_chat(user, "There is already a fax machine with this name on the network.") + return TOOL_ACT_TOOLTYPE_SUCCESS + user.log_message("renamed [fax_name] (fax machine) to [new_fax_name]", LOG_GAME) + fax_name = new_fax_name + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/machinery/fax/attackby(obj/item/item, mob/user, params) + if(jammed && clear_jam(item, user)) + return + if(panel_open) + if(is_wire_tool(item)) + wires.interact(user) + return + if(can_load_item(item)) + if(!loaded_item_ref?.resolve()) + loaded_item_ref = WEAKREF(item) + item.forceMove(src) + update_icon() + return + return ..() + +// Checks if the card has access to switch "legal" faxes of administrators. +/obj/machinery/fax/proc/access_additional_faxes_check(mob/living/user) + if(IsAdminGhost(user)) + return TRUE + + var/obj/item/card/id/used_card = user.get_idcard(TRUE) + if(used_card) + // We check if it makes sense to check access at all. + if(!access_additional_faxes_required || !used_card.access) + return FALSE + + for(var/requested_access in access_additional_faxes_required) + if(requested_access in used_card.access) + return TRUE + return FALSE + +// Switches access to the "legal" administrator's fax list. Access to the "illegal" is switched by hacking. +/obj/machinery/fax/proc/access_additional_faxes_toggle() + access_additional_faxes = !access_additional_faxes + say("The channel of communication with CentCom is [access_additional_faxes ? "open" : "close"].") + +/** + * Attempts to clean out a jammed machine using a passed item. + * Returns true if successful. + */ +/obj/machinery/fax/proc/clear_jam(obj/item/item, mob/user) + if(istype(item, /obj/item/reagent_containers/spray)) + var/obj/item/reagent_containers/spray/clean_spray = item + if(!clean_spray.reagents.has_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this)) + return FALSE + clean_spray.reagents.remove_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this, 1) + playsound(loc, 'sound/effects/spray3.ogg', 50, TRUE, -5) + user.visible_message("[user] cleans \the [src].", "You clean \the [src].") + jammed = FALSE + return TRUE + if(istype(item, /obj/item/soap) || istype(item, /obj/item/reagent_containers/glass/rag)) + var/cleanspeed = 50 + if(istype(item, /obj/item/soap)) + var/obj/item/soap/used_soap = item + cleanspeed = used_soap.cleanspeed + user.visible_message("[user] starts to clean \the [src].", "You start to clean \the [src]...") + if(do_after(user, cleanspeed, target = src)) + user.visible_message("[user] cleans \the [src].", "You clean \the [src].") + jammed = FALSE + return TRUE + return FALSE + +/** + * Returns true if an item can be loaded into the fax machine. + */ +/obj/machinery/fax/proc/can_load_item(obj/item/item) + if(!is_allowed_type(item)) + return FALSE + if(!istype(item, /obj/item/stack)) + return TRUE + var/obj/item/stack/stack_item = item + return stack_item.amount == 1 + +/** + * Returns true if an item is of a type which can currently be loaded into this fax machine. + * This list expands if you snip a particular wire. + */ +/obj/machinery/fax/proc/is_allowed_type(obj/item/item) + if(is_type_in_list(item, allowed_types)) + return TRUE + if(!allow_exotic_faxes) + return FALSE + return is_type_in_list(item, exotic_types) + +/obj/machinery/fax/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Fax") + ui.open() + ui.set_autoupdate(TRUE) + +/obj/machinery/fax/ui_static_data(mob/user) + var/list/data = list() + data["additional_faxes_list"] = GLOB.additional_faxes_list + data["syndicate_faxes_list"] = GLOB.syndicate_faxes_list + return data + +/obj/machinery/fax/ui_data(mob/user) + var/list/data = list() + //Record a list of all existing faxes. + for(var/obj/machinery/fax/fax in GLOB.machines) + if(fax.fax_id == fax_id) //skip yourself + continue + var/list/fax_data = list() + fax_data["fax_name"] = fax.fax_name + fax_data["fax_id"] = fax.fax_id + fax_data["visible"] = fax.visible_to_network + fax_data["has_paper"] = !!fax.loaded_item_ref?.resolve() + // Hacked doesn't mean on the syndicate network. + fax_data["syndicate_network"] = fax.syndicate_network + data["faxes"] += list(fax_data) + + // Own data + data["fax_id"] = fax_id + data["fax_name"] = fax_name + data["visible"] = visible_to_network + data["access_additional_faxes"] = access_additional_faxes + data["сan_switch_access"] = access_additional_faxes_check(user) + // In this case, we don't care if the fax is hacked or in the syndicate's network. The main thing is to check the visibility of other faxes. + data["syndicate_network"] = (syndicate_network || (obj_flags & EMAGGED)) + data["has_paper"] = !!loaded_item_ref?.resolve() + data["fax_history"] = fax_history + return data + +/obj/machinery/fax/ui_act(action, list/params) + . = ..() + if(.) + return + + switch(action) + // Pulls the paper out of the fax machine + if("remove") + var/obj/item/loaded = loaded_item_ref?.resolve() + if(!loaded) + return + loaded.forceMove(drop_location()) + loaded_item_ref = null + playsound(src, 'sound/machines/terminal_eject.ogg', 50, FALSE) + update_icon() + return TRUE + if("access_additional_faxes_toggle") + access_additional_faxes_toggle() + if("send") + var/obj/item/loaded = loaded_item_ref?.resolve() + if(!loaded) + return + var/destination = params["id"] + if(send(loaded, destination)) + log_fax(loaded, destination, params["name"]) + loaded_item_ref = null + update_icon() + return TRUE + if("send_to_additional_fax") + var/obj/item/loaded = loaded_item_ref?.resolve() + if(!loaded) + return + if(istype(loaded, /obj/item/paper)) + if(send_to_additional_faxes(loaded, usr, sanitize(params["name"]), sanitize_hexcolor(params["color"], 6, TRUE, "#0000ff"))) + loaded_item_ref = null + update_icon() + return TRUE + else + say("The destination fax blocks the reception of this item.") + if("history_clear") + history_clear() + return TRUE + +/** + * Records logs of bureacratic action + * Arguments: + * * sent - The object being sent + * * destination_id - The unique ID of the fax machine + * * name - The friendly name of the fax machine, but these can be spoofed so the ID is also required + */ +/obj/machinery/fax/proc/log_fax(obj/item/sent, destination_id, name) + if (istype(sent, /obj/item/paper)) + var/obj/item/paper/sent_paper = sent + log_paper("[usr] has sent a fax with the message \"[sent_paper.get_raw_text()]\" to [name]/[destination_id].") + return + log_game("[usr] has faxed [sent] to [name]/[destination_id].]") + +/** + * The procedure for sending a paper to another fax machine. + * + * The object is called inside /obj/machinery/fax to send the thing to another fax machine. + * The procedure searches among all faxes for the desired fax ID and calls proc/receive() on that fax. + * If the thing is sent successfully, it returns TRUE. + * Arguments: + * * loaded - The object to be sent. + * * id - The network ID of the fax machine you want to send the item to. + */ +/obj/machinery/fax/proc/send(obj/item/loaded, id) + for(var/obj/machinery/fax/fax in GLOB.machines) + if(fax.fax_id != id) + continue + if(fax.jammed) + do_sparks(5, TRUE, src) + balloon_alert(usr, "destination port jammed") + playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, -9) + return FALSE + fax.receive(loaded, fax_name) + playback_sending(loaded, fax.fax_name) + return TRUE + return FALSE + +/** + * The procedure for sending a item to virtual admins fax machine. + * + * This procedure is similar to the send procedure except that it sends the item to + * a "virtual" fax to a special administrator list. + * Arguments: + * * loaded - The item to be sent. + * * sender - Reference to the sender's substance. + * * receiver_name - The recipient's fax name, which will be displayed in the administrator's list. + * * receiver_color - The color the receiver_name will be colored in. + */ +/obj/machinery/fax/proc/send_to_additional_faxes(obj/item/loaded, mob/sender, receiver_name, receiver_color) + GLOB.fax_manager.receive_request(sender, src, receiver_name, loaded, receiver_color) + playback_sending(loaded, receiver_name) + return TRUE + +/** + * The procedure for playing the animation. + * + * Procedure called to add to the history of sending messages, playing the sending animation. + * Arguments: + * * loaded - Sending item to determine the animation.. + * * receiver_name - Recipient's name to be added to the message history. + */ +/obj/machinery/fax/proc/playback_sending(obj/item/loaded, receiver_name) + history_add("Send", receiver_name) + INVOKE_ASYNC(src, PROC_REF(animate_object_travel), loaded, "fax_receive", find_overlay_state(loaded, "send")) + +/** + * Procedure for accepting papers from another fax machine. + * + * The procedure is called in proc/send() of the other fax. It receives a paper-like object and "prints" it. + * Arguments: + * * loaded - The object to be printed. + * * sender_name - The sender's name, which will be displayed in the message and recorded in the history of operations. + */ +/obj/machinery/fax/proc/receive(obj/item/loaded, sender_name) + playsound(src, 'sound/items/poster_being_created.ogg', 50, FALSE) + INVOKE_ASYNC(src, PROC_REF(animate_object_travel), loaded, "fax_receive", find_overlay_state(loaded, "receive")) + say("Received correspondence from [sender_name].") + history_add("Receive", sender_name) + addtimer(CALLBACK(src, PROC_REF(vend_item), loaded), 1.9 SECONDS) + +/** + * Procedure for animating an object entering or leaving the fax machine. + * Arguments: + * * item - The object which is travelling. + * * animation_state - An icon state to apply to the fax machine. + * * overlay_state - An icon state to apply as an overlay to the fax machine. + */ +/obj/machinery/fax/proc/animate_object_travel(obj/item/item, animation_state, overlay_state) + icon_state = animation_state + var/mutable_appearance/overlay = mutable_appearance(icon, overlay_state) + overlays += overlay + addtimer(CALLBACK(src, PROC_REF(travel_animation_complete), overlay), 2 SECONDS) + +/** + * Called when the travel animation should end. Reset animation and overlay states. + * Arguments: + * * remove_overlay - Overlay to remove. + */ +/obj/machinery/fax/proc/travel_animation_complete(mutable_appearance/remove_overlay) + icon_state = "fax" + overlays -= remove_overlay + +/** + * Returns an appropriate icon state to represent a passed item. + * Arguments: + * * item - Item to interrogate. + * * state_prefix - Icon state action prefix to mutate. + */ +/obj/machinery/fax/proc/find_overlay_state(obj/item/item, state_prefix) + if(istype(item, /obj/item/paper)) + return "[state_prefix]_paper" + if(istype(item, /obj/item/photo)) + return "[state_prefix]_photo" + if(iscash(item)) + return "[state_prefix]_cash" + if(istype(item, /obj/item/card)) + return "[state_prefix]_id" + if(istype(item, /obj/item/reagent_containers/food)) + return "[state_prefix]_food" + if(istype(item, /obj/item/throwing_star)) + return "[state_prefix]_star" + return "[state_prefix]_paper" + +/** + * Actually vends an item out of the fax machine. + * Moved into its own proc to allow a delay for the animation. + * This will either deposit the item on the fax machine, or throw it if you have hacked a wire. + * Arguments: + * * vend - Item to vend from the fax machine. + */ +/obj/machinery/fax/proc/vend_item(obj/item/vend) + vend.forceMove(drop_location()) + if(hurl_contents) + vend.throw_at(get_edge_target_turf(drop_location(), pick(GLOB.alldirs)), rand(1, 4), EMBED_THROWSPEED_THRESHOLD) + if(is_type_in_list(vend, exotic_types) && prob(20)) + do_sparks(5, TRUE, src) + jammed = TRUE + +/** + * A procedure that makes entries in the history of fax transactions. + * + * Called to record the operation in the fax history list. + * Records the type of operation, the name of the fax machine with which the operation was performed, and the station time. + * Arguments: + * * history_type - Type of operation. By default, "Send" and "Receive" should be used. + * * history_fax_name - The name of the fax machine that performed the operation. + */ +/obj/machinery/fax/proc/history_add(history_type = "Send", history_fax_name) + var/list/history_data = list() + history_data["history_type"] = history_type + history_data["history_fax_name"] = history_fax_name + history_data["history_time"] = station_time_timestamp() + fax_history += list(history_data) + +/// Clears the history of fax operations. +/obj/machinery/fax/proc/history_clear() + fax_history = null + +/** + * Checks fax names for a match. + * + * Called to check the new fax name against the names of other faxes to prevent the use of identical names. + * Arguments: + * * new_fax_name - The text of the name to be checked for a match. + */ +/obj/machinery/fax/proc/fax_name_exist(new_fax_name) + for(var/obj/machinery/fax/fax in GLOB.machines) + if (fax.fax_name == new_fax_name) + return TRUE + return FALSE + +/** + * Attempts to shock the passed user, returns true if they are shocked. + * + * Arguments: + * * user - the user to shock + * * chance - probability the shock happens + */ +/obj/machinery/fax/proc/shock(mob/living/user, chance) + if(!istype(user) || machine_stat & (BROKEN|NOPOWER)) + return FALSE + if(!prob(chance)) + return FALSE + do_sparks(5, TRUE, src) + var/check_range = TRUE + return electrocute_mob(user, get_area(src), src, 0.7, check_range) diff --git a/code/modules/paperwork/fax_manager.dm b/code/modules/paperwork/fax_manager.dm new file mode 100644 index 00000000000..f2c4e7a6d01 --- /dev/null +++ b/code/modules/paperwork/fax_manager.dm @@ -0,0 +1,152 @@ +GLOBAL_DATUM_INIT(fax_manager, /datum/fax_manager, new) + +/** + * Fax Request Manager + * + * In its functionality it is similar to the usual Request Manager, but respectively for faxes. + * This manager allows you to send faxes on behalf of certain virtual faxes to all existing faxes, + * as well as receive faxes in their name from the players. + */ +/datum/fax_manager + /// A list that contains faxes from players and other related information. You can view the filling of its fields in the procedure receive_request. + var/list/requests = list() + +/datum/fax_manager/Destroy(force, ...) + QDEL_LIST(requests) + return ..() + +/datum/fax_manager/ui_interact(mob/user, datum/tgui/ui = null) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "FaxManager") + ui.open() + ui.set_autoupdate(TRUE) + +/datum/fax_manager/ui_state(mob/user) + return GLOB.admin_state + +/datum/fax_manager/ui_static_data(mob/user) + var/list/data = list() + //Record additional faxes on a separate list + data["additional_faxes"] = GLOB.additional_faxes_list + GLOB.syndicate_faxes_list + return data + +/datum/fax_manager/ui_data(mob/user) + var/list/data = list() + //Record a list of all existing faxes. + for(var/obj/machinery/fax/fax in GLOB.machines) + var/list/fax_data = list() + fax_data["fax_name"] = fax.fax_name + fax_data["fax_id"] = fax.fax_id + fax_data["syndicate_network"] = fax.syndicate_network + data["faxes"] += list(fax_data) + for(var/list/requested in requests) + var/list/request = list() + request["id_message"] = requested["id_message"] + request["time"] = requested["time"] + var/mob/sender = requested["sender"] + request["sender_name"] = sender.name + request["sender_fax_id"] = requested["sender_fax_id"] + request["sender_fax_name"] = requested["sender_fax_name"] + request["receiver_fax_name"] = requested["receiver_fax_name"] + data["requests"] += list(request) + return data + +/datum/fax_manager/ui_act(action, list/params) + . = ..() + if(.) + return + var/datum/admins/admin_datum = GLOB.admin_datums[usr.ckey] + + switch(action) + if("send") + for(var/obj/machinery/fax/fax in GLOB.machines) + if(fax.fax_id == params["fax_id"]) + var/obj/item/paper/paper = new() + paper.add_raw_text(params["message"]) + paper.update_appearance() + fax.receive(paper, params["fax_name"]) + return TRUE + if("flw_fax") + for(var/obj/machinery/fax/fax in GLOB.machines) + if(fax.fax_id == params["fax_id"]) + admin_datum.admin_follow(fax) + return TRUE + if("read_message") + var/list/request = get_request(params["id_message"]) + var/obj/item/paper/request/paper = request["paper"] + paper.ui_interact(usr) + return TRUE + if("flw") + var/list/request = get_request(params["id_message"]) + admin_datum.admin_follow(request["sender"]) + return TRUE + if("pp") + var/list/request = get_request(params["id_message"]) + usr.client.holder.show_player_panel(request["sender"]) + return TRUE + if("vv") + var/list/request = get_request(params["id_message"]) + usr.client.debug_variables(request["sender"]) + return TRUE + if("sm") + var/list/request = get_request(params["id_message"]) + usr.client.cmd_admin_subtle_message(request["sender"]) + return TRUE + if("logs") + var/list/request = get_request(params["id_message"]) + if(!ismob(request["sender"])) + to_chat(usr, "This can only be used on instances of type /mob.") + return TRUE + show_individual_logging_panel(request["sender"], null, null) + return TRUE + if("smite") + var/list/request = get_request(params["id_message"]) + if(!check_rights(R_FUN)) + to_chat(usr, "Insufficient permissions to smite, you require +FUN") + return TRUE + var/mob/living/carbon/human/H = request["sender"] + if (!H || !istype(H)) + to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") + return TRUE + usr.client.smite(H) + return TRUE + +/datum/fax_manager/proc/get_request(id_message) + for(var/list/request in requests) + if(request["id_message"] == id_message) + return request + +/datum/fax_manager/proc/receive_request(mob/sender, obj/machinery/fax/sender_fax, receiver_fax_name, obj/item/paper/paper, receiver_color) + var/list/request = list() + var/obj/item/paper/request/message = new() + request["id_message"] = requests.len + request["time"] = gameTimestamp() + request["sender"] = sender + request["sender_fax_id"] = sender_fax.fax_id + request["sender_fax_name"] = sender_fax.fax_name + request["receiver_fax_name"] = receiver_fax_name + message.copy_properties(paper) + request["paper"] = message + requests += list(request) + var/msg = "[receiver_fax_name] fax received a message from [sanitize(sender_fax.fax_name)][ADMIN_FLW(sender)][ADMIN_JMP(sender_fax)]/[ADMIN_FULLMONTY(sender)]" + to_chat(GLOB.admins, msg) + for(var/client/admin in GLOB.admins) + if((admin.prefs.chat_toggles & CHAT_PRAYER) && (admin.prefs.toggles & PREFTOGGLE_SOUND_PRAYERS)) + SEND_SOUND(admin, sound('sound/items/poster_being_created.ogg')) + +// A special piece of paper for the administrator that will open the interface no matter what. +/obj/item/paper/request/ui_status() + return UI_INTERACTIVE + +// I'm sure there's a better way to transfer it, I just couldn't find it +/obj/item/paper/request/proc/copy_properties(obj/item/paper/paper) + raw_text_inputs = paper.raw_text_inputs + raw_stamp_data = paper.raw_stamp_data + raw_field_input_data = paper.raw_field_input_data + show_written_words = paper.show_written_words + stamp_cache = paper.stamp_cache + contact_poison = paper.contact_poison + contact_poison_volume = paper.contact_poison_volume + default_raw_text = paper.default_raw_text + input_field_count = paper.input_field_count diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index f41d2a4f70a..75a09be6064 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -122,16 +122,18 @@ var/datum/data/record/S = find_record("name", G.fields["name"], GLOB.data_core.security) if(!S) continue - var/obj/item/paper/P = new /obj/item/paper(src) - P.info = "
              Security Record

              " - P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
              \nGender: [G.fields["gender"]]
              \nAge: [G.fields["age"]]
              \nFingerprint: [G.fields["fingerprint"]]
              \nPhysical Status: [G.fields["p_stat"]]
              \nMental Status: [G.fields["m_stat"]]
              " - P.info += "
              \n
              Security Data

              \nCriminal Status: [S.fields["criminal"]]
              \n
              \nCrimes: [S.fields["crim"]]
              \nDetails: [S.fields["crim_d"]]
              \n
              \nImportant Notes:
              \n\t[S.fields["notes"]]
              \n
              \n
              Comments/Log

              " + var/obj/item/paper/sec_record_paper = new /obj/item/paper(src) + var/sec_record_text = "
              Security Record

              " + sec_record_text += "Name: [G.fields["name"]] ID: [G.fields["id"]]
              \nGender: [G.fields["gender"]]
              \nAge: [G.fields["age"]]
              \nFingerprint: [G.fields["fingerprint"]]
              \nPhysical Status: [G.fields["p_stat"]]
              \nMental Status: [G.fields["m_stat"]]
              " + sec_record_text += "
              \n
              Security Data

              \nCriminal Status: [S.fields["criminal"]]
              \n
              \nCrimes: [S.fields["crim"]]
              \nDetails: [S.fields["crim_d"]]
              \n
              \nImportant Notes:
              \n\t[S.fields["notes"]]
              \n
              \n
              Comments/Log

              " var/counter = 1 while(S.fields["com_[counter]"]) - P.info += "[S.fields["com_[counter]"]]
              " + sec_record_text += "[S.fields["com_[counter]"]]
              " counter++ - P.info += "" - P.name = "paper - '[G.fields["name"]]'" + sec_record_text += "" + sec_record_paper.name = "paper - '[G.fields["name"]]'" + sec_record_paper.add_raw_text(sec_record_text) + sec_record_paper.update_appearance() virgin = 0 //tabbing here is correct- it's possible for people to try and use it //before the records have been generated, so we do this inside the loop. @@ -155,16 +157,18 @@ var/datum/data/record/M = find_record("name", G.fields["name"], GLOB.data_core.medical) if(!M) continue - var/obj/item/paper/P = new /obj/item/paper(src) - P.info = "
              Medical Record

              " - P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
              \nGender: [G.fields["gender"]]
              \nAge: [G.fields["age"]]
              \nFingerprint: [G.fields["fingerprint"]]
              \nPhysical Status: [G.fields["p_stat"]]
              \nMental Status: [G.fields["m_stat"]]
              " - P.info += "
              \n
              Medical Data

              \nBlood Type: [M.fields["blood_type"]]
              \nDNA: [M.fields["b_dna"]]
              \n
              \nMinor Disabilities: [M.fields["mi_dis"]]
              \nDetails: [M.fields["mi_dis_d"]]
              \n
              \nMajor Disabilities: [M.fields["ma_dis"]]
              \nDetails: [M.fields["ma_dis_d"]]
              \n
              \nAllergies: [M.fields["alg"]]
              \nDetails: [M.fields["alg_d"]]
              \n
              \nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)
              \nDetails: [M.fields["cdi_d"]]
              \n
              \nImportant Notes:
              \n\t[M.fields["notes"]]
              \n
              \n
              Comments/Log

              " + var/obj/item/paper/med_record_paper = new /obj/item/paper(src) + var/med_record_text = "
              Medical Record

              " + med_record_text += "Name: [G.fields["name"]] ID: [G.fields["id"]]
              \nGender: [G.fields["gender"]]
              \nAge: [G.fields["age"]]
              \nFingerprint: [G.fields["fingerprint"]]
              \nPhysical Status: [G.fields["p_stat"]]
              \nMental Status: [G.fields["m_stat"]]
              " + med_record_text += "
              \n
              Medical Data

              \nBlood Type: [M.fields["blood_type"]]
              \nDNA: [M.fields["b_dna"]]
              \n
              \nMinor Disabilities: [M.fields["mi_dis"]]
              \nDetails: [M.fields["mi_dis_d"]]
              \n
              \nMajor Disabilities: [M.fields["ma_dis"]]
              \nDetails: [M.fields["ma_dis_d"]]
              \n
              \nAllergies: [M.fields["alg"]]
              \nDetails: [M.fields["alg_d"]]
              \n
              \nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)
              \nDetails: [M.fields["cdi_d"]]
              \n
              \nImportant Notes:
              \n\t[M.fields["notes"]]
              \n
              \n
              Comments/Log

              " var/counter = 1 while(M.fields["com_[counter]"]) - P.info += "[M.fields["com_[counter]"]]
              " + med_record_text += "[M.fields["com_[counter]"]]
              " counter++ - P.info += "" - P.name = "paper - '[G.fields["name"]]'" + med_record_text += "" + med_record_paper.add_raw_text(med_record_text) + med_record_paper.name = "paper - '[G.fields["name"]]'" + med_record_paper.update_appearance() virgin = 0 //tabbing here is correct- it's possible for people to try and use it //before the records have been generated, so we do this inside the loop. diff --git a/code/modules/paperwork/origami.dm b/code/modules/paperwork/origami.dm index 77b1288a90c..e771d18b3f9 100644 --- a/code/modules/paperwork/origami.dm +++ b/code/modules/paperwork/origami.dm @@ -44,7 +44,7 @@ /obj/item/origami/update_icon() cut_overlays() - var/list/stamped = internalPaper.stamped + var/list/stamped = internalPaper.stamp_cache if(stamped) for(var/S in stamped) add_overlay("paper_[S]") diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 00f416c9151..4ae77993a7d 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -4,13 +4,6 @@ * * lipstick wiping is in code/game/objects/items/weapons/cosmetics.dm! */ -#define MAX_PAPER_LENGTH 5000 -#define MAX_PAPER_STAMPS 30 // Too low? -#define MAX_PAPER_STAMPS_OVERLAYS 4 -#define MODE_READING 0 -#define MODE_WRITING 1 -#define MODE_STAMPING 2 - /** * Paper is now using markdown (like in github pull notes) for ALL rendering @@ -36,57 +29,239 @@ resistance_flags = FLAMMABLE max_integrity = 50 dog_fashion = /datum/dog_fashion/head - color = "white" - /// What's actually written on the paper. - var/info = "" + color = COLOR_WHITE + + /// Lazylist of raw, unsanitised, unparsed text inputs that have been made to the paper. + var/list/datum/paper_input/raw_text_inputs + /// Lazylist of all raw stamp data to be sent to tgui. + var/list/datum/paper_stamp/raw_stamp_data + /// Lazylist of all fields that have had some input added to them. + var/list/datum/paper_field/raw_field_input_data + + /// Whether the icon should show little scribbly written words when the paper has some text on it. var/show_written_words = TRUE - /// The (text for the) stamps on the paper. - var/list/stamps /// Positioning for the stamp in tgui - var/list/stamped /// Overlay info + /// Helper cache that contains a list of all icon_states that are currently stamped on the paper. + var/list/stamp_cache - var/contact_poison // Reagent ID to transfer on contact + /// Reagent to transfer to the user when they pick the paper up without proper protection. + var/contact_poison + /// Volume of contact_poison to transfer to the user when they pick the paper up without proper protection. var/contact_poison_volume = 0 - /// When the sheet can be "filled out" - /// This is an associated list - var/list/form_fields = list() - var/field_counter = 1 + /// Default raw text to fill this paper with on init. + var/default_raw_text + + /// The number of input fields + var/input_field_count = 0 + + /// Paper can be shown via cameras. When that is done, a deep copy of the paper is made and stored as a var on the camera. + /// The paper is located in nullspace, and holds a weak ref to the camera that once contained it so the paper can do some + /// state checking on if it should be shown to a viewer. + var/datum/weakref/camera_holder + +/obj/item/paper/Initialize(mapload) + . = ..() + pixel_y = rand(-8, 8) + pixel_x = rand(-9, 9) + + if(default_raw_text) + add_raw_text(default_raw_text) + + update_appearance() /obj/item/paper/Destroy() - stamps = null - stamped = null - form_fields = null - stamped = null . = ..() + camera_holder = null + clear_paper() + +/// Returns a deep copy list of raw_text_inputs, or null if the list is empty or doesn't exist. +/obj/item/paper/proc/copy_raw_text() + if(!LAZYLEN(raw_text_inputs)) + return null + + var/list/datum/paper_input/copy_text = list() + + for(var/datum/paper_input/existing_input as anything in raw_text_inputs) + copy_text += existing_input.make_copy() + + return copy_text + +/// Returns a deep copy list of raw_field_input_data, or null if the list is empty or doesn't exist. +/obj/item/paper/proc/copy_field_text() + if(!LAZYLEN(raw_field_input_data)) + return null + + var/list/datum/paper_field/copy_text = list() + + for(var/datum/paper_field/existing_input as anything in raw_field_input_data) + copy_text += existing_input.make_copy() + + return copy_text + +/// Returns a deep copy list of raw_stamp_data, or null if the list is empty or doesn't exist. Does not copy overlays or stamp_cache, only the tgui rendered stamps. +/obj/item/paper/proc/copy_raw_stamps() + if(!LAZYLEN(raw_stamp_data)) + return null + + var/list/datum/paper_field/copy_stamps = list() + + for(var/datum/paper_stamp/existing_input as anything in raw_stamp_data) + copy_stamps += existing_input.make_copy() + + return copy_stamps /** * This proc copies this sheet of paper to a new * sheet, Makes it nice and easy for carbon and * the copyer machine + * + * Arguments + * * paper_type - Type path of the new paper to create. Can copy anything to anything. + * * location - Where to spawn in the new copied paper. + * * colored - If true, the copied paper will be coloured and will inherit all colours. + * * greyscale_override - If set to a colour string and coloured is false, it will override the default of COLOR_WEBSAFE_DARK_GRAY when copying. + */ +/obj/item/paper/proc/copy(paper_type = /obj/item/paper, atom/location = loc, colored = TRUE, greyscale_override = null) + var/obj/item/paper/new_paper = new paper_type(location) + + new_paper.raw_text_inputs = copy_raw_text() + new_paper.raw_field_input_data = copy_field_text() + + if(colored) + new_paper.color = color + else + var/new_color = greyscale_override || COLOR_WEBSAFE_DARK_GRAY + for(var/datum/paper_input/text as anything in new_paper.raw_text_inputs) + text.colour = new_color + + for(var/datum/paper_field/text as anything in new_paper.raw_field_input_data) + text.field_data.colour = new_color + + new_paper.input_field_count = input_field_count //NSV13 - Fixes photocopier forms not producing copies with usable fields + new_paper.raw_stamp_data = copy_raw_stamps() + new_paper.stamp_cache = stamp_cache?.Copy() + new_paper.update_icon_state() + copy_overlays(new_paper, TRUE) + return new_paper + +/** + * This simple helper adds the supplied raw text to the paper, appending to the end of any existing contents. + * + * This a God proc that does not care about paper max length and expects sanity checking beforehand if you want to respect it. + * + * The caller is expected to handle updating icons and appearance after adding text, to allow for more efficient batch adding loops. + * * Arguments: + * * text - The text to append to the paper. + * * font - The font to use. + * * color - The font color to use. + * * bold - Whether this text should be rendered completely bold. */ -/obj/item/paper/proc/copy() - var/obj/item/paper/N = new(arglist(args)) - N.info = info - N.color = color - N.update_icon_state() - N.stamps = stamps - N.stamped = stamped.Copy() - N.form_fields = form_fields.Copy() - N.field_counter = field_counter - copy_overlays(N, TRUE) - return N +/obj/item/paper/proc/add_raw_text(text, font, color, bold) + var/new_input_datum = new /datum/paper_input( + text, + font, + color, + bold, + ) + + input_field_count += get_input_field_count(text) + + LAZYADD(raw_text_inputs, new_input_datum) + +/** + * This simple helper adds the supplied input field data to the paper. + * + * It will not overwrite any existing input field data by default and will early return FALSE if this scenario happens unless overwrite is + * set properly. + * + * Other than that, this is a God proc that does not care about max length or out-of-range IDs and expects sanity checking beforehand if + * you want to respect it. + * + * * Arguments: + * * field_id - The ID number of the field to which this data applies. + * * text - The text to append to the paper. + * * font - The font to use. + * * color - The font color to use. + * * bold - Whether this text should be rendered completely bold. + * * overwrite - If TRUE, will overwrite existing field ID's data if it exists. + */ +/obj/item/paper/proc/add_field_input(field_id, text, font, color, bold, signature_name, overwrite = FALSE) + var/datum/paper_field/field_data_datum = null + + var/is_signature = ((text == "%sign") || (text == "%s")) + + var/field_text = is_signature ? signature_name : text + var/field_font = is_signature ? SIGNATURE_FONT : font + + for(var/datum/paper_field/field_input in raw_field_input_data) + if(field_input.field_index == field_id) + if(!overwrite) + return FALSE + field_data_datum = field_input + break + + if(!field_data_datum) + var/new_field_input_datum = new /datum/paper_field( + field_id, + field_text, + field_font, + color, + bold, + is_signature, + ) + LAZYADD(raw_field_input_data, new_field_input_datum) + return TRUE + + var/new_input_datum = new /datum/paper_input( + field_text, + field_font, + color, + bold, + ) + + field_data_datum.field_data = new_input_datum; + field_data_datum.is_signature = is_signature; + + return TRUE /** - * This proc sets the text of the paper and updates the - * icons. You can modify the pen_color after if need - * be. + * This simple helper adds the supplied stamp to the paper, appending to the end of any existing stamps. + * + * This a God proc that does not care about stamp max count and expects sanity checking beforehand if you want to respect it. + * + * It does however respect the overlay limit and will not apply any overlays past the cap. + * + * The caller is expected to handle updating icons and appearance after adding text, to allow for more efficient batch adding loops. + * * Arguments: + * * stamp_class - Div class for the stamp. + * * stamp_x - X coordinate to render the stamp in tgui. + * * stamp_y - Y coordinate to render the stamp in tgui. + * * rotation - Degrees of rotation for the stamp to be rendered with in tgui. + * * stamp_icon_state - Icon state for the stamp as part of overlay rendering. */ -/obj/item/paper/proc/setText(text) - info = text - form_fields = null - field_counter = 0 - update_icon_state() +/obj/item/paper/proc/add_stamp(stamp_class, stamp_x, stamp_y, rotation, stamp_icon_state) + var/new_stamp_datum = new /datum/paper_stamp(stamp_class, stamp_x, stamp_y, rotation) + LAZYADD(raw_stamp_data, new_stamp_datum); + + if(LAZYLEN(stamp_cache) > MAX_PAPER_STAMPS_OVERLAYS) + return + + var/mutable_appearance/stamp_overlay = mutable_appearance('icons/obj/bureaucracy.dmi', "paper_[stamp_icon_state]") + stamp_overlay.pixel_x = rand(-2, 2) + stamp_overlay.pixel_y = rand(-3, 2) + add_overlay(stamp_overlay) + LAZYADD(stamp_cache, stamp_icon_state) + +/// Removes all input and all stamps from the paper, clearing it completely. +/obj/item/paper/proc/clear_paper() + LAZYNULL(raw_text_inputs) + LAZYNULL(raw_stamp_data) + LAZYNULL(raw_field_input_data) + LAZYNULL(stamp_cache) + + cut_overlays() + update_appearance() /obj/item/paper/pickup(user) if(contact_poison && ishuman(user)) @@ -97,19 +272,9 @@ contact_poison = null ..() -/obj/item/paper/Initialize() - ..() - pixel_y = base_pixel_y + rand(-8, 8) - pixel_x = base_pixel_x + rand(-9, 9) - return INITIALIZE_HINT_LATELOAD - -// Everyone forgets to call update_icon() after changing the info -/obj/item/paper/LateInitialize() - update_icon() - /obj/item/paper/update_icon_state() . = ..() - if(info && show_written_words) + if(LAZYLEN(raw_text_inputs) && show_written_words) icon_state = "[initial(icon_state)]_words" /obj/item/paper/verb/rename() @@ -130,18 +295,12 @@ if(((loc == usr || istype(loc, /obj/item/clipboard)) && usr.stat == CONSCIOUS)) name = "paper[(n_name ? text("- '[n_name]'") : null)]" add_fingerprint(usr) + update_static_data() /obj/item/paper/suicide_act(mob/user) user.visible_message("[user] scratches a grid on [user.p_their()] wrist with the paper! It looks like [user.p_theyre()] trying to commit sudoku...") return (BRUTELOSS) -/obj/item/paper/proc/clearpaper() - info = "" - stamps = null - LAZYCLEARLIST(stamped) - cut_overlays() - update_icon_state() - /obj/item/paper/examine(mob/user) . = ..() if(!in_range(user, src) && !isobserver(user)) @@ -156,6 +315,8 @@ // Are we on fire? Hard ot read if so if(resistance_flags & ON_FIRE) return UI_CLOSE + if(camera_holder && can_show_to_mob_through_camera(user)) + return UI_UPDATE if(!in_range(user,src)) return UI_CLOSE if(user.incapacitated(TRUE, TRUE) || (isobserver(user) && !IsAdminGhost(user))) @@ -168,7 +329,10 @@ return UI_INTERACTIVE return ..() - +/obj/item/paper/ui_state(mob/user) + if(istype(loc, /obj/item/modular_computer)) + return GLOB.reverse_contained_state + return ..() /obj/item/paper/can_interact(mob/user) if(in_contents_of(/obj/machinery/door/airlock)) @@ -196,35 +360,68 @@ add_fingerprint(user) fire_act(I.return_temperature()) -/obj/item/paper/attackby(obj/item/P, mob/living/user, params) - if(burn_paper_product_attackby_check(P, user)) +/obj/item/paper/attackby(obj/item/attacking_item, mob/living/user, params) + if(burn_paper_product_attackby_check(attacking_item, user)) SStgui.close_uis(src) return // Enable picking paper up by clicking on it with the clipboard or folder - if(istype(P, /obj/item/clipboard) || istype(P, /obj/item/folder)) - P.attackby(src, user) + if(istype(attacking_item, /obj/item/clipboard) || istype(attacking_item, /obj/item/folder) || istype(attacking_item, /obj/item/paper_bin)) + attacking_item.attackby(src, user) return - else if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) - if(length(info) >= MAX_PAPER_LENGTH) // Sheet must have less than 1000 charaters + + // Handle writing items. + var/writing_stats = attacking_item.get_writing_implement_details() + + if(!writing_stats) + ui_interact(user) + return ..() + + if(writing_stats["interaction_mode"] == MODE_WRITING) + if(get_total_length() >= MAX_PAPER_LENGTH) to_chat(user, "This sheet of paper is full!") return + ui_interact(user) return - else if(istype(P, /obj/item/stamp)) + + // Handle stamping items. + if(writing_stats["interaction_mode"] == MODE_STAMPING) to_chat(user, "You ready your stamp over the paper! ") ui_interact(user) - return /// Normaly you just stamp, you don't need to read the thing - else - // cut paper? the sky is the limit! - ui_interact(user) // The other ui will be created with just read mode outside of this + return + ui_interact(user) return ..() -/obj/item/paper/fire_act(exposed_temperature, exposed_volume) - . = ..() - if(.) - info = "[stars(info)]" +/** + * Attempts to ui_interact the paper to the given user, with some sanity checking + * to make sure the camera still exists via the weakref and that this paper is still + * attached to it. + */ +/obj/item/paper/proc/show_through_camera(mob/living/user) + if(!can_show_to_mob_through_camera(user)) + return + + return ui_interact(user) + +/obj/item/paper/proc/can_show_to_mob_through_camera(mob/living/user) + var/obj/machinery/camera/held_to_camera = camera_holder.resolve() + + if(!held_to_camera) + return FALSE + + if(isAI(user)) + var/mob/living/silicon/ai/ai_user = user + if(ai_user.control_disabled || (ai_user.stat == DEAD)) + return FALSE + + return TRUE + + if(user.client?.eye != held_to_camera) + return FALSE + + return TRUE /obj/item/paper/ui_assets(mob/user) return list( @@ -232,7 +429,6 @@ ) /obj/item/paper/ui_interact(mob/user, datum/tgui/ui) - // Update the UI ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "PaperSheet", name) @@ -241,147 +437,296 @@ /obj/item/paper/ui_static_data(mob/user) - . = list() - .["text"] = info - .["max_length"] = MAX_PAPER_LENGTH - .["paper_color"] = !color || color == "white" ? "#FFFFFF" : color // color might not be set - .["paper_state"] = icon_state /// TODO: show the sheet will bloodied or crinkling? - .["stamps"] = stamps + var/list/static_data = list() + + static_data["user_name"] = user.real_name + + static_data["raw_text_input"] = list() + for(var/datum/paper_input/text_input as anything in raw_text_inputs) + static_data["raw_text_input"] += list(text_input.to_list()) + + static_data["raw_field_input"] = list() + for(var/datum/paper_field/field_input as anything in raw_field_input_data) + static_data["raw_field_input"] += list(field_input.to_list()) + + static_data["raw_stamp_input"] = list() + for(var/datum/paper_stamp/stamp_input as anything in raw_stamp_data) + static_data["raw_stamp_input"] += list(stamp_input.to_list()) + + static_data["max_length"] = MAX_PAPER_LENGTH + static_data["max_input_field_length"] = MAX_PAPER_INPUT_FIELD_LENGTH + static_data["paper_color"] = color ? color : COLOR_WHITE + static_data["paper_name"] = name + + static_data["default_pen_font"] = PEN_FONT + static_data["default_pen_color"] = COLOR_BLACK + static_data["signature_font"] = FOUNTAIN_PEN_FONT + + return static_data; /obj/item/paper/ui_data(mob/user) var/list/data = list() - data["edit_usr"] = "[user]" - // Even though we ignore this data, TGUI needs it for previewing the stamp icon in the UI - data["stamp_class"] = "FAKE" - data["stamp_icon_state"] = "FAKE" - - var/obj/holding = user.get_active_held_item() + var/obj/item/holding = user.get_active_held_item() // Use a clipboard's pen, if applicable if(istype(loc, /obj/item/clipboard)) var/obj/item/clipboard/clipboard = loc if(clipboard.pen) holding = clipboard.pen - if(istype(holding, /obj/item/toy/crayon)) - var/obj/item/toy/crayon/PEN = holding - data["pen_font"] = CRAYON_FONT - data["pen_color"] = PEN.paint_color - data["edit_mode"] = MODE_WRITING - data["is_crayon"] = TRUE - else if(istype(holding, /obj/item/pen)) - var/obj/item/pen/PEN = holding - data["pen_font"] = PEN.font - data["pen_color"] = PEN.colour - data["edit_mode"] = MODE_WRITING - data["is_crayon"] = FALSE - else if(istype(holding, /obj/item/stamp)) - var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/simple/paper) - data["stamp_icon_state"] = holding.icon_state - data["stamp_class"] = sheet.icon_class_name(holding.icon_state) - data["edit_mode"] = MODE_STAMPING - data["pen_font"] = "FAKE" - data["pen_color"] = "FAKE" - data["is_crayon"] = FALSE + + //NSV13 - Old part here runtimes. + if(holding) + data["held_item_details"] = holding.get_writing_implement_details() else - data["edit_mode"] = MODE_READING - data["pen_font"] = "FAKE" - data["pen_color"] = "FAKE" - data["is_crayon"] = FALSE + data["held_item_details"] = null //Overriding old data, otherwise data would not get changed. + //NSV13 end. + + // If the paper is on an unwritable noticeboard, clear the held item details so it's read-only. if(istype(loc, /obj/structure/noticeboard)) var/obj/structure/noticeboard/noticeboard = loc if(!noticeboard.allowed(user)) - data["edit_mode"] = MODE_READING - data["field_counter"] = field_counter - data["form_fields"] = form_fields + data["held_item_details"] = null return data /obj/item/paper/ui_act(action, params,datum/tgui/ui) if(..()) return - switch(action) - if("stamp") - if(length(stamps) >= MAX_PAPER_STAMPS) - to_chat(usr, pick("You try to stamp but you miss!", "There is nowhere else you can stamp!")) - return FALSE - var/obj/item/stamp/holding = ui.user.get_active_held_item() + var/mob/user = ui.user - if(!istype(holding)) - to_chat(usr, "That's not a stamp!") - return FALSE + switch(action) + if("add_stamp") + var/obj/item/holding = user.get_active_held_item() + var/stamp_info = holding?.get_writing_implement_details() + if(!stamp_info || (stamp_info["interaction_mode"] != MODE_STAMPING)) + to_chat(src, "You can't stamp with the [holding]!") + return TRUE + + var/stamp_class = stamp_info["stamp_class"]; + + // If the paper is on an unwritable noticeboard, this usually shouldn't be possible. + if(istype(loc, /obj/structure/noticeboard)) + var/obj/structure/noticeboard/noticeboard = loc + if(!noticeboard.allowed(user)) + log_paper("[key_name(user)] tried to add stamp to [name] when it was on an unwritable noticeboard: \"[stamp_class]\"") + return TRUE var/stamp_x = text2num(params["x"]) var/stamp_y = text2num(params["y"]) - var/stamp_r = text2num(params["r"]) // rotation in degrees - - var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/simple/paper) - var/stamp_icon_state = holding.icon_state - var/stamp_class = sheet.icon_class_name(holding.icon_state) - - if (isnull(stamps)) - stamps = list() - - // I hate byond when dealing with freaking lists - stamps[++stamps.len] = list(stamp_class, stamp_x, stamp_y, stamp_r) /// WHHHHY - - /// This does the overlay stuff - if (isnull(stamped)) - stamped = list() - if(stamped.len < MAX_PAPER_STAMPS_OVERLAYS) - var/mutable_appearance/stampoverlay = mutable_appearance('nsv13/icons/obj/bureaucracy.dmi', "paper_[stamp_icon_state]") //NSV13 use nsv copy of bureaucracy.dmi - stampoverlay.pixel_x = rand(-2, 2) - stampoverlay.pixel_y = rand(-3, 2) - add_overlay(stampoverlay) - LAZYADD(stamped, stamp_icon_state) - - update_static_data(usr,ui) - ui.user.visible_message("[ui.user] stamps [src] with [stamp_class]!", "You stamp [src] with \the [holding.name]!") - - if("save") - var/in_paper = params["text"] - var/paper_len = length(in_paper) - field_counter = params["field_counter"] ? text2num(params["field_counter"]) : field_counter - - if(paper_len == 0) - to_chat(ui.user, pick("Writing block strikes again!", "You forgot to write anything!")) - return FALSE - if(paper_len > MAX_PAPER_LENGTH) - // Side note, the only way we should get here is if - // the javascript was modified, somehow, outside of - // byond. but right now we are logging it as - // the generated html might get beyond this limit - log_paper("[key_name(ui.user)] writing to paper [name], and overwrote it by [paper_len - MAX_PAPER_LENGTH] characters (this may be due to internal HTML)") - in_paper = copytext(in_paper, 1, MAX_PAPER_LENGTH) - to_chat(ui.user, "You run out of room on the paper!") - else - log_paper("[key_name(ui.user)] writing to paper [name]") - to_chat(ui.user, "You have added to your paper masterpiece!"); - info = in_paper - update_static_data(usr,ui) - update_icon() + //var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/simple/paper) + var/stamp_rotation = text2num(params["rotation"]) + var/stamp_icon_state = stamp_info["stamp_icon_state"] + + if (LAZYLEN(raw_stamp_data) >= MAX_PAPER_STAMPS) + to_chat(usr, pick("You try to stamp but you miss!", "There is no where else you can stamp!")) + return TRUE + + add_stamp(stamp_class, stamp_x, stamp_y, stamp_rotation, stamp_icon_state) + user.visible_message("[user] stamps [src] with \the [holding.name]!", "You stamp [src] with \the [holding.name]!") + + update_appearance() + update_static_data(user, ui) + return TRUE + + if("add_text") + var/paper_input = params["text"] + var/this_input_length = length(paper_input) + + if(this_input_length == 0) + to_chat(user, pick("Writing block strikes again!", "You forgot to write anthing!")) + return TRUE + + // If the paper is on an unwritable noticeboard, this usually shouldn't be possible. + if(istype(loc, /obj/structure/noticeboard)) + var/obj/structure/noticeboard/noticeboard = loc + if(!noticeboard.allowed(user)) + log_paper("[key_name(user)] tried to write to [name] when it was on an unwritable noticeboard: \"[paper_input]\"") + return TRUE + + var/obj/item/holding = user.get_active_held_item() + // Use a clipboard's pen, if applicable + if(istype(loc, /obj/item/clipboard)) + var/obj/item/clipboard/clipboard = loc + // This is just so you can still use a stamp if you're holding one. Otherwise, it'll + // use the clipboard's pen, if applicable. + if(!istype(holding, /obj/item/stamp) && clipboard.pen) + holding = clipboard.pen + + var/current_length = get_total_length() + var/new_length = current_length + this_input_length + + // tgui should prevent this outcome. + if(new_length > MAX_PAPER_LENGTH) + log_paper("[key_name(user)] tried to write to [name] when it would exceed the length limit by [new_length - MAX_PAPER_LENGTH] characters: \"[paper_input]\"") + return TRUE + + // Safe to assume there are writing implement details as user.can_write(...) fails with an invalid writing implement. + var/writing_implement_data = holding.get_writing_implement_details() + + add_raw_text(paper_input, writing_implement_data["font"], writing_implement_data["color"], writing_implement_data["use_bold"]) + + log_paper("[key_name(user)] wrote to [name]: \"[paper_input]\"") + to_chat(user, "You have added to your paper masterpiece!"); + + update_static_data(user, ui) + update_appearance() + return TRUE + if("fill_input_field") + // If the paper is on an unwritable noticeboard, this usually shouldn't be possible. + if(istype(loc, /obj/structure/noticeboard)) + var/obj/structure/noticeboard/noticeboard = loc + if(!noticeboard.allowed(user)) + log_paper("[key_name(user)] tried to write to the input fields of [name] when it was on an unwritable noticeboard!") + return TRUE + + var/obj/item/holding = user.get_active_held_item() + // Use a clipboard's pen, if applicable + if(istype(loc, /obj/item/clipboard)) + var/obj/item/clipboard/clipboard = loc + // This is just so you can still use a stamp if you're holding one. Otherwise, it'll + // use the clipboard's pen, if applicable. + if(!istype(holding, /obj/item/stamp) && clipboard.pen) + holding = clipboard.pen + + + // Safe to assume there are writing implement details as user.can_write(...) fails with an invalid writing implement. + var/writing_implement_data = holding.get_writing_implement_details() + var/list/field_data = params["field_data"] + + for(var/field_key in field_data) + var/field_text = field_data[field_key] + var/text_length = length(field_text) + if(text_length > MAX_PAPER_INPUT_FIELD_LENGTH) + log_paper("[key_name(user)] tried to write to field [field_key] with text over the max limit ([text_length] out of [MAX_PAPER_INPUT_FIELD_LENGTH]) with the following text: [field_text]") + return TRUE + if(text2num(field_key) >= input_field_count) + log_paper("[key_name(user)] tried to write to invalid field [field_key] (when the paper only has [input_field_count] fields) with the following text: [field_text]") + return TRUE + + if(!add_field_input(field_key, field_text, writing_implement_data["font"], writing_implement_data["color"], writing_implement_data["use_bold"], user.real_name)) + log_paper("[key_name(user)] tried to write to field [field_key] when it already has data, with the following text: [field_text]") + + update_static_data(user, ui) + return TRUE + +/obj/item/paper/proc/get_input_field_count(raw_text) + var/static/regex/field_regex = new(@"\[_+\]","g") + + var/counter = 0 + while(field_regex.Find(raw_text)) + counter++ + + return counter /obj/item/paper/ui_host(mob/user) - if(istype(loc, /obj/structure/noticeboard)) + if(istype(loc, /obj/structure/noticeboard) || istype(loc, /obj/item/modular_computer)) return loc return ..() -/** - * Construction paper - */ +/obj/item/paper/proc/get_total_length() + var/total_length = 0 + for(var/datum/paper_input/entry as anything in raw_text_inputs) + total_length += length(entry.raw_text) + + return total_length + +/// Get a single string representing the text on a page +/obj/item/paper/proc/get_raw_text() + var/paper_contents = "" + for(var/datum/paper_input/line as anything in raw_text_inputs) + paper_contents += line.raw_text + "/" + return paper_contents + +/// A single instance of a saved raw input onto paper. +/datum/paper_input + /// Raw, unsanitised, unparsed text for an input. + var/raw_text = "" + /// Font to draw the input with. + var/font = "" + /// Colour to draw the input with. + var/colour = "" + /// Whether to render the font bold or not. + var/bold = FALSE + +/datum/paper_input/New(_raw_text, _font, _colour, _bold) + raw_text = _raw_text + font = _font + colour = _colour + bold = _bold + +/datum/paper_input/proc/make_copy() + return new /datum/paper_input(raw_text, font, colour, bold); + +/datum/paper_input/proc/to_list() + return list( + raw_text = raw_text, + font = font, + color = colour, + bold = bold, + ) + +/// A single instance of a saved stamp on paper. +/datum/paper_stamp + /// Asset class of the for rendering in tgui + var/class = "" + /// X position of stamp. + var/stamp_x = 0 + /// Y position of stamp. + var/stamp_y = 0 + /// Rotation of stamp in degrees. 0 to 359. + var/rotation = 0 + +/datum/paper_stamp/New(_class, _stamp_x, _stamp_y, _rotation) + class = _class + stamp_x = _stamp_x + stamp_y = _stamp_y + rotation = _rotation + +/datum/paper_stamp/proc/make_copy() + return new /datum/paper_stamp(class, stamp_x, stamp_y, rotation) + +/datum/paper_stamp/proc/to_list() + return list( + class = class, + x = stamp_x, + y = stamp_y, + rotation = rotation, + ) + +/// A reference to some data that replaces a modifiable input field at some given index in paper raw input parsing. +/datum/paper_field + /// When tgui parses the raw input, if it encounters a field_index matching the nth user input field, it will disable it and replace it with the field_data. + var/field_index = -1 + /// The data that tgui should substitute in-place of the input field when parsing. + var/datum/paper_input/field_data = null + /// If TRUE, requests tgui to render this field input in a more signature-y style. + var/is_signature = FALSE + +/datum/paper_field/New(_field_index, raw_text, font, colour, bold, _is_signature) + field_index = _field_index + field_data = new /datum/paper_input(raw_text, font, colour, bold) + is_signature = _is_signature + +/datum/paper_field/proc/make_copy() + return new /datum/paper_field(field_index, field_data.raw_text, field_data.font, field_data.colour, field_data.bold, is_signature) + +/datum/paper_field/proc/to_list() + return list( + field_index = field_index, + field_data = field_data.to_list(), + is_signature = is_signature, + ) + /obj/item/paper/construction /obj/item/paper/construction/Initialize(mapload) . = ..() - color = pick("FF0000", "#33cc33", "#ffb366", "#551A8B", "#ff80d5", "#4d94ff") + color = pick(COLOR_RED, COLOR_LIME, COLOR_LIGHT_ORANGE, COLOR_DARK_PURPLE, COLOR_FADED_PINK, COLOR_BLUE_LIGHT) -/** - * Natural paper - */ -/obj/item/paper/natural/Initialize(mapload) - . = ..() - color = "#FFF5ED" +/obj/item/paper/natural + color = COLOR_OFF_WHITE /obj/item/paper/crumpled name = "paper scrap" @@ -406,15 +751,8 @@ if(beernuke.r_code == "ADMIN") beernuke.r_code = random_code(5) code = beernuke.r_code - info = "important party info, DONT FORGET: [code]" + default_raw_text = "important party info, DONT FORGET: [code]" /obj/item/paper/troll name = "very special note" - info = "

              ░░░░░▄▄▄▄▀▀▀▀▀▀▀▀▄▄▄▄▄▄░░░░░░░
              ░░░░░█░░░░▒▒▒▒▒▒▒▒▒▒▒▒░░▀▀▄░░░░
              ░░░░█░░░▒▒▒▒▒▒░░░░░░░░▒▒▒░░█░░░
              ░░░█░░░░░░▄██▀▄▄░░░░░▄▄▄░░░░█░░
              ░▄▀▒▄▄▄▒░█▀▀▀▀▄▄█░░░██▄▄█░░░░█░
              █░▒█▒▄░▀▄▄▄▀░░░░░░░░█░░░▒▒▒▒▒░█
              █░▒█░█▀▄▄░░░░░█▀░░░░▀▄░░▄▀▀▀▄▒█
              ░█░▀▄░█▄░█▀▄▄░▀░▀▀░▄▄▀░░░░█░░█░
              ░░█░░░▀▄▀█▄▄░█▀▀▀▄▄▄▄▀▀█▀██░█░░
              ░░░█░░░░██░░▀█▄▄▄█▄▄█▄████░█░░░
              ░░░░█░░░░▀▀▄░█░░░█░█▀██████░█░░
              ░░░░░▀▄░░░░░▀▀▄▄▄█▄█▄█▄█▄▀░░█░░
              ░░░░░░░▀▄▄░▒▒▒▒░░░░░░░░░░▒░░░█░
              ░░░░░░░░░░▀▀▄▄░▒▒▒▒▒▒▒▒▒▒░░░░█░
              ░░░░░░░░░░░░░░▀▄▄▄▄▄░░░░░░░░█░░

              " - -#undef MAX_PAPER_LENGTH -#undef MAX_PAPER_STAMPS -#undef MAX_PAPER_STAMPS_OVERLAYS -#undef MODE_READING -#undef MODE_WRITING -#undef MODE_STAMPING + default_raw_text = "

              ░░░░░▄▄▄▄▀▀▀▀▀▀▀▀▄▄▄▄▄▄░░░░░░░
              ░░░░░█░░░░▒▒▒▒▒▒▒▒▒▒▒▒░░▀▀▄░░░░
              ░░░░█░░░▒▒▒▒▒▒░░░░░░░░▒▒▒░░█░░░
              ░░░█░░░░░░▄██▀▄▄░░░░░▄▄▄░░░░█░░
              ░▄▀▒▄▄▄▒░█▀▀▀▀▄▄█░░░██▄▄█░░░░█░
              █░▒█▒▄░▀▄▄▄▀░░░░░░░░█░░░▒▒▒▒▒░█
              █░▒█░█▀▄▄░░░░░█▀░░░░▀▄░░▄▀▀▀▄▒█
              ░█░▀▄░█▄░█▀▄▄░▀░▀▀░▄▄▀░░░░█░░█░
              ░░█░░░▀▄▀█▄▄░█▀▀▀▄▄▄▄▀▀█▀██░█░░
              ░░░█░░░░██░░▀█▄▄▄█▄▄█▄████░█░░░
              ░░░░█░░░░▀▀▄░█░░░█░█▀██████░█░░
              ░░░░░▀▄░░░░░▀▀▄▄▄█▄█▄█▄█▄▀░░█░░
              ░░░░░░░▀▄▄░▒▒▒▒░░░░░░░░░░▒░░░█░
              ░░░░░░░░░░▀▀▄▄░▒▒▒▒▒▒▒▒▒▒░░░░█░
              ░░░░░░░░░░░░░░▀▄▄▄▄▄░░░░░░░░█░░

              " diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm index 36201cdec7b..9eeec906f57 100644 --- a/code/modules/paperwork/paper_premade.dm +++ b/code/modules/paperwork/paper_premade.dm @@ -4,53 +4,53 @@ /obj/item/paper/fluff/sop name = "paper- 'Standard Operating Procedure'" - info = "Alert Levels:
              \nBlue- Emergency
              \n\t1. Caused by fire
              \n\t2. Caused by manual interaction
              \n\tAction:
              \n\t\tClose all fire doors. These can only be opened by resetting the alarm
              \nRed- Ejection/Self Destruct
              \n\t1. Caused by module operating computer.
              \n\tAction:
              \n\t\tAfter the specified time the module will eject completely.
              \n
              \nEngine Maintenance Instructions:
              \n\tShut off ignition systems:
              \n\tActivate internal power
              \n\tActivate orbital balance matrix
              \n\tRemove volatile liquids from area
              \n\tWear a fire suit
              \n
              \n\tAfter
              \n\t\tDecontaminate
              \n\t\tVisit medical examiner
              \n
              \nToxin Laboratory Procedure:
              \n\tWear a gas mask regardless
              \n\tGet an oxygen tank.
              \n\tActivate internal atmosphere
              \n
              \n\tAfter
              \n\t\tDecontaminate
              \n\t\tVisit medical examiner
              \n
              \nDisaster Procedure:
              \n\tFire:
              \n\t\tActivate sector fire alarm.
              \n\t\tMove to a safe area.
              \n\t\tGet a fire suit
              \n\t\tAfter:
              \n\t\t\tAssess Damage
              \n\t\t\tRepair damages
              \n\t\t\tIf needed, Evacuate
              \n\tMeteor Shower:
              \n\t\tActivate fire alarm
              \n\t\tMove to the back of ship
              \n\t\tAfter
              \n\t\t\tRepair damage
              \n\t\t\tIf needed, Evacuate
              \n\tAccidental Reentry:
              \n\t\tActivate fire alarms in front of ship.
              \n\t\tMove volatile matter to a fire proof area!
              \n\t\tGet a fire suit.
              \n\t\tStay secure until an emergency ship arrives.
              \n
              \n\t\tIf ship does not arrive-
              \n\t\t\tEvacuate to a nearby safe area!" + default_raw_text = "Alert Levels:
              \nBlue- Emergency
              \n\t1. Caused by fire
              \n\t2. Caused by manual interaction
              \n\tAction:
              \n\t\tClose all fire doors. These can only be opened by resetting the alarm
              \nRed- Ejection/Self Destruct
              \n\t1. Caused by module operating computer.
              \n\tAction:
              \n\t\tAfter the specified time the module will eject completely.
              \n
              \nEngine Maintenance Instructions:
              \n\tShut off ignition systems:
              \n\tActivate internal power
              \n\tActivate orbital balance matrix
              \n\tRemove volatile liquids from area
              \n\tWear a fire suit
              \n
              \n\tAfter
              \n\t\tDecontaminate
              \n\t\tVisit medical examiner
              \n
              \nToxin Laboratory Procedure:
              \n\tWear a gas mask regardless
              \n\tGet an oxygen tank.
              \n\tActivate internal atmosphere
              \n
              \n\tAfter
              \n\t\tDecontaminate
              \n\t\tVisit medical examiner
              \n
              \nDisaster Procedure:
              \n\tFire:
              \n\t\tActivate sector fire alarm.
              \n\t\tMove to a safe area.
              \n\t\tGet a fire suit
              \n\t\tAfter:
              \n\t\t\tAssess Damage
              \n\t\t\tRepair damages
              \n\t\t\tIf needed, Evacuate
              \n\tMeteor Shower:
              \n\t\tActivate fire alarm
              \n\t\tMove to the back of ship
              \n\t\tAfter
              \n\t\t\tRepair damage
              \n\t\t\tIf needed, Evacuate
              \n\tAccidental Reentry:
              \n\t\tActivate fire alarms in front of ship.
              \n\t\tMove volatile matter to a fire proof area!
              \n\t\tGet a fire suit.
              \n\t\tStay secure until an emergency ship arrives.
              \n
              \n\t\tIf ship does not arrive-
              \n\t\t\tEvacuate to a nearby safe area!" /obj/item/paper/fluff/shuttles/daniel - info = "i love daniel
              daniel is my best friend

              you are tearing me apart elise" + default_raw_text = "i love daniel
              daniel is my best friend

              you are tearing me apart elise" //////////// Job guides n' fluff /obj/item/paper/guides/jobs/hydroponics name = "paper- 'Greetings from Billy Bob'" - info = "Hey fellow botanist!
              \n
              \nI didn't trust the station folk so I left
              \na couple of weeks ago. But here's some
              \ninstructions on how to operate things here.
              \nYou can grow plants and each iteration they become
              \nstronger, more potent and have better yield, if you
              \nknow which ones to pick. Use your botanist's analyzer
              \nfor that. You can turn harvested plants into seeds
              \nat the seed extractor, and replant them for better stuff!
              \nSometimes if the weed level gets high in the tray
              \nmutations into different mushroom or weed species have
              \nbeen witnessed. On the rare occasion even weeds mutate!
              \n
              \nEither way, have fun!
              \n
              \nBest regards,
              \nBilly Bob Johnson.
              \n
              \nPS.
              \nHere's a few tips:
              \nIn nettles, potency = damage
              \nIn amanitas, potency = deadliness + side effect
              \nIn Liberty caps, potency = drug power + effect
              \nIn chilies, potency = heat
              \nNutrients keep mushrooms alive!
              \nWater keeps weeds such as nettles alive!
              \nAll other plants need both." + default_raw_text = "Hey fellow botanist!
              \n
              \nI didn't trust the station folk so I left
              \na couple of weeks ago. But here's some
              \ninstructions on how to operate things here.
              \nYou can grow plants and each iteration they become
              \nstronger, more potent and have better yield, if you
              \nknow which ones to pick. Use your botanist's analyzer
              \nfor that. You can turn harvested plants into seeds
              \nat the seed extractor, and replant them for better stuff!
              \nSometimes if the weed level gets high in the tray
              \nmutations into different mushroom or weed species have
              \nbeen witnessed. On the rare occasion even weeds mutate!
              \n
              \nEither way, have fun!
              \n
              \nBest regards,
              \nBilly Bob Johnson.
              \n
              \nPS.
              \nHere's a few tips:
              \nIn nettles, potency = damage
              \nIn amanitas, potency = deadliness + side effect
              \nIn Liberty caps, potency = drug power + effect
              \nIn chilies, potency = heat
              \nNutrients keep mushrooms alive!
              \nWater keeps weeds such as nettles alive!
              \nAll other plants need both." /obj/item/paper/fluff/jobs/security/beepsky_mom name = "Note from Beepsky's Mom" - info = "01001001 00100000 01101000 01101111 01110000 01100101 00100000 01111001 01101111 01110101 00100000 01110011 01110100 01100001 01111001 00100000 01110011 01100001 01100110 01100101 00101110 00100000 01001100 01101111 01110110 01100101 00101100 00100000 01101101 01101111 01101101 00101110" + default_raw_text = "01001001 00100000 01101000 01101111 01110000 01100101 00100000 01111001 01101111 01110101 00100000 01110011 01110100 01100001 01111001 00100000 01110011 01100001 01100110 01100101 00101110 00100000 01001100 01101111 01110110 01100101 00101100 00100000 01101101 01101111 01101101 00101110" /obj/item/paper/guides/jobs/security/courtroom name = "paper- 'A Crash Course in Legal SOP on SS13'" - info = "Roles:
              \nThe Detective is basically the investigator and prosecutor.
              \nThe Staff Assistant can perform these functions with written authority from the Detective.
              \nThe Captain/HoP/Warden is ct as the judicial authority.
              \nThe Security Officers are responsible for executing warrants, security during trial, and prisoner transport.
              \n
              \nInvestigative Phase:
              \nAfter the crime has been committed the Detective's job is to gather evidence and try to ascertain not only who did it but what happened. He must take special care to catalogue everything and don't leave anything out. Write out all the evidence on paper. Make sure you take an appropriate number of fingerprints. IF he must ask someone questions he has permission to confront them. If the person refuses he can ask a judicial authority to write a subpoena for questioning. If again he fails to respond then that person is to be jailed as insubordinate and obstructing justice. Said person will be released after he cooperates.
              \n
              \nONCE the FT has a clear idea as to who the criminal is he is to write an arrest warrant on the piece of paper. IT MUST LIST THE CHARGES. The FT is to then go to the judicial authority and explain a small version of his case. If the case is moderately acceptable the authority should sign it. Security must then execute said warrant.
              \n
              \nPre-Pre-Trial Phase:
              \nNow a legal representative must be presented to the defendant if said defendant requests one. That person and the defendant are then to be given time to meet (in the jail IS ACCEPTABLE). The defendant and his lawyer are then to be given a copy of all the evidence that will be presented at trial (rewriting it all on paper is fine). THIS IS CALLED THE DISCOVERY PACK. With a few exceptions, THIS IS THE ONLY EVIDENCE BOTH SIDES MAY USE AT TRIAL. IF the prosecution will be seeking the death penalty it MUST be stated at this time. ALSO if the defense will be seeking not guilty by mental defect it must state this at this time to allow ample time for examination.
              \nNow at this time each side is to compile a list of witnesses. By default, the defendant is on both lists regardless of anything else. Also the defense and prosecution can compile more evidence beforehand BUT in order for it to be used the evidence MUST also be given to the other side.\nThe defense has time to compile motions against some evidence here.
              \nPossible Motions:
              \n1. Invalidate Evidence- Something with the evidence is wrong and the evidence is to be thrown out. This includes irrelevance or corrupt security.
              \n2. Free Movement- Basically the defendant is to be kept uncuffed before and during the trial.
              \n3. Subpoena Witness- If the defense presents god reasons for needing a witness but said person fails to cooperate then a subpoena is issued.
              \n4. Drop the Charges- Not enough evidence is there for a trial so the charges are to be dropped. The FT CAN RETRY but the judicial authority must carefully reexamine the new evidence.
              \n5. Declare Incompetent- Basically the defendant is insane. Once this is granted a medical official is to examine the patient. If he is indeed insane he is to be placed under care of the medical staff until he is deemed competent to stand trial.
              \n
              \nALL SIDES MOVE TO A COURTROOM
              \nPre-Trial Hearings:
              \nA judicial authority and the 2 sides are to meet in the trial room. NO ONE ELSE BESIDES A SECURITY DETAIL IS TO BE PRESENT. The defense submits a plea. If the plea is guilty then proceed directly to sentencing phase. Now the sides each present their motions to the judicial authority. He rules on them. Each side can debate each motion. Then the judicial authority gets a list of crew members. He first gets a chance to look at them all and pick out acceptable and available jurors. Those jurors are then called over. Each side can ask a few questions and dismiss jurors they find too biased. HOWEVER before dismissal the judicial authority MUST agree to the reasoning.
              \n
              \nThe Trial:
              \nThe trial has three phases.
              \n1. Opening Arguments- Each side can give a short speech. They may not present ANY evidence.
              \n2. Witness Calling/Evidence Presentation- The prosecution goes first and is able to call the witnesses on his approved list in any order. He can recall them if necessary. During the questioning the lawyer may use the evidence in the questions to help prove a point. After every witness the other side has a chance to cross-examine. After both sides are done questioning a witness the prosecution can present another or recall one (even the EXACT same one again!). After prosecution is done the defense can call witnesses. After the initial cases are presented both sides are free to call witnesses on either list.
              \nFINALLY once both sides are done calling witnesses we move onto the next phase.
              \n3. Closing Arguments- Same as opening.
              \nThe jury then deliberates IN PRIVATE. THEY MUST ALL AGREE on a verdict. REMEMBER: They mix between some charges being guilty and others not guilty (IE if you supposedly killed someone with a gun and you unfortunately picked up a gun without authorization then you CAN be found not guilty of murder BUT guilty of possession of illegal weaponry.). Once they have agreed they present their verdict. If unable to reach a verdict and feel they will never they call a deadlocked jury and we restart at Pre-Trial phase with an entirely new set of jurors.
              \n
              \nSentencing Phase:
              \nIf the death penalty was sought (you MUST have gone through a trial for death penalty) then skip to the second part.
              \nI. Each side can present more evidence/witnesses in any order. There is NO ban on emotional aspects or anything. The prosecution is to submit a suggested penalty. After all the sides are done then the judicial authority is to give a sentence.
              \nII. The jury stays and does the same thing as I. Their sole job is to determine if the death penalty is applicable. If NOT then the judge selects a sentence.
              \n
              \nTADA you're done. Security then executes the sentence and adds the applicable convictions to the person's record.
              \n" + default_raw_text = "Roles:
              \nThe Detective is basically the investigator and prosecutor.
              \nThe Staff Assistant can perform these functions with written authority from the Detective.
              \nThe Captain/HoP/Warden is ct as the judicial authority.
              \nThe Security Officers are responsible for executing warrants, security during trial, and prisoner transport.
              \n
              \nInvestigative Phase:
              \nAfter the crime has been committed the Detective's job is to gather evidence and try to ascertain not only who did it but what happened. He must take special care to catalogue everything and don't leave anything out. Write out all the evidence on paper. Make sure you take an appropriate number of fingerprints. IF he must ask someone questions he has permission to confront them. If the person refuses he can ask a judicial authority to write a subpoena for questioning. If again he fails to respond then that person is to be jailed as insubordinate and obstructing justice. Said person will be released after he cooperates.
              \n
              \nONCE the FT has a clear idea as to who the criminal is he is to write an arrest warrant on the piece of paper. IT MUST LIST THE CHARGES. The FT is to then go to the judicial authority and explain a small version of his case. If the case is moderately acceptable the authority should sign it. Security must then execute said warrant.
              \n
              \nPre-Pre-Trial Phase:
              \nNow a legal representative must be presented to the defendant if said defendant requests one. That person and the defendant are then to be given time to meet (in the jail IS ACCEPTABLE). The defendant and his lawyer are then to be given a copy of all the evidence that will be presented at trial (rewriting it all on paper is fine). THIS IS CALLED THE DISCOVERY PACK. With a few exceptions, THIS IS THE ONLY EVIDENCE BOTH SIDES MAY USE AT TRIAL. IF the prosecution will be seeking the death penalty it MUST be stated at this time. ALSO if the defense will be seeking not guilty by mental defect it must state this at this time to allow ample time for examination.
              \nNow at this time each side is to compile a list of witnesses. By default, the defendant is on both lists regardless of anything else. Also the defense and prosecution can compile more evidence beforehand BUT in order for it to be used the evidence MUST also be given to the other side.\nThe defense has time to compile motions against some evidence here.
              \nPossible Motions:
              \n1. Invalidate Evidence- Something with the evidence is wrong and the evidence is to be thrown out. This includes irrelevance or corrupt security.
              \n2. Free Movement- Basically the defendant is to be kept uncuffed before and during the trial.
              \n3. Subpoena Witness- If the defense presents god reasons for needing a witness but said person fails to cooperate then a subpoena is issued.
              \n4. Drop the Charges- Not enough evidence is there for a trial so the charges are to be dropped. The FT CAN RETRY but the judicial authority must carefully reexamine the new evidence.
              \n5. Declare Incompetent- Basically the defendant is insane. Once this is granted a medical official is to examine the patient. If he is indeed insane he is to be placed under care of the medical staff until he is deemed competent to stand trial.
              \n
              \nALL SIDES MOVE TO A COURTROOM
              \nPre-Trial Hearings:
              \nA judicial authority and the 2 sides are to meet in the trial room. NO ONE ELSE BESIDES A SECURITY DETAIL IS TO BE PRESENT. The defense submits a plea. If the plea is guilty then proceed directly to sentencing phase. Now the sides each present their motions to the judicial authority. He rules on them. Each side can debate each motion. Then the judicial authority gets a list of crew members. He first gets a chance to look at them all and pick out acceptable and available jurors. Those jurors are then called over. Each side can ask a few questions and dismiss jurors they find too biased. HOWEVER before dismissal the judicial authority MUST agree to the reasoning.
              \n
              \nThe Trial:
              \nThe trial has three phases.
              \n1. Opening Arguments- Each side can give a short speech. They may not present ANY evidence.
              \n2. Witness Calling/Evidence Presentation- The prosecution goes first and is able to call the witnesses on his approved list in any order. He can recall them if necessary. During the questioning the lawyer may use the evidence in the questions to help prove a point. After every witness the other side has a chance to cross-examine. After both sides are done questioning a witness the prosecution can present another or recall one (even the EXACT same one again!). After prosecution is done the defense can call witnesses. After the initial cases are presented both sides are free to call witnesses on either list.
              \nFINALLY once both sides are done calling witnesses we move onto the next phase.
              \n3. Closing Arguments- Same as opening.
              \nThe jury then deliberates IN PRIVATE. THEY MUST ALL AGREE on a verdict. REMEMBER: They mix between some charges being guilty and others not guilty (IE if you supposedly killed someone with a gun and you unfortunately picked up a gun without authorization then you CAN be found not guilty of murder BUT guilty of possession of illegal weaponry.). Once they have agreed they present their verdict. If unable to reach a verdict and feel they will never they call a deadlocked jury and we restart at Pre-Trial phase with an entirely new set of jurors.
              \n
              \nSentencing Phase:
              \nIf the death penalty was sought (you MUST have gone through a trial for death penalty) then skip to the second part.
              \nI. Each side can present more evidence/witnesses in any order. There is NO ban on emotional aspects or anything. The prosecution is to submit a suggested penalty. After all the sides are done then the judicial authority is to give a sentence.
              \nII. The jury stays and does the same thing as I. Their sole job is to determine if the death penalty is applicable. If NOT then the judge selects a sentence.
              \n
              \nTADA you're done. Security then executes the sentence and adds the applicable convictions to the person's record.
              \n" /obj/item/paper/guides/jobs/security/labor_camp name = "Labor Camp Operating Guide" - info = "Labor Camp Facility Operation Guide

              Hello there, proud operator of an NT-Sec Prisoner Rehabilitation Center. A solution to rising crime rates and falling productivity, these facilities are specifically designed for the safe, productive imprisonment of your most dangerous criminals.

              To press a long-term prisoner into the service of the station, replace his equipment with prisoners' garb at one of the prison lockers, as per normal operating procedure. Before assigning a prisoner his ID, insert the ID into a prisoner management console and assign the prisoner a quota, based on the severity of his crime.
              A single sheet of most materials produces five points for the prisoner, and points can be expected to be produced at a rate of about 100 per minute, though punishments as severe as forced labor should be reserved for serious crimes of sentences not less than five minutes long.
              Once you have prepared the prisoner, place him in the secure northern half of the labor shuttle, and send him to the station. Once he meets his quota by feeding sheets to the stacker, he will be allowed to return to the station, and will be able to open the secure door to the prisoner release area.

              In the case of dangerous prisoners, surveillance may be needed. To that end, there is a prisoner monitoring room on the mining station, equipped with a remote flasher and a lockdown button. The mine itself is patrolled by a securibot, so the nearby security records console can also be used to secure hostile prisoners on the mine." + default_raw_text = "Labor Camp Facility Operation Guide

              Hello there, proud operator of an NT-Sec Prisoner Rehabilitation Center. A solution to rising crime rates and falling productivity, these facilities are specifically designed for the safe, productive imprisonment of your most dangerous criminals.

              To press a long-term prisoner into the service of the station, replace his equipment with prisoners' garb at one of the prison lockers, as per normal operating procedure. Before assigning a prisoner his ID, insert the ID into a prisoner management console and assign the prisoner a quota, based on the severity of his crime.
              A single sheet of most materials produces five points for the prisoner, and points can be expected to be produced at a rate of about 100 per minute, though punishments as severe as forced labor should be reserved for serious crimes of sentences not less than five minutes long.
              Once you have prepared the prisoner, place him in the secure northern half of the labor shuttle, and send him to the station. Once he meets his quota by feeding sheets to the stacker, he will be allowed to return to the station, and will be able to open the secure door to the prisoner release area.

              In the case of dangerous prisoners, surveillance may be needed. To that end, there is a prisoner monitoring room on the mining station, equipped with a remote flasher and a lockdown button. The mine itself is patrolled by a securibot, so the nearby security records console can also be used to secure hostile prisoners on the mine." /obj/item/paper/guides/jobs/security/range name = "paper- Firing Range Instructions" - info = "Directions:
              First you'll want to make sure there is a target stake in the center of the magnetic platform. Next, take an aluminium target from the crates back there and slip it into the stake. Make sure it clicks! Next, there should be a control console mounted on the wall somewhere in the room.

              This control console dictates the behaviors of the magnetic platform, which can move your firing target around to simulate real-world combat situations. From here, you can turn off the magnets or adjust their electromagnetic levels and magnetic fields. The electricity level dictates the strength of the pull - you will usually want this to be the same value as the speed. The magnetic field level dictates how far the magnetic pull reaches.

              Speed and path are the next two settings. Speed is associated with how fast the machine loops through the designated path. Paths dictate where the magnetic field will be centered at what times. There should be a pre-fabricated path input already. You can enable moving to observe how the path affects the way the stake moves. To script your own path, look at the following key:


              N: North
              S: South
              E: East
              W: West
              C: Center
              R: Random (results may vary)
              ; or &: separators. They are not necessary but can make the path string better visible." + default_raw_text = "Directions:
              First you'll want to make sure there is a target stake in the center of the magnetic platform. Next, take an aluminium target from the crates back there and slip it into the stake. Make sure it clicks! Next, there should be a control console mounted on the wall somewhere in the room.

              This control console dictates the behaviors of the magnetic platform, which can move your firing target around to simulate real-world combat situations. From here, you can turn off the magnets or adjust their electromagnetic levels and magnetic fields. The electricity level dictates the strength of the pull - you will usually want this to be the same value as the speed. The magnetic field level dictates how far the magnetic pull reaches.

              Speed and path are the next two settings. Speed is associated with how fast the machine loops through the designated path. Paths dictate where the magnetic field will be centered at what times. There should be a pre-fabricated path input already. You can enable moving to observe how the path affects the way the stake moves. To script your own path, look at the following key:


              N: North
              S: South
              E: East
              W: West
              C: Center
              R: Random (results may vary)
              ; or &: separators. They are not necessary but can make the path string better visible." /obj/item/paper/fluff/jobs/jobs name = "paper- 'Job Information'" - info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document.
              \nThe data will be in the following form.
              \nGenerally lower ranking positions come first in this list.
              \n
              \nJob Name general access>lab access-engine access-systems access (atmosphere control)
              \n\tJob Description
              \nJob Duties (in no particular order)
              \nTips (where applicable)
              \n
              \nResearch Assistant 1>1-0-0
              \n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance.
              \n1. Assist the researchers.
              \n2. Clean up the labs.
              \n3. Prepare materials.
              \n
              \nStaff Assistant 2>0-0-0
              \n\tThis position assists the security officer in his duties. The staff assistants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel)
              \n1. Patrol ship/Guard key areas
              \n2. Assist security officer
              \n3. Perform other security duties.
              \n
              \nTechnical Assistant 1>0-0-1
              \n\tThis is yet another low level position. The technical assistant helps the engineer and the station\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that.
              \n1. Assist Station technician and Engineers.
              \n2. Perform general maintenance of station.
              \n3. Prepare materials.
              \n
              \nMedical Assistant 1>1-0-0
              \n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals)
              \n1. Assist the medical personnel.
              \n2. Update medical files.
              \n3. Prepare materials for medical operations.
              \n
              \nResearch Technician 2>3-0-0
              \n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally.
              \n1. Inform superiors of research.
              \n2. Perform research alongside of official researchers.
              \n
              \nDetective 3>2-0-0
              \n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crime scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should store the evidence ly.
              \n1. Perform crime-scene investigations/draw conclusions.
              \n2. Store and catalogue evidence properly.
              \n3. Testify to superiors/inquiries on findings.
              \n
              \nStation Technician 2>0-2-3
              \n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician.
              \n1. Maintain SS13 systems.
              \n2. Repair equipment.
              \n
              \nAtmospheric Technician 3>0-0-4
              \n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13.
              \n1. Maintain atmosphere on SS13
              \n2. Research atmospheres on the space station. (safely please!)
              \n
              \nEngineer 2>1-3-0
              \n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area.
              \n1. Upkeep the engine.
              \n2. Prevent fires in the engine.
              \n3. Maintain a safe orbit.
              \n
              \nMedical Researcher 2>5-0-0
              \n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed.
              \n1. Make sure the station is kept safe.
              \n2. Research medical properties of materials studied of Space Station 13.
              \n
              \nScientist 2>5-0-0
              \n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Plasma Technicians as plasma is the material they routinely handle.
              \n1. Research plasma
              \n2. Make sure all plasma is properly handled.
              \n
              \nMedical Doctor (Officer) 2>0-0-0
              \n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder.
              \n1. Heal wounded people.
              \n2. Perform examinations of all personnel.
              \n3. Monitor usage of medical equipment.
              \n
              \nSecurity Officer 3>0-0-0
              \n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources.
              \n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel)
              \n1. Maintain order.
              \n2. Assist others.
              \n3. Repair structural problems.
              \n
              \nHead of Security 4>5-2-2
              \n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person.
              \n1. Oversee security.
              \n2. Assign patrol duties.
              \n3. Protect the station and staff.
              \n
              \nHead of Personnel 4>4-2-2
              \n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels.
              \n1. Assign duties.
              \n2. Moderate personnel.
              \n3. Moderate research.
              \n
              \nCaptain 5>5-5-5 (unrestricted station wide access)
              \n\tThis is the highest position you can acquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power.
              \n1. Assign all positions on SS13
              \n2. Inspect the station for any problems.
              \n3. Perform administrative duties.
              \n" + default_raw_text = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document.
              \nThe data will be in the following form.
              \nGenerally lower ranking positions come first in this list.
              \n
              \nJob Name general access>lab access-engine access-systems access (atmosphere control)
              \n\tJob Description
              \nJob Duties (in no particular order)
              \nTips (where applicable)
              \n
              \nResearch Assistant 1>1-0-0
              \n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance.
              \n1. Assist the researchers.
              \n2. Clean up the labs.
              \n3. Prepare materials.
              \n
              \nStaff Assistant 2>0-0-0
              \n\tThis position assists the security officer in his duties. The staff assistants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel)
              \n1. Patrol ship/Guard key areas
              \n2. Assist security officer
              \n3. Perform other security duties.
              \n
              \nTechnical Assistant 1>0-0-1
              \n\tThis is yet another low level position. The technical assistant helps the engineer and the station\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that.
              \n1. Assist Station technician and Engineers.
              \n2. Perform general maintenance of station.
              \n3. Prepare materials.
              \n
              \nMedical Assistant 1>1-0-0
              \n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals)
              \n1. Assist the medical personnel.
              \n2. Update medical files.
              \n3. Prepare materials for medical operations.
              \n
              \nResearch Technician 2>3-0-0
              \n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally.
              \n1. Inform superiors of research.
              \n2. Perform research alongside of official researchers.
              \n
              \nDetective 3>2-0-0
              \n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crime scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should store the evidence ly.
              \n1. Perform crime-scene investigations/draw conclusions.
              \n2. Store and catalogue evidence properly.
              \n3. Testify to superiors/inquiries on findings.
              \n
              \nStation Technician 2>0-2-3
              \n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician.
              \n1. Maintain SS13 systems.
              \n2. Repair equipment.
              \n
              \nAtmospheric Technician 3>0-0-4
              \n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13.
              \n1. Maintain atmosphere on SS13
              \n2. Research atmospheres on the space station. (safely please!)
              \n
              \nEngineer 2>1-3-0
              \n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area.
              \n1. Upkeep the engine.
              \n2. Prevent fires in the engine.
              \n3. Maintain a safe orbit.
              \n
              \nMedical Researcher 2>5-0-0
              \n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed.
              \n1. Make sure the station is kept safe.
              \n2. Research medical properties of materials studied of Space Station 13.
              \n
              \nScientist 2>5-0-0
              \n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Plasma Technicians as plasma is the material they routinely handle.
              \n1. Research plasma
              \n2. Make sure all plasma is properly handled.
              \n
              \nMedical Doctor (Officer) 2>0-0-0
              \n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder.
              \n1. Heal wounded people.
              \n2. Perform examinations of all personnel.
              \n3. Monitor usage of medical equipment.
              \n
              \nSecurity Officer 3>0-0-0
              \n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources.
              \n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel)
              \n1. Maintain order.
              \n2. Assist others.
              \n3. Repair structural problems.
              \n
              \nHead of Security 4>5-2-2
              \n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person.
              \n1. Oversee security.
              \n2. Assign patrol duties.
              \n3. Protect the station and staff.
              \n
              \nHead of Personnel 4>4-2-2
              \n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels.
              \n1. Assign duties.
              \n2. Moderate personnel.
              \n3. Moderate research.
              \n
              \nCaptain 5>5-5-5 (unrestricted station wide access)
              \n\tThis is the highest position you can acquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power.
              \n1. Assign all positions on SS13
              \n2. Inspect the station for any problems.
              \n3. Perform administrative duties.
              \n" /obj/item/paper/fluff/jobs/mining/smelter_notice name = "paper- Smelting Operations Closed" - info = "**NOTICE**

              Smelting operations moved on-station.

              Take your unrefined ore to the Redemption Machine in the Delivery Office to redeem points.

              --SS13 Command" + default_raw_text = "**NOTICE**

              Smelting operations moved on-station.

              Take your unrefined ore to the Redemption Machine in the Delivery Office to redeem points.

              --SS13 Command" /obj/item/paper/fluff/jobs/security/court_judgment name = "paper- 'Judgment'" - info = "For crimes against the station, the offender is sentenced to:
              \n
              \n" + default_raw_text = "For crimes against the station, the offender is sentenced to:
              \n
              \n" /obj/item/paper/fluff/jobs/toxins/chemical_info name = "paper- 'Chemical Information'" - info = "Known Onboard Toxins:
              \n\tGrade A Semi-Liquid Plasma:
              \n\t\tHighly poisonous. You cannot sustain concentrations above 15 units.
              \n\t\tA gas mask fails to filter plasma after 50 units.
              \n\t\tWill attempt to diffuse like a gas.
              \n\t\tFiltered by scrubbers.
              \n\t\tThere is a bottled version which is very different
              \n\t\t\tfrom the version found in canisters!
              \n
              \n\t\tWARNING: Highly Flammable. Keep away from heat sources
              \n\t\texcept in an enclosed fire area!
              \n\t\tWARNING: It is a crime to use this without authorization.
              \nKnown Onboard Anti-Toxin:
              \n\tAnti-Toxin Type 01P: Works against Grade A Plasma.
              \n\t\tBest if injected directly into bloodstream.
              \n\t\tA full injection is in every regular Med-Kit.
              \n\t\tSpecial toxin Kits hold around 7.
              \n
              \nKnown Onboard Chemicals (other):
              \n\tRejuvenation T#001:
              \n\t\tEven 1 unit injected directly into the bloodstream
              \n\t\t\twill cure unconscious and sleep toxins.
              \n\t\tIf administered to a dying patient it will prevent
              \n\t\t\tfurther damage for about units*3 seconds.
              \n\t\t\tit will not cure them or allow them to be cured.
              \n\t\tIt can be administered to a non-dying patient
              \n\t\t\tbut the chemicals disappear just as fast.
              \n\tMorphine T#054:
              \n\t\t5 units will induce precisely 1 minute of sleep.
              \n\t\t\tThe effect are cumulative.
              \n\t\tWARNING: It is a crime to use this without authorization" + default_raw_text = "Known Onboard Toxins:
              \n\tGrade A Semi-Liquid Plasma:
              \n\t\tHighly poisonous. You cannot sustain concentrations above 15 units.
              \n\t\tA gas mask fails to filter plasma after 50 units.
              \n\t\tWill attempt to diffuse like a gas.
              \n\t\tFiltered by scrubbers.
              \n\t\tThere is a bottled version which is very different
              \n\t\t\tfrom the version found in canisters!
              \n
              \n\t\tWARNING: Highly Flammable. Keep away from heat sources
              \n\t\texcept in an enclosed fire area!
              \n\t\tWARNING: It is a crime to use this without authorization.
              \nKnown Onboard Anti-Toxin:
              \n\tAnti-Toxin Type 01P: Works against Grade A Plasma.
              \n\t\tBest if injected directly into bloodstream.
              \n\t\tA full injection is in every regular Med-Kit.
              \n\t\tSpecial toxin Kits hold around 7.
              \n
              \nKnown Onboard Chemicals (other):
              \n\tRejuvenation T#001:
              \n\t\tEven 1 unit injected directly into the bloodstream
              \n\t\t\twill cure unconscious and sleep toxins.
              \n\t\tIf administered to a dying patient it will prevent
              \n\t\t\tfurther damage for about units*3 seconds.
              \n\t\t\tit will not cure them or allow them to be cured.
              \n\t\tIt can be administered to a non-dying patient
              \n\t\t\tbut the chemicals disappear just as fast.
              \n\tMorphine T#054:
              \n\t\t5 units will induce precisely 1 minute of sleep.
              \n\t\t\tThe effect are cumulative.
              \n\t\tWARNING: It is a crime to use this without authorization" /obj/item/paper/fluff/jobs/medical/hippocratic name = "paper- 'Hippocratic Oath'" - info = {"I swear to fulfill, to the best of my ability and judgment, this covenant: + default_raw_text = {"I swear to fulfill, to the best of my ability and judgment, this covenant:
              I will respect the hard-won scientific gains of those physicians in whose steps I walk, and gladly share such knowledge as is mine with those who are to follow. @@ -89,18 +89,18 @@ /obj/item/paper/fluff/stations/centcom/disk_memo name = "memo" - info = "GET DAT FUKKEN DISK" + default_raw_text = "GET DAT FUKKEN DISK" /obj/item/paper/fluff/stations/centcom/broken_evac - info = "Due to circumstances beyond our control, your Emergency Evacuation Shuttle is out of service.

              We apologize for the inconvenience this may cause you.

              Please enjoy the use of this complementary book.

              Sincerely,
              CentCom Operations Demolitions Examination Retribution Bugfixing Underlining Services" + default_raw_text = "Due to circumstances beyond our control, your Emergency Evacuation Shuttle is out of service.

              We apologize for the inconvenience this may cause you.

              Please enjoy the use of this complementary book.

              Sincerely,
              CentCom Operations Demolitions Examination Retribution Bugfixing Underlining Services" /obj/item/paper/fluff/stations/centcom/bulletin name = "paper- 'Official Bulletin'" - info = "
              CentCom Security
              Port Division
              Official Bulletin

              Inspector,
              There is an emergency shuttle arriving today.

              Approval is restricted to Nanotrasen employees only. Deny all other entrants.

              CentCom Port Commissioner" + default_raw_text = "
              CentCom Security
              Port Division
              Official Bulletin

              Inspector,
              There is an emergency shuttle arriving today.

              Approval is restricted to Nanotrasen employees only. Deny all other entrants.

              CentCom Port Commissioner" /////////// Lavaland /obj/item/paper/fluff/stations/lavaland/orm_notice name = "URGENT!" - info = "A hastily written note has been scribbled here...

              Please use the ore redemption machine in the cargo office for smelting. PLEASE!

              --The Research Staff" + default_raw_text = "A hastily written note has been scribbled here...

              Please use the ore redemption machine in the cargo office for smelting. PLEASE!

              --The Research Staff" diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 1dec5232b28..532da0097b2 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -85,8 +85,9 @@ P = new papertype(src) if(SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) if(prob(30)) - P.info = "HONK HONK HONK HONK HONK HONK HONK
              HOOOOOOOOOOOOOOOOOOOOOONK
              APRIL FOOLS
              " + P.add_raw_text("HONK HONK HONK HONK HONK HONK HONK
              HOOOOOOOOOOOOOOOOOOOOOONK
              APRIL FOOLS
              ") P.AddComponent(/datum/component/honkspam) + P.update_appearance() P.add_fingerprint(user) P.forceMove(user.loc) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 7ba35dab3c6..984927bb91f 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -24,10 +24,8 @@ /obj/item/origami/paperplane/update_icon() cut_overlays() - var/list/stamped = internalPaper.stamped - if(stamped) - for(var/S in stamped) - add_overlay("paperplane_[S]") + for(var/stamp in internalPaper.stamp_cache) + add_overlay("paperplane_[stamp]") /obj/item/origami/paperplane/attack_self(mob/user) to_chat(user, "You unfold [src].") diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index f473669ec60..062ce0bd117 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -168,6 +168,14 @@ O.desc = input to_chat(user, "You have successfully changed \the [O.name]'s description.") +/obj/item/pen/get_writing_implement_details() + return list( + interaction_mode = MODE_WRITING, + font = font, + color = colour, + use_bold = FALSE, + ) + /* * Sleepypens */ diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index ead6c8bccae..ff0a55f00aa 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -1,12 +1,19 @@ -/* Photocopiers! - * Contains: - * Photocopier - * Toner Cartridge - */ +/// For use with the `color_mode` var. Photos will be printed in greyscale while the var has this value. +#define PHOTO_GREYSCALE "Greyscale" +/// For use with the `color_mode` var. Photos will be printed in full color while the var has this value. +#define PHOTO_COLOR "Color" + +/// How much toner is used for making a copy of a paper. +#define PAPER_TONER_USE 0.125 +/// How much toner is used for making a copy of a photo. +#define PHOTO_TONER_USE 0.625 +/// How much toner is used for making a copy of a document. +#define DOCUMENT_TONER_USE 0.75 +/// How much toner is used for making a copy of an ass. +#define ASS_TONER_USE 0.625 +/// The maximum amount of copies you can make with one press of the copy button. +#define MAX_COPIES_AT_ONCE 10 -/* - * Photocopier - */ /obj/machinery/photocopier name = "photocopier" desc = "Used to copy important documents and anatomy studies." @@ -19,183 +26,376 @@ power_channel = AREA_USAGE_EQUIP max_integrity = 300 integrity_failure = 100 - var/obj/item/paper/copy = null //what's in the copier! - var/obj/item/photo/photocopy = null - var/obj/item/documents/doccopy = null - var/copies = 1 //how many copies to print! - var/toner = 40 //how much toner is left! woooooo~ - var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier! - var/greytoggle = "Greyscale" - var/mob/living/ass //i can't believe i didn't write a stupid-ass comment about this var when i first coded asscopy. + /// A reference to an `/obj/item/paper` inside the copier, if one is inserted. Otherwise null. + var/obj/item/paper/paper_copy + /// A reference to an `/obj/item/photo` inside the copier, if one is inserted. Otherwise null. + var/obj/item/photo/photo_copy + /// A reference to an `/obj/item/documents` inside the copier, if one is inserted. Otherwise null. + var/obj/item/documents/document_copy + /// A reference to a mob on top of the photocopier trying to copy their ass. Null if there is no mob. + var/mob/living/ass + /// A reference to the toner cartridge that's inserted into the copier. Null if there is no cartridge. + var/obj/item/toner/toner_cartridge + /// How many copies will be printed with one click of the "copy" button. + var/num_copies = 1 + /// Used with photos. Determines if the copied photo will be in greyscale or color. + var/color_mode = PHOTO_COLOR + /// Indicates whether the printer is currently busy copying or not. var/busy = FALSE + /// Variable needed to determine the selected category of forms on Photocopier.js + var/category -/obj/machinery/photocopier/ui_interact(mob/user) +/obj/machinery/photocopier/Initialize() . = ..() - var/list/dat = list("Photocopier

              ") - if(copy || photocopy || doccopy || (ass && (ass.loc == src.loc))) - dat += "Remove Paper
              " - if(toner) - dat += "Copy
              " - dat += "Printing: [copies] copies." - dat += "- " - dat += "+

              " - if(photocopy) - dat += "Printing in [greytoggle]

              " - else if(toner) - dat += "Please insert paper to copy.

              " - if(isAI(user)) - dat += "Print photo from database

              " - dat += "Current toner level: [toner]" - if(!toner) - dat +="
              Please insert a new toner cartridge!" - user << browse(dat.Join(""), "window=copier") - onclose(user, "copier") - -/obj/machinery/photocopier/Topic(href, href_list) + toner_cartridge = new(src) + +/obj/machinery/photocopier/handle_atom_del(atom/deleting_atom) + if(deleting_atom == paper_copy) + paper_copy = null + if(deleting_atom == photo_copy) + photo_copy = null + if(deleting_atom == document_copy) + document_copy = null + if(deleting_atom == ass) + ass = null + if(deleting_atom == toner_cartridge) + toner_cartridge = null + return ..() + +/obj/machinery/photocopier/Destroy() + QDEL_NULL(paper_copy) + QDEL_NULL(photo_copy) + QDEL_NULL(toner_cartridge) + ass = null //the mob isn't actually contained and just referenced, no need to delete it. + return ..() + +/obj/machinery/photocopier/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Photocopier") + ui.open() + +/obj/machinery/photocopier/ui_data(mob/user) + var/list/data = list() + data["has_item"] = !copier_empty() + data["num_copies"] = num_copies + + try + var/list/blanks = json_decode(file2text("config/blanks.json")) + if(blanks != null) + data["blanks"] = blanks + data["category"] = category + data["forms_exist"] = TRUE + else + data["forms_exist"] = FALSE + catch() + data["forms_exist"] = FALSE + + if(photo_copy) + data["is_photo"] = TRUE + data["color_mode"] = color_mode + data["isAI"] = TRUE + data["can_AI_print"] = toner_cartridge ? toner_cartridge.charges >= PHOTO_TONER_USE : FALSE + else + data["isAI"] = FALSE + + if(toner_cartridge) + data["has_toner"] = TRUE + data["current_toner"] = toner_cartridge.charges + data["max_toner"] = toner_cartridge.max_charges + data["has_enough_toner"] = has_enough_toner() + else + data["has_toner"] = FALSE + data["has_enough_toner"] = FALSE + + return data + +/obj/machinery/photocopier/ui_act(action, params) if(..()) return - if(href_list["copy"]) - if(copy) - for(var/i = 0, i < copies, i++) - if(toner > 0 && !busy && copy) - var/copy_as_paper = 1 - if(istype(copy, /obj/item/paper/contract/employment)) - var/obj/item/paper/contract/employment/E = copy - var/obj/item/paper/contract/employment/C = new /obj/item/paper/contract/employment (loc, E.target.current) - if(C) - copy_as_paper = 0 - if(copy_as_paper) - var/obj/item/paper/c = new /obj/item/paper (loc) - if(length(copy.info) > 0) //Only print and add content if the copied doc has words on it - if(toner > 10) //lots of toner, make it dark - c.info = "" - else //no toner? shitty copies for you! - c.info = "" - var/copied = copy.info - copied = replacetext(copied, "" - c.name = copy.name - c.update_icon() - c.stamps = copy.stamps - if(copy.stamped) - c.stamped = copy.stamped.Copy() - c.copy_overlays(copy, TRUE) - toner-- - busy = TRUE - sleep(15) - busy = FALSE - else - break - updateUsrDialog() - else if(photocopy) - for(var/i = 0, i < copies, i++) - if(toner >= 5 && !busy && photocopy) //Was set to = 0, but if there was say 3 toner left and this ran, you would get -2 which would be weird for ink - new /obj/item/photo (loc, photocopy.picture.Copy(greytoggle == "Greyscale"? TRUE : FALSE)) - busy = TRUE - sleep(15) - busy = FALSE - else - break - else if(doccopy) - for(var/i = 0, i < copies, i++) - if(toner > 5 && !busy && doccopy) - new /obj/item/documents/photocopy(loc, doccopy) - toner-= 6 // the sprite shows 6 papers, yes I checked - busy = TRUE - sleep(15) - busy = FALSE - else - break - updateUsrDialog() - else if(ass) //ASS COPY. By Miauw - for(var/i = 0, i < copies, i++) - var/icon/temp_img - if(ishuman(ass) && (ass.get_item_by_slot(ITEM_SLOT_ICLOTHING) || ass.get_item_by_slot(ITEM_SLOT_OCLOTHING))) - to_chat(usr, "You feel kind of silly, copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "[ass.p_their()]"] clothes on." ) - break - else if(toner >= 5 && !busy && check_ass()) //You have to be sitting on the copier and either be a xeno or a human without clothes on. - if(isalienadult(ass) || istype(ass, /mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro. - temp_img = icon('icons/ass/assalien.png') - else if(ishuman(ass)) //Suit checks are in check_ass - temp_img = icon(ass.gender == FEMALE ? 'icons/ass/assfemale.png' : 'icons/ass/assmale.png') - else if(isdrone(ass)) //Drones are hot - temp_img = icon('icons/ass/assdrone.png') - else - break - busy = TRUE - sleep(15) - var/obj/item/photo/p = new /obj/item/photo (loc) - var/datum/picture/toEmbed = new(name = "[ass]'s Ass", desc = "You see [ass]'s ass on the photo.", image = temp_img) - p.pixel_x = rand(-10, 10) - p.pixel_y = rand(-10, 10) - toEmbed.psize_x = 128 - toEmbed.psize_y = 128 - p.set_picture(toEmbed, TRUE, TRUE) - toner -= 5 - busy = FALSE - else - break - updateUsrDialog() - else if(href_list["remove"]) - if(copy) - remove_photocopy(copy, usr) - copy = null - else if(photocopy) - remove_photocopy(photocopy, usr) - photocopy = null - else if(doccopy) - remove_photocopy(doccopy, usr) - doccopy = null - else if(check_ass()) - to_chat(ass, "You feel a slight pressure on your ass.") - updateUsrDialog() - else if(href_list["min"]) - if(copies > 1) - copies-- - updateUsrDialog() - else if(href_list["add"]) - if(copies < maxcopies) - copies++ - updateUsrDialog() - else if(href_list["aipic"]) - if(!isAI(usr)) - return - if(toner >= 5 && !busy) + + switch(action) + // Copying paper, photos, documents and asses. + if("make_copy") + if(busy) + to_chat(usr, "[src] is currently busy copying something. Please wait until it is finished.") + return FALSE + if(paper_copy) + if(!paper_copy.get_total_length()) + to_chat(usr, "An error message flashes across [src]'s screen: \"The supplied paper is blank. Aborting.\"") + return FALSE + // Basic paper + if(istype(paper_copy, /obj/item/paper)) + do_copy_loop(CALLBACK(src, PROC_REF(make_paper_copy)), usr) + return TRUE + // Devil contract paper. + if(istype(paper_copy, /obj/item/paper/contract/employment)) + do_copy_loop(CALLBACK(src, PROC_REF(make_devil_paper_copy)), usr) + return TRUE + // Copying photo. + if(photo_copy) + do_copy_loop(CALLBACK(src, PROC_REF(make_photo_copy)), usr) + return TRUE + // Copying Documents. + if(document_copy) + do_copy_loop(CALLBACK(src, PROC_REF(make_document_copy)), usr) + return TRUE + // ASS COPY. By Miauw + if(ass) + do_copy_loop(CALLBACK(src, PROC_REF(make_ass_copy)), usr) + return TRUE + + // Remove the paper/photo/document from the photocopier. + if("remove") + if(paper_copy) + remove_photocopy(paper_copy, usr) + paper_copy = null + else if(photo_copy) + remove_photocopy(photo_copy, usr) + photo_copy = null + else if(document_copy) + remove_photocopy(document_copy, usr) + document_copy = null + else if(check_ass()) + to_chat(ass, "You feel a slight pressure on your ass.") + return TRUE + + // AI printing photos from their saved images. + if("ai_photo") + if(busy) + to_chat(usr, "[src] is currently busy copying something. Please wait until it is finished.") + return FALSE var/mob/living/silicon/ai/tempAI = usr - if(tempAI.aicamera.stored.len == 0) + if(!length(tempAI.aicamera.stored)) to_chat(usr, "No images saved.") return var/datum/picture/selection = tempAI.aicamera.selectpicture(usr) - var/obj/item/photo/photo = new(loc, selection) - photo.pixel_x = rand(-10, 10) - photo.pixel_y = rand(-10, 10) - toner -= 5 //AI prints color pictures only, thus they can do it more efficiently - busy = TRUE - sleep(15) - busy = FALSE - updateUsrDialog() - else if(href_list["colortoggle"]) - if(greytoggle == "Greyscale") - greytoggle = "Color" + var/obj/item/photo/photo = new(loc, selection) // AI prints color photos only. + give_pixel_offset(photo) + toner_cartridge.charges -= PHOTO_TONER_USE + return TRUE + + // Switch between greyscale and color photos + if("color_mode") + if(params["mode"] in list(PHOTO_GREYSCALE, PHOTO_COLOR)) + color_mode = params["mode"] + return TRUE + + // Remove the toner cartridge from the copier. + if("remove_toner") + if(busy) + to_chat(usr, "span class='warning'>[src] is currently busy copying something. Please wait until it is finished.
              ") + return + if(issilicon(usr) || (ishuman(usr) && !usr.put_in_hands(toner_cartridge))) + toner_cartridge.forceMove(drop_location()) + toner_cartridge = null + return TRUE + + // Set the number of copies to be printed with 1 click of the "copy" button. + if("set_copies") + num_copies = clamp(text2num(params["num_copies"]), 1, MAX_COPIES_AT_ONCE) + return TRUE + // Changes the forms displayed on Photocopier.js when you switch categories + if("choose_category") + category = params["category"] + return TRUE + // Called when you press print blank + if("print_blank") + if(busy) + to_chat(usr, "[src] is currently busy copying something. Please wait until it is finished.") + return FALSE + if(toner_cartridge.charges - PAPER_TONER_USE < 0) + to_chat(usr, "There is not enough toner in [src] to print the form, please replace the cartridge.") + return FALSE + do_copy_loop(CALLBACK(src, PROC_REF(make_blank_print)), usr) + var/obj/item/paper/printblank = new /obj/item/paper (loc) + var/printname = sanitize(params["name"]) + var/list/printinfo + for(var/infoline as anything in params["info"]) + printinfo += infoline + printblank.name = printname + printblank.add_raw_text(printinfo) + printblank.update_appearance() + return printblank + +/** + * Determines if the photocopier has enough toner to create `num_copies` amount of copies of the currently inserted item. + */ +/obj/machinery/photocopier/proc/has_enough_toner() + if(paper_copy) + return toner_cartridge.charges >= (PAPER_TONER_USE * num_copies) + else if(document_copy) + return toner_cartridge.charges >= (DOCUMENT_TONER_USE * num_copies) + else if(photo_copy) + return toner_cartridge.charges >= (PHOTO_TONER_USE * num_copies) + else if(ass) + return toner_cartridge.charges >= (ASS_TONER_USE * num_copies) + return FALSE + +/** + * Will invoke the passed in `copy_cb` callback in 1 second intervals. + * + * Arguments: + * * copy_cb - a callback for which proc to call. Should only be one of the `make_x_copy()` procs, such as `make_paper_copy()`. + * * user - the mob who clicked copy. + */ +/obj/machinery/photocopier/proc/do_copy_loop(datum/callback/copy_cb, mob/user) + busy = TRUE + var/i + for(i in 1 to num_copies) + if(!toner_cartridge) //someone removed the toner cartridge during printing. + break + addtimer(copy_cb, i SECONDS) + addtimer(CALLBACK(src, PROC_REF(reset_busy)), i SECONDS) + +/** + * Sets busy to `FALSE`. Created as a proc so it can be used in callbacks. + */ +/obj/machinery/photocopier/proc/reset_busy() + busy = FALSE + +/** + * Gives items a random x and y pixel offset, between -10 and 10 for each. + * + * This is done that when someone prints multiple papers, we dont have them all appear to be stacked in the same exact location. + * + * Arguments: + * * copied_item - The paper, document, or photo that was just spawned on top of the printer. + */ +/obj/machinery/photocopier/proc/give_pixel_offset(obj/item/copied_item) + copied_item.pixel_x = rand(-10, 10) + copied_item.pixel_y = rand(-10, 10) + +/** + * Handles the copying of devil contract paper. Transfers all the text, stamps and so on from the old paper, to the copy. + * + * Checks first if `paper_copy` exists. Since this proc is called from a timer, it's possible that it was removed. + * Does not check if it has enough toner because devil contracts cost no toner to print. + */ +/obj/machinery/photocopier/proc/make_devil_paper_copy() + if(!paper_copy) + return + var/obj/item/paper/contract/employment/E = paper_copy + var/obj/item/paper/contract/employment/C = new(loc, E.target.current) + give_pixel_offset(C) + +/** + * Handles the copying of paper. Transfers all the text, stamps and so on from the old paper, to the copy. + * + * Checks first if `paper_copy` exists. Since this proc is called from a timer, it's possible that it was removed. + */ +/obj/machinery/photocopier/proc/make_paper_copy() + if(!paper_copy || !toner_cartridge) + return + var/copy_colour = toner_cartridge.charges > 10 ? COLOR_FULL_TONER_BLACK : COLOR_GRAY; + + var/obj/item/paper/copied_paper = paper_copy.copy(/obj/item/paper, loc, FALSE, copy_colour) + + give_pixel_offset(copied_paper) + + copied_paper.name = paper_copy.name + + toner_cartridge.charges -= PAPER_TONER_USE + +/** + * Handles the copying of photos, which can be printed in either color or greyscale. + * + * Checks first if `photo_copy` exists. Since this proc is called from a timer, it's possible that it was removed. + */ +/obj/machinery/photocopier/proc/make_photo_copy() + if(!photo_copy || !toner_cartridge) + return + var/obj/item/photo/copied_pic = new(loc, photo_copy.picture.Copy(color_mode == PHOTO_GREYSCALE ? TRUE : FALSE)) + give_pixel_offset(copied_pic) + toner_cartridge.charges -= PHOTO_TONER_USE + +/** + * Handles the copying of documents. + * + * Checks first if `document_copy` exists. Since this proc is called from a timer, it's possible that it was removed. + */ +/obj/machinery/photocopier/proc/make_document_copy() + if(!document_copy || !toner_cartridge) + return + var/obj/item/documents/photocopy/copied_doc = new(loc, document_copy) + give_pixel_offset(copied_doc) + toner_cartridge.charges -= DOCUMENT_TONER_USE + +/** + * The procedure is called when printing a blank to write off toner consumption. + */ +/obj/machinery/photocopier/proc/make_blank_print() + if(!toner_cartridge) + return + toner_cartridge.charges -= PAPER_TONER_USE + +/** + * Handles the copying of an ass photo. + * + * Calls `check_ass()` first to make sure that `ass` exists, among other conditions. Since this proc is called from a timer, it's possible that it was removed. + * Additionally checks that the mob has their clothes off. + */ +/obj/machinery/photocopier/proc/make_ass_copy() + if(!check_ass() || !toner_cartridge) + return + if(ishuman(ass) && (ass.get_item_by_slot(ITEM_SLOT_ICLOTHING) || ass.get_item_by_slot(ITEM_SLOT_OCLOTHING))) + to_chat(usr, "You feel kind of silly, copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "[ass.p_their()]"] clothes on." ) + return + + var/icon/temp_img + ///NSV13 - Photocopier Integration Merging - Start + if(ishuman(ass)) + var/mob/living/carbon/human/H = ass + var/datum/species/spec = H.dna.species + if(spec.ass_image) + temp_img = icon(spec.ass_image) else - greytoggle = "Greyscale" - updateUsrDialog() + temp_img = icon(H.dna.features["body_model"] == FEMALE ? 'icons/ass/assfemale.png' : 'icons/ass/assmale.png') + else if(isalienadult(ass) || istype(ass, /mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro. + temp_img = icon('icons/ass/assalien.png') + else if(issilicon(ass)) + temp_img = icon('icons/ass/assmachine.png') + ///NSV13 - Photocopier Integration Merging - Stop + else if(isdrone(ass)) //Drones are hot + temp_img = icon('icons/ass/assdrone.png') -/obj/machinery/photocopier/proc/do_insertion(obj/item/O, mob/user) - O.forceMove(src) - to_chat(user, "You insert [O] into [src].") + var/obj/item/photo/copied_ass = new /obj/item/photo(loc) + var/datum/picture/toEmbed = new(name = "[ass]'s Ass", desc = "You see [ass]'s ass on the photo.", image = temp_img) + give_pixel_offset(copied_ass) + toEmbed.psize_x = 128 + toEmbed.psize_y = 128 + copied_ass.set_picture(toEmbed, TRUE, TRUE) + toner_cartridge.charges -= ASS_TONER_USE + +/** + * Inserts the item into the copier. Called in `attackby()` after a human mob clicked on the copier with a paper, photo, or document. + * + * Arugments: + * * object - the object that got inserted. + * * user - the mob that inserted the object. + */ +/obj/machinery/photocopier/proc/do_insertion(obj/item/object, mob/user) + object.forceMove(src) + to_chat(user, "You insert [object] into [src].") flick("photocopier1", src) - updateUsrDialog() -/obj/machinery/photocopier/proc/remove_photocopy(obj/item/O, mob/user) +/** + * Called when someone hits the "remove item" button on the copier UI. + * + * If the user is a silicon, it drops the object at the location of the copier. If the user is not a silicon, it tries to put the object in their hands first. + * Sets `busy` to `FALSE` because if the inserted item is removed, the copier should halt copying. + * + * Arguments: + * * object - the item we're trying to remove. + * * user - the user removing the item. + */ +/obj/machinery/photocopier/proc/remove_photocopy(obj/item/object, mob/user) if(!issilicon(user)) //surprised this check didn't exist before, putting stuff in AI's hand is bad - O.forceMove(user.loc) - user.put_in_hands(O) + object.forceMove(user.loc) + user.put_in_hands(object) else - O.forceMove(drop_location()) - to_chat(user, "You take [O] out of [src].") + object.forceMove(drop_location()) + to_chat(user, "You take [object] out of [src]. [busy ? "The [src] comes to a halt." : ""]") /obj/machinery/photocopier/attackby(obj/item/O, mob/user, params) if(default_unfasten_wrench(user, O)) @@ -210,7 +410,7 @@ else if(!user.temporarilyRemoveItemFromInventory(O)) return - copy = O + paper_copy = O do_insertion(O, user) else to_chat(user, "There is already something in [src]!") @@ -219,7 +419,7 @@ if(copier_empty()) if(!user.temporarilyRemoveItemFromInventory(O)) return - photocopy = O + paper_copy = O do_insertion(O, user) else to_chat(user, "There is already something in [src]!") @@ -228,21 +428,18 @@ if(copier_empty()) if(!user.temporarilyRemoveItemFromInventory(O)) return - doccopy = O + document_copy = O do_insertion(O, user) else to_chat(user, "There is already something in [src]!") else if(istype(O, /obj/item/toner)) - if(toner <= 0) - if(!user.temporarilyRemoveItemFromInventory(O)) - return - qdel(O) - toner = 40 - to_chat(user, "You insert [O] into [src].") - updateUsrDialog() - else - to_chat(user, "This cartridge is not yet ready for replacement! Use up the rest of the toner.") + if(toner_cartridge) + to_chat(user, "[src] already has a toner cartridge inserted. Remove that one first.") + return + O.forceMove(src) + toner_cartridge = O + to_chat(user, "You insert [O] into [src].") else if(istype(O, /obj/item/areaeditor/blueprints)) to_chat(user, "The Blueprint is too large to put into the copier. You need to find something else to record the document.") @@ -251,13 +448,13 @@ /obj/machinery/photocopier/obj_break(damage_flag) . = ..() - if(. && toner > 0) + if(. && toner_cartridge.charges) new /obj/effect/decal/cleanable/oil(get_turf(src)) - toner = 0 + toner_cartridge.charges = 0 /obj/machinery/photocopier/MouseDrop_T(mob/target, mob/user) check_ass() //Just to make sure that you can re-drag somebody onto it after they moved off. - if (!istype(target) || target.anchored || target.buckled || !Adjacent(target) || !user.canUseTopic(src, BE_CLOSE) || target == ass || copier_blocked()) + if(!istype(target) || target.anchored || target.buckled || !Adjacent(target) || !user.canUseTopic(src, BE_CLOSE) || target == ass || copier_blocked()) return add_fingerprint(user) if(target == user) @@ -277,49 +474,63 @@ target.forceMove(drop_location()) ass = target - if(photocopy) - photocopy.forceMove(drop_location()) - visible_message("[photocopy] is shoved out of the way by [ass]!") - photocopy = null + if(photo_copy) + photo_copy.forceMove(drop_location()) + visible_message("[photo_copy] is shoved out of the way by [ass]!") + photo_copy = null + + else if(paper_copy) + paper_copy.forceMove(drop_location()) + visible_message("[paper_copy] is shoved out of the way by [ass]!") + paper_copy = null + + else if(document_copy) + document_copy.forceMove(drop_location()) + visible_message("[document_copy] is shoved out of the way by [ass]!") + document_copy = null - else if(copy) - copy.forceMove(drop_location()) - visible_message("[copy] is shoved out of the way by [ass]!") - copy = null - updateUsrDialog() +/obj/machinery/photocopier/Exited(atom/movable/AM, atom/newloc) + check_ass() // There was potentially a person sitting on the copier, check if they're still there. + return ..() +/** + * Checks the living mob `ass` exists and its location is the same as the photocopier. + * + * Returns FALSE if `ass` doesn't exist or is not at the copier's location. Returns TRUE otherwise. + */ /obj/machinery/photocopier/proc/check_ass() //I'm not sure wether I made this proc because it's good form or because of the name. if(!ass) - return 0 - if(ass.loc != src.loc) + return FALSE + if(ass.loc != loc) ass = null - updateUsrDialog() - return 0 - else if(ishuman(ass)) - if(!ass.get_item_by_slot(ITEM_SLOT_ICLOTHING) && !ass.get_item_by_slot(ITEM_SLOT_OCLOTHING)) - return 1 - else - return 0 - else - return 1 + return FALSE + return TRUE +/** + * Checks if the copier is deleted, or has something dense at its location. Called in `MouseDrop_T()` + */ /obj/machinery/photocopier/proc/copier_blocked() if(QDELETED(src)) return if(loc.density) - return 1 + return TRUE for(var/atom/movable/AM in loc) if(AM == src) continue if(AM.density) - return 1 - return 0 + return TRUE + return FALSE +/** + * Checks if there is an item inserted into the copier or a mob sitting on top of it. + * + * Return `FALSE` is the copier has something inside of it. Returns `TRUE` if it doesn't. + */ /obj/machinery/photocopier/proc/copier_empty() - if(copy || photocopy || check_ass()) - return 0 + if(paper_copy || photo_copy || document_copy || check_ass()) + return FALSE else - return 1 + return TRUE /* * Toner cartridge @@ -348,3 +559,11 @@ desc = "Why would ANYONE need THIS MUCH TONER?" charges = 200 max_charges = 200 + +#undef PHOTO_GREYSCALE +#undef PHOTO_COLOR +#undef PAPER_TONER_USE +#undef PHOTO_TONER_USE +#undef DOCUMENT_TONER_USE +#undef ASS_TONER_USE +#undef MAX_COPIES_AT_ONCE diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 105221a43b5..01c1e2f625f 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -16,6 +16,14 @@ user.visible_message("[user] stamps 'VOID' on [user.p_their()] forehead, then promptly falls over, dead.") return (OXYLOSS) +/obj/item/stamp/get_writing_implement_details() + var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/simple/paper) + return list( + interaction_mode = MODE_STAMPING, + stamp_icon_state = icon_state, + stamp_class = sheet.icon_class_name(icon_state) + ) + /obj/item/stamp/quartermaster name = "quartermaster's rubber stamp" icon_state = "stamp-qm" @@ -61,11 +69,9 @@ icon_state = "stamp-deny" dye_color = DYE_REDCOAT -//NSV13 Paperwork Changes START /obj/item/stamp/void name = "VOID rubber stamp" icon_state = "stamp-void" -//NSV13 Paperwork Changes END /obj/item/stamp/clown name = "clown's rubber stamp" diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index f922afdc462..22030255ab7 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -163,7 +163,7 @@ return FALSE size_x = CLAMP(size_x, 0, CAMERA_PICTURE_SIZE_HARD_LIMIT) size_y = CLAMP(size_y, 0, CAMERA_PICTURE_SIZE_HARD_LIMIT) - var/list/desc = list("This is a photo of an area of [size_x+1] meters by [size_y+1] meters.") + var/list/desc = list("This is a photo of an area of [(2*size_x)+1] meters by [(2*size_y)+1] meters.") var/list/mobs_spotted = list() var/list/dead_spotted = list() var/ai_user = isAI(user) @@ -189,12 +189,15 @@ mobs += M if(locate(/obj/item/areaeditor/blueprints) in T) blueprints = TRUE - for(var/i in mobs) - var/mob/M = i + for(var/mob/M in mobs) + // No describing invisible stuff (except ghosts)! + if((M.invisibility >= SEE_INVISIBLE_LIVING || M.alpha <= 50) && !isobserver(M)) + continue mobs_spotted += M if(M.stat == DEAD) dead_spotted += M - desc += M.get_photo_description(src) + // |=, let's not spam "You can also see a ... thing? 8 times" + desc |= M.get_photo_description(src) var/psize_x = (size_x * 2 + 1) * world.icon_size var/psize_y = (size_y * 2 + 1) * world.icon_size diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index cc0100f5bd7..07e892d3001 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -409,7 +409,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne /obj/item/paper/guides/jobs/engi/gravity_gen name = "paper- 'Generate your own gravity!'" - info = {"

              Gravity Generator Instructions For Dummies

              + default_raw_text = {"

              Gravity Generator Instructions For Dummies

              Surprisingly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of energy and you have yourself gravity! You can turn the machine on or off when required but you must remember that the generator will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR PROTECTIVE CLOTHING.

              diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index cf50ff8da71..5e012b7c865 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -316,13 +316,13 @@ /obj/anomaly/singularity/proc/event() - var/numb = rand(1,4) + var/numb = rand(1,4) //NSV13 switch(numb) - if(1)//EMP - emp_area() + //if(1)//EMP //NSV13 + // emp_area() //NSV13 if(2)//Stun mobs who lack optic scanners mezzer() - if(3,4) //Sets all nearby mobs on fire + if(1,3,4) //Sets all nearby mobs on fire //NSV13 if(current_size < STAGE_SIX) return 0 combust_mobs() @@ -359,7 +359,6 @@ "You look directly into the [src.name] and feel weak.") return - /obj/anomaly/singularity/proc/emp_area() empulse(src, 8, 10) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 0d07ec43188..0d90881ed49 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -497,4 +497,4 @@ /obj/item/paper/guides/jobs/engi/solars name = "paper- 'Going green! Setup your own solar array instructions.'" - info = "

              Welcome

              At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or plasma! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.

              You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!

              Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the sun's movements and to send commands to the solar panels to change direction with the sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.

              Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.

              That's all to it, be safe, be green!

              " + default_raw_text = "

              Welcome

              At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or plasma! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.

              You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!

              Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the sun's movements and to send commands to the solar panels to change direction with the sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.

              Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.

              That's all to it, be safe, be green!

              " diff --git a/code/modules/projectiles/ammunition/energy/stun.dm b/code/modules/projectiles/ammunition/energy/stun.dm index 8c4f0b7fa86..af3b25b15c9 100644 --- a/code/modules/projectiles/ammunition/energy/stun.dm +++ b/code/modules/projectiles/ammunition/energy/stun.dm @@ -13,7 +13,7 @@ e_cost = 100 /obj/item/ammo_casing/energy/electrode/hos - e_cost = 400 + e_cost = 200 //NSV13 - set back to 200 from 400 /obj/item/ammo_casing/energy/electrode/old e_cost = 1000 diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 7880f3f1e44..2e9386a3a8f 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -29,9 +29,13 @@ /obj/item/ammo_box/magazine/wt550m9/rubber name = "wt550 rubber magazine (4.6x30mm rubber)" - icon_state = "46x30mmt-20" + icon_state = "46x30mmtp-20" ammo_type = /obj/item/ammo_casing/c46x30mm/rubber +/obj/item/ammo_box/magazine/wt550m9/rubber/update_icon() + ..() + icon_state = "46x30mmtp-[round(ammo_count(),4)]" + /obj/item/ammo_box/magazine/uzim9mm name = "uzi magazine (9mm)" icon_state = "uzi9mm-32" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index afdf67e14dd..a5593e66de8 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -127,7 +127,7 @@ QDEL_NULL(chambered) if(azoom) QDEL_NULL(azoom) - UnregisterSignal(list(COMSIG_TWOHANDED_WIELD, COMSIG_TWOHANDED_UNWIELD)) + UnregisterSignal(src, list(COMSIG_TWOHANDED_WIELD, COMSIG_TWOHANDED_UNWIELD)) return ..() /obj/item/gun/handle_atom_del(atom/A) diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index e77f300ccf9..b8a1d69898e 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -121,7 +121,7 @@ pin = null can_charge = FALSE ammo_x_offset = 1 - ammo_type = list(/obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/disabler) + ammo_type = list(/obj/item/ammo_casing/energy/laser, /obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/disabler) //NSV13 - readded electrode selfcharge = 1 var/reactor_overloaded var/fail_tick = 0 diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index 6fa46cbc4b3..66383b7a847 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -7,6 +7,7 @@ name = "beanbag slug" damage = 5 stamina = 55 + paralyze = 10 //NSV13 - added paralyze /obj/item/projectile/bullet/incendiary/shotgun name = "incendiary slug" diff --git a/code/modules/projectiles/projectile/energy/accelerator_particle.dm b/code/modules/projectiles/projectile/energy/accelerator_particle.dm index 035a9d5c8f8..9a4d926dc2b 100644 --- a/code/modules/projectiles/projectile/energy/accelerator_particle.dm +++ b/code/modules/projectiles/projectile/energy/accelerator_particle.dm @@ -8,7 +8,7 @@ projectile_phasing = (ALL & (~PASSMOB) & (~PASSBLOB) & (~PASSANOMALY) & (~PASSMACHINE)) suppressed = SUPPRESSED_VERY //we don't want every machine that gets hit to spam chat hitsound = null - irradiate = 60 + irradiate = 600 //NSV13 -Multiplied this by 10 var/energy = 10 var/stop_dissipate = FALSE @@ -18,14 +18,14 @@ /obj/item/projectile/energy/accelerated_particle/weak range = 8 energy = 5 - irradiate = 30 + irradiate = 300 //NSV13 -Multiplied this by 10 stop_dissipate = TRUE //because its supposed to keep the singu/tesla stable at the same size /obj/item/projectile/energy/accelerated_particle/strong range = 15 energy = 15 - irradiate = 90 + irradiate = 900 //NSV13 -Multiplied this by 10 /obj/item/projectile/energy/accelerated_particle/powerful range = 20 energy = 50 - irradiate = 300 + irradiate = 3000 //NSV13 -Multiplied this by 10 diff --git a/code/modules/projectiles/projectile/energy/ebow.dm b/code/modules/projectiles/projectile/energy/ebow.dm index 3b4d5750323..612a11b5d89 100644 --- a/code/modules/projectiles/projectile/energy/ebow.dm +++ b/code/modules/projectiles/projectile/energy/ebow.dm @@ -2,12 +2,12 @@ /obj/item/projectile/energy/bolt //ebow bolts name = "bolt" icon_state = "cbbolt" - damage = 15 + damage = 8 //NSV13 - set damage back to 8 damage_type = TOX nodamage = FALSE - stamina = 60 + //NSV13 - removed stamina and knockdown, added paralyze + paralyze = 100 eyeblur = 10 - knockdown = 10 slur = 5 /obj/item/projectile/energy/bolt/radbolt diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 9f42c08f3a4..d165cdd8943 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -583,15 +583,17 @@ /obj/item/projectile/magic/wipe/proc/possession_test(var/mob/living/carbon/M) var/datum/brain_trauma/special/imaginary_friend/trapped_owner/trauma = M.gain_trauma(/datum/brain_trauma/special/imaginary_friend/trapped_owner) var/poll_message = "Do you want to play as [M.real_name]?" + var/ban_key = BAN_ROLE_ALL_ANTAGONISTS if(M.mind?.assigned_role) poll_message = "[poll_message] Job:[M.mind.assigned_role]." if(M.mind?.special_role) poll_message = "[poll_message] Status:[M.mind.special_role]." else if(M.mind) - var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist/) + var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist) if(A) poll_message = "[poll_message] Status:[A.name]." - var/list/mob/dead/observer/candidates = pollCandidatesForMob(poll_message, ROLE_PAI, null, FALSE, 100, M) + ban_key = A.banning_key + var/list/mob/dead/observer/candidates = pollCandidatesForMob(poll_message, ban_key, null, 10 SECONDS, M, ignore_category = FALSE) if(M.stat == DEAD)//boo. return if(LAZYLEN(candidates)) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 494c0864b84..13d8d0a8aca 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -56,7 +56,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/reaction_obj(obj/O, reac_volume) if(istype(O, /obj/item/paper)) var/obj/item/paper/paperaffected = O - paperaffected.clearpaper() + paperaffected.clear_paper() to_chat(usr, "[paperaffected]'s ink washes away.") if(istype(O, /obj/item/book)) if(reac_volume >= 5) diff --git a/code/modules/recycling/conveyor.dm b/code/modules/recycling/conveyor.dm index 973e27e6e14..732db5c9c66 100644 --- a/code/modules/recycling/conveyor.dm +++ b/code/modules/recycling/conveyor.dm @@ -195,6 +195,11 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) if(!operating) SSmove_manager.stop_looping(convayable, SSconveyors) return + //NSV13 - account for potentially changing location between sig send and reaching this. + if(convayable.loc != source) + SSmove_manager.stop_looping(convayable, SSconveyors) + return + //NSV13 end. start_conveying(convayable) /obj/machinery/conveyor/proc/conveyable_exit(datum/source, atom/convayable, direction) @@ -483,5 +488,5 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/item/paper/guides/conveyor name = "paper- 'Nano-it-up U-build series, #9: Build your very own conveyor belt, in SPACE'" - info = "

              Congratulations!

              You are now the proud owner of the best conveyor set available for space mail order! We at Nano-it-up know you love to prepare your own structures without wasting time, so we have devised a special streamlined assembly procedure that puts all other mail-order products to shame!

              Firstly, you need to link the conveyor switch assembly to each of the conveyor belt assemblies. After doing so, you simply need to install the belt assemblies onto the floor, et voila, belt built. Our special Nano-it-up smart switch will detected any linked assemblies as far as the eye can see! This convenience, you can only have it when you Nano-it-up. Stay nano!

              " + default_raw_text = "

              Congratulations!

              You are now the proud owner of the best conveyor set available for space mail order! We at Nano-it-up know you love to prepare your own structures without wasting time, so we have devised a special streamlined assembly procedure that puts all other mail-order products to shame!

              Firstly, you need to link the conveyor switch assembly to each of the conveyor belt assemblies. After doing so, you simply need to install the belt assemblies onto the floor, et voila, belt built. Our special Nano-it-up smart switch will detected any linked assemblies as far as the eye can see! This convenience, you can only have it when you Nano-it-up. Stay nano!

              " #undef MAX_CONVEYOR_ITEMS_MOVE diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm index 345cbcad35d..d9fc56a01e8 100644 --- a/code/modules/religion/rites.dm +++ b/code/modules/religion/rites.dm @@ -395,8 +395,7 @@ var/turf/altar_turf = get_turf(religious_tool) new /obj/effect/temp_visual/cult/blood/long(altar_turf) new /obj/effect/temp_visual/dir_setting/curse/long(altar_turf) - var/list/jobbans = list(ROLE_BRAINWASHED, ROLE_DEATHSQUAD, ROLE_DRONE, ROLE_LAVALAND, ROLE_MIND_TRANSFER, ROLE_POSIBRAIN, ROLE_SENTIENCE) - var/list/candidates = pollGhostCandidates("Do you wish to be resurrected as a Holy Summoned Undead?", jobbans, null, FALSE,) + var/list/candidates = pollGhostCandidates("Do you wish to be resurrected as a Holy Summoned Undead?", ROLE_HOLY_SUMMONED, null, FALSE) if(!length(candidates)) to_chat(user, "The soul pool is empty...") new /obj/effect/gibspawner/human/bodypartless(altar_turf) @@ -558,8 +557,7 @@ var/turf/altar_turf = get_turf(religious_tool) new /obj/effect/temp_visual/bluespace_fissure/long(altar_turf) user.visible_message("A tear in reality appears above the altar!") - var/list/jobbans = list(ROLE_BRAINWASHED, ROLE_DEATHSQUAD, ROLE_DRONE, ROLE_LAVALAND, ROLE_MIND_TRANSFER, ROLE_POSIBRAIN, ROLE_SENTIENCE) - var/list/candidates = pollGhostCandidates("Do you wish to be summoned as a Holy Carp?", jobbans, null, FALSE) + var/list/candidates = pollGhostCandidates("Do you wish to be summoned as a Holy Carp?", ROLE_HOLY_SUMMONED, null, FALSE) if(!length(candidates)) new /obj/effect/gibspawner/generic(altar_turf) user.visible_message("The carp pool was not strong enough to bring forth a space carp.") diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 263267ff5a3..ef41b92fa3f 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -21,7 +21,7 @@ build_path = /obj/item/circuitboard/computer/arcade/orion_trail category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_ALL - + /datum/design/board/amputation_adventure name = "Computer Design (Mediborg's Amputation Adventure)" desc = "Allows for the construction of circuit boards used to build a new Mediborg's Amputation Adventure machine." @@ -192,11 +192,11 @@ category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING -/datum/design/board/prisonmanage +/datum/design/board/prisonmanage // NSV13 modified - fix name = "Computer Design (Prisoner Management Console)" desc = "Allows for the construction of circuit boards used to build a prisoner management console." id = "prisonmanage" - build_path = /obj/item/circuitboard/computer/prisoner + build_path = /obj/item/circuitboard/computer/prisoner/management category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 8bc9bef90d5..70640b542e3 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -618,7 +618,7 @@ build_path = /obj/item/circuitboard/machine/mass_driver category = list ("Misc. Machinery") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SERVICE - + /datum/design/board/ore_silo name = "Machine Design (Ore Silo)" @@ -675,3 +675,11 @@ build_path = /obj/item/circuitboard/machine/xenoartifact_inbox category = list ("Research Machinery") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/board/fax + name = "Machine Design (Fax Machine)" + desc = "The circuit board for a fax machine." + id = "fax" + build_path = /obj/item/circuitboard/machine/fax + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SERVICE + category = list("Misc. Machinery") diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 1607bf477d0..3ff55c52fed 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -366,6 +366,17 @@ category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY +//NSV13 - readded the mech taser +/datum/design/mech_taser + name = "Exosuit Weapon (PBT \"Pacifier\" Mounted Taser)" + desc = "A weapon for combat exosuits. Shoots non-lethal stunning electrodes." + id = "mech_taser" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser + materials = list(MAT_METAL=10000) + construction_time = 100 + category = list("Exosuit Equipment") + /datum/design/mech_sleeper name = "Exosuit Medical (Mounted Sleeper)" desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 79a9b2632af..c7d830cef11 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -13,7 +13,7 @@ design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani", "dest_tagger", "handlabel", "larry", "package_wrap", "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", "paystand", "space_heater", "beaker", "large_beaker", "bucket", "xlarge_beaker", "sec_rshot", "sec_beanbag_slug", "sec_bshot", "sec_slug", "sec_Islug", "sec_Brslug", "sec_dart", "sec_38", "sec_38b", - "rglass","plasteel","plastitanium","plasmaglass","plasmareinforcedglass","titaniumglass","plastitaniumglass","plumbing_rcd", "antivirus", "glasses_prescription", "light_replacer", "xenoa_labeler", "nanocarbon_glass", "durasteel", "duranium", "coffeemaker", "coffeepot", "coffee_cartridge", "syrup_bottle") //NSV13 - BLOOD FOR THE BLOOD GOD, COFFEE FOR THE NAVY!! + "rglass","plasteel","plastitanium","plasmaglass","plasmareinforcedglass","titaniumglass","plastitaniumglass","plumbing_rcd", "antivirus", "glasses_prescription", "light_replacer", "xenoa_labeler", "nanocarbon_glass", "durasteel", "duranium", "coffeemaker", "coffeepot", "coffee_cartridge", "syrup_bottle", "fax") //NSV13 - BLOOD FOR THE BLOOD GOD, COFFEE FOR THE NAVY!! /datum/techweb_node/mmi id = "mmi" @@ -408,7 +408,7 @@ display_name = "Basic Robotics Research" description = "Programmable machines that make our lives lazier." prereq_ids = list("base") - design_ids = list("paicard") + design_ids = list("paicard","botnavbeacon") //NSV13 - Navbeacon Refactoring research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -418,7 +418,7 @@ display_name = "Advanced Robotics Research" description = "It can even do the dishes!" prereq_ids = list("robotics") - design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_trashofholding", "borg_upgrade_advancedmop") + design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_trashofholding", "borg_upgrade_advancedmop", "borg_upgrade_clamp") //NSV13 - Cargo Borgs research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -878,7 +878,7 @@ display_name = "Electric Weapons" description = "Weapons using electric technology" prereq_ids = list("weaponry", "adv_power" , "emp_basic") - design_ids = list("stunrevolver", "ioncarbine") + design_ids = list("stunrevolver", "stunshell", "ioncarbine") //NSV13 - readded stunshell research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -935,13 +935,13 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 -/datum/techweb_node/ballistic_weapons +/datum/techweb_node/ballistic_weapons // NSV13 - glock additions id = "ballistic_weapons" tech_tier = 3 display_name = "Ballistic Weaponry" description = "This isn't research.. This is reverse-engineering!" prereq_ids = list("weaponry") - design_ids = list("mag_oldsmg", "mag_oldsmg_ap", "mag_oldsmg_ic", "mag_oldsmg_rubber") + design_ids = list("mag_oldsmg", "mag_oldsmg_ap", "mag_oldsmg_ic", "mag_oldsmg_rubber", "glock_lethalmag", "glock_rubbermag", "glock_apmag", "glock_incmag", "glock_lethalammo", "glock_rubberammo", "glock_apammo", "glock_incammo") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 diff --git a/code/modules/research/xenobiology/crossbreeding/warping.dm b/code/modules/research/xenobiology/crossbreeding/warping.dm index 87fda9a828e..2ae9c6b746d 100644 --- a/code/modules/research/xenobiology/crossbreeding/warping.dm +++ b/code/modules/research/xenobiology/crossbreeding/warping.dm @@ -713,7 +713,7 @@ GLOBAL_DATUM(blue_storage, /obj/item/storage/backpack/holding/bluespace) return to_chat(user, "The rune is trying to repair [host.name]'s soul!") - var/list/candidates = pollCandidatesForMob("Do you want to replace the soul of [host.name]?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, host, POLL_IGNORE_SHADE)//todo: fix desc + var/list/candidates = pollCandidatesForMob("Do you want to replace the soul of [host.name]?", ROLE_SENTIENCE, null, 5 SECONDS, host, POLL_IGNORE_SHADE) if(length(candidates) && !host.key) //check if anyone wanted to play as the dead person and check if no one's in control of the body one last time. var/mob/dead/observer/ghost = pick(candidates) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 221e42c019c..dfa8e98894e 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -748,7 +748,7 @@ to_chat(user, "You offer [src] to [SM]...") being_used = TRUE - var/list/candidates = pollCandidatesForMob("Do you want to play as [SM.name]? (Sentience Potion)", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, SM, POLL_IGNORE_SENTIENCE_POTION) // see poll_ignore.dm + var/list/candidates = pollCandidatesForMob("Do you want to play as [SM.name]? (Sentience Potion)", ROLE_SENTIENCE, null, 5 SECONDS, SM) if(length(candidates)) var/mob/dead/observer/C = pick(candidates) SM.key = C.key diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index 7e1e2b1c871..be12c9f2f6c 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -115,6 +115,7 @@ outfit = /datum/outfit/lavaland_syndicate assignedrole = "Lavaland Syndicate" use_cooldown = TRUE + banType = ROLE_LAVALAND_SYNDICATE /obj/effect/mob_spawn/human/lavaland_syndicate/special(mob/living/new_spawn) new_spawn.grant_language(/datum/language/codespeak) @@ -133,7 +134,7 @@ implants = list(/obj/item/implant/weapons_auth) /datum/outfit/lavaland_syndicate/post_equip(mob/living/carbon/human/H) - H.faction |= ROLE_SYNDICATE + H.faction |= FACTION_SYNDICATE /obj/effect/mob_spawn/human/lavaland_syndicate/comms name = "Syndicate Comms Agent" diff --git a/code/modules/ruins/lavalandruin_code/biodome_clown_planet.dm b/code/modules/ruins/lavalandruin_code/biodome_clown_planet.dm index 5b9a1b86b0d..529d48cf551 100644 --- a/code/modules/ruins/lavalandruin_code/biodome_clown_planet.dm +++ b/code/modules/ruins/lavalandruin_code/biodome_clown_planet.dm @@ -1,7 +1,7 @@ //////lavaland clown planet papers /obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/escape - info = "If you dare not continue down this path of madness, escape can be found through the chute in this room." + default_raw_text = "If you dare not continue down this path of madness, escape can be found through the chute in this room." /obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/hope - info = "Abandon hope, all ye who enter here." + default_raw_text = "Abandon hope, all ye who enter here." diff --git a/code/modules/ruins/lavalandruin_code/surface.dm b/code/modules/ruins/lavalandruin_code/surface.dm index 72896c08a34..c58fb67fd61 100644 --- a/code/modules/ruins/lavalandruin_code/surface.dm +++ b/code/modules/ruins/lavalandruin_code/surface.dm @@ -2,7 +2,7 @@ /obj/item/paper/fluff/stations/lavaland/surface/henderson_report name = "Important Notice - Mrs. Henderson" - info = "Nothing of interest to report." + default_raw_text = "Nothing of interest to report." //ratvar diff --git a/code/modules/ruins/lavalandruin_code/syndicate_base.dm b/code/modules/ruins/lavalandruin_code/syndicate_base.dm index 62e7c65cd09..18f918aaa25 100644 --- a/code/modules/ruins/lavalandruin_code/syndicate_base.dm +++ b/code/modules/ruins/lavalandruin_code/syndicate_base.dm @@ -23,4 +23,4 @@ /obj/item/paper/fluff/ruins/syndicomms name = "paper - 'Communication Frequencies'" - info = "Greetings, Agent. I see you have awaken from your cryogenic slumber. This either means that the new Nanotransen space project is complete and operational in a nearby sector, or that Ashlanders have launched an assault on our base. We recommend you get rid of any pests and do not confuse them for humans.

              In case you don't remember how to do your job, all you need is the equipment we provided; your Chameleon Mask, your Agent ID, and the intercom nearby. A nearby shelf contains all the names and jobs of the current Nanotransen employees. Assign their name and job to your ID, and your Mask will mimic the voice of whoever you are impersonating.

              Oh, one more thing. Here is a list of frequencies for you to troll on:
              • 145.9 - Common Channel
              • 144.7 - Private AI Channel
              • 135.9 - Security Channel
              • 135.7 - Engineering Channel
              • 135.5 - Medical Channel
              • 135.3 - Command Channel
              • 135.1 - Science Channel
              • 134.9 - Service Channel
              • 134.7 - Supply Channel
              • 136.1 - Exploration Channel
              • " + default_raw_text = "Greetings, Agent. I see you have awaken from your cryogenic slumber. This either means that the new Nanotransen space project is complete and operational in a nearby sector, or that Ashlanders have launched an assault on our base. We recommend you get rid of any pests and do not confuse them for humans.

                In case you don't remember how to do your job, all you need is the equipment we provided; your Chameleon Mask, your Agent ID, and the intercom nearby. A nearby shelf contains all the names and jobs of the current Nanotransen employees. Assign their name and job to your ID, and your Mask will mimic the voice of whoever you are impersonating.

                Oh, one more thing. Here is a list of frequencies for you to troll on:
                • 145.9 - Common Channel
                • 144.7 - Private AI Channel
                • 135.9 - Security Channel
                • 135.7 - Engineering Channel
                • 135.5 - Medical Channel
                • 135.3 - Command Channel
                • 135.1 - Science Channel
                • 134.9 - Service Channel
                • 134.7 - Supply Channel
                • 136.1 - Exploration Channel
                • " diff --git a/code/modules/ruins/spaceruin_code/DJstation.dm b/code/modules/ruins/spaceruin_code/DJstation.dm index 29814d8c1fb..3be98b064e3 100644 --- a/code/modules/ruins/spaceruin_code/DJstation.dm +++ b/code/modules/ruins/spaceruin_code/DJstation.dm @@ -2,4 +2,4 @@ /obj/item/paper/fluff/ruins/djstation name = "paper - 'DJ Listening Outpost'" - info = "Welcome new owner!

                  You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio frequencies. Here is a step by step guide to start listening in on those saucy radio channels:
                  1. Equip yourself with a multitool
                  2. Use the multitool on the relay.
                  3. Turn it on. It has already been configured for you to listen on.
                  Simple as that. Now to listen to the private channels, you'll have to configure the intercoms. They are located on the front desk. Here is a list of frequencies for you to listen on.
                  • 145.9 - Common Channel
                  • 144.7 - Private AI Channel
                  • 135.9 - Security Channel
                  • 135.7 - Engineering Channel
                  • 135.5 - Medical Channel
                  • 135.3 - Command Channel
                  • 135.1 - Science Channel
                  • 134.9 - Service Channel
                  • 134.7 - Supply Channel
                  • " + default_raw_text = "Welcome new owner!

                    You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio frequencies. Here is a step by step guide to start listening in on those saucy radio channels:
                    1. Equip yourself with a multitool
                    2. Use the multitool on the relay.
                    3. Turn it on. It has already been configured for you to listen on.
                    Simple as that. Now to listen to the private channels, you'll have to configure the intercoms. They are located on the front desk. Here is a list of frequencies for you to listen on.
                    • 145.9 - Common Channel
                    • 144.7 - Private AI Channel
                    • 135.9 - Security Channel
                    • 135.7 - Engineering Channel
                    • 135.5 - Medical Channel
                    • 135.3 - Command Channel
                    • 135.1 - Science Channel
                    • 134.9 - Service Channel
                    • 134.7 - Supply Channel
                    • " diff --git a/code/modules/ruins/spaceruin_code/TheDerelict.dm b/code/modules/ruins/spaceruin_code/TheDerelict.dm index 58e257d5877..ccd0bba0fce 100644 --- a/code/modules/ruins/spaceruin_code/TheDerelict.dm +++ b/code/modules/ruins/spaceruin_code/TheDerelict.dm @@ -1,19 +1,19 @@ /////////// thederelict items /obj/item/paper/fluff/ruins/thederelict/equipment - info = "If the equipment breaks there should be enough spare parts in our engineering storage near the north east solar array." + default_raw_text = "If the equipment breaks there should be enough spare parts in our engineering storage near the north east solar array." name = "Equipment Inventory" /obj/item/paper/fluff/ruins/thederelict/syndie_mission name = "Mission Objectives" - info = "The Syndicate have cunningly disguised a Syndicate Uplink as your PDA. Simply enter the code \"678 Bravo\" into the ringtone select to unlock its hidden features.

                      Objective #1. Kill the God damn AI in a fire blast that it rocks the station. Success!
                      Objective #2. Escape alive. Failed." + default_raw_text = "The Syndicate have cunningly disguised a Syndicate Uplink as your PDA. Simply enter the code \"678 Bravo\" into the ring tone selection to unlock its hidden features.

                      Objective #1. Kill the God damn AI in a fire blast that it rocks the station. Success!
                      Objective #2. Escape alive. Failed." /obj/item/paper/fluff/ruins/thederelict/nukie_objectives name = "Objectives of a Nuclear Operative" - info = "Objective #1: Destroy the station with a nuclear device." + default_raw_text = "Objective #1: Destroy the station with a nuclear device." /obj/item/paper/crumpled/bloody/ruins/thederelict/unfinished name = "unfinished paper scrap" desc = "Looks like someone started shakily writing a will in space common, but were interrupted by something bloody..." - info = "I, Victor Belyakov, do hereby leave my _- " + default_raw_text = "I, Victor Belyakov, do hereby leave my _- " diff --git a/code/modules/ruins/spaceruin_code/asteroid10.dm b/code/modules/ruins/spaceruin_code/asteroid10.dm index 0331853911b..bd199772d29 100644 --- a/code/modules/ruins/spaceruin_code/asteroid10.dm +++ b/code/modules/ruins/spaceruin_code/asteroid10.dm @@ -2,7 +2,7 @@ /obj/item/paper/fluff/ruins/asteroid10/welcome name = "Welcome to Dog Heaven!" - info = "The ambassador of Dog Heaven welcomes you to our humble retreat!" + default_raw_text = "The ambassador of Dog Heaven welcomes you to our humble retreat!" /obj/item/reagent_containers/food/snacks/nugget/dog name = "dog treat" diff --git a/code/modules/ruins/spaceruin_code/asteroid4.dm b/code/modules/ruins/spaceruin_code/asteroid4.dm index 65245706038..9ee576361f1 100644 --- a/code/modules/ruins/spaceruin_code/asteroid4.dm +++ b/code/modules/ruins/spaceruin_code/asteroid4.dm @@ -1,4 +1,4 @@ /////////// asteroid4 items /obj/item/paper/fluff/ruins/asteroid4/extraction - info = "Extraction was successful! The disguise was perfect, the clowns never knew what hit 'em! Once I get back to base with the bananium samples I'll be rich, I tell you! RICH!" + default_raw_text = "Extraction was successful! The disguise was perfect, the clowns never knew what hit 'em! Once I get back to base with the bananium samples I'll be rich, I tell you! RICH!" diff --git a/code/modules/ruins/spaceruin_code/bigderelict1.dm b/code/modules/ruins/spaceruin_code/bigderelict1.dm index a86fb3c1462..9e2a0957547 100644 --- a/code/modules/ruins/spaceruin_code/bigderelict1.dm +++ b/code/modules/ruins/spaceruin_code/bigderelict1.dm @@ -1,8 +1,8 @@ /////////// bigderelict1 items /obj/item/paper/crumpled/ruins/bigderelict1/manifest - info = "A crumpled piece of manifest paper, out of the barely legible pen writing, you can see something about a warning involving whatever was originally in the crate." + default_raw_text = "A crumpled piece of manifest paper, out of the barely legible pen writing, you can see something about a warning involving whatever was originally in the crate." /obj/item/paper/crumpled/ruins/bigderelict1/coward icon_state = "scrap_bloodied" - info = "If anyone finds this, please, don't let my kids know I died a coward.." + default_raw_text = "If anyone finds this, please, don't let my kids know I died a coward.." diff --git a/code/modules/ruins/spaceruin_code/cloning_lab.dm b/code/modules/ruins/spaceruin_code/cloning_lab.dm index 338f62ee779..dee4c3bb9aa 100644 --- a/code/modules/ruins/spaceruin_code/cloning_lab.dm +++ b/code/modules/ruins/spaceruin_code/cloning_lab.dm @@ -1,6 +1,6 @@ /obj/item/paper/fluff/ruins/exp_cloning/manual name = "paper - 'H-11 Cloning Apparatus Manual" - info = {"

                      Getting Started

                      + default_raw_text = {"

                      Getting Started

                      Congratulations, you are testing the H-11 experimental cloning device!
                      Using the H-11 is almost as simple as brain surgery! Simply insert the target humanoid into the scanning chamber and select the clone option to initiate cloning!
                      That's all there is to it!
                      @@ -14,7 +14,7 @@ /obj/item/paper/fluff/ruins/exp_cloning/log name = "experiment log" - info = {"

                      Day 1

                      + default_raw_text = {"

                      Day 1

                      We are very excited to be part of the first crew of the SC Irmanda!
                      This ship is made to test an innovative FTL technology. I had some concerns at first, \ but the engineers assure me that it is safe and there is absolutely no risk of the external wings breaking off from the acceleration.
                      diff --git a/code/modules/ruins/spaceruin_code/crashedclownship.dm b/code/modules/ruins/spaceruin_code/crashedclownship.dm index dd5b04908cc..34d70881bc4 100644 --- a/code/modules/ruins/spaceruin_code/crashedclownship.dm +++ b/code/modules/ruins/spaceruin_code/crashedclownship.dm @@ -1,4 +1,4 @@ /////////// crashedclownship items /obj/item/paper/fluff/ruins/crashedclownship/true_nation - info = "The call has gone out! Our ancestral home has been rediscovered! Not a small patch of land, but a true clown nation, a true Clown Planet! We're on our way home at last!" + default_raw_text = "The call has gone out! Our ancestral home has been rediscovered! Not a small patch of land, but a true clown nation, a true Clown Planet! We're on our way home at last!" diff --git a/code/modules/ruins/spaceruin_code/crashedship.dm b/code/modules/ruins/spaceruin_code/crashedship.dm index e1251091682..911deacd27d 100644 --- a/code/modules/ruins/spaceruin_code/crashedship.dm +++ b/code/modules/ruins/spaceruin_code/crashedship.dm @@ -27,14 +27,14 @@ /obj/item/paper/fluff/ruins/crashedship/scribbled name = "scribbled note" - info = "The next person who takes one of my screwdrivers gets stabbed with one. They are MINE. - Love, Madsen" + default_raw_text = "The next person who takes one of my screwdrivers gets stabbed with one. They are MINE. - Love, Madsen" /obj/item/paper/fluff/ruins/crashedship/captains_log name = "Captain's log entry" - info = "I'm no scientist, but judging from the design and components, it seems to be some kind of teleporter. This thing is gonna be worth a lot of cash to the right man. The boys are excited, as they have every right to be, and I've let them crack into that case of beer we got. I normally wouldn't allow such a thing, but this is a time for celebration! It's not like a couple drinks will hurt anything." + default_raw_text = "I'm no scientist, but judging from the design and components, it seems to be some kind of teleporter. This thing is gonna be worth a lot of cash to the right man. The boys are excited, as they have every right to be, and I've let them crack into that case of beer we got. I normally wouldn't allow such a thing, but this is a time for celebration! It's not like a couple drinks will hurt anything." /obj/item/paper/fluff/ruins/crashedship/old_diary name = "Old Diary" - info = "DEAR DIARY: So we was doing our typical route when the captain says we've been picking up weird signals on some backwater planet. Madsen wanted to stay on course but he ain't the captain, so we went out of the way to check it out. There was lots of rocks on the way, but we got to the planet fine. Found a big fancy camp with nobody around and this big metal donut thing with NT stamps all over it right in the middle. Case of beer too. Captain reckons we can pass it off to some buyer in the Syndicate. Ingram says it's bad luck and that someone is going to come look for it but it sounds like better money than selling bad meat to jerky companies." + default_raw_text = "DEAR DIARY: So we was doing our typical route when the captain says we've been picking up weird signals on some backwater planet. Madsen wanted to stay on course but he ain't the captain, so we went out of the way to check it out. There was lots of rocks on the way, but we got to the planet fine. Found a big fancy camp with nobody around and this big metal donut thing with NT stamps all over it right in the middle. Case of beer too. Captain reckons we can pass it off to some buyer in the Syndicate. Ingram says it's bad luck and that someone is going to come look for it but it sounds like better money than selling bad meat to jerky companies." diff --git a/code/modules/ruins/spaceruin_code/deepstorage.dm b/code/modules/ruins/spaceruin_code/deepstorage.dm index dcf48fe91d7..bcfc3be8f54 100644 --- a/code/modules/ruins/spaceruin_code/deepstorage.dm +++ b/code/modules/ruins/spaceruin_code/deepstorage.dm @@ -2,13 +2,13 @@ /obj/item/paper/fluff/ruins/deepstorage/water_concern name = "water concerns" - info = "To whoever keeps it up with the long, hot showers: you're going on the next ice-mining trip. If you feel the need to use up all the damn water during your 'relaxation' time, you sure as hell are gonna work for all that water!" + default_raw_text = "To whoever keeps it up with the long, hot showers: you're going on the next ice-mining trip. If you feel the need to use up all the damn water during your 'relaxation' time, you sure as hell are gonna work for all that water!" /obj/item/paper/fluff/ruins/deepstorage/hydro_notice name = "hydroponics notice" - info = "Hydroponics is our life and blood here, if it dies then so do we. Keep the damn plants watered!" + default_raw_text = "Hydroponics is our life and blood here, if it dies then so do we. Keep the damn plants watered!" /obj/item/paper/fluff/ruins/deepstorage/recycling_notice name = "recycling notice" - info = "Please make sure to throw all excess waste into the crusher in the back! It's amazing what you can get out of what others consider 'garbage' if you run it through a giant crusher enough times." + default_raw_text = "Please make sure to throw all excess waste into the crusher in the back! It's amazing what you can get out of what others consider 'garbage' if you run it through a giant crusher enough times." diff --git a/code/modules/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/ruins/spaceruin_code/hilbertshotel.dm index 73bfc7f395b..ea141a15cdc 100644 --- a/code/modules/ruins/spaceruin_code/hilbertshotel.dm +++ b/code/modules/ruins/spaceruin_code/hilbertshotel.dm @@ -465,6 +465,7 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337) back = /obj/item/storage/backpack/satchel/leather suit = /obj/item/clothing/suit/toggle/labcoat use_cooldown = TRUE + banType = ROLE_HOTEL_STAFF /obj/item/paper/crumpled/docslogs name = "Research Logs" @@ -472,7 +473,7 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337) /obj/item/paper/crumpled/docslogs/Initialize(mapload) . = ..() GLOB.hhmysteryRoomNumber = rand(1, SHORT_REAL_LIMIT) - info = {"

                      Research Logs

                      + default_raw_text = {"

                      Research Logs

                      I might just be onto something here!
                      The strange space-warping properties of bluespace have been known about for awhile now, but I might be on the verge of discovering a new way of harnessing it.
                      It's too soon to say for sure, but this might be the start of something quite important!
                      @@ -498,7 +499,7 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337) /obj/item/paper/crumpled/robertsworkjournal name = "Work Journal" - info = {"

                      First Week!

                      + default_raw_text = {"

                      First Week!

                      First week on the new job. It's a secretarial position, but hey, whatever pays the bills. Plus it seems like some interesting stuff goes on here.
                      Doc says its best that I don't openly talk about his research with others, I guess he doesn't want it getting out or something. I've caught myself slipping a few times when talking to others, it's hard not to brag about something this cool!
                      I'm not really sure why I'm choosing to journal this. Doc seems to log everything. He says it's incase he discovers anything important.
                      @@ -524,7 +525,7 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337) /obj/item/paper/crumpled/bloody/docsdeathnote name = "note" - info = {"This is it isn't it?
                      + default_raw_text = {"This is it isn't it?
                      No one's coming to help, that much has become clear.
                      Sure, it's lonely, but do I have much choice? At least I brought the analyzer with me, they shouldn't be able to find me without it.
                      Who knows who's waiting for me out there. Its either die out there in their hands, or die a slower, slightly more comfortable death in here.
                      diff --git a/code/modules/ruins/spaceruin_code/listeningstation.dm b/code/modules/ruins/spaceruin_code/listeningstation.dm index 8efeaaabff9..4f0c122c15c 100644 --- a/code/modules/ruins/spaceruin_code/listeningstation.dm +++ b/code/modules/ruins/spaceruin_code/listeningstation.dm @@ -1,7 +1,7 @@ /////////// listening station /obj/item/paper/fluff/ruins/listeningstation/reports - info = "Nothing of interest to report." + default_raw_text = "Nothing of interest to report." /obj/item/paper/fluff/ruins/listeningstation/reports/july name = "july report" @@ -20,26 +20,26 @@ /obj/item/paper/fluff/ruins/listeningstation/reports/june name = "june report" - info = "Nanotrasen communications have been noticeably less frequent recently. The pirate radio station I found last month has been transmitting pro-Nanotrasen propaganda. I will continue to monitor it." + default_raw_text = "Nanotrasen communications have been noticeably less frequent recently. The pirate radio station I found last month has been transmitting pro-Nanotrasen propaganda. I will continue to monitor it." /obj/item/paper/fluff/ruins/listeningstation/reports/may name = "may report" - info = "Nothing of real interest to report this month. I have intercepted faint transmissions from what appears to be some sort of pirate radio station. They do not appear to be relevant to my assignment." + default_raw_text = "Nothing of real interest to report this month. I have intercepted faint transmissions from what appears to be some sort of pirate radio station. They do not appear to be relevant to my assignment." /obj/item/paper/fluff/ruins/listeningstation/reports/april name = "april report" - info = "A good start to the operation: intercepted Nanotrasen military communications. A convoy is scheduled to transfer nuclear warheads to a new military base. This is as good a chance as any to get our hands on some heavy weaponry, I suggest we take it." + default_raw_text = "A good start to the operation: intercepted Nanotrasen military communications. A convoy is scheduled to transfer nuclear warheads to a new military base. This is as good a chance as any to get our hands on some heavy weaponry, I suggest we take it." /obj/item/paper/fluff/ruins/listeningstation/receipt name = "receipt" - info = "1 x Stechkin pistol - $600
                      1 x silencer - $200
                      shipping charge - $4360
                      total - $5160" + default_raw_text = "1 x Stechkin pistol - $600
                      1 x silencer - $200
                      shipping charge - $4360
                      total - $5160" /obj/item/paper/fluff/ruins/listeningstation/odd_report name = "odd report" - info = "I wonder how much longer they will accept my empty reports. They will cancel the case soon without results. When the pickup comes, I will tell them I have lost faith in our cause, and beg them to consider a diplomatic solution. How many nuclear teams have been dispatched with those nukes? I must try and prevent more from ever being sent. If they will not listen to reason, I will detonate the warehouse myself. Maybe some day in the immediate future, space will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that stabilized your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should it ever rear its ugly head again. -DonkCo Operative #451" + default_raw_text = "I wonder how much longer they will accept my empty reports. They will cancel the case soon without results. When the pickup comes, I will tell them I have lost faith in our cause, and beg them to consider a diplomatic solution. How many nuclear teams have been dispatched with those nukes? I must try and prevent more from ever being sent. If they will not listen to reason, I will detonate the warehouse myself. Maybe some day in the immediate future, space will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that stabilized your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should it ever rear its ugly head again. -DonkCo Operative #451" /obj/item/paper/fluff/ruins/listeningstation/briefing name = "mission briefing" - info = "Mission Details: You have been assigned to a newly constructed listening post constructed within an asteroid in Nanotrasen space to monitor their plasma mining operations. Accurate intel is crucial to the success of our operatives onboard, do not fail us." + default_raw_text = "Mission Details: You have been assigned to a newly constructed listening post constructed within an asteroid in Nanotrasen space to monitor their plasma mining operations. Accurate intel is crucial to the success of our operatives onboard, do not fail us." diff --git a/code/modules/ruins/spaceruin_code/oldstation.dm b/code/modules/ruins/spaceruin_code/oldstation.dm index 0e77de54c14..fea81998002 100644 --- a/code/modules/ruins/spaceruin_code/oldstation.dm +++ b/code/modules/ruins/spaceruin_code/oldstation.dm @@ -2,28 +2,28 @@ /obj/item/paper/fluff/ruins/oldstation name = "Cryo Awakening Alert" - info = "**WARNING**

                      Catastrophic damage sustained to station. Powernet exhausted to reawaken crew.

                      Immediate Objectives

                      1: Activate emergency power generator
                      2: Lift station lockdown on the bridge

                      Please locate the 'Damage Report' on the bridge for a detailed situation report." + default_raw_text = "**WARNING**

                      Catastrophic damage sustained to station. Powernet exhausted to reawaken crew.

                      Immediate Objectives

                      1: Activate emergency power generator
                      2: Lift station lockdown on the bridge

                      Please locate the 'Damage Report' on the bridge for a detailed situation report." /obj/item/paper/fluff/ruins/oldstation/damagereport name = "Damage Report" - info = "*Damage Report*

                      Alpha Station - Destroyed

                      Beta Station - Catastrophic Damage. Medical, destroyed. Atmospherics, partially destroyed. Engine Core, destroyed.

                      Charlie Station - Intact. Loss of oxygen to eastern side of main corridor.

                      Delta Station - Intact. WARNING: Unknown force occupying Delta Station. Intent unknown. Species unknown. Numbers unknown.

                      Recommendation - Reestablish station powernet via solar array. Reestablish station atmospherics system to restore air." + default_raw_text = "*Damage Report*

                      Alpha Station - Destroyed

                      Beta Station - Catastrophic Damage. Medical, destroyed. Atmospherics, partially destroyed. Engine Core, destroyed.

                      Charlie Station - Intact. Loss of oxygen to eastern side of main corridor.

                      Delta Station - Intact. WARNING: Unknown force occupying Delta Station. Intent unknown. Species unknown. Numbers unknown.

                      Recommendation - Reestablish station powernet via solar array. Reestablish station atmospherics system to restore air." /obj/item/paper/fluff/ruins/oldstation/protosuit name = "B01-RIG Hardsuit Report" - info = "*Prototype Hardsuit*

                      The B01-RIG Hardsuit is a prototype powered exoskeleton. Based off of a recovered pre-void war era united Earth government powered military \ + default_raw_text = "*Prototype Hardsuit*

                      The B01-RIG Hardsuit is a prototype powered exoskeleton. Based off of a recovered pre-void war era united Earth government powered military \ exosuit, the RIG Hardsuit is a breakthrough in Hardsuit technology, and is the first post-void war era Hardsuit that can be safely used by an operator.

                      The B01 however suffers \ a myriad of constraints. It is slow and bulky to move around, it lacks any significant armor plating against direct attacks and its internal heads up display is unfinished, \ resulting in the user being unable to see long distances.

                      The B01 is unlikely to see any form of mass production, but will serve as a base for future Hardsuit developments." /obj/item/paper/fluff/ruins/oldstation/protohealth name = "Health Analyser Report" - info = "*Health Analyser*

                      The portable Health Analyser is essentially a handheld variant of a health analyser. Years of research have concluded with this device which is \ + default_raw_text = "*Health Analyser*

                      The portable Health Analyser is essentially a handheld variant of a health analyser. Years of research have concluded with this device which is \ capable of diagnosing even the most critical, obscure or technical injuries any humanoid entity is suffering in an easy to understand format that even a non-trained health professional \ can understand.

                      The health analyser is expected to go into full production as standard issue medical kit." /obj/item/paper/fluff/ruins/oldstation/protogun name = "K14 Energy Gun Report" - info = "*K14-Multiphase Energy Gun*

                      The K14 Prototype Energy Gun is the first Energy Rifle that has been successfully been able to not only hold a larger ammo charge \ + default_raw_text = "*K14-Multiphase Energy Gun*

                      The K14 Prototype Energy Gun is the first Energy Rifle that has been successfully been able to not only hold a larger ammo charge \ than other gun models, but is capable of swapping between different energy projectile types on command with no incidents.

                      The weapon still suffers several drawbacks, its alternative, \ non laser fire mode, can only fire one round before exhausting the energy cell, the weapon also remains prohibitively expensive, nonetheless NT Market Research fully believe this weapon \ will form the backbone of our Energy weapon catalogue.

                      The K14 is expected to undergo revision to fix the ammo issues, the K15 is expected to replace the 'stun' setting with a \ @@ -31,23 +31,23 @@ /obj/item/paper/fluff/ruins/oldstation/protosing name = "Singularity Generator" - info = "*Singularity Generator*

                      Modern power generation typically comes in two forms, a Fusion Generator or a Fission Generator. Fusion provides the best space to power \ + default_raw_text = "*Singularity Generator*

                      Modern power generation typically comes in two forms, a Fusion Generator or a Fission Generator. Fusion provides the best space to power \ ratio, and is typically seen on military or high security ships and stations, however Fission reactors require the usage of expensive, and rare, materials in its construction.. Fission generators are massive and bulky, and require a large reserve of uranium to power, however they are extremely cheap to operate and oft need little maintenance once \ operational.

                      The Singularity aims to alter this, a functional Singularity is essentially a controlled Black Hole, a Black Hole that generates far more power than Fusion or Fission \ generators can ever hope to produce. " /obj/item/paper/fluff/ruins/oldstation/protoinv name = "Laboratory Inventory" - info = "*Inventory*

                      (1) Prototype Hardsuit

                      (1)Health Analyser

                      (1)Prototype Energy Gun

                      (1)Singularity Generation Disk

                      DO NOT REMOVE WITHOUT \ + default_raw_text = "*Inventory*

                      (1) Prototype Hardsuit

                      (1)Health Analyser

                      (1)Prototype Energy Gun

                      (1)Singularity Generation Disk

                      DO NOT REMOVE WITHOUT \ THE CAPTAIN AND RESEARCH DIRECTOR'S AUTHORISATION" /obj/item/paper/fluff/ruins/oldstation/report name = "Crew Reawakening Report" - info = "Artificial Program's report to surviving crewmembers.

                      Crew were placed into cryostasis on March 10th, 2445.

                      Crew were awoken from cryostasis around June, 2557.

                      \ + default_raw_text = "Artificial Program's report to surviving crewmembers.

                      Crew were placed into cryostasis on March 10th, 2445.

                      Crew were awoken from cryostasis around June, 2557.

                      \ SIGNIFICANT EVENTS OF NOTE
                      1: The primary radiation detectors were taken offline after 112 years due to power failure, secondary radiation detectors showed no residual \ radiation on station. Deduction, primarily detector was malfunctioning and was producing a radiation signal when there was none.

                      2: A data burst from a nearby Nanotrasen Space \ Station was received, this data burst contained research data that has been uploaded to our RnD labs.

                      3: Unknown invasion force has occupied Delta station." /obj/item/paper/fluff/ruins/oldstation/generator_manual name = "S.U.P.E.R.P.A.C.M.A.N.-type portable generator manual" - info = "You can barely make out a faded sentence...

                      Wrench down the generator on top of a wire node connected to either a SMES input terminal or the power grid." + default_raw_text = "You can barely make out a faded sentence...

                      Wrench down the generator on top of a wire node connected to either a SMES input terminal or the power grid." diff --git a/code/modules/ruins/spaceruin_code/originalcontent.dm b/code/modules/ruins/spaceruin_code/originalcontent.dm index 5da28af26d6..595e6af8be9 100644 --- a/code/modules/ruins/spaceruin_code/originalcontent.dm +++ b/code/modules/ruins/spaceruin_code/originalcontent.dm @@ -8,21 +8,21 @@ /obj/item/paper/pamphlet/ruin/originalcontent/stickman name = "Painting - 'BANG'" - info = "This picture depicts a crudely-drawn stickman firing a crudely-drawn gun." + default_raw_text = "This picture depicts a crudely-drawn stickman firing a crudely-drawn gun." icon_state = "painting4" /obj/item/paper/pamphlet/ruin/originalcontent/treeside name = "Painting - 'Treeside'" - info = "This picture depicts a sunny day on a lush hillside, set under a shaded tree." + default_raw_text = "This picture depicts a sunny day on a lush hillside, set under a shaded tree." icon_state = "painting1" /obj/item/paper/pamphlet/ruin/originalcontent/pennywise name = "Painting - 'Pennywise'" - info = "This picture depicts a smiling clown. Something doesn't feel right about this.." + default_raw_text = "This picture depicts a smiling clown. Something doesn't feel right about this.." icon_state = "painting3" /obj/item/paper/pamphlet/ruin/originalcontent/yelling name = "Painting - 'Hands-On-Face'" - info = "This picture depicts a man yelling on a bridge for no apparent reason." + default_raw_text = "This picture depicts a man yelling on a bridge for no apparent reason." icon_state = "painting2" diff --git a/code/modules/ruins/spaceruin_code/spacehotel.dm b/code/modules/ruins/spaceruin_code/spacehotel.dm index 69eebd8535e..b070b12a0bc 100644 --- a/code/modules/ruins/spaceruin_code/spacehotel.dm +++ b/code/modules/ruins/spaceruin_code/spacehotel.dm @@ -3,10 +3,10 @@ /obj/item/paper/fluff/ruins/spacehotel/notice name = "!NOTICE!" - info = "!NOTICE!

                      We are expecting arriving guests soon from a nearby station! Stay sharp and make sure guests enjoy their time spent here. Don't think you can sneak off while they're here, either.
                      " + default_raw_text = "!NOTICE!

                      We are expecting arriving guests soon from a nearby station! Stay sharp and make sure guests enjoy their time spent here. Don't think you can sneak off while they're here, either.
                      " /obj/item/paper/pamphlet/ruin/spacehotel name = "hotel pamphlet" - info = "
                      The Twin Nexus Hotel

                      A place of Sanctuary


                      Welcome to The Twin-Nexus Hotel, \[insert name here]! The loyal staff stride to their best effort to cater for the best possible experience for all space(wo)men! If you have any questions or comments, please ask one of our on-board staff for more information.
                      " + default_raw_text = "
                      The Twin Nexus Hotel

                      A place of Sanctuary


                      Welcome to The Twin-Nexus Hotel, \[insert name here]! The loyal staff stride to their best effort to cater for the best possible experience for all space(wo)men! If you have any questions or comments, please ask one of our on-board staff for more information.
                      " diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 82906e0dbf3..63bc1b28a81 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -319,11 +319,11 @@ All ShuttleMove procs go here . = ..() var/turf/T = loc hide(T.intact) - if(codes["patrol"]) + if(codes[NAVBEACON_PATROL_MODE]) //NSV13 - Navbeacon refactor if(!GLOB.navbeacons["[z]"]) GLOB.navbeacons["[z]"] = list() GLOB.navbeacons["[z]"] += src //Register with the patrol list! - if(codes["delivery"]) + if(codes[NAVBEACON_DELIVERY_MODE]) //NSV13 - Navbeacon refactor GLOB.deliverybeacons += src GLOB.deliverybeacontags += location diff --git a/code/modules/shuttle/super_cruise/orbital_poi_generator/objective_types/assassination.dm b/code/modules/shuttle/super_cruise/orbital_poi_generator/objective_types/assassination.dm index 06fed366a7d..88ae992e973 100644 --- a/code/modules/shuttle/super_cruise/orbital_poi_generator/objective_types/assassination.dm +++ b/code/modules/shuttle/super_cruise/orbital_poi_generator/objective_types/assassination.dm @@ -35,7 +35,7 @@ /datum/orbital_objective/assassination/generate_objective_stuff(turf/chosen_turf) var/mob/living/carbon/human/created_human = new(chosen_turf) //Maybe polling ghosts would be better than the shintience code - created_human.set_playable() + created_human.set_playable(ROLE_SURVIVALIST) created_human.mind_initialize() //Remove nearby dangers for(var/mob/living/simple_animal/hostile/SA in range(10, created_human)) @@ -131,7 +131,7 @@ glasses = /obj/item/clothing/glasses/chameleon belt = /obj/item/storage/belt/chameleon l_pocket = /obj/item/stamp/chameleon - r_pocket = /obj/item/pda/chameleon + r_pocket = /obj/item/modular_computer/tablet/pda/chameleon id = /obj/item/card/id/syndicate/anyone neck = /obj/item/clothing/neck/chameleon head = /obj/item/clothing/head/chameleon diff --git a/code/modules/shuttle/super_cruise/orbital_poi_generator/objective_types/vip_extraction.dm b/code/modules/shuttle/super_cruise/orbital_poi_generator/objective_types/vip_extraction.dm index a9204ff81f0..c9d288670df 100644 --- a/code/modules/shuttle/super_cruise/orbital_poi_generator/objective_types/vip_extraction.dm +++ b/code/modules/shuttle/super_cruise/orbital_poi_generator/objective_types/vip_extraction.dm @@ -36,7 +36,7 @@ /datum/orbital_objective/vip_recovery/generate_objective_stuff(turf/chosen_turf) var/mob/living/carbon/human/created_human = new(chosen_turf) //Maybe polling ghosts would be better than the shintience code - created_human.set_playable() + created_human.set_playable(ROLE_EXPLORATION_VIP) created_human.mind_initialize() //Remove nearby dangers for(var/mob/living/simple_animal/hostile/SA in range(10, created_human)) @@ -112,7 +112,7 @@ belt = /obj/item/gun/energy/e_gun l_pocket = /obj/item/pen back = /obj/item/storage/backpack/satchel - r_pocket = /obj/item/pda/heads + r_pocket = /obj/item/modular_computer/tablet/pda/heads l_hand = /obj/item/clothing/head/helmet/space/fragile id = /obj/item/card/id/away/old diff --git a/code/modules/shuttle/super_cruise/orbital_poi_generator/ruin_generator/mapping.dm b/code/modules/shuttle/super_cruise/orbital_poi_generator/ruin_generator/mapping.dm index 135cb00bc99..5edca9608a6 100644 --- a/code/modules/shuttle/super_cruise/orbital_poi_generator/ruin_generator/mapping.dm +++ b/code/modules/shuttle/super_cruise/orbital_poi_generator/ruin_generator/mapping.dm @@ -96,7 +96,7 @@ /obj/item/wrench = 6, /obj/item/assembly/signaler = 5, /obj/item/transfer_valve = 6, - /obj/item/cartridge/rd = 3, + /obj/item/computer_hardware/hard_drive/role/rd = 3, /obj/item/radio = 5, /obj/item/camera = 4, /obj/item/encryptionkey/headset_sci = 3, @@ -107,8 +107,8 @@ /obj/item/hand_tele = 1, /obj/item/inducer/sci = 3, /obj/item/megaphone = 1, - /obj/item/pda/roboticist = 3, - /obj/item/pda/toxins = 3, + /obj/item/modular_computer/tablet/pda/roboticist = 3, + /obj/item/modular_computer/tablet/pda/science = 3, /obj/item/pinpointer/crew = 4, /obj/item/reactive_armour_shell = 1, /obj/item/anomaly_neutralizer = 1, diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 68f29b21953..5be5b8e8e7c 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -44,6 +44,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( //Export categories for this run, this is set by console sending the shuttle. var/export_categories = EXPORT_CARGO + // NSV13 - Mail Control - Start + // Switch used to toggle between the ship being open to receiving mail, or not. + var/send_mail = TRUE + // NSV13 - Mail Control - Stop /obj/docking_port/mobile/supply/register() . = ..() @@ -71,7 +75,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( /obj/docking_port/mobile/supply/initiate_docking() if(getDockedId() == "supply_away") // Buy when we leave home. - create_mail() + // NSV13 - Mail Control - Start + if(send_mail) + create_mail() + // NSV13 - Mail Control - Stop buy() . = ..() // Fly/enter transit. if(. != DOCKING_SUCCESS) diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 29ddd49e9f9..5cdee0bd98b 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -29,7 +29,7 @@ . = ..() /obj/machinery/computer/shuttle_flight/syndicate/allowed(mob/M) - if(issilicon(M) && !(ROLE_SYNDICATE in M.faction)) + if(issilicon(M) && !(FACTION_SYNDICATE in M.faction)) return FALSE return ..() diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index 3f58081b78c..56a15709bd9 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -4,15 +4,16 @@ var/goal = 45000 /datum/station_goal/bluespace_tap/get_report() - return {"Bluespace Harvester Experiment
                      - Another research station has developed a device called a Bluespace Harvester. - It reaches through bluespace into other dimensions to shift through them for interesting objects.
                      - Due to unforseen circumstances the large-scale test of the prototype could not be completed on the original research station. It will instead be carried out on your station. - Acquire the circuit board, construct the device over a wire knot and feed it enough power to generate [goal] mining points by shift end. -

                      - Be advised that the device is experimental and might act in slightly unforseen ways if sufficiently powered. -
                      - Nanotrasen Science Directorate"} + return list( + "
                      Bluespace Harvester Experiment", + "Another research station has developed a device called a Bluespace Harvester.", + "It reaches through bluespace into other dimensions to shift through them for interesting objects.", + "Due to unforeseen circumstances the large-scale test of the prototype could not be completed on the original research station. It will instead be carried out on your station.", + "Acquire the circuit board, construct the device over a wire knot and feed it enough power to generate [goal] mining points by shift end.", + "", + "Be advised that the device is experimental and might act in slightly unforeseen ways if sufficiently powered.", + "Nanotrasen Science Directorate
                      ", + ).Join("\n") /datum/station_goal/bluespace_tap/on_report() var/datum/supply_pack/engineering/bluespace_tap/P = SSshuttle.supply_packs[/datum/supply_pack/engineering/bluespace_tap] @@ -427,7 +428,7 @@ /obj/item/paper/bluespace_tap name = "paper- 'The Experimental NT Bluespace Harvester - Mining other universes for science and profit!'" - info = "

                      Important Instructions!

                      Please follow all setup instructions to ensure proper operation.
                      \ + default_raw_text = "

                      Important Instructions!

                      Please follow all setup instructions to ensure proper operation.
                      \ 1. Create a wire node with ample access to spare power. The device operates independently of APCs.
                      \ 2. Create a machine frame as normal on the wire node, taking into account the device's dimensions (3 by 3 meters).
                      \ 3. Insert wiring, circuit board and required components and finish construction according to NT engineering standards.
                      \ diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 591f2bd5ec9..7de93268a14 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -6,11 +6,13 @@ name = "Bluespace Artillery" /datum/station_goal/bluespace_cannon/get_report() - return {"Our military presence is inadequate in your sector. - We need you to construct BSA-[rand(1,99)] Artillery position aboard your ship. - - Base parts are available for shipping via cargo. - -Nanotrasen Naval Command"} //NSV13 + return list( + "
                      Our military presence is inadequate in your sector.", + "We need you to construct BSA-[rand(1,99)] Artillery position aboard your ship.", + "", + "Base parts are available for shipping via cargo.", + "-Nanotrasen Naval Command
                      ", + ).Join("\n") //NSV13 /datum/station_goal/bluespace_cannon/on_report() //Unlock BSA parts diff --git a/code/modules/station_goals/custom_shuttle.dm b/code/modules/station_goals/custom_shuttle.dm index f2f392f1179..3e1a5b0e2e3 100644 --- a/code/modules/station_goals/custom_shuttle.dm +++ b/code/modules/station_goals/custom_shuttle.dm @@ -4,11 +4,12 @@ name = "Custom Shuttle" /datum/station_goal/custom_shuttle/get_report() - return {"Nanotrasen needs a new prototype light cruiser. - We leave it up to you to decide what the shuttle needs to be an effective platform. - - You can create a designator in engineering or purchase one at cargo. - "} + return list( + "
                      Nanotrasen needs a new prototype light cruiser.", + "We leave it up to you to decide what the shuttle needs to be an effective platform.", + "", + "You can create a designator in engineering or purchase one at cargo.
                      ", + ).Join("\n") /datum/station_goal/custom_shuttle/check_completion() if(..()) diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index 9798f06e9c1..49c0d58c5c0 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -32,16 +32,17 @@ .++ /datum/station_goal/dna_vault/get_report() - return {"Our long term prediction systems indicate a 99% chance of system-wide cataclysm in the near future. - We need you to construct a DNA Vault aboard your ship. - - The DNA Vault needs to contain samples of: - [animal_count] unique animal data - [plant_count] unique non-standard plant data - [human_count] unique sapient humanoid DNA data - - Base vault parts are available for shipping via cargo."} //NSV13 - + return list( + "
                      Our long term prediction systems indicate a 99% chance of system-wide cataclysm in the near future.", + "We need you to construct a DNA Vault aboard your ship.", + "", + "The DNA Vault needs to contain samples of:", + "* [animal_count] unique animal data", + "* [plant_count] unique non-standard plant data", + "* [human_count] unique sapient humanoid DNA data", + "", + "Base vault parts are available for shipping via cargo.
                      ", + ).Join("\n") //NSV13 - The Shippening /datum/station_goal/dna_vault/on_report() var/datum/supply_pack/P = SSshuttle.supply_packs[/datum/supply_pack/engineering/dna_vault] diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index e5479f0e414..a71d8cb5dad 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -6,11 +6,12 @@ var/coverage_goal = 500 /datum/station_goal/station_shield/get_report() - return {"The ship is located in a zone full of space debris. - We have a prototype shielding system you must deploy to reduce collision-related accidents. - - You can order the satellites and control systems at cargo. - "} //NSV13 + return list( + "
                      The ship is located in a zone full of space debris.", + "We have a prototype shielding system you must deploy to reduce collision-related accidents.", + "", + "You can order the satellites and control systems at cargo.
                      ", + ).Join("\n") //NSV13 - The Shippening /datum/station_goal/station_shield/check_completion() if(..()) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 9bf4ab9cfc2..b92e729398d 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -75,7 +75,7 @@ var/heavy_burn_msg = "peeling away" /obj/item/bodypart/Initialize(mapload) - ..() + . = ..() name = "[limb_id] [parse_zone(body_zone)]" if(is_dimorphic) limb_gender = pick("m", "f") diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index 724670f502c..77fa192f20b 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -1,119 +1,10 @@ -/proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user) - if(!istype(M)) - return - - var/mob/living/carbon/C - var/obj/item/bodypart/affecting - var/selected_zone = user.zone_selected - - if(iscarbon(M)) - C = M - affecting = C.get_bodypart(check_zone(selected_zone)) - - var/datum/surgery/current_surgery - - for(var/datum/surgery/S in M.surgeries) - if(S.location == selected_zone) - current_surgery = S - - if(!current_surgery) - var/list/all_surgeries = GLOB.surgeries_list.Copy() - var/list/available_surgeries = list() - - for(var/datum/surgery/S in all_surgeries) - if(!S.possible_locs.Find(selected_zone)) - continue - if(affecting) - if(!S.requires_bodypart) - continue - if(S.requires_bodypart_type && !(affecting.bodytype & S.requires_bodypart_type)) - continue - if(S.requires_real_bodypart && affecting.is_pseudopart) - continue - else if(C && S.requires_bodypart) //mob with no limb in surgery zone when we need a limb - continue - if(S.lying_required && (M.mobility_flags & MOBILITY_STAND)) - continue - if(!S.can_start(user, M)) - continue - for(var/path in S.target_mobtypes) - if(istype(M, path)) - available_surgeries[S.name] = S - break - - if(!available_surgeries.len) - return - - var/P = input("Begin which procedure?", "Surgery", null, null) as null|anything in sortList(available_surgeries) - if(P && user && user.Adjacent(M) && (I in user)) - var/datum/surgery/S = available_surgeries[P] - - for(var/datum/surgery/other in M.surgeries) - if(other.location == S.location) - return //during the input() another surgery was started at the same location. - - //we check that the surgery is still doable after the input() wait. - if(C) - affecting = C.get_bodypart(check_zone(selected_zone)) - if(affecting) - if(!S.requires_bodypart) - return - if(S.requires_bodypart_type && !(affecting.bodytype & S.requires_bodypart_type)) - return - else if(C && S.requires_bodypart) - return - if(S.lying_required && (M.mobility_flags & MOBILITY_STAND)) - return - if(!S.can_start(user, M)) - return - - if(S.ignore_clothes || get_location_accessible(M, selected_zone)) - var/datum/surgery/procedure = new S.type(M, selected_zone, affecting) - user.visible_message("[user] drapes [I] over [M]'s [parse_zone(selected_zone)] to prepare for surgery.", - "You drape [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].") - I.balloon_alert(user, "You drape over [parse_zone(selected_zone)].") - - log_combat(user, M, "operated on", null, "(OPERATION TYPE: [procedure.name]) (TARGET AREA: [selected_zone])") - else - I.balloon_alert(user, "[parse_zone(selected_zone)] is covered up!") - - - else if(!current_surgery.step_in_progress) - attempt_cancel_surgery(current_surgery, I, M, user) - - return 1 - -/proc/attempt_cancel_surgery(datum/surgery/S, obj/item/I, mob/living/M, mob/user) - var/selected_zone = user.zone_selected - - if(S.status == 1) - M.surgeries -= S - user.visible_message("[user] removes [I] from [M]'s [parse_zone(selected_zone)].", \ - "You remove [I] from [M]'s [parse_zone(selected_zone)].") - I.balloon_alert(user, "You remove [I] from [parse_zone(selected_zone)].") - qdel(S) - return - - if(S.can_cancel) - var/required_tool_type = TOOL_CAUTERY - var/obj/item/close_tool = user.get_inactive_held_item() - var/is_robotic = S.requires_bodypart_type == BODYTYPE_ROBOTIC - - if(is_robotic) - required_tool_type = TOOL_SCREWDRIVER - - if(iscyborg(user)) - close_tool = locate(/obj/item/cautery) in user.held_items - if(!close_tool) - to_chat(user, "You need to equip a cautery in an inactive slot to stop [M]'s surgery!") - return - else if(close_tool?.tool_behaviour != required_tool_type) - to_chat(user, "You need to hold a [is_robotic ? "screwdriver" : "cautery"] in your inactive hand to stop [M]'s surgery!") - return - M.surgeries -= S - user.visible_message("[user] closes [M]'s [parse_zone(selected_zone)] with [close_tool] and removes [I].", \ - "You close [M]'s [parse_zone(selected_zone)] with [close_tool] and remove [I].") - qdel(S) +//NSV13 - Surgery-Initiation Componentizes - Start +/** + * Removed: + * * attempt_initiate_surgery + * * attempt_cancel_surgery + */ +//NSV13 - Surgery-Initiation Componentizes - Stop /proc/get_location_accessible(mob/M, location) var/covered_locations = 0 //based on body_parts_covered diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm index da07a1205ca..173b47a8529 100644 --- a/code/modules/surgery/organs/ears.dm +++ b/code/modules/surgery/organs/ears.dm @@ -95,7 +95,7 @@ name = "cat ears" icon = 'icons/obj/clothing/hats.dmi' icon_state = "kitty" - bang_protect = -2 + bang_protect = -1 // NSV13 - Allows felinids to man munitions without requiring earmuffs and the muni helmet /obj/item/organ/ears/cat/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = TRUE) ..() diff --git a/code/modules/surgery/organs/tails.dm b/code/modules/surgery/organs/tails.dm index 26692d11664..d9440688d80 100644 --- a/code/modules/surgery/organs/tails.dm +++ b/code/modules/surgery/organs/tails.dm @@ -8,10 +8,14 @@ slot = ORGAN_SLOT_TAIL var/tail_type = "None" -/obj/item/organ/tail/Remove(mob/living/carbon/human/H, special = 0) - ..() - if(H?.dna?.species) - H.dna.species.stop_wagging_tail(H) +/obj/item/organ/tail/proc/is_wagging(mob/living/carbon/human/H) + return FALSE + +/obj/item/organ/tail/proc/set_wagging(mob/living/carbon/human/H, wagging = FALSE) + return FALSE + +/obj/item/organ/tail/proc/toggle_wag(mob/living/carbon/human/H) + return set_wagging(H, !is_wagging(H)) /obj/item/organ/tail/cat name = "cat tail" @@ -34,6 +38,25 @@ color = H.hair_color H.update_body() +/obj/item/organ/tail/cat/is_wagging(mob/living/carbon/human/H) + if(!H?.dna?.species) + return FALSE + return ("waggingtail_human" in H.dna.species.mutant_bodyparts) + +/obj/item/organ/tail/cat/set_wagging(mob/living/carbon/human/H, wagging = FALSE) + . = FALSE + if(!H?.dna?.species) + return FALSE + var/datum/species/species = H.dna.species + if(wagging) + species.mutant_bodyparts -= "tail_human" + species.mutant_bodyparts |= "waggingtail_human" + . = TRUE + else + species.mutant_bodyparts -= "waggingtail_human" + species.mutant_bodyparts |= "tail_human" + H.update_body() + /obj/item/organ/tail/lizard name = "lizard tail" desc = "A severed lizard tail. Somewhere, no doubt, a lizard hater is very pleased with themselves." @@ -63,3 +86,22 @@ tail_type = H.dna.features["tail_lizard"] spines = H.dna.features["spines"] H.update_body() + +/obj/item/organ/tail/lizard/is_wagging(mob/living/carbon/human/H) + if(!H?.dna?.species) + return FALSE + return ("waggingtail_lizard" in H.dna.species.mutant_bodyparts) + +/obj/item/organ/tail/lizard/set_wagging(mob/living/carbon/human/H, wagging = FALSE) + . = FALSE + if(!H?.dna?.species) + return + var/datum/species/species = H.dna.species + if(wagging) + species.mutant_bodyparts -= list("tail_lizard", "spines") + species.mutant_bodyparts |= list("waggingtail_lizard", "waggingspines") + . = TRUE + else + species.mutant_bodyparts -= list("waggingtail_lizard", "waggingspines") + species.mutant_bodyparts |= list("tail_lizard", "spines") + H.update_body() diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 2ecc7f7f552..d69fe42929a 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -77,10 +77,11 @@ if(message[1] != "*") message = lizard_hiss.Replace(message, "sss") message = lizard_hiSS.Replace(message, "SSS") - message = lizard_kss.Replace(message, "$1kss") - message = lizard_kSS.Replace(message, "$1KSS") - message = lizard_ecks.Replace(message, "ecks$1") - message = lizard_eckS.Replace(message, "ECKS$1") + if(owner?.client?.prefs.active_character?.lizard_hiss_style != LIZARD_HISS_LEGACY) + message = lizard_kss.Replace(message, "$1kss") + message = lizard_kSS.Replace(message, "$1KSS") + message = lizard_ecks.Replace(message, "ecks$1") + message = lizard_eckS.Replace(message, "ECKS$1") speech_args[SPEECH_MESSAGE] = message /obj/item/organ/tongue/fly diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index be3f3179e6e..144c08b6287 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -20,15 +20,21 @@ var/requires_tech = FALSE //handles techweb-oriented surgeries, previously restricted to the /advanced subtype (You still need to add designs) var/replaced_by //type; doesn't show up if this type exists. Set to /datum/surgery if you want to hide a "base" surgery (useful for typing parents IE healing.dm just make sure to null it out again) -/datum/surgery/New(surgery_target, surgery_location, surgery_bodypart) +//NSV13 - Surgery QoL - Start +/datum/surgery/New(atom/surgery_target, surgery_location, surgery_bodypart) ..() - if(surgery_target) - target = surgery_target - target.surgeries += src - if(surgery_location) - location = surgery_location - if(surgery_bodypart) - operated_bodypart = surgery_bodypart + if(!surgery_target) + return + target = surgery_target + target.surgeries += src + if(surgery_location) + location = surgery_location + if(!surgery_bodypart) + return + operated_bodypart = surgery_bodypart + + SEND_SIGNAL(surgery_target, COMSIG_MOB_SURGERY_STARTED, src, surgery_location, surgery_bodypart) +//NSV13 - Surgery QoL - Stop /datum/surgery/Destroy() if(target) diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index c49577a3329..a0b07af97b1 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -233,9 +233,11 @@ w_class = WEIGHT_CLASS_TINY attack_verb = list("slapped") -/obj/item/surgical_drapes/attack(mob/living/M, mob/user) - if(!attempt_initiate_surgery(src, M, user)) - ..() +//NSV13 - Surgery-Initiation Componentizes - Start +/obj/item/surgical_drapes/Initialize(mapload) + . = ..() + AddComponent(/datum/component/surgery_initiator, null) +//NSV13 - Surgery-Initiation Componentizes - Stop /obj/item/organ_storage //allows medical cyborgs to manipulate organs without hands name = "organ storage bag" diff --git a/code/modules/tgs/LICENSE b/code/modules/tgs/LICENSE index 221f9e1deb2..2bedf9a63aa 100644 --- a/code/modules/tgs/LICENSE +++ b/code/modules/tgs/LICENSE @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2017 Jordan Brown +Copyright (c) 2017-2023 Jordan Brown Permission is hereby granted, free of charge, to any person obtaining a copy of this software and diff --git a/code/modules/tgs/core/_definitions.dm b/code/modules/tgs/core/_definitions.dm index ebf6d17c2a0..fd98034eb71 100644 --- a/code/modules/tgs/core/_definitions.dm +++ b/code/modules/tgs/core/_definitions.dm @@ -1,2 +1,10 @@ +#if DM_VERSION < 510 +#error The TGS DMAPI does not support BYOND versions < 510! +#endif + #define TGS_UNIMPLEMENTED "___unimplemented" #define TGS_VERSION_PARAMETER "server_service_version" + +#ifndef TGS_DEBUG_LOG +#define TGS_DEBUG_LOG(message) +#endif diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm index 41a04733945..8be96f27404 100644 --- a/code/modules/tgs/core/core.dm +++ b/code/modules/tgs/core/core.dm @@ -42,11 +42,11 @@ var/datum/tgs_version/max_api_version = TgsMaximumApiVersion(); if(version.suite != null && version.minor != null && version.patch != null && version.deprecated_patch != null && version.deprefixed_parameter > max_api_version.deprefixed_parameter) - TGS_ERROR_LOG("Detected unknown API version! Defaulting to latest. Update the DMAPI to fix this problem.") + TGS_ERROR_LOG("Detected unknown Interop API version! Defaulting to latest. Update the DMAPI to fix this problem.") api_datum = /datum/tgs_api/latest if(!api_datum) - TGS_ERROR_LOG("Found unsupported API version: [raw_parameter]. If this is a valid version please report this, backporting is done on demand.") + TGS_ERROR_LOG("Found unsupported Interop API version: [raw_parameter]. If this is a valid version please report this, backporting is done on demand.") return TGS_INFO_LOG("Activating API for version [version.deprefixed_parameter]") @@ -107,6 +107,13 @@ if(api) return api.ApiVersion() +/world/TgsEngine() +#ifdef OPENDREAM + return TGS_ENGINE_TYPE_OPENDREAM +#else + return TGS_ENGINE_TYPE_BYOND +#endif + /world/TgsInstanceName() var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) if(api) @@ -153,4 +160,9 @@ /world/TgsSecurityLevel() var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) if(api) - api.SecurityLevel() + return api.SecurityLevel() + +/world/TgsVisibility() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + return api.Visibility() diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index 68b0330fe86..07ce3b68458 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -11,6 +11,15 @@ TGS_DEFINE_AND_SET_GLOBAL(tgs, null) src.event_handler = event_handler src.version = version +/datum/tgs_api/proc/TerminateWorld() + while(TRUE) + TGS_DEBUG_LOG("About to terminate world. Tick: [world.time], sleep_offline: [world.sleep_offline]") + world.sleep_offline = FALSE // https://www.byond.com/forum/post/2894866 + del(world) + world.sleep_offline = FALSE // just in case, this is BYOND after all... + sleep(1) + TGS_DEBUG_LOG("BYOND DIDN'T TERMINATE THE WORLD!!! TICK IS: [world.time], sleep_offline: [world.sleep_offline]") + /datum/tgs_api/latest parent_type = /datum/tgs_api/v5 @@ -57,3 +66,6 @@ TGS_PROTECT_DATUM(/datum/tgs_api) /datum/tgs_api/proc/SecurityLevel() return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/Visibility() + return TGS_UNIMPLEMENTED diff --git a/code/modules/tgs/includes.dm b/code/modules/tgs/includes.dm index 25e1b8421a8..23b714f9d06 100644 --- a/code/modules/tgs/includes.dm +++ b/code/modules/tgs/includes.dm @@ -13,6 +13,9 @@ #include "v5\_defines.dm" #include "v5\api.dm" +#include "v5\bridge.dm" +#include "v5\chunking.dm" #include "v5\commands.dm" #include "v5\serializers.dm" +#include "v5\topic.dm" #include "v5\undefs.dm" diff --git a/code/modules/tgs/v3210/api.dm b/code/modules/tgs/v3210/api.dm index b881662d71c..666201a3225 100644 --- a/code/modules/tgs/v3210/api.dm +++ b/code/modules/tgs/v3210/api.dm @@ -179,7 +179,7 @@ /datum/tgs_api/v3210/Revision() if(!warned_revison) var/datum/tgs_version/api_version = ApiVersion() - TGS_ERROR_LOG("Use of TgsRevision on [api_version.deprefixed_parameter] origin_commit only points to master!") + TGS_WARNING_LOG("Use of TgsRevision on [api_version.deprefixed_parameter] origin_commit only points to master!") warned_revison = TRUE var/datum/tgs_revision_information/ri = new ri.commit = commit diff --git a/code/modules/tgs/v3210/commands.dm b/code/modules/tgs/v3210/commands.dm index d9bd287465b..e65c816320d 100644 --- a/code/modules/tgs/v3210/commands.dm +++ b/code/modules/tgs/v3210/commands.dm @@ -47,7 +47,7 @@ user.friendly_name = sender // Discord hack, fix the mention if it's only numbers (fuck you IRC trolls) - var/regex/discord_id_regex = regex(@"^[0-9]+$") + var/regex/discord_id_regex = regex("^\[0-9\]+$") if(findtext(sender, discord_id_regex)) sender = "<@[sender]>" @@ -55,4 +55,4 @@ var/datum/tgs_message_content/result = stc.Run(user, params) result = UpgradeDeprecatedCommandResponse(result, command) - return result?.text || TRUE + return result ? result.text : TRUE diff --git a/code/modules/tgs/v4/api.dm b/code/modules/tgs/v4/api.dm index 2f05c386338..945e2e41176 100644 --- a/code/modules/tgs/v4/api.dm +++ b/code/modules/tgs/v4/api.dm @@ -73,7 +73,7 @@ if(cached_json["apiValidateOnly"]) TGS_INFO_LOG("Validating API and exiting...") Export(TGS4_COMM_VALIDATE, list(TGS4_PARAMETER_DATA = "[minimum_required_security_level]")) - del(world) + TerminateWorld() security_level = cached_json["securityLevel"] chat_channels_json_path = cached_json["chatChannelsJson"] @@ -188,7 +188,7 @@ requesting_new_port = TRUE if(!world.OpenPort(0)) //open any port TGS_ERROR_LOG("Unable to open random port to retrieve new port![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() //request a new port export_lock = FALSE @@ -196,16 +196,16 @@ if(!new_port_json) TGS_ERROR_LOG("No new port response from server![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() var/new_port = new_port_json[TGS4_PARAMETER_DATA] if(!isnum(new_port) || new_port <= 0) TGS_ERROR_LOG("Malformed new port json ([json_encode(new_port_json)])![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() if(new_port != world.port && !world.OpenPort(new_port)) TGS_ERROR_LOG("Unable to open port [new_port]![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() requesting_new_port = FALSE while(export_lock) @@ -263,7 +263,12 @@ for(var/I in channels) var/datum/tgs_chat_channel/channel = I ids += channel.id + message = UpgradeDeprecatedChatMessage(message) + + if (!length(channels)) + return + message = list("message" = message.text, "channelIds" = ids) if(intercepted_message_queue) intercepted_message_queue += list(message) @@ -276,7 +281,12 @@ var/datum/tgs_chat_channel/channel = I if (!channel.is_private_channel && ((channel.is_admin_channel && admin_only) || (!channel.is_admin_channel && !admin_only))) channels += channel.id + message = UpgradeDeprecatedChatMessage(message) + + if (!length(channels)) + return + message = list("message" = message.text, "channelIds" = channels) if(intercepted_message_queue) intercepted_message_queue += list(message) diff --git a/code/modules/tgs/v4/commands.dm b/code/modules/tgs/v4/commands.dm index d6d3d718d47..25dd6740e3a 100644 --- a/code/modules/tgs/v4/commands.dm +++ b/code/modules/tgs/v4/commands.dm @@ -40,5 +40,5 @@ var/datum/tgs_message_content/result = sc.Run(u, params) result = UpgradeDeprecatedCommandResponse(result, command) - return result?.text + return result ? result.text : TRUE return "Unknown command: [command]!" diff --git a/code/modules/tgs/v5/README.md b/code/modules/tgs/v5/README.md index 619b58cd724..a8a0c748e7b 100644 --- a/code/modules/tgs/v5/README.md +++ b/code/modules/tgs/v5/README.md @@ -5,6 +5,9 @@ This DMAPI implements bridge requests using HTTP GET requests to TGS. It has no - [__interop_version.dm](./__interop_version.dm) contains the version of the API used between the DMAPI and TGS. - [_defines.dm](./_defines.dm) contains constant definitions. - [api.dm](./api.dm) contains the bulk of the API code. +- [bridge.dm](./bridge.dm) contains functions related to making bridge requests. +- [chunking.dm](./chunking.dm) contains common function for splitting large raw data sets into chunks BYOND can natively process. - [commands.dm](./commands.dm) contains functions relating to `/datum/tgs_chat_command`s. - [serializers.dm](./serializers.dm) contains function to help convert interop `/datum`s into a JSON encodable `list()` format. +- [topic.dm](./topic.dm) contains functions related to processing topic requests. - [undefs.dm](./undefs.dm) Undoes the work of `_defines.dm`. diff --git a/code/modules/tgs/v5/__interop_version.dm b/code/modules/tgs/v5/__interop_version.dm index d0ac7e92ead..616263098fd 100644 --- a/code/modules/tgs/v5/__interop_version.dm +++ b/code/modules/tgs/v5/__interop_version.dm @@ -1 +1 @@ -"5.5.0" +"5.8.0" diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index 7f31c23ef4f..1c7d67d20cd 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -4,15 +4,28 @@ #define DMAPI5_BRIDGE_DATA "data" #define DMAPI5_TOPIC_DATA "tgs_data" -#define DMAPI5_BRIDGE_COMMAND_PORT_UPDATE 0 +#define DMAPI5_BRIDGE_REQUEST_LIMIT 8198 +#define DMAPI5_TOPIC_REQUEST_LIMIT 65528 +#define DMAPI5_TOPIC_RESPONSE_LIMIT 65529 + #define DMAPI5_BRIDGE_COMMAND_STARTUP 1 #define DMAPI5_BRIDGE_COMMAND_PRIME 2 #define DMAPI5_BRIDGE_COMMAND_REBOOT 3 #define DMAPI5_BRIDGE_COMMAND_KILL 4 #define DMAPI5_BRIDGE_COMMAND_CHAT_SEND 5 +#define DMAPI5_BRIDGE_COMMAND_CHUNK 6 #define DMAPI5_PARAMETER_ACCESS_IDENTIFIER "accessIdentifier" #define DMAPI5_PARAMETER_CUSTOM_COMMANDS "customCommands" +#define DMAPI5_PARAMETER_TOPIC_PORT "topicPort" + +#define DMAPI5_CHUNK "chunk" +#define DMAPI5_CHUNK_PAYLOAD "payload" +#define DMAPI5_CHUNK_TOTAL "totalChunks" +#define DMAPI5_CHUNK_SEQUENCE_ID "sequenceId" +#define DMAPI5_CHUNK_PAYLOAD_ID "payloadId" + +#define DMAPI5_MISSING_CHUNKS "missingChunks" #define DMAPI5_RESPONSE_ERROR_MESSAGE "errorMessage" @@ -35,6 +48,7 @@ #define DMAPI5_RUNTIME_INFORMATION_REVISION "revision" #define DMAPI5_RUNTIME_INFORMATION_TEST_MERGES "testMerges" #define DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL "securityLevel" +#define DMAPI5_RUNTIME_INFORMATION_VISIBILITY "visibility" #define DMAPI5_CHAT_UPDATE_CHANNELS "channels" @@ -62,8 +76,11 @@ #define DMAPI5_TOPIC_COMMAND_INSTANCE_RENAMED 4 #define DMAPI5_TOPIC_COMMAND_CHAT_CHANNELS_UPDATE 5 #define DMAPI5_TOPIC_COMMAND_SERVER_PORT_UPDATE 6 -#define DMAPI5_TOPIC_COMMAND_HEARTBEAT 7 +#define DMAPI5_TOPIC_COMMAND_HEALTHCHECK 7 #define DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH 8 +#define DMAPI5_TOPIC_COMMAND_SEND_CHUNK 9 +#define DMAPI5_TOPIC_COMMAND_RECEIVE_CHUNK 10 +#define DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST 11 #define DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE "commandType" #define DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND "chatCommand" @@ -73,6 +90,7 @@ #define DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME "newInstanceName" #define DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE "chatUpdate" #define DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION "newServerVersion" +#define DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE "broadcastMessage" #define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE "commandResponse" #define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE "commandResponseMessage" diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 4bf593f35d3..a5c064a8eaf 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -4,11 +4,16 @@ var/instance_name var/security_level + var/visibility var/reboot_mode = TGS_REBOOT_MODE_NORMAL + /// List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call var/list/intercepted_message_queue + /// List of chat messages list()s that attempted to be sent during a topic call. To be bundled in the result of the call + var/list/offline_message_queue + var/list/custom_commands var/list/test_merges @@ -16,6 +21,18 @@ var/list/chat_channels var/initialized = FALSE + var/initial_bridge_request_received = FALSE + var/datum/tgs_version/interop_version + + var/chunked_requests = 0 + var/list/chunked_topics = list() + + var/detached = FALSE + +/datum/tgs_api/v5/New() + . = ..() + interop_version = version + TGS_DEBUG_LOG("V5 API created: [json_encode(args)]") /datum/tgs_api/v5/ApiVersion() return new /datum/tgs_version( @@ -23,12 +40,13 @@ ) /datum/tgs_api/v5/OnWorldNew(minimum_required_security_level) + TGS_DEBUG_LOG("OnWorldNew()") server_port = world.params[DMAPI5_PARAM_SERVER_PORT] access_identifier = world.params[DMAPI5_PARAM_ACCESS_IDENTIFIER] var/datum/tgs_version/api_version = ApiVersion() - version = null - var/list/bridge_response = Bridge(DMAPI5_BRIDGE_COMMAND_STARTUP, list(DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL = minimum_required_security_level, DMAPI5_BRIDGE_PARAMETER_VERSION = api_version.raw_parameter, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands())) + version = null // we want this to be the TGS version, not the interop version + var/list/bridge_response = Bridge(DMAPI5_BRIDGE_COMMAND_STARTUP, list(DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL = minimum_required_security_level, DMAPI5_BRIDGE_PARAMETER_VERSION = api_version.raw_parameter, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands(), DMAPI5_PARAMETER_TOPIC_PORT = GetTopicPort())) if(!istype(bridge_response)) TGS_ERROR_LOG("Failed initial bridge request!") return FALSE @@ -40,10 +58,12 @@ if(runtime_information[DMAPI5_RUNTIME_INFORMATION_API_VALIDATE_ONLY]) TGS_INFO_LOG("DMAPI validation, exiting...") - del(world) + TerminateWorld() - version = new /datum/tgs_version(runtime_information[DMAPI5_RUNTIME_INFORMATION_SERVER_VERSION]) + initial_bridge_request_received = TRUE + version = new /datum/tgs_version(runtime_information[DMAPI5_RUNTIME_INFORMATION_SERVER_VERSION]) // reassigning this because it can change if TGS updates security_level = runtime_information[DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL] + visibility = runtime_information[DMAPI5_RUNTIME_INFORMATION_VISIBILITY] instance_name = runtime_information[DMAPI5_RUNTIME_INFORMATION_INSTANCE_NAME] var/list/revisionData = runtime_information[DMAPI5_RUNTIME_INFORMATION_REVISION] @@ -90,188 +110,43 @@ initialized = TRUE return TRUE +/datum/tgs_api/v5/proc/GetTopicPort() +#if defined(OPENDREAM) && defined(OPENDREAM_TOPIC_PORT_EXISTS) + return "[world.opendream_topic_port]" +#else + return null +#endif + /datum/tgs_api/v5/proc/RequireInitialBridgeResponse() - while(!version) + TGS_DEBUG_LOG("RequireInitialBridgeResponse()") + var/logged = FALSE + while(!initial_bridge_request_received) + if(!logged) + TGS_DEBUG_LOG("RequireInitialBridgeResponse: Starting sleep") + logged = TRUE + sleep(1) + TGS_DEBUG_LOG("RequireInitialBridgeResponse: Passed") + /datum/tgs_api/v5/OnInitializationComplete() Bridge(DMAPI5_BRIDGE_COMMAND_PRIME) -/datum/tgs_api/v5/proc/TopicResponse(error_message = null) - var/list/response = list() - if(error_message) - response[DMAPI5_RESPONSE_ERROR_MESSAGE] = error_message - return json_encode(response) - return "{}" - /datum/tgs_api/v5/OnTopic(T) + TGS_DEBUG_LOG("OnTopic()") RequireInitialBridgeResponse() + TGS_DEBUG_LOG("OnTopic passed bridge request gate") var/list/params = params2list(T) var/json = params[DMAPI5_TOPIC_DATA] if(!json) + TGS_DEBUG_LOG("No \"[DMAPI5_TOPIC_DATA]\" entry found, ignoring...") return FALSE // continue to /world/Topic - var/list/topic_parameters = json_decode(json) - if(!topic_parameters) - return TopicResponse("Invalid topic parameters json!"); - if(!initialized) - TGS_WARNING_LOG("Missed topic due to not being initialized: [T]") + TGS_WARNING_LOG("Missed topic due to not being initialized: [json]") return TRUE // too early to handle, but it's still our responsibility - var/their_sCK = topic_parameters[DMAPI5_PARAMETER_ACCESS_IDENTIFIER] - if(their_sCK != access_identifier) - return TopicResponse("Failed to decode [DMAPI5_PARAMETER_ACCESS_IDENTIFIER] from: [json]!"); - - var/command = topic_parameters[DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE] - if(!isnum(command)) - return TopicResponse("Failed to decode [DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE] from: [json]!") - - switch(command) - if(DMAPI5_TOPIC_COMMAND_CHAT_COMMAND) - intercepted_message_queue = list() - var/result = HandleCustomCommand(topic_parameters[DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND]) - if(!result) - result = TopicResponse("Error running chat command!") - //TODO: make this not need the decode/encode. - if (length(intercepted_message_queue)) - var/list/result_array = json_decode(result) - result_array[DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES] = intercepted_message_queue - result = json_encode(result_array) - intercepted_message_queue = null - return result - if(DMAPI5_TOPIC_COMMAND_EVENT_NOTIFICATION) - intercepted_message_queue = list() - var/list/event_notification = topic_parameters[DMAPI5_TOPIC_PARAMETER_EVENT_NOTIFICATION] - if(!istype(event_notification)) - return TopicResponse("Invalid [DMAPI5_TOPIC_PARAMETER_EVENT_NOTIFICATION]!") - - var/event_type = event_notification[DMAPI5_EVENT_NOTIFICATION_TYPE] - if(!isnum(event_type)) - return TopicResponse("Invalid or missing [DMAPI5_EVENT_NOTIFICATION_TYPE]!") - - var/list/event_parameters = event_notification[DMAPI5_EVENT_NOTIFICATION_PARAMETERS] - if(event_parameters && !istype(event_parameters)) - return TopicResponse("Invalid or missing [DMAPI5_EVENT_NOTIFICATION_PARAMETERS]!") - - var/list/event_call = list(event_type) - if(event_parameters) - event_call += event_parameters - - if(event_handler != null) - event_handler.HandleEvent(arglist(event_call)) - - var/list/response = list() - response[DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES] = intercepted_message_queue - intercepted_message_queue = null - return json_encode(response) - if(DMAPI5_TOPIC_COMMAND_CHANGE_PORT) - var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT] - if (!isnum(new_port) || !(new_port > 0)) - return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]]") - - if(event_handler != null) - event_handler.HandleEvent(TGS_EVENT_PORT_SWAP, new_port) - - //the topic still completes, miraculously - //I honestly didn't believe byond could do it without exploding - if(!world.OpenPort(new_port)) - return TopicResponse("Port change failed!") - - return TopicResponse() - if(DMAPI5_TOPIC_COMMAND_CHANGE_REBOOT_STATE) - var/new_reboot_mode = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_REBOOT_STATE] - if(!isnum(new_reboot_mode)) - return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_REBOOT_STATE]!") - - if(event_handler != null) - event_handler.HandleEvent(TGS_EVENT_REBOOT_MODE_CHANGE, reboot_mode, new_reboot_mode) - - reboot_mode = new_reboot_mode - return TopicResponse() - if(DMAPI5_TOPIC_COMMAND_INSTANCE_RENAMED) - var/new_instance_name = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME] - if(!istext(new_instance_name)) - return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME]!") - - if(event_handler != null) - event_handler.HandleEvent(TGS_EVENT_INSTANCE_RENAMED, new_instance_name) - - instance_name = new_instance_name - return TopicResponse() - if(DMAPI5_TOPIC_COMMAND_CHAT_CHANNELS_UPDATE) - var/list/chat_update_json = topic_parameters[DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE] - if(!istype(chat_update_json)) - return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE]!") - - DecodeChannels(chat_update_json) - return TopicResponse() - if(DMAPI5_TOPIC_COMMAND_SERVER_PORT_UPDATE) - var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT] - if (!isnum(new_port) || !(new_port > 0)) - return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]]") - - server_port = new_port - return TopicResponse() - if(DMAPI5_TOPIC_COMMAND_HEARTBEAT) - return TopicResponse() - if(DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH) - var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT] - var/error_message = null - if (new_port != null) - if (!isnum(new_port) || !(new_port > 0)) - error_message = "Invalid [DMAPI5_TOPIC_PARAMETER_NEW_PORT]]" - else - server_port = new_port - - var/new_version_string = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION] - if (!istext(new_version_string)) - if(error_message != null) - error_message += ", " - error_message += "Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION]]" - else - var/datum/tgs_version/new_version = new(new_version_string) - if (event_handler) - event_handler.HandleEvent(TGS_EVENT_WATCHDOG_REATTACH, new_version) - - version = new_version - - return json_encode(list(DMAPI5_RESPONSE_ERROR_MESSAGE = error_message, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands())) - - return TopicResponse("Unknown command: [command]") - -/datum/tgs_api/v5/proc/Bridge(command, list/data) - if(!data) - data = list() - - data[DMAPI5_BRIDGE_PARAMETER_COMMAND_TYPE] = command - data[DMAPI5_PARAMETER_ACCESS_IDENTIFIER] = access_identifier - - var/json = json_encode(data) - var/encoded_json = url_encode(json) - - // This is an infinite sleep until we get a response - var/export_response = world.Export("http://127.0.0.1:[server_port]/Bridge?[DMAPI5_BRIDGE_DATA]=[encoded_json]") - if(!export_response) - TGS_ERROR_LOG("Failed export request: [json]") - return - - var/response_json = file2text(export_response["CONTENT"]) - if(!response_json) - TGS_ERROR_LOG("Failed export request, missing content!") - return - - var/list/bridge_response = json_decode(response_json) - if(!bridge_response) - TGS_ERROR_LOG("Failed export request, bad json: [response_json]") - return - - var/error = bridge_response[DMAPI5_RESPONSE_ERROR_MESSAGE] - if(error) - TGS_ERROR_LOG("Failed export request, bad request: [error]") - return - - return bridge_response + return ProcessTopicJson(json, TRUE) /datum/tgs_api/v5/OnReboot() var/list/result = Bridge(DMAPI5_BRIDGE_COMMAND_REBOOT) @@ -314,7 +189,7 @@ TGS_WARNING_LOG("Received legacy string when a [/datum/tgs_message_content] was expected. Please audit all calls to TgsChatBroadcast, TgsChatTargetedBroadcast, and TgsChatPrivateMessage to ensure they use the new /datum.") return new /datum/tgs_message_content(message) -/datum/tgs_api/v5/ChatBroadcast(datum/tgs_message_content/message, list/channels) +/datum/tgs_api/v5/ChatBroadcast(datum/tgs_message_content/message2, list/channels) if(!length(channels)) channels = ChatChannelInfo() @@ -323,43 +198,59 @@ var/datum/tgs_chat_channel/channel = I ids += channel.id - message = UpgradeDeprecatedChatMessage(message) - message = message._interop_serialize() - message[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = ids - if(intercepted_message_queue) - intercepted_message_queue += list(message) - else - Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = message)) + SendChatMessageRaw(message2, ids) -/datum/tgs_api/v5/ChatTargetedBroadcast(datum/tgs_message_content/message, admin_only) +/datum/tgs_api/v5/ChatTargetedBroadcast(datum/tgs_message_content/message2, admin_only) var/list/channels = list() for(var/I in ChatChannelInfo()) var/datum/tgs_chat_channel/channel = I if (!channel.is_private_channel && ((channel.is_admin_channel && admin_only) || (!channel.is_admin_channel && !admin_only))) channels += channel.id - message = UpgradeDeprecatedChatMessage(message) - message = message._interop_serialize() - message[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = channels - if(intercepted_message_queue) - intercepted_message_queue += list(message) - else - Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = message)) + SendChatMessageRaw(message2, channels) + +/datum/tgs_api/v5/ChatPrivateMessage(datum/tgs_message_content/message2, datum/tgs_chat_user/user) + SendChatMessageRaw(message2, list(user.channel.id)) + +/datum/tgs_api/v5/proc/SendChatMessageRaw(datum/tgs_message_content/message2, list/channel_ids) + message2 = UpgradeDeprecatedChatMessage(message2) + + if (!length(channel_ids)) + return -/datum/tgs_api/v5/ChatPrivateMessage(datum/tgs_message_content/message, datum/tgs_chat_user/user) - message = UpgradeDeprecatedChatMessage(message) - message = message._interop_serialize() - message[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = list(user.channel.id) + var/list/data = message2._interop_serialize() + data[DMAPI5_CHAT_MESSAGE_CHANNEL_IDS] = channel_ids if(intercepted_message_queue) - intercepted_message_queue += list(message) + intercepted_message_queue += list(data) + return + + if(offline_message_queue) + offline_message_queue += list(data) + return + + if(detached) + offline_message_queue = list(data) + + WaitForReattach(FALSE) + + data = offline_message_queue + offline_message_queue = null + + for(var/queued_message in data) + SendChatDataRaw(queued_message) else - Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = message)) + SendChatDataRaw(data) + +/datum/tgs_api/v5/proc/SendChatDataRaw(list/data) + Bridge(DMAPI5_BRIDGE_COMMAND_CHAT_SEND, list(DMAPI5_BRIDGE_PARAMETER_CHAT_MESSAGE = data)) /datum/tgs_api/v5/ChatChannelInfo() RequireInitialBridgeResponse() + WaitForReattach(TRUE) return chat_channels.Copy() /datum/tgs_api/v5/proc/DecodeChannels(chat_update_json) + TGS_DEBUG_LOG("DecodeChannels()") var/list/chat_channels_json = chat_update_json[DMAPI5_CHAT_UPDATE_CHANNELS] if(istype(chat_channels_json)) chat_channels.Cut() @@ -384,3 +275,7 @@ /datum/tgs_api/v5/SecurityLevel() RequireInitialBridgeResponse() return security_level + +/datum/tgs_api/v5/Visibility() + RequireInitialBridgeResponse() + return visibility diff --git a/code/modules/tgs/v5/bridge.dm b/code/modules/tgs/v5/bridge.dm new file mode 100644 index 00000000000..a0ab3598767 --- /dev/null +++ b/code/modules/tgs/v5/bridge.dm @@ -0,0 +1,106 @@ +/datum/tgs_api/v5/proc/Bridge(command, list/data) + if(!data) + data = list() + + var/single_bridge_request = CreateBridgeRequest(command, data) + if(length(single_bridge_request) <= DMAPI5_BRIDGE_REQUEST_LIMIT) + return PerformBridgeRequest(single_bridge_request) + + // chunking required + var/payload_id = ++chunked_requests + + var/raw_data = CreateBridgeData(command, data, FALSE) + + var/list/chunk_requests = GenerateChunks(raw_data, TRUE) + + var/list/response + for(var/bridge_request in chunk_requests) + response = PerformBridgeRequest(bridge_request) + if(!response) + // Abort + return + + var/list/missing_sequence_ids = response[DMAPI5_MISSING_CHUNKS] + if(length(missing_sequence_ids)) + do + TGS_WARNING_LOG("Server is still missing some chunks of bridge P[payload_id]! Sending missing chunks...") + if(!istype(missing_sequence_ids)) + TGS_ERROR_LOG("Did not receive a list() for [DMAPI5_MISSING_CHUNKS]!") + return + + for(var/missing_sequence_id in missing_sequence_ids) + if(!isnum(missing_sequence_id)) + TGS_ERROR_LOG("Did not receive a num in [DMAPI5_MISSING_CHUNKS]!") + return + + var/missing_chunk_request = chunk_requests[missing_sequence_id + 1] + response = PerformBridgeRequest(missing_chunk_request) + if(!response) + // Abort + return + + missing_sequence_ids = response[DMAPI5_MISSING_CHUNKS] + while(length(missing_sequence_ids)) + + return response + +/datum/tgs_api/v5/proc/CreateBridgeRequest(command, list/data) + var/json = CreateBridgeData(command, data, TRUE) + var/encoded_json = url_encode(json) + + var/api_prefix = interop_version.minor >= 8 ? "api/" : "" + + var/url = "http://127.0.0.1:[server_port]/[api_prefix]Bridge?[DMAPI5_BRIDGE_DATA]=[encoded_json]" + return url + +/datum/tgs_api/v5/proc/CreateBridgeData(command, list/data, needs_auth) + data[DMAPI5_BRIDGE_PARAMETER_COMMAND_TYPE] = command + if(needs_auth) + data[DMAPI5_PARAMETER_ACCESS_IDENTIFIER] = access_identifier + + var/json = json_encode(data) + return json + +/datum/tgs_api/v5/proc/WaitForReattach(require_channels = FALSE) + if(detached) + // Wait up to one minute + for(var/i in 1 to 600) + sleep(1) + if(!detached && (!require_channels || length(chat_channels))) + break + + // dad went out for milk and cigarettes 20 years ago... + // yes, this affects all other waiters, intentional + if(i == 600) + detached = FALSE + +/datum/tgs_api/v5/proc/PerformBridgeRequest(bridge_request) + WaitForReattach(FALSE) + + // This is an infinite sleep until we get a response + var/export_response = world.Export(bridge_request) + if(!export_response) + TGS_ERROR_LOG("Failed bridge request: [bridge_request]") + return + + var/content = export_response["CONTENT"] + if(!content) + TGS_ERROR_LOG("Failed bridge request, missing content!") + return + + var/response_json = file2text(content) + if(!response_json) + TGS_ERROR_LOG("Failed bridge request, failed to load content!") + return + + var/list/bridge_response = json_decode(response_json) + if(!bridge_response) + TGS_ERROR_LOG("Failed bridge request, bad json: [response_json]") + return + + var/error = bridge_response[DMAPI5_RESPONSE_ERROR_MESSAGE] + if(error) + TGS_ERROR_LOG("Failed bridge request, bad request: [error]") + return + + return bridge_response diff --git a/code/modules/tgs/v5/chunking.dm b/code/modules/tgs/v5/chunking.dm new file mode 100644 index 00000000000..cd5944d34fb --- /dev/null +++ b/code/modules/tgs/v5/chunking.dm @@ -0,0 +1,43 @@ +/datum/tgs_api/v5/proc/GenerateChunks(payload, bridge) + var/limit = bridge ? DMAPI5_BRIDGE_REQUEST_LIMIT : DMAPI5_TOPIC_RESPONSE_LIMIT + + var/payload_id = ++chunked_requests + var/data_length = length(payload) + + var/chunk_count + var/list/chunk_requests + for(chunk_count = 2; !chunk_requests; ++chunk_count) + var/max_chunk_size = -round(-(data_length / chunk_count)) + if(max_chunk_size > limit) + continue + + chunk_requests = list() + for(var/i in 1 to chunk_count) + var/start_index = 1 + ((i - 1) * max_chunk_size) + if (start_index > data_length) + break + + var/end_index = min(1 + (i * max_chunk_size), data_length + 1) + + var/chunk_payload = copytext(payload, start_index, end_index) + + // sequence IDs in interop chunking are always zero indexed + var/list/chunk = list(DMAPI5_CHUNK_PAYLOAD_ID = payload_id, DMAPI5_CHUNK_SEQUENCE_ID = (i - 1), DMAPI5_CHUNK_TOTAL = chunk_count, DMAPI5_CHUNK_PAYLOAD = chunk_payload) + + var/chunk_request = list(DMAPI5_CHUNK = chunk) + var/chunk_length + if(bridge) + chunk_request = CreateBridgeRequest(DMAPI5_BRIDGE_COMMAND_CHUNK, chunk_request) + chunk_length = length(chunk_request) + else + chunk_request = list(chunk_request) // wrap for adding to list + chunk_length = length(json_encode(chunk_request)) + + if(chunk_length > limit) + // Screwed by encoding, no way to preempt it though + chunk_requests = null + break + + chunk_requests += chunk_request + + return chunk_requests diff --git a/code/modules/tgs/v5/commands.dm b/code/modules/tgs/v5/commands.dm index 71ede42c3b2..9557f8a08ed 100644 --- a/code/modules/tgs/v5/commands.dm +++ b/code/modules/tgs/v5/commands.dm @@ -35,11 +35,11 @@ if(sc) var/datum/tgs_message_content/response = sc.Run(u, params) response = UpgradeDeprecatedCommandResponse(response, command) - - var/list/topic_response = list() - topic_response[DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE] = response?.text - topic_response[DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE] = response?._interop_serialize() - return json_encode(topic_response) + + var/list/topic_response = TopicResponse() + topic_response[DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE] = response ? response.text : null + topic_response[DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE] = response ? response._interop_serialize() : null + return topic_response return TopicResponse("Unknown custom chat command: [command]!") // Common proc b/c it's used by the V3/V4 APIs diff --git a/code/modules/tgs/v5/serializers.dm b/code/modules/tgs/v5/serializers.dm index 7f9bc731b79..3a32848ad51 100644 --- a/code/modules/tgs/v5/serializers.dm +++ b/code/modules/tgs/v5/serializers.dm @@ -1,12 +1,12 @@ /datum/tgs_message_content/proc/_interop_serialize() - return list("text" = text, "embed" = embed?._interop_serialize()) + return list("text" = text, "embed" = embed ? embed._interop_serialize() : null) /datum/tgs_chat_embed/proc/_interop_serialize() CRASH("Base /proc/interop_serialize called on [type]!") /datum/tgs_chat_embed/structure/_interop_serialize() var/list/serialized_fields - if(islist(fields)) + if(istype(fields, /list)) serialized_fields = list() for(var/datum/tgs_chat_embed/field/field as anything in fields) serialized_fields += list(field._interop_serialize()) @@ -16,12 +16,12 @@ "url" = url, "timestamp" = timestamp, "colour" = colour, - "image" = image?._interop_serialize(), - "thumbnail" = thumbnail?._interop_serialize(), - "video" = video?._interop_serialize(), - "footer" = footer?._interop_serialize(), - "provider" = provider?._interop_serialize(), - "author" = author?._interop_serialize(), + "image" = src.image ? src.image._interop_serialize() : null, + "thumbnail" = thumbnail ? thumbnail._interop_serialize() : null, + "video" = video ? video._interop_serialize() : null, + "footer" = footer ? footer._interop_serialize() : null, + "provider" = provider ? provider._interop_serialize() : null, + "author" = author ? author._interop_serialize() : null, "fields" = serialized_fields ) @@ -43,7 +43,7 @@ . = ..() .["iconUrl"] = icon_url .["proxyIconUrl"] = proxy_icon_url - + /datum/tgs_chat_embed/footer/_interop_serialize() return list( "text" = text, diff --git a/code/modules/tgs/v5/topic.dm b/code/modules/tgs/v5/topic.dm new file mode 100644 index 00000000000..05e6c4e1b21 --- /dev/null +++ b/code/modules/tgs/v5/topic.dm @@ -0,0 +1,283 @@ +/datum/tgs_api/v5/proc/TopicResponse(error_message = null) + var/list/response = list() + if(error_message) + response[DMAPI5_RESPONSE_ERROR_MESSAGE] = error_message + return response + +/datum/tgs_api/v5/proc/ProcessTopicJson(json, check_access_identifier) + TGS_DEBUG_LOG("ProcessTopicJson(..., [check_access_identifier])") + var/list/result = ProcessRawTopic(json, check_access_identifier) + if(!result) + result = TopicResponse("Runtime error!") + else if(!length(result)) + return "{}" // quirk of json_encode is an empty list returns "[]" + + var/response_json = json_encode(result) + if(length(response_json) > DMAPI5_TOPIC_RESPONSE_LIMIT) + // cache response chunks and send the first + var/list/chunks = GenerateChunks(response_json, FALSE) + var/payload_id = chunks[1][DMAPI5_CHUNK][DMAPI5_CHUNK_PAYLOAD_ID] + var/cache_key = ResponseTopicChunkCacheKey(payload_id) + + chunked_topics[cache_key] = chunks + + response_json = json_encode(chunks[1]) + + return response_json + +/datum/tgs_api/v5/proc/ProcessRawTopic(json, check_access_identifier) + TGS_DEBUG_LOG("ProcessRawTopic(..., [check_access_identifier])") + var/list/topic_parameters = json_decode(json) + if(!topic_parameters) + TGS_DEBUG_LOG("ProcessRawTopic: json_decode failed") + return TopicResponse("Invalid topic parameters json: [json]!"); + + var/their_sCK = topic_parameters[DMAPI5_PARAMETER_ACCESS_IDENTIFIER] + if(check_access_identifier && their_sCK != access_identifier) + TGS_DEBUG_LOG("ProcessRawTopic: access identifier check failed") + return TopicResponse("Failed to decode [DMAPI5_PARAMETER_ACCESS_IDENTIFIER] or it does not match!") + + var/command = topic_parameters[DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE] + if(!isnum(command)) + TGS_DEBUG_LOG("ProcessRawTopic: command type check failed") + return TopicResponse("Failed to decode [DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE]!") + + return ProcessTopicCommand(command, topic_parameters) + +/datum/tgs_api/v5/proc/ResponseTopicChunkCacheKey(payload_id) + return "response[payload_id]" + +/datum/tgs_api/v5/proc/ProcessTopicCommand(command, list/topic_parameters) + TGS_DEBUG_LOG("ProcessTopicCommand([command], ...)") + switch(command) + + if(DMAPI5_TOPIC_COMMAND_CHAT_COMMAND) + intercepted_message_queue = list() + var/list/result = HandleCustomCommand(topic_parameters[DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND]) + if(!result) + result = TopicResponse("Error running chat command!") + result[DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES] = intercepted_message_queue + intercepted_message_queue = null + return result + + if(DMAPI5_TOPIC_COMMAND_EVENT_NOTIFICATION) + var/list/event_notification = topic_parameters[DMAPI5_TOPIC_PARAMETER_EVENT_NOTIFICATION] + if(!istype(event_notification)) + return TopicResponse("Invalid [DMAPI5_TOPIC_PARAMETER_EVENT_NOTIFICATION]!") + + var/event_type = event_notification[DMAPI5_EVENT_NOTIFICATION_TYPE] + if(!isnum(event_type)) + return TopicResponse("Invalid or missing [DMAPI5_EVENT_NOTIFICATION_TYPE]!") + + var/list/event_parameters = event_notification[DMAPI5_EVENT_NOTIFICATION_PARAMETERS] + if(event_parameters && !istype(event_parameters)) + . = TopicResponse("Invalid or missing [DMAPI5_EVENT_NOTIFICATION_PARAMETERS]!") + else + var/list/response = TopicResponse() + . = response + if(event_handler != null) + var/list/event_call = list(event_type) + if(event_parameters) + event_call += event_parameters + + intercepted_message_queue = list() + event_handler.HandleEvent(arglist(event_call)) + response[DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES] = intercepted_message_queue + intercepted_message_queue = null + + if (event_type == TGS_EVENT_WATCHDOG_DETACH) + detached = TRUE + chat_channels.Cut() // https://github.com/tgstation/tgstation-server/issues/1490 + + return + + if(DMAPI5_TOPIC_COMMAND_CHANGE_PORT) + var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT] + if (!isnum(new_port) || !(new_port > 0)) + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]") + + if(event_handler != null) + event_handler.HandleEvent(TGS_EVENT_PORT_SWAP, new_port) + + //the topic still completes, miraculously + //I honestly didn't believe byond could do it without exploding + if(!world.OpenPort(new_port)) + return TopicResponse("Port change failed!") + + return TopicResponse() + + if(DMAPI5_TOPIC_COMMAND_CHANGE_REBOOT_STATE) + var/new_reboot_mode = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_REBOOT_STATE] + if(!isnum(new_reboot_mode)) + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_REBOOT_STATE]!") + + if(event_handler != null) + event_handler.HandleEvent(TGS_EVENT_REBOOT_MODE_CHANGE, reboot_mode, new_reboot_mode) + + reboot_mode = new_reboot_mode + return TopicResponse() + + if(DMAPI5_TOPIC_COMMAND_INSTANCE_RENAMED) + var/new_instance_name = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME] + if(!istext(new_instance_name)) + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME]!") + + if(event_handler != null) + event_handler.HandleEvent(TGS_EVENT_INSTANCE_RENAMED, new_instance_name) + + instance_name = new_instance_name + return TopicResponse() + + if(DMAPI5_TOPIC_COMMAND_CHAT_CHANNELS_UPDATE) + TGS_DEBUG_LOG("ProcessTopicCommand: It's a chat update") + var/list/chat_update_json = topic_parameters[DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE] + if(!istype(chat_update_json)) + TGS_DEBUG_LOG("ProcessTopicCommand: failed \"[DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE]\" check") + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE]!") + + DecodeChannels(chat_update_json) + return TopicResponse() + + if(DMAPI5_TOPIC_COMMAND_SERVER_PORT_UPDATE) + var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT] + if (!isnum(new_port) || !(new_port > 0)) + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]") + + server_port = new_port + return TopicResponse() + + if(DMAPI5_TOPIC_COMMAND_HEALTHCHECK) + if(event_handler && event_handler.receive_health_checks) + event_handler.HandleEvent(TGS_EVENT_HEALTH_CHECK) + return TopicResponse() + + if(DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH) + detached = FALSE + var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT] + var/error_message = null + if (new_port != null) + if (!isnum(new_port) || !(new_port > 0)) + error_message = "Invalid [DMAPI5_TOPIC_PARAMETER_NEW_PORT]" + else + server_port = new_port + + var/new_version_string = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION] + if (!istext(new_version_string)) + if(error_message != null) + error_message += ", " + error_message += "Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION]" + else + var/datum/tgs_version/new_version = new(new_version_string) + if (event_handler) + event_handler.HandleEvent(TGS_EVENT_WATCHDOG_REATTACH, new_version) + + version = new_version + + var/list/reattach_response = TopicResponse(error_message) + reattach_response[DMAPI5_PARAMETER_CUSTOM_COMMANDS] = ListCustomCommands() + reattach_response[DMAPI5_PARAMETER_TOPIC_PORT] = GetTopicPort() + return reattach_response + + if(DMAPI5_TOPIC_COMMAND_SEND_CHUNK) + var/list/chunk = topic_parameters[DMAPI5_CHUNK] + if(!istype(chunk)) + return TopicResponse("Invalid [DMAPI5_CHUNK]!") + + var/payload_id = chunk[DMAPI5_CHUNK_PAYLOAD_ID] + if(!isnum(payload_id)) + return TopicResponse("[DMAPI5_CHUNK_PAYLOAD_ID] is not a number!") + + // Always updated the highest known payload ID + chunked_requests = max(chunked_requests, payload_id) + + var/sequence_id = chunk[DMAPI5_CHUNK_SEQUENCE_ID] + if(!isnum(sequence_id)) + return TopicResponse("[DMAPI5_CHUNK_SEQUENCE_ID] is not a number!") + + var/total_chunks = chunk[DMAPI5_CHUNK_TOTAL] + if(!isnum(total_chunks)) + return TopicResponse("[DMAPI5_CHUNK_TOTAL] is not a number!") + + if(total_chunks == 0) + return TopicResponse("[DMAPI5_CHUNK_TOTAL] is zero!") + + var/payload = chunk[DMAPI5_CHUNK_PAYLOAD] + if(!istext(payload)) + return TopicResponse("[DMAPI5_CHUNK_PAYLOAD] is not text!") + + var/cache_key = "request[payload_id]" + var/payloads = chunked_topics[cache_key] + + if(!payloads) + payloads = new /list(total_chunks) + chunked_topics[cache_key] = payloads + + if(total_chunks != length(payloads)) + chunked_topics -= cache_key + return TopicResponse("Received differing total chunks for same [DMAPI5_CHUNK_PAYLOAD_ID]! Invalidating [DMAPI5_CHUNK_PAYLOAD_ID]!") + + var/pre_existing_chunk = payloads[sequence_id + 1] + if(pre_existing_chunk && pre_existing_chunk != payload) + chunked_topics -= cache_key + return TopicResponse("Received differing payload for same [DMAPI5_CHUNK_SEQUENCE_ID]! Invalidating [DMAPI5_CHUNK_PAYLOAD_ID]!") + + payloads[sequence_id + 1] = payload + + var/list/missing_sequence_ids = list() + for(var/i in 1 to total_chunks) + if(!payloads[i]) + missing_sequence_ids += i - 1 + + if(length(missing_sequence_ids)) + return list(DMAPI5_MISSING_CHUNKS = missing_sequence_ids) + + chunked_topics -= cache_key + var/full_json = jointext(payloads, "") + + return ProcessRawTopic(full_json, FALSE) + + if(DMAPI5_TOPIC_COMMAND_RECEIVE_CHUNK) + var/payload_id = topic_parameters[DMAPI5_CHUNK_PAYLOAD_ID] + if(!isnum(payload_id)) + return TopicResponse("[DMAPI5_CHUNK_PAYLOAD_ID] is not a number!") + + // Always updated the highest known payload ID + chunked_requests = max(chunked_requests, payload_id) + + var/list/missing_chunks = topic_parameters[DMAPI5_MISSING_CHUNKS] + if(!istype(missing_chunks) || !length(missing_chunks)) + return TopicResponse("Missing or empty [DMAPI5_MISSING_CHUNKS]!") + + var/sequence_id_to_send = missing_chunks[1] + if(!isnum(sequence_id_to_send)) + return TopicResponse("[DMAPI5_MISSING_CHUNKS] contained a non-number!") + + var/cache_key = ResponseTopicChunkCacheKey(payload_id) + var/list/chunks = chunked_topics[cache_key] + if(!chunks) + return TopicResponse("Unknown response chunk set: P[payload_id]!") + + // sequence IDs in interop chunking are always zero indexed + var/chunk_to_send = chunks[sequence_id_to_send + 1] + if(!chunk_to_send) + return TopicResponse("Sequence ID [sequence_id_to_send] is not present in response chunk P[payload_id]!") + + if(length(missing_chunks) == 1) + // sending last chunk, purge the cache + chunked_topics -= cache_key + + return chunk_to_send + + if(DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST) + var/message = topic_parameters[DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE] + if (!istext(message)) + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE]") + + TGS_WORLD_ANNOUNCE(message) + return TopicResponse() + + return TopicResponse("Unknown command: [command]") + +/datum/tgs_api/v5/proc/WorldBroadcast(message) + set waitfor = FALSE + TGS_WORLD_ANNOUNCE(message) diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index 62099453724..d531d4b7b9d 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -4,15 +4,28 @@ #undef DMAPI5_BRIDGE_DATA #undef DMAPI5_TOPIC_DATA -#undef DMAPI5_BRIDGE_COMMAND_PORT_UPDATE +#undef DMAPI5_BRIDGE_REQUEST_LIMIT +#undef DMAPI5_TOPIC_REQUEST_LIMIT +#undef DMAPI5_TOPIC_RESPONSE_LIMIT + #undef DMAPI5_BRIDGE_COMMAND_STARTUP #undef DMAPI5_BRIDGE_COMMAND_PRIME #undef DMAPI5_BRIDGE_COMMAND_REBOOT #undef DMAPI5_BRIDGE_COMMAND_KILL #undef DMAPI5_BRIDGE_COMMAND_CHAT_SEND +#undef DMAPI5_BRIDGE_COMMAND_CHUNK #undef DMAPI5_PARAMETER_ACCESS_IDENTIFIER #undef DMAPI5_PARAMETER_CUSTOM_COMMANDS +#undef DMAPI5_PARAMETER_TOPIC_PORT + +#undef DMAPI5_CHUNK +#undef DMAPI5_CHUNK_PAYLOAD +#undef DMAPI5_CHUNK_TOTAL +#undef DMAPI5_CHUNK_SEQUENCE_ID +#undef DMAPI5_CHUNK_PAYLOAD_ID + +#undef DMAPI5_MISSING_CHUNKS #undef DMAPI5_RESPONSE_ERROR_MESSAGE @@ -35,6 +48,7 @@ #undef DMAPI5_RUNTIME_INFORMATION_REVISION #undef DMAPI5_RUNTIME_INFORMATION_TEST_MERGES #undef DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL +#undef DMAPI5_RUNTIME_INFORMATION_VISIBILITY #undef DMAPI5_CHAT_UPDATE_CHANNELS @@ -62,8 +76,11 @@ #undef DMAPI5_TOPIC_COMMAND_INSTANCE_RENAMED #undef DMAPI5_TOPIC_COMMAND_CHAT_CHANNELS_UPDATE #undef DMAPI5_TOPIC_COMMAND_SERVER_PORT_UPDATE -#undef DMAPI5_TOPIC_COMMAND_HEARTBEAT +#undef DMAPI5_TOPIC_COMMAND_HEALTHCHECK #undef DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH +#undef DMAPI5_TOPIC_COMMAND_SEND_CHUNK +#undef DMAPI5_TOPIC_COMMAND_RECEIVE_CHUNK +#undef DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST #undef DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE #undef DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND @@ -73,6 +90,7 @@ #undef DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME #undef DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE #undef DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION +#undef DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE #undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE #undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE diff --git a/code/modules/tgui/states/reverse_contained.dm b/code/modules/tgui/states/reverse_contained.dm new file mode 100644 index 00000000000..a6d1034a789 --- /dev/null +++ b/code/modules/tgui/states/reverse_contained.dm @@ -0,0 +1,18 @@ +/*! + * Not copyrighted, but magatsuchi made it. + * + */ + +/** + * tgui state: reverse_contained_state + * + * + * Checks if src_object is inside of user. + */ + +GLOBAL_DATUM_INIT(reverse_contained_state, /datum/ui_state/reverse_contained_state, new) + +/datum/ui_state/reverse_contained_state/can_use_topic(atom/src_object, mob/user) + if(!user.contains(src_object)) + return UI_CLOSE + return user.shared_ui_interaction(src_object) diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index 72830907bef..b3f1f070031 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -97,11 +97,20 @@ if(!window.is_ready()) window.initialize( fancy = (user.client.prefs.toggles & PREFTOGGLE_2_FANCY_TGUI), - inline_assets = list( + assets = list( get_asset_datum(/datum/asset/simple/tgui), )) else window.send_message("ping") + send_assets() + window.send_message("update", get_payload( + with_data = TRUE, + with_static_data = TRUE)) + SStgui.on_open(src) + + return TRUE + +/datum/tgui/proc/send_assets() var/flush_queue = window.send_asset(get_asset_datum( /datum/asset/simple/namespaced/fontawesome)) flush_queue |= window.send_asset(get_asset_datum( @@ -110,12 +119,6 @@ flush_queue |= window.send_asset(asset) if (flush_queue) user.client.browse_queue_flush() - window.send_message("update", get_payload( - with_data = TRUE, - with_static_data = TRUE)) - SStgui.on_open(src) - - return TRUE /** * public diff --git a/code/modules/tgui/tgui_input_emoji.dm b/code/modules/tgui/tgui_input_emoji.dm new file mode 100644 index 00000000000..9f18d310594 --- /dev/null +++ b/code/modules/tgui/tgui_input_emoji.dm @@ -0,0 +1,147 @@ +/** + * Creates a TGUI window with a emoji input. Returns the user's response. + * + * This proc should be used to create windows for emoji entry that the caller will wait for a response from. + * If tgui fancy chat is turned off: Will return a normal input. If max_length is specified, will return + * stripped_multiline_input. + * + * Arguments: + * * user - The user to show the textbox to. + * * title - The title of the textbox modal, shown on the top of the TGUI window. + */ +/proc/tgui_input_emoji(mob/user, title = "Emoji Input") + if (!user) + user = usr + if (!istype(user)) + if (istype(user, /client)) + var/client/client = user + user = client.mob + else + return + var/datum/tgui_input_emoji/textbox = new(user, title) + textbox.ui_interact(user) + textbox.wait() + if (textbox) + . = textbox.entry + qdel(textbox) + +/** + * Creates an asynchronous TGUI emoji input window with an associated callback. + * + * This proc should be used to create textboxes that invoke a callback with the user's entry. + * Arguments: + * * user - The user to show the textbox to. + * * title - The title of the textbox modal, shown on the top of the TGUI window. + * * callback - The callback to be invoked when a choice is made. + */ +/proc/tgui_input_emoji_async(mob/user, title = "Emoji Input", datum/callback/callback) + if (!user) + user = usr + if (!istype(user)) + if (istype(user, /client)) + var/client/client = user + user = client.mob + else + return + var/datum/tgui_input_emoji/async/textbox = new(user, title, callback) + textbox.ui_interact(user) + +/** + * # tgui_input_emoji + * + * Datum used for instantiating and using a TGUI-controlled textbox that prompts the user with + * a message and has an input for emoji entry. + */ +/datum/tgui_input_emoji + /// Boolean field describing if the tgui_input_emoji was closed by the user. + var/closed + /// The entry that the user has return_typed in. + var/entry + /// The title of the TGUI window + var/title + + +/datum/tgui_input_emoji/New(mob/user, title) + src.title = title + +/datum/tgui_input_emoji/Destroy(force, ...) + SStgui.close_uis(src) + . = ..() + +/** + * Waits for a user's response to the tgui_input_emoji's prompt before returning. Returns early if + * the window was closed by the user. + */ +/datum/tgui_input_emoji/proc/wait() + while (!entry && !closed && !QDELETED(src)) + stoplag(1) + +/datum/tgui_input_emoji/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "EmojiInputModal") + ui.open() + +/datum/tgui_input_emoji/ui_close(mob/user) + . = ..() + closed = TRUE + +/datum/tgui_input_emoji/ui_state(mob/user) + return GLOB.always_state + +/datum/tgui_input_emoji/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/emoji) + ) + +/datum/tgui_input_emoji/ui_static_data(mob/user) + return list( + "all_emojis" = icon_states(icon('icons/emoji.dmi')) + ) + +/datum/tgui_input_emoji/ui_data(mob/user) + return list( + "title" = title, + ) + +/datum/tgui_input_emoji/ui_act(action, list/params) + . = ..() + if (.) + return + switch(action) + if("submit") + set_entry(params["entry"]) + SStgui.close_uis(src) + return TRUE + if("cancel") + set_entry(null) + SStgui.close_uis(src) + return TRUE + +/datum/tgui_input_emoji/proc/set_entry(entry) + src.entry = entry + +/** + * # async tgui_input_emoji + * + * An asynchronous version of tgui_input_emoji to be used with callbacks instead of waiting on user responses. + */ +/datum/tgui_input_emoji/async + /// The callback to be invoked by the tgui_input_emoji upon having a choice made. + var/datum/callback/callback + +/datum/tgui_input_emoji/async/New(mob/user, title, callback) + ..(user, title) + src.callback = callback + +/datum/tgui_input_emoji/async/Destroy(force, ...) + QDEL_NULL(callback) + . = ..() + +/datum/tgui_input_emoji/async/set_entry(entry) + . = ..() + if(!isnull(src.entry)) + callback?.InvokeAsync(src.entry) + +/datum/tgui_input_emoji/async/wait() + return diff --git a/code/modules/tgui/tgui_input_pda_message.dm b/code/modules/tgui/tgui_input_pda_message.dm new file mode 100644 index 00000000000..a0eee44dd0e --- /dev/null +++ b/code/modules/tgui/tgui_input_pda_message.dm @@ -0,0 +1,196 @@ +/proc/tgui_send_admin_pda(mob/user, obj/signal_source, obj/machinery/telecomms/message_server/server, theme, allow_send_all = FALSE) + if (!user) + user = usr + if (!istype(user)) + if (istype(user, /client)) + var/client/client = user + user = client.mob + else + return + var/datum/tgui_input_pda_message/pda_input = new(user) + pda_input.src_console = signal_source + pda_input.can_send_all = allow_send_all + pda_input.theme = theme + pda_input.ui_interact(user) + pda_input.wait() + if (!pda_input) + return + if(!pda_input.submit || (!pda_input.send_all && (!istype(pda_input.target) || QDELETED(pda_input.target)))) + qdel(pda_input) + return + if(istype(signal_source) && usr.default_can_use_topic(signal_source) != UI_INTERACTIVE) + to_chat(usr, "Out of range! Message not sent!") + qdel(pda_input) + return + // If we are impersonating someone, we should match their computer in the (Reply) href + var/ref + for(var/obj/item/modular_computer/messenger in GetViewableDevices()) + if(messenger.saved_identification == pda_input.name && messenger.saved_job == pda_input.job && (pda_input.send_all || messenger != pda_input.target)) + ref = REF(messenger) + break + var/datum/signal/subspace/messaging/tablet_msg/signal = new(signal_source ? signal_source : server, list( + "name" = "[pda_input.name]", + "job" = "[pda_input.job]", + "message" = pda_input.text, + "emojis" = TRUE, + "photo" = pda_input.current_image, + "ref" = ref, + "targets" = pda_input.send_all ? GetViewableDevices() : list(pda_input.target), + )) + if(istype(server) && !QDELETED(server)) + server.receive_information(signal, null) + else + signal.send_to_receivers() + var/turf/source_turf = signal_source ? get_turf(signal_source) : null + usr.log_message("(PDA: [pda_input.name] | [usr.real_name]) sent \"[pda_input.text]\"[signal["photo"] ? " (Photo Attached)" : ""] to [signal.format_target()] via [signal_source ? "[signal_source] at [AREACOORD(source_turf)]" : "Admin UI"]", LOG_PDA) + message_admins("[key_name_admin(usr)][ADMIN_FLW(usr)] sent PDA message: \"[pda_input.text]\"[signal["photo"] ? " (Photo Attached)" : ""] to [signal.format_target()] via [signal_source ? "[signal_source] at [ADMIN_VERBOSEJMP(source_turf)]" : "Admin UI"]") + qdel(pda_input) + +/datum/tgui_input_pda_message + var/closed + var/submit + var/name = "System Administrator" + var/job = "Admin" + var/text = "" + var/theme + var/datum/picture/current_image + var/obj/item/modular_computer/target + var/can_send_all = FALSE + var/send_all = FALSE + var/obj/src_console + var/static/datum/ui_state/tgui_input_pda_state/tgui_input_pda_state + +/datum/tgui_input_pda_message/New() + +/datum/tgui_input_pda_message/Destroy(force, ...) + SStgui.close_uis(src) + . = ..() + +/datum/tgui_input_pda_message/proc/wait() + UNTIL(submit || closed || QDELETED(src)) + +/datum/tgui_input_pda_message/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "PDAInputModal") + ui.open() + +/datum/tgui_input_pda_message/ui_close(mob/user) + . = ..() + closed = TRUE + +/datum/tgui_input_pda_message/ui_state(mob/user) + if(!tgui_input_pda_state) + tgui_input_pda_state = new() + return tgui_input_pda_state + +/datum/ui_state/tgui_input_pda_state/can_use_topic(src_object, mob/user) + var/datum/tgui_input_pda_message/src_object_pda = src_object + if(!istype(src_object_pda)) + return UI_CLOSE + return src_object_pda.src_console ? user.default_can_use_topic(src_object_pda.src_console) : UI_INTERACTIVE + +/datum/tgui_input_pda_message/ui_data(mob/user) + . = list() + .["name"] = name + .["job"] = job + .["text"] = text + .["image"] = istype(current_image) + if(theme) + .["theme"] = theme + if(istype(target)) + .["target"] = "[target.saved_identification] ([target.saved_job])" + .["everyone"] = send_all + +/datum/tgui_input_pda_message/ui_act(action, list/params) + . = ..() + if (.) + return + switch(action) + if("submit") + if(!send_all && !istype(target)) + alert(usr, "Please select a recipient!", "Send Failure", "OK") + return + if(!length(name) || !length(job) || !length(text)) + alert(usr, "Please enter text into all fields!", "Send Failure", "OK") + return + submit = TRUE + closed = TRUE + SStgui.close_uis(src) + return TRUE + if("cancel") + // don't send the message + target = null + send_all = FALSE + closed = TRUE + SStgui.close_uis(src) + return TRUE + if("select") + var/list/devices = list() + for(var/obj/item/modular_computer/messenger in GetViewableDevices(TRUE)) + if(!messenger.saved_identification || !messenger.saved_job) + continue + var/key_base = "[messenger.saved_identification] ([messenger.saved_job])" + var/key = key_base + var/number = 1 + while(key in devices) + key = key_base + " ([number])" + number++ + devices[key] = messenger + if(can_send_all) + devices["Everyone"] = "Everyone" + var/choice = input(usr, "Select PDA to send message to.", "Select PDA.", null) as null|anything in devices + if(istype(target)) + UnregisterSignal(target, COMSIG_PARENT_QDELETING) + target = null + if(can_send_all && choice == "Everyone") + send_all = TRUE + else if(choice in devices) + send_all = FALSE + target = devices[choice] + RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(target_deleting)) + else + target = null + send_all = FALSE + return TRUE + if("set_message") + text = trim(params["value"], MAX_MESSAGE_LEN) + return TRUE + if("set_name") + name = trim(params["value"], MAX_NAME_LEN) + return TRUE + if("set_job") + job = trim(params["value"], MAX_NAME_LEN) + return TRUE + if("photo") + if(current_image) + current_image = null + return TRUE + if(issilicon(usr)) + var/mob/living/silicon/S = usr + var/datum/picture/selection = S.aicamera?.selectpicture(usr) + current_image = istype(selection) ? selection : null + else + var/obj/item/photo/photo = usr?.is_holding_item_of_type(/obj/item/photo) + current_image = istype(photo) ? photo.picture : null + if(current_image) + if(src_console) + src_console.balloon_alert(usr, "photo selected.") + playsound(src_console, 'sound/machines/terminal_success.ogg', 15, TRUE) + else + usr.balloon_alert(usr, "photo selected.") + SEND_SOUND(usr, 'sound/machines/terminal_success.ogg') + else + if(src_console) + src_console.balloon_alert(usr, "no photo identified.") + else + usr.balloon_alert(usr, "no photo identified.") + return TRUE + if("send_all") + if(!check_rights(R_ADMIN)) + return TRUE + send_all = TRUE + +/datum/tgui_input_pda_message/proc/target_deleting() + target = null + ui_update() diff --git a/code/modules/tgui/tgui_select_picture.dm b/code/modules/tgui/tgui_select_picture.dm new file mode 100644 index 00000000000..325d673817e --- /dev/null +++ b/code/modules/tgui/tgui_select_picture.dm @@ -0,0 +1,88 @@ +/proc/tgui_select_picture(mob/user, list/datum/picture/choices, title = "Select Photo") + if (!user) + user = usr + if (!istype(user)) + if (istype(user, /client)) + var/client/client = user + user = client.mob + else + return + if(!choices) + return + var/datum/tgui_select_picture/textbox = new(user, choices, title) + textbox.ui_interact(user) + textbox.wait() + if (textbox) + . = textbox.entry + qdel(textbox) + +/datum/tgui_select_picture + /// Boolean field describing if the tgui_select_picture was closed by the user. + var/closed + /// The entry that the user has selected + var/datum/picture/entry + /// The title of the TGUI window + var/title + /// The list of picture datums to select from + var/list/datum/picture/choices = list() + +/datum/tgui_select_picture/New(mob/user, choices, title) + src.title = title + src.choices = choices + +/datum/tgui_select_picture/Destroy(force, ...) + SStgui.close_uis(src) + . = ..() + +/** + * Waits for a user's response to the tgui_select_picture's prompt before returning. Returns early if + * the window was closed by the user. + */ +/datum/tgui_select_picture/proc/wait() + while (!entry && !closed && !QDELETED(src)) + stoplag(1) + +/datum/tgui_select_picture/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "PictureSelectModal") + ui.open() + +/datum/tgui_select_picture/ui_close(mob/user) + . = ..() + closed = TRUE + +/datum/tgui_select_picture/ui_state(mob/user) + return GLOB.always_state + +/datum/tgui_select_picture/ui_data(mob/user) + var/list/pictures = list() + for(var/datum/picture/picture in choices) + var/icon/img = picture.picture_image + var/picture_path = "tgui_select_picture_[picture.id]_[rand(0, 99999)].png" + usr << browse_rsc(img, picture_path) + // DM is a great language, am I right? + // Adding a list to a list un-lists it, so we need a double list to make an "object" list. + pictures += list(list( + "ref" = "[REF(picture)]", + "path" = picture_path, + "name" = picture.picture_name, + "desc" = picture.picture_desc, + )) + return list( + "title" = title, + "pictures" = pictures + ) + +/datum/tgui_select_picture/ui_act(action, list/params) + . = ..() + if (.) + return + switch(action) + if("submit") + var/datum/picture/choice = locate(params["entry"]) in choices + if(!istype(choice)) + return + entry = choice + SStgui.close_uis(src) + return TRUE diff --git a/code/modules/tgui/tgui_window.dm b/code/modules/tgui/tgui_window.dm index ebc7759ce55..ff2434fd90b 100644 --- a/code/modules/tgui/tgui_window.dm +++ b/code/modules/tgui/tgui_window.dm @@ -18,8 +18,11 @@ var/message_queue var/sent_assets = list() // Vars passed to initialize proc (and saved for later) - var/inline_assets - var/fancy + var/initial_fancy + var/initial_assets + var/initial_inline_html + var/initial_inline_js + var/initial_inline_css /** * public @@ -44,19 +47,24 @@ * state. You can begin sending messages right after initializing. Messages * will be put into the queue until the window finishes loading. * - * optional inline_assets list List of assets to inline into the html. + * optional assets list List of assets to inline into the html. * optional inline_html string Custom HTML to inject. * optional fancy bool If TRUE, will hide the window titlebar. */ /datum/tgui_window/proc/initialize( - inline_assets = list(), + fancy = FALSE, + assets = list(), inline_html = "", - fancy = FALSE) + inline_js = "", + inline_css = "") log_tgui(client, "[id]/initialize") if(!client) return - src.inline_assets = inline_assets - src.fancy = fancy + src.initial_fancy = fancy + src.initial_assets = assets + src.initial_inline_html = inline_html + src.initial_inline_js = inline_js + src.initial_inline_css = inline_css status = TGUI_WINDOW_LOADING fatally_errored = FALSE // Build window options @@ -69,9 +77,9 @@ // Generate page html var/html = SStgui.basehtml html = replacetextEx(html, "\[tgui:windowId]", id) - // Inject inline assets + // Inject assets var/inline_assets_str = "" - for(var/datum/asset/asset in inline_assets) + for(var/datum/asset/asset in assets) var/mappings = asset.get_url_mappings() for(var/name in mappings) var/url = mappings[name] @@ -85,8 +93,17 @@ if(length(inline_assets_str)) inline_assets_str = "\n" html = replacetextEx(html, "\n", inline_assets_str) - // Inject custom HTML - html = replacetextEx(html, "\n", inline_html) + // Inject inline HTML + if (inline_html) + html = replacetextEx(html, "", inline_html) + // Inject inline JS + if (inline_js) + inline_js = "" + html = replacetextEx(html, "", inline_js) + // Inject inline CSS + if (inline_css) + inline_css = "" + html = replacetextEx(html, "", inline_css) // Open the window client << browse(html, "window=[id];[options]") // Detect whether the control is a browser @@ -314,7 +331,12 @@ client << link(href_list["url"]) if("cacheReloaded") // Reinitialize - initialize(inline_assets = inline_assets, fancy = fancy) + initialize( + fancy = initial_fancy, + assets = initial_assets, + inline_html = initial_inline_html, + inline_js = initial_inline_js, + inline_css = initial_inline_css) // Resend the assets for(var/asset in sent_assets) send_asset(asset) diff --git a/code/modules/tgui_panel/tgui_panel.dm b/code/modules/tgui_panel/tgui_panel.dm index a4d67935823..ca544069b24 100644 --- a/code/modules/tgui_panel/tgui_panel.dm +++ b/code/modules/tgui_panel/tgui_panel.dm @@ -42,7 +42,7 @@ sleep(1) initialized_at = world.time // Perform a clean initialization - window.initialize(inline_assets = list( + window.initialize(assets = list( get_asset_datum(/datum/asset/simple/tgui_panel), )) window.send_asset(get_asset_datum(/datum/asset/simple/namespaced/fontawesome)) diff --git a/code/modules/turbolift/turbolift_areas.dm b/code/modules/turbolift/turbolift_areas.dm index 7fabaaa4349..264c733badb 100644 --- a/code/modules/turbolift/turbolift_areas.dm +++ b/code/modules/turbolift/turbolift_areas.dm @@ -1,5 +1,6 @@ /area/shuttle/turbolift //Only use subtypes of this area requires_power = FALSE //no APCS in the lifts please + ambient_buzz = 'nsv13/sound/effects/lift/elevatormusic.ogg' //Mandatory. ambientsounds = list('sound/effects/turbolift/elevatormusic.ogg') /area/shuttle/turbolift/shaft //What the shuttle leaves behind diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index edf8ab0bad3..25a7502d1f7 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -45,6 +45,7 @@ #include "achievement_validation.dm" #include "anchored_mobs.dm" +#include "async.dm" #include "check_adjustable_clothing.dm" #include "component_tests.dm" #include "connect_loc.dm" @@ -57,8 +58,10 @@ #include "create_and_destroy.dm" #endif +#include "antag_datums.dm" #include "dynamic_ruleset_sanity.dm" #include "keybinding_init.dm" +#include "gamemode_sanity.dm" #include "reagent_id_typos.dm" #include "reagent_recipe_collisions.dm" #include "spawn_humans.dm" diff --git a/code/modules/unit_tests/antag_datums.dm b/code/modules/unit_tests/antag_datums.dm new file mode 100644 index 00000000000..fdea39f2ea3 --- /dev/null +++ b/code/modules/unit_tests/antag_datums.dm @@ -0,0 +1,15 @@ +/// Verifies that antag datums have banning_keys. +/datum/unit_test/antag_datum_sanity + +/datum/unit_test/antag_datum_sanity/Run() + for (var/datum/antagonist/antag as anything in subtypesof(/datum/antagonist)) + if(ispath(antag, /datum/antagonist/custom)) + continue + var/name = initial(antag.name) + if (!name || name == "Antagonist") + Fail("[antag] has no name set!") + if (!initial(antag.banning_key)) + Fail("[antag] has no banning_key set!") + var/category = initial(antag.antagpanel_category) + if (initial(antag.show_in_antagpanel) && (!category || category == "Uncategorized")) + Fail("[antag] shows in the antag panel, but has no category set!") diff --git a/code/modules/unit_tests/async.dm b/code/modules/unit_tests/async.dm new file mode 100644 index 00000000000..f98db46bbd5 --- /dev/null +++ b/code/modules/unit_tests/async.dm @@ -0,0 +1,22 @@ +/datum/unit_test/test_async/Run() + var/datum/task/task_1 = INVOKE_ASYNC(src, PROC_REF(synchronously_sleep), 1) + var/datum/task/task_2 = INVOKE_ASYNC(src, PROC_REF(synchronously_sleep), 2) + var/datum/task/task_3 = INVOKE_ASYNC(src, PROC_REF(synchronously_sleep), 3) + var/datum/task/task_4 = INVOKE_ASYNC(src, PROC_REF(long_sleep), 4) + // Long enough for the tasks to complete async, but not long enough for them to complete synchronous + sleep(4) + TEST_ASSERT_EQUAL(1, task_1.result, "Task 1 should have completed with a result of 1") + TEST_ASSERT_EQUAL(2, task_2.result, "Task 2 should have completed with a result of 2") + TEST_ASSERT_EQUAL(3, task_3.result, "Task 3 should have completed with a result of 3") + TEST_ASSERT_EQUAL(FALSE, task_4.completed, "Task 4 should not have completed.") + // Test this task + TEST_ASSERT_EQUAL(5, AWAIT(INVOKE_ASYNC(src, PROC_REF(synchronously_sleep), 5), 3), "Awaiting a 2 ds task with a 4 ds timeout should yield the correct result.") + // Test passed, behaviour is as expected + +/datum/unit_test/test_async/proc/synchronously_sleep(value) + sleep(2) + return value + +/datum/unit_test/test_async/proc/long_sleep(value) + sleep(5) + return value diff --git a/code/modules/unit_tests/dynamic_ruleset_sanity.dm b/code/modules/unit_tests/dynamic_ruleset_sanity.dm index 61200a29bb3..84a111a0745 100644 --- a/code/modules/unit_tests/dynamic_ruleset_sanity.dm +++ b/code/modules/unit_tests/dynamic_ruleset_sanity.dm @@ -10,6 +10,17 @@ Fail("[ruleset] has a scaling_cost, but is also a lone/highlander ruleset.") else if (!has_scaling_cost && !is_lone) Fail("[ruleset] has no scaling cost, but is also not a lone/highlander ruleset.") + var/name = initial(ruleset.name) + if(!name) + Fail("[ruleset] has no name!") + if(name == "Extended" || name == "Meteor") // These rulesets don't spawn antags and are exempt. + continue + var/datum/antagonist/antag_datum = initial(ruleset.antag_datum) + if (!ispath(antag_datum, /datum/antagonist) || !initial(antag_datum.banning_key)) + Fail("[ruleset] has no antag_datum with a banning key!") + var/role_pref = initial(ruleset.role_preference) + if (!role_pref || !ispath(role_pref, /datum/role_preference)) + Fail("[ruleset] has no role preference!") for (var/datum/dynamic_ruleset/midround/ruleset as anything in subtypesof(/datum/dynamic_ruleset/midround) - /datum/dynamic_ruleset/midround/from_ghosts) var/midround_ruleset_style = initial(ruleset.midround_ruleset_style) diff --git a/code/modules/unit_tests/gamemode_sanity.dm b/code/modules/unit_tests/gamemode_sanity.dm new file mode 100644 index 00000000000..2ac7e458f0b --- /dev/null +++ b/code/modules/unit_tests/gamemode_sanity.dm @@ -0,0 +1,20 @@ +/// Verifies that gamemodes have various fields +/datum/unit_test/gamemode_sanity + +/datum/unit_test/gamemode_sanity/Run() + for (var/datum/game_mode/mode as anything in subtypesof(/datum/game_mode)) + var/name = initial(mode.name) + if (!name) + Fail("[mode] has no name set!") + var/config_tag = initial(mode.config_tag) + if (!config_tag) + Fail("[mode] has no config_tag set!") + // These gamemodes don't spawn antags directly and are exempt. + if(!initial(mode.required_enemies) && !initial(mode.recommended_enemies)) + continue + var/datum/antagonist/antag_datum = initial(mode.antag_datum) + if (!ispath(antag_datum, /datum/antagonist) || !initial(antag_datum.banning_key)) + Fail("[mode] has no antag_datum with a banning key!") + var/role_pref = initial(mode.role_preference) + if (!role_pref || !ispath(role_pref, /datum/role_preference)) + Fail("[mode] has no role_preference set!") diff --git a/code/modules/unit_tests/get_overmap.dm b/code/modules/unit_tests/get_overmap.dm index ef75765afda..f5848c59360 100644 --- a/code/modules/unit_tests/get_overmap.dm +++ b/code/modules/unit_tests/get_overmap.dm @@ -39,37 +39,6 @@ QDEL_NULL(fighter) . = ..() - -/* - * Reactivate when map loading system improves -/// A mob inside a sabre should have its get_overmap return the sabre -/datum/unit_test/sabre_occupant_overmap - var/obj/structure/overmap/small_craft/transport/sabre/sabre = null - var/mob/living/carbon/human/dummy = null - -/datum/unit_test/sabre_occupant_overmap/Run() - for(var/obj/structure/overmap/small_craft/transport/sabre/OM as() in SSstar_system.find_main_overmap().overmaps_in_ship) - sabre = OM - break - - if(!sabre) - var/turf/center = SSmapping.get_station_center() - ASSERT(center) - sabre = new /obj/structure/overmap/small_craft/transport/sabre(center) - - ASSERT(sabre) - var/tries = 50 - while((tries > 0) && (sabre.interior_status != 2)) - sleep(5 SECONDS) - tries-- - TEST_ASSERT_EQUAL(sabre.interior_status, 2, "The sabre's interior was not ready") - - dummy = new(get_turf(sabre)) - sabre.enter(dummy) - dummy.update_overmap() - TEST_ASSERT_EQUAL(dummy.get_overmap(), sabre, "The mob's overmap was not the sabre") -*/ - /datum/unit_test/fighter_pilot_overmap/Destroy() QDEL_NULL(dummy) . = ..() @@ -116,75 +85,3 @@ /datum/unit_test/fighter_docking/Destroy() QDEL_NULL(fighter) . = ..() - -/* This doesn't work because the interior doesn't load in a reasonable amount of time -/// A small craft that docks with an asteroid should have its get_overmap return the asteroid while inside, and then null after leaving -/datum/unit_test/asteroid_docking - var/obj/structure/overmap/small_craft/combat/light/fighter = null - -/datum/unit_test/asteroid_docking/Run() - var/start = world.time - var/time_limit = 1 MINUTES - for(var/obj/structure/overmap/small_craft/combat/light/OM as() in SSstar_system.find_main_overmap().overmaps_in_ship) - fighter = OM - break - - if(!fighter) - var/turf/center = SSmapping.get_station_center() - ASSERT(center) - fighter = new (center) - - fighter.ftl_drive = TRUE //This won't work in real life but it will for the test - var/obj/item/fighter_component/docking_computer/DC = fighter.loadout.get_slot(HARDPOINT_SLOT_DOCKING) - DC.docking_mode = TRUE - fighter.check_overmap_elegibility(ignore_position = TRUE, ignore_cooldown = TRUE) - TEST_ASSERT_EQUAL(fighter.get_overmap(), null, "The fighter's overmap was not null after entering the overmap from the ship") - - var/obj/structure/overmap/asteroid/asteroid = new(get_turf(fighter)) - fighter.docking_act(asteroid) - while((world.time - start) < time_limit) - sleep(10) - TEST_ASSERT_EQUAL(fighter.get_overmap(), asteroid, "The fighter's overmap was not the asteroid after docking") - fighter.check_overmap_elegibility(ignore_position = TRUE, ignore_cooldown = TRUE) - TEST_ASSERT_EQUAL(fighter.get_overmap(), null, "The fighter's overmap was not null after entering the overmap from the asteroid") - -/datum/unit_test/asteroid_docking/Destroy() - QDEL_NULL(fighter) - . = ..() -*/ - -/datum/unit_test/armor_quadrnt_test/Run() - // Test without ngle - var/datum/overmap/source = new /datum/overmap(0, 0, 0, 0, 0) - // Test north east - var/datum/overmap/ne = new /datum/overmap(5, 5, 0, 0, 0) - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(ne), ARMOUR_QUADRANT_NORTH_EAST, "n impct coming from the top right, should hit the north east quadrant.") - // Test north west - var/datum/overmap/nw = new /datum/overmap(-5, 5, 0, 0, 0) - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(nw), ARMOUR_QUADRANT_NORTH_WEST, "n impct coming from the top left, should hit the north west quadrant.") - // Test south west - var/datum/overmap/sw = new /datum/overmap(-5, -5, 0, 0, 0) - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(sw), ARMOUR_QUADRANT_SOUTH_WEST, "n impct coming from the bottom left, should hit the south west quadrant.") - // Test south west - var/datum/overmap/se = new /datum/overmap(5, -5, 0, 0, 0) - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(se), ARMOUR_QUADRANT_SOUTH_EAST, "n impct coming from the bottom right, should hit the south est quadrant.") - // Modify the ngle so tht we re now pointing 90 degrees to the left - // Test rotated 90 degrees to the left. This means our armour quadrants will also be 90 degrees rotated - // Imagining these ships in my head being attacked and rotated almost melted my brain, I hope n ngle of 90 mens 90 nticlockwise nd not clockwise - source = new /datum/overmap(0, 0, 0, -90, 0) - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(ne), ARMOUR_QUADRANT_SOUTH_EAST, "If the ship is rotted 90 degrees to the left, then n ttck from (1, 1) should hit the bottom right shield.") - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(nw), ARMOUR_QUADRANT_NORTH_EAST, "If the ship is rotated 90 degrees to the left, then an attack from (-1, 1) should hit the top right shield") - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(sw), ARMOUR_QUADRANT_NORTH_WEST, "If the ship is rotated 90 degrees to the left, then an attack from (-1, -1) should hit the top left shield.") - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(se), ARMOUR_QUADRANT_SOUTH_WEST, "If the ship is rotated 90 degrees to the left, then an attack from (1, -1) should hit the bottom left shield") - // Test 90 degrees to the right - source = new /datum/overmap(0, 0, 0, 90, 0) - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(ne), ARMOUR_QUADRANT_NORTH_WEST, "If the ship is rotated 90 degrees to the right, then an attack from (1, 1) should hit the top left shield") - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(nw), ARMOUR_QUADRANT_SOUTH_WEST, "If the ship is rotated 90 degrees to the right, then an attck from (-1, 1) should hit the bottom left shield") - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(sw), ARMOUR_QUADRANT_SOUTH_EAST, "If the ship is rotted 90 degrees to the right, then n ttck from (-1, -1) should hit the bottom right shield") - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(se), ARMOUR_QUADRANT_NORTH_EAST, "If the ship is rotated 90 degrees to the right, then an atatck from (1, -1) should hit the top right shield") - // Test a middle angle - // A slight rotation of 5 in either direction shouldnt ffect the answer - source = new /datum/overmap(0, 0, 0, 5, 0) - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(ne), ARMOUR_QUADRANT_NORTH_EAST, "Rotating the ship to the right shouldnt affect the attack from the north east.") - source = new /datum/overmap(0, 0, 0, -5, 0) - TEST_ASSERT_EQUAL(source.get_armour_quadrant_for_impact(ne), ARMOUR_QUADRANT_NORTH_EAST, "Rotating the ship to the left shouldnt affect the attack from the north east.") diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index d1d25a43340..2caebfa95e3 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -182,10 +182,11 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 30 // normally 42 purchasable_from = UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS +// NSV13 - added taser drum /datum/uplink_item/bundles_TC/bulldog name = "Bulldog bundle" desc = "Lean and mean: Optimized for people that want to get up close and personal. Contains the popular \ - Bulldog shotgun, two 12g buckshot drums, and a pair of Thermal imaging goggles." + Bulldog shotgun, a 12g buckshot drum, a 12g taser slug drum, and a pair of Thermal imaging goggles." item = /obj/item/storage/backpack/duffelbag/syndie/bulldogbundle cost = 13 // normally 16 purchasable_from = UPLINK_NUKE_OPS @@ -765,12 +766,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 8 surplus = 50 +//NSV13 - ebow does paralyze /datum/uplink_item/stealthy_weapons/crossbow name = "Miniature Energy Crossbow" desc = "A short bow mounted across a tiller in miniature. \ Small enough to fit into a pocket or slip into a bag unnoticed. \ It will synthesize and fire bolts tipped with a disabling \ - toxin that will damage and disorient targets, causing them to \ + toxin that will briefly stun and disorient targets, causing them to \ slur as if inebriated. It can produce an infinite number \ of bolts, but takes a small amount of time to automatically recharge after each shot." item = /obj/item/gun/energy/kinetic_accelerator/crossbow @@ -907,6 +909,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) Great for quickly destroying light barricades such as airlocks and windows." item = /obj/item/ammo_box/magazine/m12g/breacher +//NSV13 - readded stun slugs +/datum/uplink_item/ammo/shotgun/stun + name = "12g Stun Slug Drum" + desc = "An alternative 8-round stun slug magazine for use with the Bulldog shotgun. \ + Saying that they're completely non-lethal would be lying." + item = /obj/item/ammo_box/magazine/m12g/stun + purchasable_from = UPLINK_NUKE_OPS + /datum/uplink_item/ammo/revolver name = ".357 Speed Loader" desc = "A speed loader that contains seven additional .357 Magnum rounds; usable with the Syndicate revolver. \ @@ -1126,11 +1136,11 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) purchasable_from = UPLINK_CLOWN_OPS /datum/uplink_item/explosives/detomatix - name = "Detomatix PDA Cartridge" - desc = "When inserted into a personal digital assistant, this cartridge gives you four opportunities to \ + name = "Detomatix PDA Disk" + desc = "When inserted into a personal digital assistant, this disk gives you four opportunities to \ detonate PDAs of crewmembers who have their message feature enabled. \ The concussive effect from the explosion will knock the recipient out for a short period, and deafen them for longer." - item = /obj/item/cartridge/virus/syndicate + item = /obj/item/computer_hardware/hard_drive/role/virus/syndicate cost = 6 restricted = TRUE @@ -1653,12 +1663,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 8 /datum/uplink_item/device_tools/frame - name = "F.R.A.M.E. PDA Cartridge" - desc = "When inserted into a personal digital assistant, this cartridge gives you five PDA viruses which \ + name = "F.R.A.M.E. PDA Disk" + desc = "When inserted into a personal digital assistant, this disk gives you five PDA viruses which \ when used cause the targeted PDA to become a new uplink with zero TCs, and immediately become unlocked. \ You will receive the unlock code upon activating the virus, and the new uplink may be charged with \ telecrystals normally." - item = /obj/item/cartridge/virus/frame + item = /obj/item/computer_hardware/hard_drive/role/virus/frame cost = 4 restricted = TRUE diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm index 331fe1dfaec..4ee6b5bb753 100644 --- a/code/modules/vehicles/pimpin_ride.dm +++ b/code/modules/vehicles/pimpin_ride.dm @@ -12,11 +12,12 @@ update_icon() var/datum/component/riding/D = LoadComponent(/datum/component/riding) D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 7), TEXT_EAST = list(-12, 7), TEXT_WEST = list( 12, 7))) - + GLOB.janitor_devices += src if(floorbuffer) AddElement(/datum/element/cleaning) /obj/vehicle/ridden/janicart/Destroy() + GLOB.janitor_devices -= src if(mybag) qdel(mybag) mybag = null diff --git a/code/modules/vehicles/sealed.dm b/code/modules/vehicles/sealed.dm index 5493a14f7e0..a7de87ebe0b 100644 --- a/code/modules/vehicles/sealed.dm +++ b/code/modules/vehicles/sealed.dm @@ -46,6 +46,9 @@ /obj/vehicle/sealed/proc/mob_enter(mob/M, silent = FALSE) if(!istype(M)) return FALSE + if(!M.IsAdvancedToolUser()) //NSV13 - simple mobs cant get in car anymore + to_chat(M, "You don't have the dexterity to climb in [src]!") + return if(!silent) M.visible_message("[M] climbs into \the [src]!") M.forceMove(src) diff --git a/code/modules/vending/assist.dm b/code/modules/vending/assist.dm index 5b78274f253..08d5eba1ce9 100644 --- a/code/modules/vending/assist.dm +++ b/code/modules/vending/assist.dm @@ -3,7 +3,7 @@ /obj/item/assembly/igniter = 3, /obj/item/assembly/signaler = 4, /obj/item/wirecutters = 1, - /obj/item/cartridge/signal = 4) + /obj/item/computer_hardware/hard_drive/role/signal = 4) contraband = list(/obj/item/assembly/timer = 2, /obj/item/assembly/voice = 2, /obj/item/assembly/health = 2) diff --git a/code/modules/vending/cartridge.dm b/code/modules/vending/cartridge.dm deleted file mode 100644 index 44790b54b2c..00000000000 --- a/code/modules/vending/cartridge.dm +++ /dev/null @@ -1,26 +0,0 @@ -//This one's from bay12 -/obj/machinery/vending/cart - name = "\improper PTech" - desc = "Cartridges for PDAs." - product_slogans = "Carts to go!" - icon_state = "cart" - icon_deny = "cart-deny" - light_color = LIGHT_COLOR_WHITE - products = list(/obj/item/cartridge/medical = 10, - /obj/item/cartridge/engineering = 10, - /obj/item/cartridge/security = 10, - /obj/item/cartridge/janitor = 10, - /obj/item/cartridge/signal/toxins = 10, - /obj/item/pda/heads = 10, - /obj/item/cartridge/captain = 3, - /obj/item/cartridge/quartermaster = 10) - premium = list(/obj/item/cartridge/annoyance/lesser = 3) - refill_canister = /obj/item/vending_refill/cart - default_price = 50 - extra_price = 100 - payment_department = ACCOUNT_SRV - -/obj/item/vending_refill/cart - machine_name = "PTech" - icon_state = "refill_smoke" - diff --git a/code/modules/vending/job_disk.dm b/code/modules/vending/job_disk.dm new file mode 100644 index 00000000000..881897498e0 --- /dev/null +++ b/code/modules/vending/job_disk.dm @@ -0,0 +1,36 @@ +//This one's from bay12 +/obj/machinery/vending/job_disk + name = "\improper PTech" + desc = "Job disks for PDAs." + product_slogans = "Disks to go!" + icon_state = "cart" + icon_deny = "cart-deny" + light_color = LIGHT_COLOR_WHITE + products = list(/obj/item/modular_computer/tablet/pda = 15, + /obj/item/computer_hardware/hard_drive/role/medical = 5, + /obj/item/computer_hardware/hard_drive/role/chemistry = 5, + /obj/item/computer_hardware/hard_drive/role/brig_physician = 3, + /obj/item/computer_hardware/hard_drive/role/security = 3, + /obj/item/computer_hardware/hard_drive/role/detective = 3, + /obj/item/computer_hardware/hard_drive/role/engineering = 5, + /obj/item/computer_hardware/hard_drive/role/atmos = 5, + /obj/item/computer_hardware/hard_drive/role/signal/toxins = 5, + /obj/item/computer_hardware/hard_drive/role/roboticist = 3, + /obj/item/computer_hardware/hard_drive/role/lawyer = 3, + /obj/item/computer_hardware/hard_drive/role/curator = 3, + /obj/item/computer_hardware/hard_drive/role/janitor = 5, + /obj/item/computer_hardware/hard_drive/role/quartermaster = 3, + /obj/item/computer_hardware/hard_drive/role/cargo_technician = 5, + /obj/item/computer_hardware/hard_drive/role/unlicensed = 5, + /obj/item/computer_hardware/hard_drive/role/head = 5) + premium = list(/obj/item/computer_hardware/hard_drive/role/captain = 3) + contraband = list(/obj/item/computer_hardware/hard_drive/role/virus/clown = 2, + /obj/item/computer_hardware/hard_drive/role/virus/mime = 2) + refill_canister = /obj/item/vending_refill/job_disk + default_price = 100 + extra_price = 300 + payment_department = ACCOUNT_SRV + +/obj/item/vending_refill/job_disk + machine_name = "PTech" + icon_state = "refill_smoke" diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index 763a134b38f..71c907a568d 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -16,7 +16,7 @@ /obj/item/flashlight/seclite = 4, /obj/item/holosign_creator/security = 3, /obj/item/restraints/legcuffs/bola/energy = 7, - /obj/item/club = 5) + /obj/item/melee/classic_baton/police = 5) contraband = list(/obj/item/clothing/glasses/sunglasses/advanced = 2, /obj/item/storage/fancy/donut_box = 2) premium = list(/obj/item/storage/belt/security/webbing = 5, diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 6a7b2e32700..bc54ad05955 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -341,7 +341,7 @@ //obj/item/clothing/under/rank/civilian/janitor/skirt = 2, //NSV13 no skirts /obj/item/clothing/under/plasmaman/janitor = 2, /obj/item/clothing/head/helmet/space/plasmaman/janitor = 2, - /obj/item/cartridge/janitor = 2, + /obj/item/computer_hardware/hard_drive/role/janitor = 2, /obj/item/clothing/gloves/color/black = 2, /obj/item/clothing/head/soft/purple = 2, /obj/item/pushbroom = 2, diff --git a/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm b/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm index 8ba217223f2..97efac692b7 100644 --- a/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm +++ b/code/modules/xenoarchaeology/traits/xenoartifact_minors.dm @@ -131,7 +131,7 @@ man.key = M.ckey /datum/xenoartifact_trait/minor/sentient/proc/get_canidate(obj/item/xenoartifact/X, mob/M) - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the maleviolent force inside the [X.name]?", ROLE_SENTIENCE, null, FALSE, 8 SECONDS, POLL_IGNORE_SENTIENCE_POTION) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the maleviolent force inside the [X.name]?", ROLE_SENTIENT_XENOARTIFACT, null, 8 SECONDS) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) setup_sentience(X, C.ckey) @@ -197,6 +197,7 @@ short_desc = "You're a maleviolent sentience, possesing an ancient alien artifact." flavour_text = "Return to your master..." use_cooldown = TRUE + banType = ROLE_SENTIENT_XENOARTIFACT invisibility = 101 var/obj/item/xenoartifact/artifact diff --git a/code/modules/xenoarchaeology/xenoartifact.dm b/code/modules/xenoarchaeology/xenoartifact.dm index c4bb182258c..8017407018e 100644 --- a/code/modules/xenoarchaeology/xenoartifact.dm +++ b/code/modules/xenoarchaeology/xenoartifact.dm @@ -424,7 +424,7 @@ if(prob(1)) material = pick(XENOA_PLASMA, XENOA_URANIUM, XENOA_BANANIUM) difficulty = material - ..() + . = ..() /datum/component/xenoartifact_pricing ///Pricing component for shipping solution. Consider swapping to cargo after change. ///Buying and selling related, based on guess qaulity @@ -434,7 +434,7 @@ /datum/component/xenoartifact_pricing/Initialize(...) RegisterSignal(parent, XENOA_CHANGE_PRICE, PROC_REF(update_price)) - ..() + . = ..() /datum/component/xenoartifact_pricing/Destroy(force, silent) UnregisterSignal(parent, XENOA_CHANGE_PRICE) @@ -447,7 +447,7 @@ ///Objective version for exploration /obj/item/xenoartifact/objective/Initialize(mapload, difficulty) traits += new /datum/xenoartifact_trait/special/objective - ..() + . = ..() /obj/item/xenoartifact/objective/ComponentInitialize() AddComponent(/datum/component/gps, "[scramble_message_replace_chars("#########", 100)]", TRUE) diff --git a/config/config.txt b/config/config.txt index 50dc239794f..bcd3e56e5c5 100644 --- a/config/config.txt +++ b/config/config.txt @@ -204,7 +204,7 @@ VOTE_DELAY 6000 VOTE_PERIOD 600 ## prevents dead players from voting or starting votes -NO_DEAD_VOTE +#NO_DEAD_VOTE ## players' votes default to "No vote" (otherwise, default to "No change") DEFAULT_NO_VOTE @@ -456,18 +456,16 @@ AUTOADMIN_RANK Admin ## These trigger for any version below (non-inclusive) the given version, so 510 triggers on 509 or lower. ## These messages will be followed by one stating the clients current version and the required version for clarity. ## If CLIENT_WARN_POPUP is uncommented a popup window with the message will be displayed instead - -#Warn, Allows connection but warns about possibile instability. -CLIENT_WARN_POPUP -CLIENT_WARN_VERSION 0 -#Wish we had a build check for this -CLIENT_WARN_MESSAGE Currently Unused! If you see this message yell at Francinum! - -#Error, Blocks non-admin connection. +#CLIENT_WARN_VERSION 513 +#CLIENT_WARN_BUILD 1421 +#CLIENT_WARN_POPUP +#CLIENT_WARN_MESSAGE 512 is no longer being directly supported as version 513 is set to become the new stable version soon. We've made a number of changes to take advantage of the improvements made in 513 which should make for a smoother experience. We will be removing support for 512 when this new version replaces it as stable, so it's recommended that you upgrade now. (You can update to the BETA via the website or directly in the BYOND client) CLIENT_ERROR_VERSION 514 CLIENT_ERROR_MESSAGE Your version of byond is not supported. Please upgrade. ## The minimum build needed for joining the server, if using 513, a good minimum build would be 1526. -CLIENT_ERROR_BUILD 1583 +CLIENT_ERROR_BUILD 1589 +## The maximum build recommended for clients +CLIENT_MAX_BUILD 1614 ## TOPIC RATE LIMITING ## This allows you to limit how many topic calls (clicking on an interface window) the client can do in any given game second and/or game minute. diff --git a/config/dbconfig.txt b/config/dbconfig.txt index 17550ca61b1..6d1e40ed08e 100644 --- a/config/dbconfig.txt +++ b/config/dbconfig.txt @@ -3,11 +3,11 @@ ## administration, and the in game library. ## Should SQL be enabled? Uncomment to enable -#SQL_ENABLED +SQL_ENABLED ## Server the MySQL database can be found at. ## Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. -ADDRESS localhost +ADDRESS 127.0.0.1 ## MySQL server port (default is 3306). PORT 3306 diff --git a/config/dynamic.json b/config/dynamic.json index 55cd5dc0f04..f7a22b96803 100644 --- a/config/dynamic.json +++ b/config/dynamic.json @@ -7,20 +7,9 @@ "weight": 5, "required_candidates": 1, "minimum_required_age": 0, - "requirements": [ - 10, - 10, - 10, - 10, - 10, - 10, - 10, - 10, - 10, - 10 - ], + "requirements": [8, 8, 8, 8, 8, 8, 8, 8, 8, 8], "antag_cap": { - "denominator": 24 + "denominator": 38 }, "protected_roles": [ "Security Officer", @@ -29,9 +18,7 @@ "Head of Security", "Captain" ], - "restricted_roles": [ - "Cyborg" - ] + "restricted_roles": ["Cyborg"] } }, "Midround": {}, diff --git a/config/game_options.txt b/config/game_options.txt index bc07605b631..37353b430ad 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -350,7 +350,7 @@ ALLOW_AI_MULTICAM ## Secborg ### ## Uncomment to prevent the security cyborg module from being chosen -DISABLE_SECBORG +#DISABLE_SECBORG ## Peacekeeper Borg ### ## Uncomment to prevent the peacekeeper cyborg module from being chosen @@ -615,7 +615,7 @@ ARRIVALS_SHUTTLE_DOCK_WINDOW 55 MICE_ROUNDSTART 10 ## If the percentage of players alive (doesn't count conversions) drops below this threshold the emergency shuttle will be forcefully called (provided it can be) -EMERGENCY_SHUTTLE_AUTOCALL_THRESHOLD 0.2 +EMERGENCY_SHUTTLE_AUTOCALL_THRESHOLD 0 ## Determines if players are allowed to print integrated circuits, uncomment to allow. #IC_PRINTING #ZHIS DOES NOTHING diff --git a/config/maps.txt b/config/maps.txt index 84c1ae149a3..2d0b89b9ee6 100644 --- a/config/maps.txt +++ b/config/maps.txt @@ -39,12 +39,27 @@ map galactica votable endmap +map gladius + minplayers 17 + votable +endmap + +map hammerhead + votable +endmap + +map serendipity + maxplayers 20 + votable +endmap + map shrike maxplayers 24 votable endmap map snake + maxplayers 30 votable endmap @@ -56,11 +71,6 @@ map Vago # votable endmap -map gladius -# minplayers 20 -# votable -endmap - #BEGIN DEBUG MAPS #map testship diff --git a/dependencies.sh b/dependencies.sh index b4f1d0f2771..caa899f6669 100755 --- a/dependencies.sh +++ b/dependencies.sh @@ -4,24 +4,24 @@ #Final authority on what's required to fully build the project # byond version -export BYOND_MAJOR=514 -export BYOND_MINOR=1589 +export BYOND_MAJOR=515 +export BYOND_MINOR=1608 #rust version -export RUST_VERSION=1.54.0 +export RUST_VERSION=1.67.1 #rust_g git tag -export RUST_G_VERSION=0.4.7.1 +export RUST_G_VERSION=1.2.0 #node version -export NODE_VERSION=12 -export NODE_VERSION_PRECISE=12.22.4 +export NODE_VERSION=18 +export NODE_VERSION_PRECISE=18.14.2 # SpacemanDMM git tag -export SPACEMAN_DMM_VERSION=suite-1.7.1 +export SPACEMAN_DMM_VERSION=suite-1.8 #auxmos version export AUXMOS_VERSION=2.2.2 # Python version for mapmerge and other tools -export PYTHON_VERSION=3.9.10 +export PYTHON_VERSION=3.11.2 diff --git a/html/admin/banpanel.css b/html/admin/banpanel.css index f19ef6e1ba2..86fe6f84e33 100644 --- a/html/admin/banpanel.css +++ b/html/admin/banpanel.css @@ -1,7 +1,7 @@ .middle { - margin-left: 5px; - margin-right: 5px; - max-width: 125px; + margin-left: 5px; + margin-right: 5px; + max-width: 125px; } .right { @@ -70,10 +70,18 @@ background-color: #6eaa2c; } -.ghostandotherroles { +.ghostroles { background-color: #5c00e6; } .antagonistpositions { - background-color: #6d3f40; + background-color: #6d3f40; +} + +.forcedantagonistpositions { + background-color: #064d10; +} + +.other { + background-color: #cf7474; } diff --git a/html/changelog.html b/html/changelog.html index f5cd1792ee7..22ae693f205 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,452 +56,65 @@ -->
                      -

                      19 April 2023

                      -

                      Shaps/Ryll, Wesoda25, Y0SH1M4S73R, Mothblocks, Ghommie updated:

                      -
                        -
                      • NT has updated its personnel policies and allowed for employees to register as gender neutral, with standard support for they/them pronouns.
                      • -
                      • changed text on gender options to make them grammatically correct and visually pleasing
                      • -
                      • Wound tending and people holding items in photographs have had their pronoun usage fixed.
                      • -
                      • Added M/F body preferences.
                      • -
                      -

                      Wisemonster updated:

                      -
                        -
                      • Fixed medibots ignoring patients that stepped away from them.
                      • -
                      -

                      [itsmeow](https://github.com/itsmeow), [AnturK](https://github.com/AnturK), [RimiNosha](https://github.com/RimiNosha), [dwasint](https://github.com/dwasint) updated:

                      -
                        -
                      • Code should now compile on 515
                      • -
                      -

                      covertcorvid updated:

                      -
                        -
                      • Mice will no longer spawn or eat on catwalk wires
                      • -
                      - -

                      18 April 2023

                      -

                      SerynEngi updated:

                      -
                        -
                      • Changed the gondola asteroid to not spawn sabres within rock.
                      • -
                      • Fixed a couple minor mapping errors in Tycoon engineering.
                      • -
                      -

                      someone543 updated:

                      -
                        -
                      • Fixed a typo in the Crewsimov Core module
                      • -
                      - -

                      09 April 2023

                      -

                      BetaCentari updated:

                      -
                        -
                      • Fixed the proper position of the plasma canister in the cargo list
                      • -
                      -

                      Bobbanz1 updated:

                      -
                        -
                      • Added Coffee related things from the ported PRs
                      • -
                      • Adds a Coffeemaker to every map in rotation
                      • -
                      • Adds Naval Coffee, don't drink too much now!
                      • -
                      • The Shrike now again has Glock Ammo in its armory!
                      • -
                      • The Snake now no longer has a double pipe in maintenance!
                      • -
                      -

                      Bobbanz1, Kmc2000, AbsurdlyLudicrous, cdey, flaksim updated:

                      -
                        -
                      • Added new Replicator Recipes.
                      • -
                      • You can now manually link the Replicator to different Biogenerators using a multitool!
                      • -
                      • changed how the replicator produces items, easier methods of giving it new recipes are now available for coding.
                      • -
                      • refactored the horrible looking TGUI interface into something more sensible.
                      • -
                      • ported and modified a few icons from Deep-Space-13.
                      • -
                      -

                      Bobbanz1, dragomagol, Kubisopplay, ShizCalev, NamelessFairy updated:

                      -
                        -
                      • advanced cyborg hypospray once again refills its chems
                      • -
                      • Borg hypospray will correctly tell you the name of the limb that is blocked when trying to inject into a blocked limb.
                      • -
                      -

                      covertcorvid updated:

                      -
                        -
                      • Increased Shrike base protolathe/techfab storage capacity
                      • -
                      • Added circuitboards for the furnace and furnace control console to mining tech research
                      • -
                      • Added construction, deconstruction, and multitool linking of furnace and furnace console
                      • -
                      • Added stock parts upgrades for the furnace
                      • -
                      • Fixed mining points not appearing on the smelter console after the TGUI upgrade
                      • -
                      • Adds the space yellow pages. It is a book you can buy from space stations that show listings of supplies at nearby space stations.
                      • -
                      • Added classic yellow pages icon.
                      • -
                      • Starsystem Manager is in its own file now
                      • -
                      • Starsystem Manager search tool can now be used to find fleets and objects
                      • -
                      • Starsystem Manager now has options for viewing variables
                      • -
                      • Fixed sabre FTL missing a variable
                      • -
                      • FTL pylons will now add load to the power grid
                      • -
                      • FTL machines can no longer be eaten by swarmers
                      • -
                      -

                      red031000 updated:

                      -
                        -
                      • Bumps auxmos to 2.2.2
                      • -
                      • Bumps the maximum BYOND version to 514.1589
                      • -
                      -

                      someone543 updated:

                      -
                        -
                      • Gunpowder can now be loaded to trolleys by hand
                      • -
                      - -

                      05 April 2023

                      -

                      SerynEngi updated:

                      -
                        -
                      • Removed Boxstation, Corgstation, Flandstation, Deltastation, Kilostation, Metastation and Pubbystation
                      • -
                      - -

                      03 April 2023

                      -

                      PowerfulBacon updated:

                      -
                        -
                      • Adds current map to metric tracking
                      • -
                      -

                      covertcorvid updated:

                      -
                        -
                      • fixed the events subsystem, which sometimes relies on the jobs subsystem, initializing before the jobs subsystem
                      • -
                      -

                      jbox144, Bobbanz1 updated:

                      -
                        -
                      • Adds the hugbot
                      • -
                      • Adds icons for the hugbot
                      • -
                      • Adds the NSV13 file aibots.dmi
                      • -
                      • Deleted the catmedbot.dmi file
                      • -
                      • Changed the icon path on the MediKitty to the newly created dmi file
                      • -
                      - -

                      01 April 2023

                      -

                      EvilDragonfiend, Ivniinvi, Zytolg, RKz, CydiaLamiales, Shiraizawa, itsmeow updated:

                      -
                        -
                      • welding/unwelding an airlock will be logged
                      • -
                      • changed a long var declaration from a single line into multiple lines for better readability
                      • -
                      • timers are put in the closest future bucket, as a precaution
                      • -
                      • medibots have more skins based on which first aid kit was used when it's made. These currently have no speicla ability by its shape which means these are just skins.
                      • -
                      • more medibot skins (advanced, rad, syndi, doctors roundstart kit)
                      • -
                      • Phobias can now be weighted
                      • -
                      • The phobias of Robots and Doctors are slightly less likely to occur
                      • -
                      • The phobia of Space is significantly less likely to occur
                      • -
                      • Lizard speech now has a variation on the use of X in normal conversation. Things like "Xenomorph" will sound the same as before as it is phonetically similiar, however uses of "x-ray" will become "ecks-ray".
                      • -
                      • Added a line of text showing the Security Level in the current round
                      • -
                      • fixed anomalies spawning inside walls
                      • -
                      • Instead of being dusted, plasmaman helmets now have their lamps broken when hit with the Light Eater
                      • -
                      • Added the ability to repair broken plasmaman helmet lamps with light bulbs
                      • -
                      • Tying and untying bandanas will give the proper notice to people seeing it
                      • -
                      • Decreased the snowball effect of fear build-up from (stress x10)% to (stress x5)%. Your stress levels build up faster with each fainting now, which leads to a higher chance of a heartattack
                      • -
                      • You wont faint immediately after waking up from a faint caused by a phobia
                      • -
                      • The message for fainting from a phobia will actually be visible for the one fainting now
                      • -
                      • Added a small bit of text indicating AIs should Ahelp before using the "Wipe-Core" verb
                      • -
                      • Engineer goggles wont give meson lighting effects in their off state anymore.
                      • -
                      • Prevented multiple Space Pirates spawning in a round.
                      • -
                      -

                      covertcorvid updated:

                      -
                        -
                      • Added jetpack and cryogenic fuel tank to the mining vendor.
                      • -
                      • Removed regen core stabilizer, skeleton key, minebot weatherproofing, most survival capsules, jump boots, minebot armor, and PKA damage and AOE upgrades from mining vendor.
                      • -
                      - -

                      31 March 2023

                      -

                      covertcorvid updated:

                      -
                        -
                      • Fixes an exploit with the byond debugger leaking information
                      • -
                      - -

                      30 March 2023

                      -

                      BetaCentari updated:

                      -
                        -
                      • Fixed and touched up the Gladius
                      • -
                      -

                      Bobbanz1 updated:

                      -
                        -
                      • Altered some of the code structure in the broadside packer bench.
                      • -
                      • Added an icon to let the holomap show you where you can find an elevator button to press!
                      • -
                      • changed some of the area colors, munitions is now orange, cargo is now brown.
                      • -
                      -

                      HowToLoLu updated:

                      -
                        -
                      • Lizard tails no longer ignore dna when regenerating organs.
                      • -
                      -

                      WhereAmO updated:

                      -
                        -
                      • Ecto Sniffer now sends a message over Science Comms when a Ghost uses it.
                      • -
                      -

                      benbot16 updated:

                      -
                        -
                      • Adds a sabre-mounted plasma cutter. This can be printed at cargo protolathes and uses ship power to fire.
                      • -
                      • Adds point defense lasers to the Aetherwhisp, located in the starboard weapons bay.
                      • -
                      • Ship weapons with burst fire can now have variable delays between shots.
                      • -
                      - -

                      27 March 2023

                      -

                      Bobbanz1, ghost, Qustinnus, Kryson, uglykoala, KittyNoodle, itseasytosee, FlamingLily, SmArtKar, Fikou, ShizCalev, wesoda25 updated:

                      -
                        -
                      • Ethereals now crystalize on death, allowing them to heal themselves unless the crystal is destroyed, but giving them a brain trauma when its succesful.
                      • -
                      • ethereal hair will now change with ethereal color without an external update
                      • -
                      • If you get qdeleted while crystalizing as ethereal, you no longer get super-owned
                      • -
                      • Ethereals will no longer crystallize after being eaten. (His grace, etc, etc)
                      • -
                      • Fixed ethereal revive crystal bugging out when buckled
                      • -
                      • ethereals no longer revive after being changeling drained
                      • -
                      -

                      benbot16 updated:

                      -
                        -
                      • TX-101 shell damage & penetration ability now scales with powder load
                      • -
                      - -

                      26 March 2023

                      -

                      covertcorvid, Karmic-Skink updated:

                      -
                        -
                      • Added a non-power-based variant of the chem dispenser and out it on the Shrike
                      • -
                      - -

                      24 March 2023

                      -

                      RimiNosha (Skyrat-TG), Woodratt (Polaris), DietyLink (Original Holomap Creator) (/vg/station) updated:

                      -
                        -
                      • Added Holomaps! Check them out!
                      • -
                      - -

                      21 March 2023

                      -

                      Bobbanz1 updated:

                      -
                        -
                      • Added two else statements, not really worth nothing beyond it annihilating two newly created warnings in VSC
                      • -
                      -

                      benbot16 updated:

                      -
                        -
                      • Fixes VLS tube autoloading.
                      • -
                      -

                      itsmeow updated:

                      -
                        -
                      • Added TGUI inputs and alerts internally, however they are not enabled.
                      • -
                      • Improved the response of most alert menus when you X them out rather than hitting No/Cancel.
                      • -
                      • Increased the contrast of selected/hovered TGUI buttons to 30% (from 15%)
                      • -
                      - -

                      19 March 2023

                      +

                      03 May 2024

                      Bokkiewokkie updated:

                        -
                      • Fixed some variables that caused the Serendipity webmap to fail
                      • -
                      - -

                      17 March 2023

                      -

                      Bobbanz1 updated:

                      -
                        -
                      • Increases the TGUI Window Limit to 20.
                      • +
                      • Fixed fighters not hearing overmap messages from their mothership.
                      • +
                      • Made it clear the Syndicate Crew antag preference is for PVP
                      -

                      TheFakeElon, IndusRobot, Absolutely-Steph updated:

                      +

                      DeltaFire15 updated:

                        -
                      • Adds a new FTL drive and it's respective components
                      • -
                      • cleans up legacy FTL drive file
                      • -
                      • Adds a new advanced looping sound handler
                      • -
                      • Adds an index2phonetic/greek proc
                      • -
                      -

                      covertcorvid updated:

                      -
                        -
                      • Added new mapvote UI that displays detailed information about ships
                      • -
                      • Added additional ship data to all the map JSONs
                      • -
                      • Added statistics for round results and engine meltdowns
                      • -
                      • New ban type "Mapvote" prevents people from voting in map votes
                      • -
                      • Logged who voted for what map and whether voters were present next round during the roundstart logout report in the Vote log
                      • -
                      -

                      linnpap, Seris02, Useroth updated:

                      -
                        -
                      • AIs will no longer hear all emotes from all ai_eye cameras
                      • -
                      • AI eye can now see emotes (or to be specific, non-spoken messages emitted from things)
                      • -
                      • It's now possible to examine holopad holograms during the call to actually examine the character represented by the holo
                      • -
                      • It's now possible to properly send emotes through holopad holograms
                      • -
                      • It's now possible to properly see emotes through holopad holograms
                      • -
                      • BONUS because I hate snowflake code: the above should work with regular character-made holocalls too
                      • -
                      - -

                      14 March 2023

                      -

                      Bobbanz1 updated:

                      -
                        -
                      • Engine room areas are now protected against power grid checks, don't know about atmos though! :)
                      • -
                      -

                      Kit_Katz, RKz updated:

                      -
                        -
                      • Added new customization options for apids. Color is now selectable from a pallette, and three customization options have been added for stripes, antenna, and bodymarkings
                      • -
                      • entirely new APID sprites for sprite_accessories, including stripes, antenna, and bodymarkings
                      • -
                      -

                      someone543 updated:

                      -
                        -
                      • Tier 2 missile racks can now hold 10 (from 5) missiles
                      • +
                      • The BSA now goes kaboom when relayed instead of being essentially a ghost NAC shell.
                      • +
                      • The Eclipse no longer spawns a borg module that should never exist outside of mobs.
                      • +
                      • DNA no longer has some super weird code for flavor text, instead copying the one of the source mob.
                      • +
                      • You can no longer stack interactions on walls. This is to prevent a runtime from actions that modify the type of them (deconstruction mainly).
                      • +
                      • Paper no longer runtimes if you do not have a pen in hand (???).
                      • +
                      • Traders no longer do some cursed things to create their trade items, instead using the all-powerful initial().
                      • +
                      • The stormdrive no longer runtimes if it has zero gas in it.
                      • +
                      • Some squad assignment stuff shouldn't try to use a list as datum anymore.
                      -

                      13 March 2023

                      -

                      Bobbanz1 updated:

                      -
                        -
                      • KNPCs have now taken a class in navigating old spaceships and can now patrol the Hammerhead
                      • -
                      • KNPCs have overcome their fear of tight spaces, so now they can navigate the Snake
                      • -
                      • The Syndicate Daredevil Lone Troopers have overcome their fear regarding the possibility that the Snake contains a bunch of snakes, and now they can come along to have some fun as well~
                      • -
                      -

                      cacogen, ShizCalev, Hatterhat updated:

                      -
                        -
                      • Can use BSRPED to add components to machine frames at a distance
                      • -
                      • RPEDs now drop their lowest part tier first when quick-emptied (used inhand).
                      • -
                      -

                      zxaber updated:

                      +

                      21 April 2024

                      +

                      Bokkiewokkie updated:

                        -
                      • Ported the Ratvar Hologram
                      • -
                      • Ported the Ratvar Hologram icon
                      • +
                      • Updated the webmap link
                      -

                      10 March 2023

                      -

                      BetaCentari updated:

                      +

                      19 April 2024

                      +

                      KasparoVy updated:

                        -
                      • Added the DLV Serendipity Ship
                      • -
                      • Added the Food Replicator
                      • -
                      • Added the Organ Grower
                      • -
                      • Added the autodoc as a map-only machine
                      • -
                      • Added Autoinjector printers
                      • -
                      • Added autoinjectors
                      • -
                      • Added special incense candles for chaplain drobe
                      • -
                      • Added a new weapon for munitions: The MPAC
                      • -
                      • Added supporting ammo/machines/manual for the MPAC
                      • -
                      • added Food replicator sound effects
                      • -
                      • added sounds for the MPAC
                      • -
                      • added Sprites for MPAC and supporting machines/items
                      • -
                      • added Sprite for the Serendipity
                      • -
                      • added sprite for autoinjectors and printer
                      • -
                      • added Sprites for the Food Replicator
                      • -
                      • added New sprites for the organ grower
                      • -
                      • Sprites for incense (candle sprites from Skyrat)
                      • -
                      -

                      Bobbanz1 updated:

                      -
                        -
                      • Refactors the Smelter User Interface into a TGUI Version
                      • -
                      -

                      DrDuckedGoose updated:

                      -
                        -
                      • Tweaks Hypodermic injections rates from 5, 10, 15 > (7, 14 , 21 * metabolization_rate).
                      • -
                      • Changes C.D.E knockout from 5 Seconds > 2 Seconds
                      • -
                      • Barreled will no longer always target east when not given a specific direction, instead it will pick a random direction.
                      • -
                      • Lamp now has a visible message which aids in identifying it in well-lit rooms
                      • -
                      • Changes logging xyz > area
                      • -
                      • Change research point reward from 2.3 * final price > 2.5 * final price
                      • -
                      • Change discovery point reward from 350*final_price/initial_price > 350*(final price/initial price)) * max(1, final price/1000)
                      • -
                      • Aggressively lowers stun times on all related traits
                      • -
                      • Artifacts will now target the user too. The only way to avoid this is to be inside science & wearing safety-pinchers.
                      • -
                      • Slightly lower sentient buffs to arfiacts
                      • -
                      • Blacklist aura from destabilizing.
                      • -
                      • Artifacts malfunction more often.
                      • -
                      • All artifacts get an extra slot for malfunctions, 1 > 2
                      • -
                      • Extend sentient play offer
                      • -
                      • Wall trait now points randomly east or north if it is 3x1
                      • -
                      • Increase bananium malfunction chance
                      • -
                      • Ghosts can take control of player-less artifacts
                      • -
                      • Artifact consoles now have a stability meter that stops spam-buying.
                      • -
                      • Sentient artifacts are more common, slightly,
                      • -
                      • Ghosts can activate haunted artifacts.
                      • -
                      • Tweaks labeler UI to show elements in alphabetical order.
                      • -
                      • Tweak console UI to have less clutter.
                      • -
                      • Swaps over to AREACOORD for logging.
                      • -
                      • Fix cheeky runtime on Weighted. No longer checks all gloves for safety variable.
                      • -
                      • Fix issue with weighted signal order preventing activation.
                      • -
                      • Fix lamp trait runtiming
                      • -
                      • Fix anti_artifact runtiming
                      • -
                      • Fix fragile artifacts not breaking due to byond being beyond illogical.
                      • -
                      • Fix strip malfunction from stripping non-removable clothing..
                      • -
                      • Adds anti-clone malfunction. Creates an evil twin of the target.
                      • -
                      • Add better functions for adding malfunctions that support typing
                      • -
                      • Add exploding malfunction delaminating, unique to bananium.
                      • -
                      • Add all artifact smoke screen trait.
                      • -
                      • Add Plasma & Bluespace trait, Marker trait, colors the target
                      • -
                      • Add all artifact malfunction absorbing. Absorbs nearby gasses, suffocating small rooms. Will spit gasses back out when destroyed.
                      • -
                      • Add Honked activator. Only clowns, and clown related items, can activate this artifact.
                      • -
                      • Add Emotional major. Makes target perform a random emote, from a curated list.
                      • -
                      • Add Desynced minor. Makes the artifact disappear for a short period after activating.
                      • -
                      • Add Hallucinogenic malfunction. Makes the target experience a random hallucination.
                      • -
                      • Add bar to UI that shows thread stability.
                      • -
                      • Fix flammable trait not activating
                      • -
                      • Fix haunted activation.
                      • -
                      • Fix blacklisting on explosive malfunction
                      • -
                      • Add limit to clone & bear malfunction.
                      • -
                      -

                      Ghommie, RKz updated:

                      -
                        -
                      • new advancements in Object Permanence Theory at NT Labs have been discovered! Lizard snoots will no longer disappear when wearing certain hoods or helmets.
                      • -
                      -

                      SerynEngi updated:

                      -
                        -
                      • Doubled Ethereal light radius.
                      • -
                      -

                      benbot16 updated:

                      -
                        -
                      • Adds virtual Zs to dropships.
                      • -
                      -

                      covertcorvid updated:

                      -
                        -
                      • Separated KNPC detection range from attack range. Set detection range equal to normal humans.
                      • +
                      • added more custom prosthetic sprites
                      -

                      06 March 2023

                      -

                      Ikalpo updated:

                      -
                        -
                      • stopped ships bouncing off of guided munitions
                      • -
                      -

                      benbot16 updated:

                      -
                        -
                      • Fixes the overmap brakes hotkey.
                      • -
                      -

                      itsmeow, EvilDragonfiend updated:

                      -
                        -
                      • ChemMasters now have an exact output units mode for pills/patches/bottles.
                      • -
                      • ChemMasters can now have a set name input to use for all pills, instead of prompting every time.
                      • -
                      • ChemMaster packaging names are now subject to the IC filter.
                      • -
                      • a new reagent container type - Chemical bag (max 200u). printable from ChemMaster. Currently, this does not have many usages - not drinkable, and not insertable into ChemMaster back.(but grindable) only usable for IV drip.
                      • -
                      • blood packs are grindable
                      • -
                      • adds a bitflag that allows a grinder can grind a reagent container, and related proc 'is_grindable()'
                      • -
                      • new variable label_name that is used to display specific string without suffix like bottle, pill, patch
                      • -
                      • bottles now show its names in vending machines
                      • -
                      -

                      someone543 updated:

                      +

                      01 April 2024

                      +

                      Bokkiewokkie updated:

                        -
                      • Starmaps in local servers now load properly
                      • +
                      • Fixed auto-spooling not working for the Thirring FTL drive.
                      • +
                      • Enabled auto-spooling as an option for the Thirring FTL drive by default.
                      -

                      03 March 2023

                      -

                      BetaCentari, Floyd, ActionNinja updated:

                      -
                        -
                      • added a TON of new sounds under sound/surgery and sound/items/handling
                      • -
                      • Changed some inventory handling to configure picking up and putting down and dropping items
                      • -
                      +

                      29 March 2024

                      Bobbanz1 updated:

                        -
                      • Removed a redundant if condition, tug will probably now keep the breaks on until you turn it off and not just when there's someone inside the thingy, also removed two unused variables.
                      • -
                      -

                      Kenionatus updated:

                      -
                        -
                      • Turnstiles now break when heavily damaged
                      • -
                      • Turnstiles now shock you when broken.
                      • -
                      • Turnstiles can now be repaired with a welder
                      • -
                      • Refactored Turnstile code a bit.
                      • +
                      • The destruction of a gauss turret now leaves behind the machine frame that had been used to construct it.
                      • +
                      • Gave the machine board of the gauss turret a req_components list with nothing inside it to prevent a runtime error from occurring.
                      • +
                      • Rerouted the piping network in the assault course a bit so it resolves the issue raised about them missing when they were actually going through the window instead.
                      • +
                      • Removed some wiring that didn't do anything.
                      • +
                      • Engineering Lobby now has the wiring coming from maintenance actually hooked up to the grid rather than ending a tile early.
                      • +
                      • Gave the Aetherwhisp laser weaponry circuit boards so they don't get completely round removed when destroyed,
                      -

                      PowerfulBacon updated:

                      -
                        -
                      • Adds in job icons to the orbit panel
                      • -
                      -

                      TaG2e updated:

                      -
                        -
                      • Fixes APCs not showing the correct icons or overlays
                      • -
                      -

                      benbot16 updated:

                      -
                        -
                      • Refactors how targeting is handled
                      • -
                      • DRADIS now has a targeting mode, cycled using the hailing/targeting button. Clicking on enemies in targeting mode will paint them, and clicking on friendlies will pass your current target lock to them via datalink
                      • -
                      • Tweaks how datalink functions. It is no longer automatic, and the sending ship must maintain a lock to maintain the datalink transmission. Targets recieved via datalink are also visible on DRADIS now.
                      • -
                      • Painted targets will now be lost if radar contact is not maintained.
                      • -
                      • Readds the gunner's optical camera. This works on large ships and some small ships with TAC consoles, and has a range similar to that of the ship's base sensor range.
                      • -
                      • AI ships will now target incoming ordnance with PDCs, and will target ships locking them with flak.
                      • -
                      • All overmap ships are now limited to 3 target paints, except for fighters, which are limited to one paint. Fighters will also automatically lock onto the target they paint.
                      • -
                      • Fixes some null handling issues in target lists.
                      • -
                      • Homing is now based on the projectile being fired instead of the weapon.
                      • -
                      • Non-fighter ghost ships now have access to active radar.
                      • -
                      • EWAR consoles now delete their radios properly when destroyed.
                      • -
                      - -

                      21 February 2023

                      -

                      benbot16 updated:

                      +

                      Bokkiewokkie updated:

                        -
                      • Tugs have brakes now.
                      • -
                      • Tug code has been very slightly improved.
                      • +
                      • Fixed some bad initializations
                      • +
                      • Added the ability to research and print naval gun parts
                      • +
                      • Moved the gauss gun upgrade board to level 2 munitions research "Macro Ballistics"
                      • +
                      • Added science tiers to NSV researches
                      • +
                      • Made it so printable naval gun part circuits can be destroyed
                      -

                      someone543 updated:

                      +

                      DeltaFire15 updated:

                        -
                      • Winona buffed. Burst fire, no one handed penalty, and full auto added
                      • -
                      • Fixes NSV added crates with missing crate names
                      • +
                      • Being recalled with an inactive thirring drive should no longer trap the ship in the darkness between stars.
                      • +
                      • Nucleium engine turfs now work. As may some other map cases of "nucleum" being used as incorrect term.
                      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 932295a9f83..1599b78895c 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1213,3 +1213,773 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. : - code_imp: Code should now compile on 515 covertcorvid: - tweak: Mice will no longer spawn or eat on catwalk wires +2023-04-22: + itsmeow, Piril, PestoVerde322, RubberEyes, EvilDragonfiend, Bobbanz1: + - rscdel: Removed PDAs. + - rscdel: Removed round-start backpack tablets. + - refactor: Due to a buyout and massive restructuring of Thinktronic Systems, all + crew now start with tablets containing pre-installed programs for messaging, + and programs for tasks previously done by PDAs. + - tweak: PDA sprites have been slightly changed to account for the new program overlays. + Wide PDAs have normal sized screens, and PDAs start off with a black screen. + - rscadd: Added themes to tablets in the Settings app. + - tweak: Renamed Hardware Configuration to Settings. + - code_imp: Improved tablet flashlight UI interaction with cyborg code. + - admin: Added logging to PDA bombs. + - tweak: Brig physician now starts with a cartridge. + - rscadd: Added a locator app for janitors to find mops, cleanbots, and janicarts + with. + - bugfix: Improved ModPC behavior with sechuds showing the wrong HUD. + - tweak: You can now use holochips directly on a PDA/tablet to insert credits to + the ID inside. + - tweak: Tablet flashlight now uses movable lighting instead of jumping around + - tweak: Tablets can be used while inside lockers. + - code_imp: Changed tablet program access requirements to support lists. + - code_imp: Added an emoji entry TGUI interface. For use with the mime PDA. + - rscadd: Emagging a modPC now opens a console window with flavor text and sets + the theme to syndicate. + - bugfix: Fixes PDA sent photos opening an undersized window. + - tweak: Cyborg integrated tablet now has a button background. + - tweak: AI now has a small integrated tablet only for sending messages. + - tweak: Added an improved photo selection TGUI menu, mainly for use by silicons. + - bugfix: Photos now describe their dimensions properly. + - bugfix: Photo descriptions no longer randomly place periods around. + - bugfix: Photos can no longer describe invisible things. + - rscadd: Nukie tablets now start with the Remote Airlock Control program, for remotely + interfacing with the infiltrator's blast door. + - tweak: Regular cargo techs no longer have the Ore Silo logs in their PDA Cartridge. + It's now locked to the QM. + - rscadd: Added a new Cargo Technician cartridge with its own icon. + - rscadd: Added a Log Viewer program for viewing ore silo and NTChat logs on the + filesystem. + - bugfix: Modular computers now correctly show visible_messages to the user if they + are holding it. + - rscdel: Removed the messaging console's system message capability. + - rscadd: The Status Display modPC app can now update status alert images. + - bugfix: Fixed some runtimes in Cyborg Self Monitoring and Robot Control. + - bugfix: D.E.T.O.M.A.T.I.X. charges are no longer infinite. + - bugfix: D.E.T.O.M.A.T.I.X. explosions now do the same damage as before tablet-PDAs. + - bugfix: Power-ON disks are now improper nouns. + - tweak: changed the fingerprint to DNA in the medical records app in PDAs + - tweak: added scrollbars to the direct messenger PDA app + - rscadd: Converted the message monitor to TGUI + - rscadd: The Message Monitor can now send admin messages with emojis and images. + - tweak: Changed the flavor text for the monitor decryption key paper. + - tweak: Emagging the message monitor no longer immediately prints the key, but + instead prints the key when the message monitor is usable again (after 10 * + keylength seconds). The key couldn't be used prior to this previously, so it + just makes it more consistent. + - bugfix: Fixed PDA messages with images not always properly line breaking inside + "View Messages" on the Messenger app. + - bugfix: Fixed a possible hard-del when the message monitor's linked server was + deleted. + - admin: Added logging and admin messages for deletion of PDA/request logs. + - tweak: Improved the Message Monitor's server linking behavior to support multiple + servers of the same network and name. + - bugfix: Fixed an exploit where you could unlink the active message monitor server, + link to another with a different decryption key, and still be authenticated. + - admin: Added an admin verb, "Send PDA Message" + - code_imp: relocated cartridge.dm to job_disk.dm. repathed cartridge vendor to + /job_disk + - tweak: HoP disk vendor sells various job disks now. there're contraband inside. + - tweak: HoP disk vendor no longer sells PDAs that have weirdly-pre-inserted-head-only-job-disks. + It sells normal PDAs now. + - code_imp: Changed the default installed PDA programs to only being installed on + the PDA subtype instead of the default Tablet SSD. + - code_imp: Changes the size of the Notepad to 0 and makes it undeletable and unavailable + on NTNet. + - code_imp: Moves the Wiki Uplink Program to only being installed by default on + the PDAs + - rscadd: Added name and job searching to the PDA Messenger contacts panel. + - tweak: PDA message inputs are now TGUI-based. + - tweak: When inputting a new PDA ringtone, the old one will be in the input text + box already. + - code_imp: Improved some PDA messenger code. + - code_imp: TGUI text inputs now properly autofocus text. +2023-04-26: + covertcorvid: + - bugfix: Made the "catastrophic casualties" check actually call the emergency shuttle +2023-04-28: + Bobbanz1, silicons: + - rscadd: Custom holoforms have been added for AIs. +2023-04-30: + Karmic-Skink: + - tweak: Shuffled Shrike Cargo Crates + - rscadd: Added Processor Board to Shrike Tech Storage + - rscadd: Added Generic Vendor Board to Shrike Tech Storage + - bugfix: Fixed damaged sections of Shrike maint having incorrect turfs + - bugfix: Moved errant light in Shrike mining maint + - tweak: Silenced the Shrike cargo lift + - rscadd: Added Cargo Shuttle Timer to Shrike cargo lift + - tweak: Lazylift Blast Doors will now automatically open when the lift arrives, + and stay open + - rscadd: Added block out in space to catch the ejected SM on Shrike +2023-05-01: + covertcorvid: + - server: Updates TGS DMAPI version to 6.4.2 +2023-05-05: + tralezab, Tastyfish, nickup9, SyncIt21: + - rscadd: UI for ordering bulk amount of stuff from cargo + - bugfix: clear cart button which now properly clears cart +2023-05-20: + SerynEngi: + - rscadd: Escape pods and escape pod signage to Galactica + - tweak: Reworked engineering and engineering maintenance access on the Galactica + - bugfix: More efficiently routed wiring in some areas on the Galactica + - rscadd: Thirring FTL drive to the Gladius + - tweak: Slightly rerouted piping towards the Turbine Generator on the Gladius + benbot16: + - bugfix: Torpedoes no longer fall out of reality when being removed from VLS tubes + - rscadd: Tugs can now be loaded by click-dragging fighters onto them. + - tweak: Tweaks tug loading/unloading. + - bugfix: Tugs can't stack fighters on magcats anymore. + covertcorvid: + - tweak: Removed immediate event trigger from FTL jump end. Added chance for normal + event subsystem to pick from system-related events instead of full event list. + someone543: + - bugfix: Winona is now indestructible + - bugfix: Unbuilt missile casings no longer explode + - tweak: Rebuilt IFF consoles on boarded ships are now emagged + - bugfix: Fixes Hammerhead having two missile systems +2023-05-23: + uomo91, Elli-Skala: + - rscadd: Sergeant Araneus added to Atlas, Tycoon, Hammerhead, and Snake +2023-05-25: + Bobbanz1: + - bugfix: Removed the imaginary 100% Non-existent clone of Mobility Cube and rescued + Mittens from the void's grasp in order to return it to Cargo Bay. + Bobbanz1, jlsnow301, itsmeow: + - rscadd: Added a new UI thats being used to allow for an easier way of finding + people on cameras for the AI + - code_imp: Altered the Teleport to Area input proc to a tgui_input_list version + - refactor: Changed it so you have an interface to click on names in order to find + people who are on cameras whilst playing as the AI rather than having to scroll + through a dull list. + DeltaFire15: + - rscadd: Lizard hiss is now handled by a character preference, permitting choice + between and new- and old styles. + - bugfix: Hopefully resolves some FTL issues by moving the list add somewhere more + sane. + SerynEngi: + - rscadd: Pilot encryption key to shaft miner starting equipment + covertcorvid: + - rscadd: Re-added bulldog stun ammo, the mech taser, stun shells in the Electric + weapons research, and electrodes as a possible ammo type for the nuclear gun + - balance: Made slippery plants, wet floors, and bananium'd surfaces stun + - balance: Made the ebow stun people but do less damage + - balance: Borgs can spin-stun people + - balance: Bananium, clownop sword and shield, soap, the clown's PDA, and banana + peels have a minor chance to make you throw the things you're holding instead + of just dropping them + - balance: Buffed flashbangs + - balance: Table-pushing someone briefly stuns them, does less stamina damage, and + no longer does any brute damage. Slamming their head into a table still does + normal damage. + - balance: Reduced the energy cost of the HOS electrodes + - balance: Made beanbag slugs stun briefly and rubbershot knock down. + - balance: Police batons stun instead of dealing stamina damage. + - tweak: Replaced the Aetherwhisp armory disablers with advanced tasers + - tweak: Replaced the warden's glock with an advanced taser so they can subdue prisoners + someone543: + - tweak: Atlas now allows for a second pilot + - tweak: Helmet camera number tags are more consistent + - rscadd: Genpop timer for sentenced prisoners can now be adjusted +2023-06-02: + Absolucy: + - refactor: Refactored tail wagging code a bit. + - tweak: All species can now *wag their tail if they have one. + benbot16: + - bugfix: Ship mouse aim now works while you're dragging the mouse. + covertcorvid: + - bugfix: Map verb now works on Snake + itsmeow: + - bugfix: Martial arts granting books (karate scroll, CQC manual, Ju Jitsu books, + etc) no longer break permanently if you interrupt it last second. + - rscadd: Re-added the Clown's ability to upload a honk virus to airlocks with their + PDA. + - rscadd: Added preference for default PDA theme + - rscdel: Removed old PDA Style preference + - tweak: ModPCs/Tablets/PDAs will now use the same window for all apps, reducing + the lag between switching apps and preventing the window from jumping around + the screen. + - rscadd: Added the IC date to the NtOS header. + - balance: Nukie PDAs can now connect to NTNet while off-station. + - bugfix: You can no longer imprint IDs onto ModPCs that don't support it. + - bugfix: Fixed a potential exploit where any airlock could be remotely controlled + with the airlock control app. + - admin: Added more detail to some href exploit logs. + - tweak: Illiterate people can no longer use ModPCs. + - rscadd: Gives the AGCNR/SD Monitoring Programs individual program icons, same + with the hail log program and the squad management program. + - bugfix: NT Bounty Hunter and SecurEye apps work again + - tweak: Added a cooldown to the bounty list printer in NT Bounty Hunter. + - tweak: Blind people can now use ModPCs/PDAs again, this was caused by an oversight + in not allowing illiterate people to use PDAs. +2023-06-03: + covertcorvid: + - rscdel: Reverted syndicate maid and cat boarder changes and the Elco + - rscadd: Added syndicate maid outfit + - rscadd: Added felinid maid boarders + - rscadd: Added the NSV Elco + - bugfix: Made PVP ships spawn in Rubicon +2023-06-06: + Bokkiewokkie: + - rscadd: Adds positions to vector datums + - code_imp: Moved vector procs to regular matrix datums + SerynEngi: + - rscdel: Removed EMP effects from the Black Hole singularity. + covertcorvid: + - code_imp: Overmap objectives and modes are not initialized until they are selected + - code_imp: If pop and weight for an overmap mode are not set in the config, it + will use the coded values + someone543: + - tweak: Security Support squads now have access to Hanger & Utility Fighters + - bugfix: Sergeant Araneus now uses chitters instead of squeak + tonty: + - tweak: you can now put an ellipses at the beginning of your sentences +2023-06-14: + SerynEngi: + - rscadd: Added HomeOne, an instanced player pirate ship. + - tweak: Corrected an issue with the hybrid railgun firing and targeting code. +2023-06-16: + SerynEngi: + - bugfix: Added Walls and changed door colors in engineering on the Gladius. + covertcorvid: + - bugfix: Puts the red laser back on the pilot +2023-06-21: + 4310V343k: + - bugfix: buying an extra charslot for torps now unlocks it immediately + ExcessiveUseOfCobblestone, Mothblocks: + - rscdel: Removed the Surgery Drapes from the Debug Omnitool. + - code_imp: Converts the act of initiating or cancelling surgeries into a component, + this allows for any item to support surgeries. + - refactor: Replaced the old surgery interface with one that is much better to use, + and lets you choose the body zone within itself. + someone543: + - tweak: Cyborg total positions set to 1 +2023-06-27: + Bokkiewokkie: + - rscadd: 'Added a new overmap objective: scanning anomalies!' + - balance: lowered the amount of required jumps for the FTL jump objective by 2-3 + - code_imp: added global anomaly list + - code_imp: added get_by_type and get_atom_by_type procs to get a type of object + from a lists + - code_imp: scanned anomalies are now stored per overmap instead of per astrometrics + console + - code_imp: anomalies now store their current system in a variable like ships, and + can be located with find_system() +2023-06-29: + RKz: + - code_imp: renamed signal subfiles to match proper naming schemes of "[root] _ + [sub]" , not "[sub] _ [root]" + someone543: + - tweak: Ghost ship probability increased to 20% from 10% + - balance: Ghost ship fighters buffed +2023-07-04: + SerynEngi: + - rscadd: Inducer to Galactica Reactor Control room. + - bugfix: Correctly rotated Defensive reactor coolant output pipe on the Galactica + - tweak: Renamed reactor pumps and computers for clarification on the Galactica +2023-07-07: + ? Bobbanz1, Timberpoes, SteelSlayer, twilightwanderer, ShizCalev, timothymtorres, + Imaginos16, dragomagol, Jacquerel, Mothblocks, ThePotato97, LemonInTheDark, itsmeow + : - rscdel: Removed the ability to scan paper directly into the modular computer + notes app as part of paper code rewrite. + - refactor: Paper code has been completely refactored. + - bugfix: Fixes signatures not working at all. Signatures now only work when %s + or %sign is put into an [___] input field. + - bugfix: Input fields are now fixed and also work again. + - bugfix: Fixes broken command report formatting for station goals. + - bugfix: Fixes markdown paragraphing not working in paper code. + - refactor: Photocopiers now use TGUI + - tweak: You can insert any type of toner cartridge into photocopiers, and regardless + of the currently inserted toner's charge level. + - tweak: Toner cartridges can be ejected from photocopiers at any time + - rscadd: Added a system of forms and the ability to print them + - bugfix: Hints in bureaucracy forms + - rscadd: Added new VOID stamp + - bugfix: Photocopier paperforms + - rscadd: Fax Machine + - bugfix: Fixes faxes playing the "fax_contain" animation and makes it actually + use the "fax_receive" animation when receiving. + - imageadd: Resprites fax machines! + - admin: fax messages and book printings are now logged in paper.log + - admin: renaming fax machines is logged in game log + - rscadd: You can now send photos or trading cards through the fax machine. + - rscadd: You can now hack the wires of a fax machine to have it throw items harder + or accept additional flat input items such as material sheets, ID cards, and + pizza slices. + - rscadd: Ability to send and receive administrator fax messages. + - admin: Panel for easy viewing and sending messages to faxes. + - bugfix: Fixes a crash of TGUI fax panel when there is no fax in the network + - bugfix: Fixes a crash of the Fax Manager panel when there is no fax machines + in the network. + - refactor: Rotating stamps on paper by holding shift and moving your mouse. + - bugfix: You can no longer remove the toner cartridge from a printer while it's + busy printing. + - bugfix: Fixes broken input fields on photocopied paper. + - bugfix: Fixed exploit in CentCom faxes + Bobbanz1, wesoda25 for the Sprite: + - rscadd: Added a new way for highly coffee addicted Ethereals to identify what + level of blood charge they're on, this includes 100%, 75%, 50%, 25% and Oh Hell + Recharge NOW% + - imageadd: Ethereal normal charge HUD Alert sprites + Bokkiewokkie: + - rscadd: Increased the amount of lights on Atlas + - rscadd: Installed a fire axe cabinet in Atlas' atmospherics + - tweak: Added a hand tele to Atlas' teleporter room + - bugfix: Fixed lamps and plating under doors on Atlas + '[SharkeeByond](https://github.com/SharkeeByond)': + - bugfix: Made midshipmen actually get assigned to departments + - bugfix: Made more than one midshipman be able to be assigned to a given department + - bugfix: Made departments able to have both security officers and midshipmen assigned + to them at the same time + covertcorvid: + - rscadd: Added syndicate maid outfit + - rscadd: Added felinid maid boarders + - rscadd: Added the NSV Elco + - bugfix: Made PVP ships spawn in Rubicon +2023-07-19: + DeltaFire15: + - balance: Showers can now also affect the last 18 contamination on targets. +2023-07-20: + SerynEngi: + - bugfix: Added power connection to remaining Aetherwhisp FTL plyons + - bugfix: Connected nucleum Z-level adapter to FTL gas network on the Aetherwhisp + - bugfix: Connected the stormdrive output to the nucleum gas network on the Aetherwhisp +2023-07-21: + BlueHNT: + - rscadd: Added wt550m9 rubber mag sprite +2023-07-28: + BlueHNT: + - bugfix: fixed a typo + Bobbanz1, KasparoVy, Fikou, Seris02, GoldenAlpharex, Serijas for the Cyborg sprites, Reco201: + - rscadd: 'Added a new cyborg module: Cargo Cyborgs! Paperwork experts and aces + at delivery, they''ll truly complement the Silicon gameplay by finally allowing + you to scratch that forms-filling itch you had for so long!' + - bugfix: Fixed cyborgs re-generating a bunch of icons every time they'd pick a + model, with more optimizations to that to come. + - rscadd: Cargo Borgs now come equip with a export scanner. + - rscadd: Added a new cyborg upgrade to Engineering borgs which allows them to perform + some munitions work! + - refactor: refactored the borg icon stuff to allow for easier implementation of + other skins for borg modules + - balance: Cargoborgs upgraded clamp can now carry two wrapped crates instead of + one. + Bokkiewokkie: + - bugfix: fixed holomaps breaking when deleted + Nabski: + - imageadd: Renault has a dopey walk animation now, god bless. + SerynEngi: + - balance: Increased bullet armor values of all standard armor and armored hardsuits. + - balance: Decreased laser armor values of all standard armor and armored hardsuits. + - rscadd: Added request consoles to various locations within Medical, Munitions, + and Engineering on the Tycoon + - bugfix: Corrected atmos and power connection near the Stormdrive on the Tycoon + - bugfix: Corrected department budget draw for request consoles on the Tycoon + covertcorvid: + - bugfix: Squad manager PDA program is once again restricted to heads + - rscadd: Add limit on number of VLS shots fired at once to AMS control console + - rscdel: Removed arrivals shuttles + - tweak: Late joiners will now spawn near the cryostasis pods +2023-08-04: + someone543: + - bugfix: fixed prisoner console not giving brief +2023-08-11: + BetaCentari: + - tweak: Tweaked some aspects of the Whisp + - rscadd: added xeno artifact area in Science on Whisp + - rscadd: added more doors to Whisp engineering for better pathing + - rscadd: added Z-Locks. Everywhere. On Whisp. + BlueHNT: + - bugfix: fixed snake disposal issues + - bugfix: fixed snake conquest issues + - tweak: Tweaked Warden's round start equipment + - rscadd: Added MP armor crate + - rscadd: Added 1911 crates (Single, Triple, 6Magazine + 2Ammobox) + - tweak: Added ballistic helmets to ballistic armor shipment + - bugfix: fixed Prisoner Management Console + - bugfix: fixed Gulag teleporter build values + Bobbanz1: + - rscadd: Added the Coffee Addict quirk, it works similar to the smoker quirk but + makes you addicted to coffee instead! + - rscadd: Added the Naval Coffee Addict quirk, it works similar to the smoker quirk + but makes you addicted to naval coffee instead, better stock up on coffee cartridges! + DrSirKnight: + - rscadd: Added the syndicate maid kit for 20 TC + - bugfix: Syndicate maid gloves now show up when equipped + - bugfix: Syndicate maid apron now shows up when added to an outfit + - balance: Makes felinids less vulnerable to ear damage + - rscadd: Added a maid outfit to the torp shop + - rscadd: Added the black skirt to the torp shop + - bugfix: Fixes suitbox slowdown not being removed for certain occasions + SerynEngi: + - rscadd: Added backpacks, spare IDs and several other items to the HomeOne + - bugfix: Removed access requirements from various things on the HomeOne + - bugfix: Added Cargo Accept/Reject stamps, Xenobio Console, and tiny-fans to the + HOS office doors on the Hammerhead + - bugfix: Removed heavy firelocks from the Hammerhead's Hangar + - bugfix: Placed supply piping properly on layer 2 and the scrubber network on layer + 4 on the Hammerhead + - bugfix: Minor atmos adjustments throughout the map on the Hammerhead + someone543: + - bugfix: Target ships from the boarding gamemode will no longer be targeted by + AI fleets + - tweak: Trader station UI now autoupdate + - bugfix: fixes a issue where SolGov fleets would threaten allied ships +2023-08-18: + BlueHNT: + - balance: rebalanced MP16 burst by giving it a burst + Bokkiewokkie: + - rscadd: Added secborg ballistic guns + - rscdel: Removed secborg laser guns + - config: Enables secborg module researching + SerynEngi: + - tweak: Rebuild Atlas atmospherics for ease of use. + bruhlookatthisdood: + - bugfix: simplemods can no longer drive tugs + - bugfix: APNW can be set to zero now. +2023-08-25: + BlueHNT: + - rscadd: Added Glock AP magazine and ammo box + - rscadd: Added Glock I magazine and ammo box + - rscadd: Added Glock-related designs to proto-lathe + Bokkiewokkie: + - rscadd: Added an emag effect to plasma constrictors + - tweak: Combined Stormdrive RCC and plasma constrictor tech into one + - bugfix: Fixed constrictors not pixel shifting on different layers + - bugfix: Made it possible for constrictors to be rotated + - code_imp: Moved plasma constrictors into their own file + - bugfix: Fixed VV menu not showing new turfs after deleting a turf + - bugfix: Fixed admins adding components not logging the object it was added to + Ikalpo: + - bugfix: fixed the holomap not working when inside objects + - tweak: The holomap cursor now shows the location of your camera + SerynEngi: + - bugfix: Added normal armor to all overmap ships. + bruhlookatthisdood: + - bugfix: torpedo crate comes with torpedo warheads now + - bugfix: fixed borg crew manifest button overlapping + cacogen, Profakos: + - bugfix: Modifying a navigation beacon's codes list or location name now correctly + updates the associated global lists + - refactor: Refactored navigational beacons, making them constructable, deconstructable, + and generally easier to use + covertcorvid: + - bugfix: Make gun deletion actually pass in a source to UnregisterSignal +2023-09-01: + Bokkiewokkie: + - bugfix: Fixed return vote spamming with the comms console + - bugfix: Fixed forced return jumps not jumping while the ship was in transit + - refactor: Refactored some starsystem code which determines the system to make + a return jump to + - admin: Added the ability for the return system to be changed on runtime + - config: The return jump target system is now changeable in the map config + DeltaFire15: + - bugfix: FTL Pylons are now not doomed to run out of nucleium even when supplied. + - bugfix: FTL Pylons with closed shielding now actually have an increasing nucleium + demand.. + - tweak: FTL Pylons need multiple cycles of failed power to shut down (to prevent + power code oddities) + - balance: FTL Pylons now also output plasma when they are running, instead of only + when booting (why did they not?) + - code_imp: Improves various other bits and pieces of code related to FTL Pylons + that do not need individual mention + SerynEngi: + - rscadd: Added wire nodes for all Sec Dept. doors and windows on the Galactica + - rscadd: Added an breathing air tank dispenser to atmos storage on the Galactica + - rscadd: Added 4 borg chargers to the lower deck of the Galactica in various locations. + - bugfix: Added disposals output to gulag torp disposal pipe in munitions on the + galactica. + - bugfix: Fixed a couple mapping issues with the Galactica Xenobio + - bugfix: Corrected Sec Dept. Airlock permissions on the Galactica + - bugfix: Properly connected PDSR output piping + - balance: Increased radiation emission from Particle Accelerator particles and + plutonium sludge. + someone543: + - tweak: Ecto Sniffer has a cooldown for radio messages, and can now send visible_messages +2023-09-21: + BlueHNT: + - rscadd: Added new Ju Jitsu move + - tweak: Tweaked Ju Jitsu + DeltaFire15: + - bugfix: Overmap objects with players should be a bit less likely to get stuck + in nullspace. + Ikalpo: + - bugfix: fixed VLS eating torps that get unloaded + bruhlookatthisdood: + - bugfix: Fixes snake atmospherics having wrong injector and vent types in fuel + mix chamber + - bugfix: Fixes snake atmospherics having wrong vent type in air chamber + - bugfix: Fixes snake atmospherics's nucleium chamber missing sensor, canister, + vent, and injector + someone543: + - rscadd: FLARE added to Tycoon + - rscadd: Added lift button to Gladius mining hanger + - bugfix: fixed Gladius cell lockers not being genpop lockers +2023-09-29: + Absolucy: + - bugfix: LOOC is much less janky now. You can properly both hear LOOC as a ghost, + and both hear and talk on LOOC while inside another object (including cases + such as split personalities, recalled holoparasites, desynchronized mobs, jaunting + mobs)! + - bugfix: Fixed admins seeing LOOC message senders as themselves rather the actual + sender +2023-10-06: + SerynEngi: + - rscadd: Added new nucleum preset engineering tile + - rscadd: Nucleum tank to the Gladius + - tweak: Added nucleum gas to the nucleum tanks on the Gladius, Galactica, Tycoon + and Aetherwhisp +2023-10-14: + Bobbanz1: + - config: Adds the Hammerhead, Serendipity and Gladius as votable maps to the codebase, + server map config is hopefully not affected? + - bugfix: Fixes an issue where exiting a tug would move your camera off-center if + the tug had been moved. + Bokkiewokkie: + - rscdel: Removed Randy from the yellow pages + - tweak: Tweaked some of Randy's item generation code + Haliris: + - spellcheck: fixed atmosbots displaying their temperature in Celsius rather than + Kelvin. + Kenionatus, Bobbanz1: + - rscadd: Allows the players to decide through the Cargo Order Console regarding + whether or not to receive any mail. + SerynEngi: + - bugfix: AGCNR pump control computers now control the pump pressure on a click + instead of an alt-click + - bugfix: AGCNR pump control computer UI now has a cancel button. + - rscadd: Plasma canister to Atlas atmos. + - rscadd: Mining Ready room to Atlas cargo + - bugfix: Disposals fixed for the CE, CMO and RD offices on the Atlas + - bugfix: Fixed the Atlas atmos return line in atmospherics + - bugfix: added AI Core-lawset board to AI upload on the Atlas + itsmeow, stylemistake, willox, Bizzonium, AnturK: + - code_imp: Updated development-side TGUI bootstrapping, updated internal TGUI API + - bugfix: Fixed some bugs related to TGUI Boxes not computing class names properly. + - refactor: Refactored TGUI asset loading. + someone543: + - bugfix: fixed Kadesh cruisers from being boarded + - tweak: borgs can now leftclick to enter transport small crafts +2023-10-17: + Bokkiewokkie: + - bugfix: Fixed random clear missions not having a system + - refactor: Removed the unintended ability for the mission extension to select any + random objective + - admin: Made it possible for admins to select a target for the "clear system" objective +2023-10-20: + Bokkiewokkie: + - rscadd: Added light fighter plushie + - rscadd: Added heavy fighter plushie + - rscadd: Added sabre plushie + - rscadd: Added mining sabre plushie +2023-10-27: + Bobbanz1: + - bugfix: Fixes the issue where small crafts such as Sabres, dropships and ghost + ships were showing non-existing armour quadrants! + someone543: + - imageadd: added back MP start landmark icon +2023-11-10: + DuskLight9978: + - rscadd: Added dock pay smite + - admin: new dock pay smite + Harranhall: + - rscadd: Added a vignette that appears momentarily when your laws are changed as + AI. + - imageadd: added the "law_change" fullscreen vignette. + Ikalpo: + - bugfix: You can now recycle nanoweave carpet tiles + - bugfix: Fixed the amount that NSV materials cost in ORMs and lathes + - rscadd: Plated catwalks can now be created with rods and monotiles + - bugfix: Fixed being able to interact with objects under catwalks + - bugfix: Fixed plated catwalks being destroyed when pulling up a floor tile under + them + - imageadd: Plated catwalks have new sprites to smooth better + - imagedel: Got rid of the dumb non-smoothed sprite when a plated catwalk is closed + - bugfix: Fixes techfloor grid tiles not showing up in the ctrl-click menu for plasteel + tiles + covertcorvid: + - bugfix: fixed window damage overlay + - bugfix: Fixed a runtime in the power generation objective when there is no storm + drive or AGCNR + dmapi update: + - server: updates dmapi + itsmeow: + - server: Update to Python 3.11.2, Node 18.14.2, Inferno 8, Typescript 4.9, Yarn + 3.4 + someone543: + - rscadd: Added Flight Lead fighter colorizer + - bugfix: Ammo sorters on snake now start linked + - bugfix: Prevents a failsafe from triggering every time the snake is loaded + - rscadd: Ghost controlled ships can now use gauss + - rscadd: Added coffee machines to PVP ships + - tweak: Syndicate coffee drinkers now get a altered mood event +2023-11-24: + Bokkiewokkie: + - rscadd: Added Syndicate light fighter plushie + - rscadd: Added DIY fighter plush bomb kit traitor item +2023-12-01: + Bokkiewokkie: + - imageadd: Added munitions shirts, tank tops and socks + DeltaFire15: + - tweak: Some small Galactica changes. Don't worry about it. + - bugfix: Fixes a random weird thing with explosions I stumbled upon. + covertcorvid: + - config: Made repo config client version match the server + - server: Increased max recommended client version to 515.1608 +2023-12-15: + Bokkiewokkie: + - rscadd: Added special offers to traders, which have to be unlocked with faction + ticket points + - balance: Made gun parts available for purchase at Whiterapids' Munitions + DeltaFire15: + - bugfix: Ethereal starvation no longer has a nutrition window where increased brute + vulnerability was not handled. + itsmeow, EvilDragonfiend: + - rscadd: All non-ghost role antagonist preferences are now per-character. Global + toggle buttons toggle the preference on all characters at once. + - refactor: Rewrote antag preference internals to allow for better control of antag + preferences and more distinct usages. + - refactor: Cleaned up antag bans, with more distinct settings and new general categories. + - tweak: All antag prefs will start on by default rather than off. The same applies + to newly added ones. + - bugfix: Fixed various antag bans being bypassable. + - bugfix: Fixed various ghost polls using the wrong preference or ban types. + - rscdel: Removed BYOND account age checks from antag roles in favor of living hours. + - rscdel: Removed "Midround Antagonist" preference in favor of unique preferences + per midround. + - rscadd: Added distinct role preferences for Antagonists (Roundstart/Latejoin) + and Midrounds (Ghost/Living). + - rscadd: Almost all ghost antagonist polls have a "Never for this round" option + now. + - rscdel: Removed the ghost notification preferences menu (poll ignore menu). + - tweak: The lavaland beach bartender can now speak Stoner. + - rscdel: Removed some unused mob spawners from the code. + - rscadd: Added 4hr playtime checks to roundstart/latejoin antag roles. Wizard and + nukeops are 8hr. + - bugfix: Fixed a typo in the skeleton spawner description. + - bugfix: Fixed unnecessary DB queries due to is_banned_from not properly ckey-ifying + the ckey parameter and causing cache misses. +2023-12-29: + DeltaFire15: + - bugfix: Syndicate AI boarders no longer silently breach your hull. + - bugfix: Thirring Drive Pylons should no longer be able to get stuck in the "shutting + down" state. +2024-01-03: + Bokkiewokkie: + - imageadd: Changed Syndicate small craft color scheme to be more red + - code_imp: Renamed syndicate sabre and rapier sprite files +2024-01-13: + Bokkiewokkie: + - rscadd: Added the option to get another ticket objective if Rubicon is already + cleared + - tweak: Increased Rubicon objective player requirement to 10 + - tweak: Mission briefing names will now be consistent in a round + - balance: Fleets will now be stronger after the main mission is done + - admin: Added button to hide/unhide a system on the starsystem manager + - admin: Automatically unhides systems selected for the "clear system" objective + DeltaFire15: + - rscadd: Overmap singularities now have more impactful effects, including but not + limited to increased gravity inside nearby vessels, dampener interference, and + improved directional pull. + - rscadd: Full hardsuits now provide 1G gravity protection against damage, though + they do not improve movement. + - balance: Silicons will suffer from consistently very high gravity, starting at + above 8G. + - tweak: Some interactions with high gravity previously limited to grav-sensitive + individuals now are accessible to anyone, albeit at lower magnitude (generally + 3G higher tolerance) + - bugfix: Starsystem persistence should now be slightly less volatile. + - config: The starsystem persistence config MUST be reset to the default starmap + for the fixes in this PR to apply correctly. + covertcorvid: + - bugfix: fixed the database query for the round endings +2024-01-19: + DeltaFire15: + - refactor: The Torp and Missile factory automation machinery has been rewritten + almost entirely to make it less clunky and more fun. + - rscadd: Automated Assemblers will now pick up components of the last manually + inserted type if they pass in front of them! + - bugfix: The Thirring Drive Core sound loop you have never heard before works now! + - bugfix: The client_by_z list shouldn't be getting flooded with nulls anymore. +2024-02-16: + PowerfulBacon: + - bugfix: Fixes the round not rebooting properly. + - code_imp: Adds in a task library for asynchronous behaviour handling. +2024-02-19: + PestoVerde322, XeonMations: + - rscadd: Added the ability to choose the direction of any office chair you are + sitting in by moving + - bugfix: Shuttle chairs and Corporate chairs are now impossible to pick up and + transformed into normal Fancy chairs. +2024-02-23: + Bokkiewokkie: + - bugfix: Replaced Tycoon's redundant torpedo tubes +2024-03-01: + Bokkiewokkie: + - rscadd: Added synthetic first-aid kit as a cargo purchase + - rscadd: Added synthetic first-aid kit as a traitor IPC item + - tweak: Made overdosing on highjack leak oil on the ground if your head is already + gone + - imageadd: Added a medbot sprite for the synthetic first-aid kit + - imageadd: Added a lanyard illustration to the lanyard box + - spellcheck: Fixed a typo in the wavy stick name + - code_imp: Moved some code for storage items to the proper file + - rscdel: Removed the requirement for firing electronics from PDC + - rscdel: Removed the option to switch PDC to flak boards as they are not in use + - spellcheck: Fixed inconsistencies in NSV circuitboard names +2024-03-29: + Bobbanz1: + - bugfix: The destruction of a gauss turret now leaves behind the machine frame + that had been used to construct it. + - code_imp: Gave the machine board of the gauss turret a req_components list with + nothing inside it to prevent a runtime error from occurring. + - tweak: Rerouted the piping network in the assault course a bit so it resolves + the issue raised about them missing when they were actually going through the + window instead. + - rscdel: Removed some wiring that didn't do anything. + - bugfix: Engineering Lobby now has the wiring coming from maintenance actually + hooked up to the grid rather than ending a tile early. + - rscadd: Gave the Aetherwhisp laser weaponry circuit boards so they don't get completely + round removed when destroyed, + Bokkiewokkie: + - bugfix: Fixed some bad initializations + - rscadd: Added the ability to research and print naval gun parts + - balance: Moved the gauss gun upgrade board to level 2 munitions research "Macro + Ballistics" + - balance: Added science tiers to NSV researches + - balance: Made it so printable naval gun part circuits can be destroyed + DeltaFire15: + - bugfix: Being recalled with an inactive thirring drive should no longer trap the + ship in the darkness between stars. + - bugfix: Nucleium engine turfs now work. As may some other map cases of "nucleum" + being used as incorrect term. +2024-04-01: + Bokkiewokkie: + - bugfix: Fixed auto-spooling not working for the Thirring FTL drive. + - balance: Enabled auto-spooling as an option for the Thirring FTL drive by default. +2024-04-19: + KasparoVy: + - rscadd: added more custom prosthetic sprites +2024-04-21: + Bokkiewokkie: + - bugfix: Updated the webmap link +2024-05-03: + Bokkiewokkie: + - bugfix: Fixed fighters not hearing overmap messages from their mothership. + - spellcheck: Made it clear the Syndicate Crew antag preference is for PVP + DeltaFire15: + - balance: The BSA now goes kaboom when relayed instead of being essentially a ghost + NAC shell. + - bugfix: The Eclipse no longer spawns a borg module that should never exist outside + of mobs. + - bugfix: DNA no longer has some super weird code for flavor text, instead copying + the one of the source mob. + - tweak: You can no longer stack interactions on walls. This is to prevent a runtime + from actions that modify the type of them (deconstruction mainly). + - bugfix: Paper no longer runtimes if you do not have a pen in hand (???). + - bugfix: Traders no longer do some cursed things to create their trade items, instead + using the all-powerful initial(). + - bugfix: The stormdrive no longer runtimes if it has zero gas in it. + - bugfix: Some squad assignment stuff shouldn't try to use a list as datum anymore. diff --git a/icons/mob/accessories.dmi b/icons/mob/accessories.dmi index 283f44a9c48..8d9f5eafddc 100644 Binary files a/icons/mob/accessories.dmi and b/icons/mob/accessories.dmi differ diff --git a/icons/mob/aibots.dmi b/icons/mob/aibots.dmi index 84deedc5c5c..81a384f954c 100644 Binary files a/icons/mob/aibots.dmi and b/icons/mob/aibots.dmi differ diff --git a/icons/mob/landmarks.dmi b/icons/mob/landmarks.dmi index f14fdbb875b..dee94600cc0 100644 Binary files a/icons/mob/landmarks.dmi and b/icons/mob/landmarks.dmi differ diff --git a/icons/mob/pets.dmi b/icons/mob/pets.dmi index 7c4eab18977..022c73fef83 100644 Binary files a/icons/mob/pets.dmi and b/icons/mob/pets.dmi differ diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 0d37fb56a61..8bc8c46f788 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index 46be9544576..64478ed4cd5 100644 Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ diff --git a/icons/mob/screen_cyborg.dmi b/icons/mob/screen_cyborg.dmi index 5f722056306..f78b71d13dc 100644 Binary files a/icons/mob/screen_cyborg.dmi and b/icons/mob/screen_cyborg.dmi differ diff --git a/icons/mob/screen_full.dmi b/icons/mob/screen_full.dmi index c1ccf3f8905..797f25d13f9 100644 Binary files a/icons/mob/screen_full.dmi and b/icons/mob/screen_full.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 60287626107..01cfaecb62d 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index dcfe184e91e..a51370f1b43 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi index 4f44e64fe32..4efa6f00233 100644 Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ diff --git a/interface/interface.dm b/interface/interface.dm index 1fcf7ff4a54..2e6e76c2117 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -264,7 +264,7 @@ Any-Mode: (hotkey doesn't need to be on) else if(SSmapping.config.map_link) if(alert("This will open the current map in your browser. Are you sure?",,"Yes","No")!="Yes") return - src << link("https://affectedarc07.github.io/SS13WebMap/NSV13/[SSmapping.config.map_link]") + src << link("https://webmap.affectedarc07.co.uk/maps/nsv/[SSmapping.config.map_link]") else to_chat(src, "The current map is either invalid or unavailable. Open an issue on the github. ") diff --git a/nsv13.dme b/nsv13.dme index 736efb39656..5bbf86bea8a 100644 --- a/nsv13.dme +++ b/nsv13.dme @@ -35,9 +35,11 @@ #include "code\__DEFINES\aquarium.dm" #include "code\__DEFINES\areas.dm" #include "code\__DEFINES\art.dm" +#include "code\__DEFINES\async.dm" #include "code\__DEFINES\atmospherics.dm" #include "code\__DEFINES\atom_hud.dm" #include "code\__DEFINES\balloon_alert.dm" +#include "code\__DEFINES\bans.dm" #include "code\__DEFINES\bitfields.dm" #include "code\__DEFINES\bodyparts.dm" #include "code\__DEFINES\bot_defines.dm" @@ -56,6 +58,7 @@ #include "code\__DEFINES\cooldowns.dm" #include "code\__DEFINES\cult.dm" #include "code\__DEFINES\departments.dm" +#include "code\__DEFINES\devices.dm" #include "code\__DEFINES\directional.dm" #include "code\__DEFINES\diseases.dm" #include "code\__DEFINES\DNA.dm" @@ -67,6 +70,7 @@ #include "code\__DEFINES\exports.dm" #include "code\__DEFINES\fastdmm2.dm" #include "code\__DEFINES\flags.dm" +#include "code\__DEFINES\fonts.dm" #include "code\__DEFINES\food.dm" #include "code\__DEFINES\footsteps.dm" #include "code\__DEFINES\forensics.dm" @@ -104,6 +108,7 @@ #include "code\__DEFINES\nsv13.dm" #include "code\__DEFINES\obj_flags.dm" #include "code\__DEFINES\orbit_defines.dm" +#include "code\__DEFINES\paper.dm" #include "code\__DEFINES\pinpointers.dm" #include "code\__DEFINES\pipe_construction.dm" #include "code\__DEFINES\plumbing.dm" @@ -154,37 +159,37 @@ #include "code\__DEFINES\dcs\flags.dm" #include "code\__DEFINES\dcs\helpers.dm" #include "code\__DEFINES\dcs\signals.dm" -#include "code\__DEFINES\dcs\signals\area_signals.dm" -#include "code\__DEFINES\dcs\signals\atom_signals.dm" -#include "code\__DEFINES\dcs\signals\global_signals.dm" -#include "code\__DEFINES\dcs\signals\lighting_signals.dm" -#include "code\__DEFINES\dcs\signals\movable_signals.dm" -#include "code\__DEFINES\dcs\signals\turf_signals.dm" -#include "code\__DEFINES\dcs\signals\datum_signals\circuit_signals.dm" -#include "code\__DEFINES\dcs\signals\datum_signals\datum_signals.dm" -#include "code\__DEFINES\dcs\signals\datum_signals\moveloop_signals.dm" -#include "code\__DEFINES\dcs\signals\datum_signals\nanite_signals.dm" -#include "code\__DEFINES\dcs\signals\datum_signals\ntnet_signals.dm" -#include "code\__DEFINES\dcs\signals\datum_signals\storage_signals.dm" -#include "code\__DEFINES\dcs\signals\mob_signals\carbon_signals.dm" -#include "code\__DEFINES\dcs\signals\mob_signals\human_signals.dm" -#include "code\__DEFINES\dcs\signals\mob_signals\living_signals.dm" -#include "code\__DEFINES\dcs\signals\mob_signals\mob_signals.dm" -#include "code\__DEFINES\dcs\signals\mob_signals\silicon_signals.dm" -#include "code\__DEFINES\dcs\signals\mob_signals\simplemob_signals.dm" -#include "code\__DEFINES\dcs\signals\mob_signals\xenobiology_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\atmospheric_machine_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\mech_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\object_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\projectile_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\item_signals\clothing_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\item_signals\grenade_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\item_signals\implant_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\item_signals\item_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\machine_signals\airlock_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\machine_signals\aquarium_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\machine_signals\machinery_signals.dm" -#include "code\__DEFINES\dcs\signals\obj_signals\machine_signals\supermatter_signals.dm" +#include "code\__DEFINES\dcs\signals\signals_area.dm" +#include "code\__DEFINES\dcs\signals\signals_atom.dm" +#include "code\__DEFINES\dcs\signals\signals_global.dm" +#include "code\__DEFINES\dcs\signals\signals_lighting.dm" +#include "code\__DEFINES\dcs\signals\signals_movable.dm" +#include "code\__DEFINES\dcs\signals\signals_turf.dm" +#include "code\__DEFINES\dcs\signals\signals_datum\signals_circuit.dm" +#include "code\__DEFINES\dcs\signals\signals_datum\signals_datum.dm" +#include "code\__DEFINES\dcs\signals\signals_datum\signals_moveloop.dm" +#include "code\__DEFINES\dcs\signals\signals_datum\signals_nanite.dm" +#include "code\__DEFINES\dcs\signals\signals_datum\signals_ntnet.dm" +#include "code\__DEFINES\dcs\signals\signals_datum\signals_storage.dm" +#include "code\__DEFINES\dcs\signals\signals_mob\signals_carbon.dm" +#include "code\__DEFINES\dcs\signals\signals_mob\signals_human.dm" +#include "code\__DEFINES\dcs\signals\signals_mob\signals_living.dm" +#include "code\__DEFINES\dcs\signals\signals_mob\signals_mob.dm" +#include "code\__DEFINES\dcs\signals\signals_mob\signals_silicon.dm" +#include "code\__DEFINES\dcs\signals\signals_mob\signals_simplemob.dm" +#include "code\__DEFINES\dcs\signals\signals_mob\signals_xenobiology.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_atmospheric_machine.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_mech.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_object.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_projectile.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_clothing.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_grenade.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_implant.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_item\signals_item.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_machine\signals_airlock.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_machine\signals_aquarium.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_machine\signals_machinery.dm" +#include "code\__DEFINES\dcs\signals\signals_obj\signals_machine\signals_supermatter.dm" #include "code\__DEFINES\research\anomalies.dm" #include "code\__HELPERS\_extools_api.dm" #include "code\__HELPERS\_lists.dm" @@ -258,6 +263,7 @@ #include "code\_globalvars\lists\achievements.dm" #include "code\_globalvars\lists\ambience.dm" #include "code\_globalvars\lists\client.dm" +#include "code\_globalvars\lists\faxes.dm" #include "code\_globalvars\lists\flavor_misc.dm" #include "code\_globalvars\lists\maintenance_loot.dm" #include "code\_globalvars\lists\mapping.dm" @@ -461,6 +467,7 @@ #include "code\datums\soullink.dm" #include "code\datums\soundtrack.dm" #include "code\datums\spawners_menu.dm" +#include "code\datums\task.dm" #include "code\datums\tgs_event_handler.dm" #include "code\datums\view.dm" #include "code\datums\weakrefs.dm" @@ -567,7 +574,7 @@ #include "code\datums\components\sizzle.dm" #include "code\datums\components\slippery.dm" #include "code\datums\components\snail_crawl.dm" -#include "code\datums\components\soundplayer.dm" +#include "code\datums\components\sound_player.dm" #include "code\datums\components\spawner.dm" #include "code\datums\components\spikes.dm" #include "code\datums\components\spill.dm" @@ -784,6 +791,7 @@ #include "code\datums\wires\ecto_sniffer.dm" #include "code\datums\wires\emitter.dm" #include "code\datums\wires\explosive.dm" +#include "code\datums\wires\fax.dm" #include "code\datums\wires\mass_driver.dm" #include "code\datums\wires\microwave.dm" #include "code\datums\wires\mulebot.dm" @@ -1223,11 +1231,6 @@ #include "code\game\objects\items\devices\taperecorder.dm" #include "code\game\objects\items\devices\traitordevices.dm" #include "code\game\objects\items\devices\transfer_valve.dm" -#include "code\game\objects\items\devices\PDA\cart.dm" -#include "code\game\objects\items\devices\PDA\PDA.dm" -#include "code\game\objects\items\devices\PDA\PDA_types.dm" -#include "code\game\objects\items\devices\PDA\radio.dm" -#include "code\game\objects\items\devices\PDA\virus_cart.dm" #include "code\game\objects\items\devices\radio\electropack.dm" #include "code\game\objects\items\devices\radio\encryptionkey.dm" #include "code\game\objects\items\devices\radio\headset.dm" @@ -1506,6 +1509,7 @@ #include "code\modules\admin\verbs\deadsay.dm" #include "code\modules\admin\verbs\debug.dm" #include "code\modules\admin\verbs\diagnostics.dm" +#include "code\modules\admin\verbs\fax_manager.dm" #include "code\modules\admin\verbs\forcecryo.dm" #include "code\modules\admin\verbs\fps.dm" #include "code\modules\admin\verbs\getlogs.dm" @@ -1775,6 +1779,13 @@ #include "code\modules\antagonists\revenant\revenant_blight.dm" #include "code\modules\antagonists\revenant\revenant_spawn_event.dm" #include "code\modules\antagonists\revolution\revolution.dm" +#include "code\modules\antagonists\role_preference\_role_preference.dm" +#include "code\modules\antagonists\role_preference\role_antagonists.dm" +#include "code\modules\antagonists\role_preference\role_changeling.dm" +#include "code\modules\antagonists\role_preference\role_midrounds.dm" +#include "code\modules\antagonists\role_preference\role_operative.dm" +#include "code\modules\antagonists\role_preference\role_traitor.dm" +#include "code\modules\antagonists\role_preference\role_wizard.dm" #include "code\modules\antagonists\roundstart_special\special_antagonist.dm" #include "code\modules\antagonists\roundstart_special\undercover\undercover.dm" #include "code\modules\antagonists\santa\santa.dm" @@ -1819,6 +1830,7 @@ #include "code\modules\assembly\signaler.dm" #include "code\modules\assembly\timer.dm" #include "code\modules\assembly\voice.dm" +#include "code\modules\assembly\assets\body_zones.dm" #include "code\modules\asset_cache\asset_cache_client.dm" #include "code\modules\asset_cache\asset_cache_item.dm" #include "code\modules\asset_cache\asset_list.dm" @@ -2503,7 +2515,6 @@ #include "code\modules\mob\dead\new_player\sprite_accessories.dm" #include "code\modules\mob\dead\observer\login.dm" #include "code\modules\mob\dead\observer\logout.dm" -#include "code\modules\mob\dead\observer\notificationprefs.dm" #include "code\modules\mob\dead\observer\observer.dm" #include "code\modules\mob\dead\observer\observer_movement.dm" #include "code\modules\mob\dead\observer\orbit.dm" @@ -2665,6 +2676,7 @@ #include "code\modules\mob\living\silicon\pai\pai_shell.dm" #include "code\modules\mob\living\silicon\pai\personality.dm" #include "code\modules\mob\living\silicon\pai\say.dm" +#include "code\modules\mob\living\silicon\pai\signaler.dm" #include "code\modules\mob\living\silicon\pai\software.dm" #include "code\modules\mob\living\silicon\robot\death.dm" #include "code\modules\mob\living\silicon\robot\emote.dm" @@ -2815,6 +2827,7 @@ #include "code\modules\modular_computers\computers\item\laptop.dm" #include "code\modules\modular_computers\computers\item\laptop_presets.dm" #include "code\modules\modular_computers\computers\item\processor.dm" +#include "code\modules\modular_computers\computers\item\role_tablet_presets.dm" #include "code\modules\modular_computers\computers\item\tablet.dm" #include "code\modules\modular_computers\computers\item\tablet_presets.dm" #include "code\modules\modular_computers\computers\machinery\console_presets.dm" @@ -2837,18 +2850,26 @@ #include "code\modules\modular_computers\file_system\programs\crewmanifest.dm" #include "code\modules\modular_computers\file_system\programs\file_browser.dm" #include "code\modules\modular_computers\file_system\programs\jobmanagement.dm" +#include "code\modules\modular_computers\file_system\programs\log_viewer.dm" +#include "code\modules\modular_computers\file_system\programs\notepad.dm" #include "code\modules\modular_computers\file_system\programs\ntdownloader.dm" +#include "code\modules\modular_computers\file_system\programs\ntmessenger.dm" #include "code\modules\modular_computers\file_system\programs\ntmonitor.dm" #include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm" +#include "code\modules\modular_computers\file_system\programs\phys_scanner.dm" #include "code\modules\modular_computers\file_system\programs\portrait_printer.dm" #include "code\modules\modular_computers\file_system\programs\powermonitor.dm" #include "code\modules\modular_computers\file_system\programs\radar.dm" +#include "code\modules\modular_computers\file_system\programs\records.dm" +#include "code\modules\modular_computers\file_system\programs\remote_airlock.dm" #include "code\modules\modular_computers\file_system\programs\robocontrol.dm" #include "code\modules\modular_computers\file_system\programs\secureye.dm" #include "code\modules\modular_computers\file_system\programs\signaller.dm" #include "code\modules\modular_computers\file_system\programs\sm_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\statusdisplay.dm" #include "code\modules\modular_computers\file_system\programs\antagonist\contract_uplink.dm" #include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm" +#include "code\modules\modular_computers\file_system\programs\antagonist\emag.dm" #include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm" #include "code\modules\modular_computers\hardware\_hardware.dm" #include "code\modules\modular_computers\hardware\ai_slot.dm" @@ -2856,11 +2877,14 @@ #include "code\modules\modular_computers\hardware\card_slot.dm" #include "code\modules\modular_computers\hardware\CPU.dm" #include "code\modules\modular_computers\hardware\hard_drive.dm" +#include "code\modules\modular_computers\hardware\identifier.dm" +#include "code\modules\modular_computers\hardware\job_disk.dm" #include "code\modules\modular_computers\hardware\modules.dm" #include "code\modules\modular_computers\hardware\network_card.dm" #include "code\modules\modular_computers\hardware\portable_disk.dm" #include "code\modules\modular_computers\hardware\printer.dm" #include "code\modules\modular_computers\hardware\recharger.dm" +#include "code\modules\modular_computers\hardware\virus_disk.dm" #include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm" #include "code\modules\ninja\__ninjaDefines.dm" #include "code\modules\ninja\energy_katana.dm" @@ -2889,6 +2913,8 @@ #include "code\modules\NTNet\relays.dm" #include "code\modules\paperwork\clipboard.dm" #include "code\modules\paperwork\contract.dm" +#include "code\modules\paperwork\fax.dm" +#include "code\modules\paperwork\fax_manager.dm" #include "code\modules\paperwork\filingcabinet.dm" #include "code\modules\paperwork\folder_premade.dm" #include "code\modules\paperwork\folders.dm" @@ -2900,6 +2926,7 @@ #include "code\modules\paperwork\paperbin.dm" #include "code\modules\paperwork\paperplane.dm" #include "code\modules\paperwork\pen.dm" +#include "code\modules\paperwork\photocopier.dm" #include "code\modules\paperwork\stamps.dm" #include "code\modules\photography\_pictures.dm" #include "code\modules\photography\camera\camera.dm" @@ -3477,9 +3504,12 @@ #include "code\modules\tgui\status_composers.dm" #include "code\modules\tgui\tgui.dm" #include "code\modules\tgui\tgui_alert.dm" +#include "code\modules\tgui\tgui_input_emoji.dm" #include "code\modules\tgui\tgui_input_list.dm" #include "code\modules\tgui\tgui_input_number.dm" +#include "code\modules\tgui\tgui_input_pda_message.dm" #include "code\modules\tgui\tgui_input_text.dm" +#include "code\modules\tgui\tgui_select_picture.dm" #include "code\modules\tgui\tgui_window.dm" #include "code\modules\tgui\states\admin.dm" #include "code\modules\tgui\states\always.dm" @@ -3499,6 +3529,7 @@ #include "code\modules\tgui\states\notcontained.dm" #include "code\modules\tgui\states\observer.dm" #include "code\modules\tgui\states\physical.dm" +#include "code\modules\tgui\states\reverse_contained.dm" #include "code\modules\tgui\states\self.dm" #include "code\modules\tgui\states\zlevel.dm" #include "code\modules\tgui_panel\audio.dm" @@ -3534,7 +3565,6 @@ #include "code\modules\vending\assist.dm" #include "code\modules\vending\autodrobe.dm" #include "code\modules\vending\boozeomat.dm" -#include "code\modules\vending\cartridge.dm" #include "code\modules\vending\cigarette.dm" #include "code\modules\vending\clothesmate.dm" #include "code\modules\vending\coffee.dm" @@ -3543,6 +3573,7 @@ #include "code\modules\vending\engineering.dm" #include "code\modules\vending\engivend.dm" #include "code\modules\vending\games.dm" +#include "code\modules\vending\job_disk.dm" #include "code\modules\vending\liberation.dm" #include "code\modules\vending\liberation_toy.dm" #include "code\modules\vending\magivend.dm" @@ -3638,22 +3669,27 @@ #include "interface\interface.dm" #include "interface\stylesheet.dm" #include "interface\skin.dmf" +#include "nsv13\code\__DEFINES\atmospherics.dm" #include "nsv13\code\__DEFINES\components.dm" #include "nsv13\code\__DEFINES\fleets.dm" #include "nsv13\code\__DEFINES\ftl.dm" #include "nsv13\code\__DEFINES\holomap.dm" #include "nsv13\code\__DEFINES\knpc.dm" +#include "nsv13\code\__DEFINES\lists.dm" #include "nsv13\code\__DEFINES\medal.dm" #include "nsv13\code\__DEFINES\missions.dm" #include "nsv13\code\__DEFINES\overmap.dm" #include "nsv13\code\__DEFINES\paths.dm" #include "nsv13\code\__DEFINES\research.dm" +#include "nsv13\code\__DEFINES\robot_defines.dm" #include "nsv13\code\__DEFINES\ships.dm" #include "nsv13\code\__DEFINES\skynet.dm" +#include "nsv13\code\__DEFINES\starsystem.dm" #include "nsv13\code\__DEFINES\traits.dm" #include "nsv13\code\__DEFINES\weapons.dm" #include "nsv13\code\__DEFINES\dcs\signals.dm" #include "nsv13\code\__DEFINES\localisation\_localisation.dm" +#include "nsv13\code\__HELPERS\custom_holoforms.dm" #include "nsv13\code\__HELPERS\maths.dm" #include "nsv13\code\__HELPERS\matrices.dm" #include "nsv13\code\__HELPERS\misc.dm" @@ -3663,6 +3699,7 @@ #include "nsv13\code\__HELPERS\text.dm" #include "nsv13\code\_globalvars\misc.dm" #include "nsv13\code\_globalvars\ships.dm" +#include "nsv13\code\_globalvars\starsystem.dm" #include "nsv13\code\_globalvars\lists\holomap.dm" #include "nsv13\code\_globalvars\lists\names.dm" #include "nsv13\code\_globalvars\lists\weapons.dm" @@ -3680,6 +3717,7 @@ #include "nsv13\code\datums\weapon_types.dm" #include "nsv13\code\datums\achievements\nsv_achievements.dm" #include "nsv13\code\datums\ai_laws\laws.dm" +#include "nsv13\code\datums\components\surgery_initiator.dm" #include "nsv13\code\datums\components\crafting\recipes.dm" #include "nsv13\code\datums\elements\turf_transparency.dm" #include "nsv13\code\datums\freight_type\_freight_type.dm" @@ -3721,6 +3759,7 @@ #include "nsv13\code\game\gamemodes\overmap\objectives\destroy_fleet.dm" #include "nsv13\code\game\gamemodes\overmap\objectives\perform_jumps.dm" #include "nsv13\code\game\gamemodes\overmap\objectives\rubicon.dm" +#include "nsv13\code\game\gamemodes\overmap\objectives\scan.dm" #include "nsv13\code\game\gamemodes\overmap\objectives\system_defence_armada.dm" #include "nsv13\code\game\gamemodes\overmap\objectives\tickets.dm" #include "nsv13\code\game\gamemodes\overmap\objectives\cargo\_cargo.dm" @@ -3760,6 +3799,7 @@ #include "nsv13\code\game\machinery\plasma_loader.dm" #include "nsv13\code\game\machinery\refillable_chem_dispenser.dm" #include "nsv13\code\game\machinery\computer\_ship.dm" +#include "nsv13\code\game\machinery\computer\atmos_control.dm" #include "nsv13\code\game\machinery\computer\boarding_pin.dm" #include "nsv13\code\game\machinery\computer\helm.dm" #include "nsv13\code\game\machinery\computer\munitions.dm" @@ -3782,12 +3822,14 @@ #include "nsv13\code\game\objects\items\custom_items.dm" #include "nsv13\code\game\objects\items\custom_materials.dm" #include "nsv13\code\game\objects\items\munitions_items.dm" +#include "nsv13\code\game\objects\items\nsv13_plushes.dm" #include "nsv13\code\game\objects\items\nsv_candle.dm" #include "nsv13\code\game\objects\items\nsv_circuitboards.dm" #include "nsv13\code\game\objects\items\RCD.dm" #include "nsv13\code\game\objects\items\religion.dm" #include "nsv13\code\game\objects\items\space_pirate_items.dm" #include "nsv13\code\game\objects\items\storage_items.dm" +#include "nsv13\code\game\objects\items\colorizers\fighters.dm" #include "nsv13\code\game\objects\items\devices\radio\gulagpack.dm" #include "nsv13\code\game\objects\items\robot\hypo.dm" #include "nsv13\code\game\objects\items\stacks\tiles\tile_types.dm" @@ -3811,8 +3853,14 @@ #include "nsv13\code\modules\antagonists\simple_teamchat.dm" #include "nsv13\code\modules\antagonists\boarders\boarders.dm" #include "nsv13\code\modules\antagonists\boarders\pirate_boarders.dm" +#include "nsv13\code\modules\antagonists\ghostship\ghost_ship.dm" +#include "nsv13\code\modules\antagonists\role_preference\role_antagonists.dm" +#include "nsv13\code\modules\antagonists\role_preference\role_midrounds.dm" #include "nsv13\code\modules\atmospherics\gasmixtures\reactions.dm" +#include "nsv13\code\modules\atmospherics\machinery\components\binary_devices\constrictor.dm" +#include "nsv13\code\modules\atmospherics\machinery\components\unary_devices\outlet_injector.dm" #include "nsv13\code\modules\atmospherics\machinery\components\unary_devices\tank.dm" +#include "nsv13\code\modules\atmospherics\machinery\components\unary_devices\vent_pump.dm" #include "nsv13\code\modules\cargo\mission_rewards.dm" #include "nsv13\code\modules\cargo\objective_cargo.dm" #include "nsv13\code\modules\cargo\packs.dm" @@ -3820,7 +3868,10 @@ #include "nsv13\code\modules\cargo\exports\engineering.dm" #include "nsv13\code\modules\cargo\exports\syndie.dm" #include "nsv13\code\modules\client\zoom.dm" +#include "nsv13\code\modules\client\loadout\loadout_colorizers.dm" #include "nsv13\code\modules\client\loadout\loadout_donator.dm" +#include "nsv13\code\modules\client\loadout\loadout_general.dm" +#include "nsv13\code\modules\client\loadout\loadout_uniform.dm" #include "nsv13\code\modules\clothing\custom_clothes.dm" #include "nsv13\code\modules\clothing\custom_outfits.dm" #include "nsv13\code\modules\clothing\dominion_clothes.dm" @@ -3872,14 +3923,25 @@ #include "nsv13\code\modules\mining\asteroid.dm" #include "nsv13\code\modules\mob\mob.dm" #include "nsv13\code\modules\mob\mob_helpers.dm" +#include "nsv13\code\modules\mob\dead\new_player\sprite_accessories.dm" #include "nsv13\code\modules\mob\dead\observer\oberserver.dm" #include "nsv13\code\modules\mob\living\carbon\carbon.dm" +#include "nsv13\code\modules\mob\living\carbon\examine_tgui.dm" +#include "nsv13\code\modules\mob\living\carbon\human\human.dm" #include "nsv13\code\modules\mob\living\carbon\human\nsv_emotes.dm" +#include "nsv13\code\modules\mob\living\carbon\human\nsv_human_helpers.dm" +#include "nsv13\code\modules\mob\living\carbon\human\species_types\catgirl.dm" #include "nsv13\code\modules\mob\living\carbon\human\species_types\nanotrasen_knpc.dm" #include "nsv13\code\modules\mob\living\carbon\human\species_types\other_knpc.dm" #include "nsv13\code\modules\mob\living\carbon\human\species_types\spacepirate_knpc.dm" #include "nsv13\code\modules\mob\living\carbon\human\species_types\syndicate_knpc.dm" +#include "nsv13\code\modules\mob\living\silicon\ai\custom_holoform.dm" #include "nsv13\code\modules\mob\living\silicon\ai\robot_control.dm" +#include "nsv13\code\modules\mob\living\silicon\ai\track.dm" +#include "nsv13\code\modules\mob\living\silicon\robot\cargoborg_items.dm" +#include "nsv13\code\modules\mob\living\silicon\robot\muni_upgrade.dm" +#include "nsv13\code\modules\mob\living\silicon\robot\robot_modules.dm" +#include "nsv13\code\modules\mob\living\silicon\robot\update_icons.dm" #include "nsv13\code\modules\mob\living\simple_animal\bot\catmed.dm" #include "nsv13\code\modules\mob\living\simple_animal\bot\hugbot.dm" #include "nsv13\code\modules\mob\living\simple_animal\bot\secbot.dm" @@ -3983,6 +4045,7 @@ #include "nsv13\code\modules\overmap\overmapJS\overmap_projectile.dm" #include "nsv13\code\modules\overmap\overmapJS\overmap_starsystem.dm" #include "nsv13\code\modules\overmap\overmapJS\overmap_vision.dm" +#include "nsv13\code\modules\overmap\overmapJS\overmap_weapon.dm" #include "nsv13\code\modules\overmap\overmapJS\ship.dm" #include "nsv13\code\modules\overmap\overmapJS\subsystems.dm" #include "nsv13\code\modules\overmap\overmapJS\components\piloting.dm" @@ -4001,7 +4064,6 @@ #include "nsv13\code\modules\overmap\weapons\projectiles_fx.dm" #include "nsv13\code\modules\overmap\weapons\ship_weapon.dm" #include "nsv13\code\modules\overmap\weapons\weapons.dm" -#include "nsv13\code\modules\paperwork\photocopier.dm" #include "nsv13\code\modules\paperwork\stamps.dm" #include "nsv13\code\modules\pixelshifting\pixelshifting.dm" #include "nsv13\code\modules\power\lighting.dm" diff --git a/nsv13/code/__DEFINES/atmospherics.dm b/nsv13/code/__DEFINES/atmospherics.dm new file mode 100644 index 00000000000..e12f9c12bc1 --- /dev/null +++ b/nsv13/code/__DEFINES/atmospherics.dm @@ -0,0 +1,4 @@ +#define ATMOS_GAS_MONITOR_INPUT_NUCLEIUM "nucleium_in" +#define ATMOS_GAS_MONITOR_OUTPUT_NUCLEIUM "nucleium_out" +#define ATMOS_GAS_MONITOR_SENSOR_NUCLEIUM "nucleium_sensor" +#define ATMOS_TANK_NUCLEIUM "nucleium=750;TEMP=293.15" diff --git a/nsv13/code/__DEFINES/lists.dm b/nsv13/code/__DEFINES/lists.dm new file mode 100644 index 00000000000..992dd58bce4 --- /dev/null +++ b/nsv13/code/__DEFINES/lists.dm @@ -0,0 +1,20 @@ + +/// Gets a datum of the specified type from the list, get_by_type(L) will return the first datum +/proc/get_by_type(list/L, type) + RETURN_TYPE(/datum) + for(var/datum/T in L) + if(istype(T, type)) + return T + else if(!type && isdatum(T)) + return T + else continue + +/// Gets a specified atom type from the list, get_atom_by_type(L) will return the first atom +/proc/get_atom_by_type(list/L, type) + RETURN_TYPE(/atom) + for(var/atom/A in L) + if(istype(A, type)) + return A + else if(!type && isatom(A)) + return A + else continue diff --git a/nsv13/code/__DEFINES/missions.dm b/nsv13/code/__DEFINES/missions.dm index a27b9decd0b..b34aea02728 100644 --- a/nsv13/code/__DEFINES/missions.dm +++ b/nsv13/code/__DEFINES/missions.dm @@ -14,3 +14,5 @@ #define COMSIG_CARGO_DELIVERED "cargo_delivered" #define COMSIG_CARGO_TAMPERED "cargo_tampered" #define COMSIG_CARGO_REGISTER "cargo_register" + +#define COMSIG_ANOMALY_SCANNED "anomaly_scanned" diff --git a/nsv13/code/__DEFINES/overmap.dm b/nsv13/code/__DEFINES/overmap.dm index 1924c716c02..139d009b698 100644 --- a/nsv13/code/__DEFINES/overmap.dm +++ b/nsv13/code/__DEFINES/overmap.dm @@ -13,7 +13,9 @@ #define FIRE_MODE_BROADSIDE 9 #define FIRE_MODE_PHORON 10 +//Base Armor Values +#define OM_ARMOR list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 80, "bio" = 100, "rad" = 100, "acid" = 100, "stamina" = 100) //Deprecated / legacy weapons. @@ -55,6 +57,7 @@ #define isovermap(A) (istype(A, /obj/structure/overmap)) #define isasteroid(A) (istype(A, /obj/structure/overmap/asteroid)) +#define isanomaly(A) (istype(A, /obj/effect/overmap_anomaly)) //Assigning player ships goes here @@ -78,6 +81,7 @@ #define CLOAK_TEMPORARY_LOSS 2 //Cloak handling. When you fire a weapon, you temporarily lose your cloak, and AIs can target you. GLOBAL_LIST_INIT(overmap_objects, list()) +GLOBAL_LIST_INIT(overmap_anomalies, list()) GLOBAL_LIST_INIT(overmap_impact_sounds, list('nsv13/sound/effects/ship/freespace2/impacts/boom_1.wav','nsv13/sound/effects/ship/freespace2/impacts/boom_2.wav','nsv13/sound/effects/ship/freespace2/impacts/boom_3.wav','nsv13/sound/effects/ship/freespace2/impacts/boom_4.wav','nsv13/sound/effects/ship/freespace2/impacts/m_hit.wav','nsv13/sound/effects/ship/freespace2/impacts/subhit.wav','nsv13/sound/effects/ship/freespace2/impacts/subhit2.wav','nsv13/sound/effects/ship/damage/consolehit.ogg','nsv13/sound/effects/ship/damage/consolehit2.ogg','nsv13/sound/effects/ship/damage/consolehit3.ogg','nsv13/sound/effects/ship/damage/consolehit4.ogg','nsv13/sound/effects/ship/damage/shiphit.ogg','nsv13/sound/effects/ship/damage/shiphit2.ogg','nsv13/sound/effects/ship/damage/shiphit3.ogg','nsv13/sound/effects/ship/damage/shiphit4.ogg','nsv13/sound/effects/ship/damage/torpedo_hit.ogg','nsv13/sound/effects/ship/damage/explosionfar_2.ogg','nsv13/sound/effects/ship/damage/explosionfar_3.ogg','nsv13/sound/effects/ship/damage/explosionfar_4.ogg','nsv13/sound/effects/ship/damage/explosionfar_5.ogg','nsv13/sound/effects/ship/damage/explosionfar_6.ogg')) //Unique identifiers for each faction. Keep this updated when you make a new faction. @@ -97,3 +101,12 @@ GLOBAL_LIST_INIT(overmap_impact_sounds, list('nsv13/sound/effects/ship/freespace #define INTERIOR_READY 2 #define INTERIOR_DELETING 3 #define INTERIOR_DELETED 4 + +//Overmap flags +#define OVERMAP_FLAG_ZLEVEL_CARRIER (1<<0) //! This overmap is meant to carry a z with it, prompting restoration in certain cases. + +//Fun tools +#define SHIELD_NOEFFECT 0 //!Shield failed to absorb hit. +#define SHIELD_ABSORB 1 //!Shield absorbed hit. +#define SHIELD_FORCE_DEFLECT 2 //!Shield absorbed hit and is redirecting projectile with slightly turned vector. +#define SHIELD_FORCE_REFLECT 3 //!Shield absorbed hit and is redirecting projectile in reverse direction. diff --git a/nsv13/code/__DEFINES/paths.dm b/nsv13/code/__DEFINES/paths.dm index 0e2a5363efc..754522d1790 100644 --- a/nsv13/code/__DEFINES/paths.dm +++ b/nsv13/code/__DEFINES/paths.dm @@ -1,2 +1,3 @@ #define RANK_DIR "config/ranks/" #define LORE_DIR "nsv13/lore_entries/" +#define MAP_DIR "config/starmap" diff --git a/nsv13/code/__DEFINES/robot_defines.dm b/nsv13/code/__DEFINES/robot_defines.dm new file mode 100644 index 00000000000..650b3d64911 --- /dev/null +++ b/nsv13/code/__DEFINES/robot_defines.dm @@ -0,0 +1,8 @@ +// Icon file locations for modular borg icons +#define CYBORG_ICON_CARGO 'nsv13/icons/mob/silicon/robots_cargo.dmi' + +/// Module is compatible with Cargo Cyborg Module +#define BORG_MODULE_CARGO (BORG_MODULE_ENGINEERING<<1) + +// Medbot first aid kit skin +#define MEDBOT_SKIN_ROBOT "robot" diff --git a/nsv13/code/__DEFINES/starsystem.dm b/nsv13/code/__DEFINES/starsystem.dm new file mode 100644 index 00000000000..47dbd5c63e7 --- /dev/null +++ b/nsv13/code/__DEFINES/starsystem.dm @@ -0,0 +1,15 @@ + +//Time between each 'combat cycle' of starsystems. Every combat cycle, every system that has opposing fleets in it gets iterated through, with the fleets firing at eachother. +#define COMBAT_CYCLE_INTERVAL 180 SECONDS + +//Threat level of star systems +#define THREAT_LEVEL_NONE 0 +#define THREAT_LEVEL_UNSAFE 2 +#define THREAT_LEVEL_DANGEROUS 4 + +//The different sectors, keep this updated +#define ALL_STARMAP_SECTORS 1,2,3 + +#define SECTOR_SOL 1 +#define SECTOR_NEUTRAL 2 +#define SECTOR_SYNDICATE 3 diff --git a/nsv13/code/__HELPERS/custom_holoforms.dm b/nsv13/code/__HELPERS/custom_holoforms.dm new file mode 100644 index 00000000000..256de377638 --- /dev/null +++ b/nsv13/code/__HELPERS/custom_holoforms.dm @@ -0,0 +1,58 @@ +// Generates a holoform appearance +// Equipment list is slot = path. +/proc/generate_custom_holoform_from_prefs(datum/preferences/prefs, list/equipment_by_slot, list/inhand_equipment, copy_job = FALSE, apply_loadout = FALSE) + ASSERT(prefs) + var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy(DUMMY_HUMAN_SLOT_HOLOFORM) + prefs.active_character.copy_to(mannequin) + if(copy_job) + var/datum/job/highest = prefs.active_character.get_highest_job() + if(highest && !istype(highest, /datum/job/ai) && !istype(highest, /datum/job/cyborg)) + highest.equip(mannequin, TRUE, preference_source = prefs.parent) + + if(length(equipment_by_slot)) + for(var/slot in equipment_by_slot) + var/obj/item/I = new equipment_by_slot[slot] + mannequin.equip_to_slot_if_possible(I, slot, TRUE, TRUE, TRUE, TRUE) + if(length(inhand_equipment)) + for(var/path in inhand_equipment) + var/obj/item/I = new path + mannequin.equip_to_slot_if_possible(I, ITEM_SLOT_HANDS, TRUE, TRUE, TRUE, TRUE) + + + var/icon/combined = new + for(var/d in GLOB.cardinals) + mannequin.setDir(d) + COMPILE_OVERLAYS(mannequin) + CHECK_TICK + var/icon/capture = getFlatIcon(mannequin) + CHECK_TICK + combined.Insert(capture, dir = d) + CHECK_TICK + + unset_busy_human_dummy(DUMMY_HUMAN_SLOT_HOLOFORM) + return combined + +/proc/process_holoform_icon_filter(icon/I, filter_type, clone = TRUE) + if(clone) + I = icon(I) //Clone + switch(filter_type) + if(HOLOFORM_FILTER_AI) + I = getHologramIcon(I) + if(HOLOFORM_FILTER_STATIC) + I = getStaticIcon(I) + return I + +//Errors go to user. +/proc/generate_custom_holoform_from_prefs_safe(datum/preferences/prefs, mob/user) + if(user) + if(user.client.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) + to_chat(user, "You are attempting to set your custom holoform too fast!") + return + return generate_custom_holoform_from_prefs(prefs, null, null, TRUE, TRUE) + +//Prompts this client for custom holoform parameters. +/proc/user_interface_custom_holoform(client/C) + var/datum/preferences/target_prefs = C.prefs + ASSERT(target_prefs) + //In the future, maybe add custom path allowances a la admin create outfit but for now.. + return generate_custom_holoform_from_prefs_safe(target_prefs, C.mob) diff --git a/nsv13/code/_globalvars/starsystem.dm b/nsv13/code/_globalvars/starsystem.dm new file mode 100644 index 00000000000..83d4705fc53 --- /dev/null +++ b/nsv13/code/_globalvars/starsystem.dm @@ -0,0 +1,2 @@ +//Set when the ship successfully returns after the mission +GLOBAL_VAR_INIT(crew_transfer_risa, FALSE) diff --git a/nsv13/code/controllers/subsystem/map_vote.dm b/nsv13/code/controllers/subsystem/map_vote.dm index 34846e94e2a..41eac8291a6 100644 --- a/nsv13/code/controllers/subsystem/map_vote.dm +++ b/nsv13/code/controllers/subsystem/map_vote.dm @@ -33,14 +33,14 @@ /* From the feedback table, for any entry with the key 'nsv_endings', get the round ID and extract the type of ending from the JSON data. This is a text string. Current values (2023/02/17) are "succeeded", "evacuated", and "failed". Call this result "feedback". - (SELECT round_id, CAST(JSON_EXTRACT(JSON, '$.data') AS CHAR) AS ending FROM ss13_feedback WHERE key_name='nsv_endings') AS feedback + (SELECT round_id, CAST(JSON_EXTRACT(JSON, '$.data[0]') AS CHAR) AS ending FROM ss13_feedback WHERE key_name='nsv_endings') AS feedback Take the round ID and compare it with the data from the round table to get the map name. This gives us one row per round where we recorded the ending with the map name and the ending type. The ending type string includes quotation marks. SELECT map_name, feedback.ending FROM ss13_round INNER JOIN [feedback] ON ss13_round.id=feedback.round_id */ var/datum/DBQuery/endings_query = SSdbcore.NewQuery("SELECT map_name, feedback.ending FROM [format_table_name("round")] INNER JOIN (" + \ - "SELECT round_id, CAST(JSON_EXTRACT(JSON, '$.data') AS CHAR) AS ending FROM [format_table_name("feedback")] WHERE key_name='nsv_endings') AS feedback " + \ + "SELECT round_id, CAST(JSON_EXTRACT(JSON, '$.data\[0\]') AS CHAR) AS ending FROM [format_table_name("feedback")] WHERE key_name='nsv_endings') AS feedback " + \ " ON [format_table_name("round")].id=feedback.round_id") SSdbcore.QuerySelect(stability_query) diff --git a/nsv13/code/controllers/subsystem/overmap_mode.dm b/nsv13/code/controllers/subsystem/overmap_mode.dm index ae41a58f0a8..51d0613b765 100644 --- a/nsv13/code/controllers/subsystem/overmap_mode.dm +++ b/nsv13/code/controllers/subsystem/overmap_mode.dm @@ -20,6 +20,7 @@ SUBSYSTEM_DEF(overmap_mode) var/highest_objective_completion = 0 //What was the highest amount of objectives completed? If it increases, reduce threat. var/player_check = 0 //Number of players connected when the check is made for gamemode var/datum/overmap_gamemode/mode //The assigned mode + var/datum/overmap_gamemode/forced_mode = null //Admin forced gamemode prior to initialization var/objective_reminder_override = FALSE //Are we currently using the reminder system? var/last_objective_interaction = 0 //Last time the crew interacted with one of our objectives @@ -58,68 +59,79 @@ SUBSYSTEM_DEF(overmap_mode) //Set starting systems for the player ships //Load and set objectives - mode_cache = typecacheof(/datum/overmap_gamemode, TRUE) + mode_cache = subtypesof(/datum/overmap_gamemode) var/list/probabilities = config.Get(/datum/config_entry/keyed_list/omode_probability) var/list/min_pop = config.Get(/datum/config_entry/keyed_list/omode_min_pop) var/list/max_pop = config.Get(/datum/config_entry/keyed_list/omode_max_pop) - for(var/D in subtypesof(/datum/overmap_gamemode)) - var/datum/overmap_gamemode/N = new D() - N.selection_weight = probabilities[N.config_tag] - N.required_players = min_pop[N.config_tag] - N.max_players = max_pop[N.config_tag] - mode_cache[D] = N + for(var/M in mode_cache) + var/datum/overmap_gamemode/GM = M + if(initial(GM.whitelist_only)) //Remove all of our only whitelisted modes + mode_cache -= M - var/list/mode_pool = mode_cache - - for(var/M in mode_pool) - var/datum/overmap_gamemode/GM = mode_pool[M] - if(GM.whitelist_only) //Remove all of our only whitelisted modes - QDEL_NULL(mode_pool[M]) - mode_pool -= M - - if(SSmapping.config.omode_blacklist.len > 0) + if(length(SSmapping.config.omode_blacklist) > 0) if(locate("all") in SSmapping.config.omode_blacklist) - mode_pool = list() //Clear the list + mode_cache.Cut() else for(var/S in SSmapping.config.omode_blacklist) //Grab the string to be the path - is there a proc for this? var/B = text2path("/datum/overmap_gamemode/[S]") - QDEL_NULL(mode_pool[B]) - mode_pool -= B + mode_cache -= B - if(SSmapping.config.omode_whitelist.len > 0) + if(length(SSmapping.config.omode_whitelist) > 0) for(var/S in SSmapping.config.omode_whitelist) //Grab the string to be the path - is there a proc for this? var/W = text2path("/datum/overmap_gamemode/[S]") - mode_pool[W] = new W() + mode_cache += W for(var/mob/dead/new_player/P in GLOB.player_list) //Count the number of connected players if(P.client) player_check ++ - for(var/M in mode_pool) //Check and remove any modes that we have insufficient players for the mode - var/datum/overmap_gamemode/GM = mode_pool[M] - if(player_check < GM.required_players) - QDEL_NULL(mode_pool[M]) - mode_pool -= M - else if(GM.max_players > 0) - if(player_check > GM.max_players) - QDEL_NULL(mode_pool[M]) - mode_pool -= M - - if(mode_pool.len) + for(var/M in mode_cache) //Check and remove any modes that we have insufficient players for the mode + var/datum/overmap_gamemode/GM = M + var/config_tag = initial(GM.config_tag) + + var/required_players = 0 + if(config_tag in min_pop) + required_players = min_pop[config_tag] + else + required_players = initial(GM.required_players) + var/max_players = 0 + if(config_tag in max_pop) + max_players = max_pop[config_tag] + else + max_players = initial(GM.max_players) + + if(player_check < required_players) + mode_cache -= M + else if((max_players > 0) && (player_check > max_players)) + mode_cache -= M + + if(length(mode_cache)) var/list/mode_select = list() - for(var/M in mode_pool) - var/datum/overmap_gamemode/GM = mode_pool[M] - for(var/I = 0, I < GM.selection_weight, I++) //Populate with weight number of instances - mode_select += M - - if(mode_select.len) - var/mode_type = pick(mode_select) - mode = mode_pool[mode_type] - message_admins("[mode.name] has been selected as the overmap gamemode") - log_game("[mode.name] has been selected as the overmap gamemode") - if(!mode) + if(forced_mode) + mode = new forced_mode + else + for(var/M in mode_cache) + var/datum/overmap_gamemode/GM = M + var/config_tag = initial(GM.config_tag) + + var/selection_weight = 0 + if(config_tag in probabilities) + selection_weight = probabilities[config_tag] + else + selection_weight = initial(GM.selection_weight) + for(var/I = 0, I < selection_weight, I++) //Populate with weight number of instances + mode_select += M + + if(length(mode_select)) + var/mode_type = pick(mode_select) + mode = new mode_type + + if(mode) + message_admins("[mode.name] has been selected as the overmap gamemode") + log_game("[mode.name] has been selected as the overmap gamemode") + else mode = new/datum/overmap_gamemode/patrol() //Holding that as the default for now - REPLACE ME LATER message_admins("Error: mode section pool empty - defaulting to PATROL") log_game("Error: mode section pool empty - defaulting to PATROL") @@ -143,9 +155,18 @@ SUBSYSTEM_DEF(overmap_mode) mode.objectives += mode.fixed_objectives //Add our fixed objectives - if(mode.random_objectives.len) //Do we have random objectives? + if(mode.random_objective_amount) //Do we have random objectives? + var/list/select_objectives = mode.random_objectives + for(var/datum/overmap_objective/objective in mode.random_objectives) + if(player_check < initial(objective.required_players)) + select_objectives -= objective + if((initial(objective.maximum_players) > 0) && (player_check > initial(objective.maximum_players))) + select_objectives -= objective for(var/I = 0, I < mode.random_objective_amount, I++) //We pick from our pool of random objectives - mode.objectives += pick_n_take(mode.random_objectives) + if(!length(select_objectives)) + message_admins("Overmap mode ran out of random objectives to pick!") + break + mode.objectives += pick_n_take(select_objectives) for(var/O in mode.objectives) var/datum/overmap_objective/I = new O() @@ -221,19 +242,20 @@ SUBSYSTEM_DEF(overmap_mode) objective_reminder_stacks = 0 else var/obj/structure/overmap/OM = SSstar_system.find_main_overmap() + var/datum/star_system/S = SSstar_system.return_system if(length(OM.current_system?.enemies_in_system)) if(objective_reminder_stacks == 3) - priority_announce("Auto-recall to Outpost 45 will occur once you are out of combat.", "[mode.reminder_origin]") + priority_announce("Auto-recall to [S.name] will occur once you are out of combat.", "[mode.reminder_origin]") return // Don't send them home while there are enemies to kill switch(objective_reminder_stacks) //Less Stacks Here, Prevent The Post-Round Stalling if(1) - priority_announce("Auto-recall to Outpost 45 will occur in [(mode.objective_reminder_interval * 2) / 600] Minutes.", "[mode.reminder_origin]") + priority_announce("Auto-recall to [S.name] will occur in [(mode.objective_reminder_interval * 2) / 600] Minutes.", "[mode.reminder_origin]") if(2) - priority_announce("Auto-recall to Outpost 45 will occur in [(mode.objective_reminder_interval * 1) / 600] Minutes.", "[mode.reminder_origin]") + priority_announce("Auto-recall to [S.name] will occur in [(mode.objective_reminder_interval * 1) / 600] Minutes.", "[mode.reminder_origin]") else - priority_announce("Auto-recall to Outpost 45 activated, additional objective aborted.", "[mode.reminder_origin]") + priority_announce("Auto-recall to [S.name] activated, additional objective aborted.", "[mode.reminder_origin]") mode.victory() /datum/controller/subsystem/overmap_mode/proc/start_reminder() @@ -251,14 +273,18 @@ SUBSYSTEM_DEF(overmap_mode) */ var/text = "[GLOB.station_name],
                      You have been assigned the following mission by [capitalize(mode.starting_faction)] and are expected to complete it with all due haste. Please ensure your crew is properly informed of your objectives and delegate tasks accordingly." - var/title = "Mission Briefing: [random_capital_letter()][random_capital_letter()][random_capital_letter()]-[GLOB.round_id]" + var/static/title = "" + if(!announced_objectives) + title += "Mission Briefing: [random_capital_letter()][random_capital_letter()][random_capital_letter()]-[GLOB.round_id]" + else //Add an extension if this isn't roundstart + title += "-Ext." text = "[text]

                      [mode.brief]

                      Objectives:" for(var/datum/overmap_objective/O in mode.objectives) text = "[text]
                      - [O.brief]" - if ( !SSovermap_mode.announced_objectives ) // Prevents duplicate report spam when assigning additional objectives + if(!SSovermap_mode.announced_objectives) // Prevents duplicate report spam when assigning additional objectives O.print_objective_report() print_command_report(text, title, TRUE) @@ -282,18 +308,37 @@ SUBSYSTEM_DEF(overmap_mode) /datum/controller/subsystem/overmap_mode/proc/request_additional_objectives() for(var/datum/overmap_objective/O in mode.objectives) - O.ignore_check = TRUE //We no longer care about checking these objective against completeion + O.ignore_check = TRUE //We no longer care about checking these objective against completion - var/list/extension_pool = typecacheof(/datum/overmap_objective, TRUE) - for(var/O in extension_pool) - var/datum/overmap_objective/OO = new O() - if(OO.extension_supported == FALSE) //Clear the pool of anything we can't add + /* This doesn't work and I don't have the time to refactor all of it right now so on the TODO pile it goes! + var/list/extension_pool = subtypesof(/datum/overmap_objective) + var/players = get_active_player_count(TRUE, TRUE, FALSE) //Number of living, non-AFK players including non-humanoids + for(var/datum/overmap_objective/O in extension_pool) + if(initial(O.extension_supported) == FALSE) //Clear the pool of anything we can't add extension_pool -= O - else - extension_pool[O] = OO + if(players < initial(O.required_players)) //Not enough people + extension_pool -= O + if((initial(O.maximum_players) > 0) && (players > initial(O.maximum_players))) //Too many people + extension_pool -= O + + if(length(extension_pool)) + var/datum/overmap_objective/selected = pick(extension_pool) //Insert new objective + mode.objectives += new selected + else + message_admins("No additional objective candidates! Defaulting to tickets") + mode.objectives += new /datum/overmap_objective/tickets + */ + + var/datum/star_system/rubicon = SSstar_system.system_by_id("Rubicon") + if(get_active_player_count(TRUE,TRUE,FALSE) > 10 && length(rubicon.enemies_in_system)) //Make sure there are enemies to fight + mode.objectives += new /datum/overmap_objective/clear_system/rubicon + else + mode.objectives += new /datum/overmap_objective/tickets + for(var/datum/faction/F in SSstar_system.factions) + F.send_fleet(custom_difficulty = (mode.difficulty + 1)) //Extension is more challenging + escalation += 1 + message_admins("Overmap difficulty has been increased by 1!") - var/datum/overmap_objective/selected = extension_pool[pick(extension_pool)] //Insert new objective - mode.objectives += selected instance_objectives() announce_objectives() //Let them all know @@ -346,6 +391,12 @@ SUBSYSTEM_DEF(overmap_mode) /datum/overmap_objective/perform_jumps ) +/datum/overmap_gamemode/Destroy() + for(var/datum/overmap_objective/objective in objectives) + QDEL_NULL(objective) + objectives.Cut() + . = ..() + /datum/overmap_gamemode/proc/consequence_one() /datum/overmap_gamemode/proc/consequence_two() @@ -380,6 +431,7 @@ SUBSYSTEM_DEF(overmap_mode) return if(SSovermap_mode.objectives_completed) victory() + return var/objective_length = objectives.len var/objective_check = 0 @@ -401,9 +453,8 @@ SUBSYSTEM_DEF(overmap_mode) SSovermap_mode.modify_threat_elevation(-TE_OBJECTIVE_THREAT_NEGATION * (successes - SSovermap_mode.highest_objective_completion)) SSovermap_mode.highest_objective_completion = successes if(istype(SSticker.mode, /datum/game_mode/pvp)) //If the gamemode is PVP and a faction has over a 700 points, they win. - for(var/X in SSstar_system.factions) + for(var/datum/faction/F in SSstar_system.factions) var/datum/game_mode/pvp/mode = SSticker.mode - var/datum/faction/F = X if(F.tickets >= 700) mode.winner = F //This should allow the mode to finish up by itself mode.check_finished() @@ -418,16 +469,16 @@ SUBSYSTEM_DEF(overmap_mode) if(SSvote.mode == "Press On Or Return Home?") // We're still voting return - var/datum/star_system/S = SSstar_system.system_by_id("Outpost 45") + var/datum/star_system/S = SSstar_system.return_system S.hidden = FALSE if(!SSovermap_mode.round_extended) //If we haven't yet extended the round, let us vote! priority_announce("Mission Complete - Vote Pending") //TEMP get better words SSvote.initiate_vote("Press On Or Return Home?", "Centcomm", forced=TRUE, popup=FALSE) - else //Begin FTL jump to Outpost 45 + else //Begin FTL return jump var/obj/structure/overmap/OM = SSstar_system.find_main_overmap() if(!length(OM.current_system?.enemies_in_system)) - priority_announce("Mission Complete - Returning to Outpost 45") //TEMP get better words - OM.force_return_jump(SSstar_system.system_by_id("Outpost 45")) + priority_announce("Mission Complete - Returning to [S.name]") //TEMP get better words + OM.force_return_jump() /datum/overmap_gamemode/proc/defeat() //Override this if defeat is to be called based on an objective priority_announce("Mission Critical Failure - Standby for carbon asset liquidation") @@ -447,6 +498,8 @@ SUBSYSTEM_DEF(overmap_mode) var/ignore_check = FALSE //Used for checking extended rounds var/instanced = FALSE //Have we yet run the instance proc for this objective? var/objective_number = 0 //The objective's index in the list. Useful for creating arbitrary report titles + var/required_players = 0 //Minimum number of players to get this if it's a random/extended objective + var/maximum_players = 0 //Maximum number of players to get this if it's a random/extended objective. 0 is unlimited. /datum/overmap_objective/New() @@ -464,7 +517,7 @@ SUBSYSTEM_DEF(overmap_mode) /datum/overmap_objective/custom name = "Custom" -/datum/overmap_objective/custom/New(var/passed_input) //Receive the string and make it brief/desc +/datum/overmap_objective/custom/New(passed_input) //Receive the string and make it brief/desc .=..() desc = passed_input brief = passed_input @@ -522,19 +575,27 @@ SUBSYSTEM_DEF(overmap_mode) if(SSovermap_mode.mode_initialised) message_admins("Post Initilisation Overmap Gamemode Changes Not Currently Supported") //SoonTM return - var/list/gamemode_pool = typecacheof(/datum/overmap_gamemode, TRUE) - var/datum/overmap_gamemode/S = input("Select Overmap Gamemode", "Change Overmap Gamemode") as null|anything in gamemode_pool + var/list/gamemode_pool = subtypesof(/datum/overmap_gamemode) + var/datum/overmap_gamemode/S = input(usr, "Select Overmap Gamemode", "Change Overmap Gamemode") as null|anything in gamemode_pool if(isnull(S)) return - SSovermap_mode.mode = new S() - message_admins("[key_name_admin(usr)] has changed the overmap gamemode to [SSovermap_mode.mode.name]") + if(SSovermap_mode.mode_initialised) + qdel(SSovermap_mode.mode) + SSovermap_mode.mode = new S() + message_admins("[key_name_admin(usr)] has changed the overmap gamemode to [SSovermap_mode.mode.name]") + else + SSovermap_mode.forced_mode = S + message_admins("[key_name_admin(usr)] has changed the overmap gamemode to [initial(S.name)]") return if("add_objective") - var/list/objectives_pool = typecacheof(/datum/overmap_objective, TRUE) - var/datum/overmap_objective/S = input("Select objective to add", "Add Objective") as null|anything in objectives_pool + var/list/objectives_pool = (subtypesof(/datum/overmap_objective) - /datum/overmap_objective/custom) + var/datum/overmap_objective/S = input(usr, "Select objective to add", "Add Objective") as null|anything in objectives_pool if(isnull(S)) return - SSovermap_mode.mode.objectives += new S() + var/extra + if(ispath(S,/datum/overmap_objective/clear_system)) + extra = input(usr, "Select a target system", "Select System") as null|anything in SSstar_system.systems + SSovermap_mode.mode.objectives += new S(extra) SSovermap_mode.instance_objectives() return if("add_custom_objective") @@ -607,7 +668,7 @@ SUBSYSTEM_DEF(overmap_mode) if("Cancel") return if("Open") - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to pilot a [initial(target_ship.faction)] [initial(target_ship.name)]?", ROLE_GHOSTSHIP, null, null, 20 SECONDS, POLL_IGNORE_GHOSTSHIP) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to pilot a [initial(target_ship.faction)] [initial(target_ship.name)]?", ROLE_GHOSTSHIP, /datum/role_preference/midround_ghost/ghost_ship, 20 SECONDS, POLL_IGNORE_GHOSTSHIP) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) target_ghost = C @@ -641,7 +702,10 @@ SUBSYSTEM_DEF(overmap_mode) /datum/overmap_mode_controller/ui_data(mob/user) var/list/data = list() var/list/objectives = list() - data["current_gamemode"] = SSovermap_mode.mode?.name + if(SSovermap_mode.mode) + data["current_gamemode"] = SSovermap_mode.mode.name + else if(SSovermap_mode.forced_mode) + data["current_gamemode"] = initial(SSovermap_mode.forced_mode.name) data["current_description"] = SSovermap_mode.mode?.desc data["mode_initalised"] = SSovermap_mode?.mode_initialised data["current_difficulty"] = SSovermap_mode.mode?.difficulty diff --git a/nsv13/code/controllers/subsystem/starsystem.dm b/nsv13/code/controllers/subsystem/starsystem.dm index 5a62a34f78a..a796ab985bd 100644 --- a/nsv13/code/controllers/subsystem/starsystem.dm +++ b/nsv13/code/controllers/subsystem/starsystem.dm @@ -1,11 +1,3 @@ -GLOBAL_VAR_INIT(crew_transfer_risa, FALSE) - -#define COMBAT_CYCLE_INTERVAL 180 SECONDS //Time between each 'combat cycle' of starsystems. Every combat cycle, every system that has opposing fleets in it gets iterated through, with the fleets firing at eachother. - -#define THREAT_LEVEL_NONE 0 -#define THREAT_LEVEL_UNSAFE 2 -#define THREAT_LEVEL_DANGEROUS 4 - //Subsystem to control overmap events and the greater gameworld SUBSYSTEM_DEF(star_system) name = "star_system" @@ -24,6 +16,7 @@ SUBSYSTEM_DEF(star_system) var/list/neutral_zone_systems = list() var/list/all_missions = list() var/time_limit = FALSE //Do we want to end the round after a specific time? Mostly used for galconquest. + var/datum/star_system/return_system //Which system should we jump to at the end of the round? var/enable_npc_combat = TRUE //If you are running an event and don't want fleets to shoot eachother, set this to false. var/next_combat_cycle = 0 @@ -56,6 +49,7 @@ SUBSYSTEM_DEF(star_system) /datum/controller/subsystem/star_system/Initialize(start_timeofday) instantiate_systems() . = ..() + return_system = system_by_id(SSmapping.config.return_system) enemy_types = subtypesof(/obj/structure/overmap/syndicate/ai) for(var/type in enemy_blacklist) enemy_types -= type @@ -66,7 +60,7 @@ SUBSYSTEM_DEF(star_system) F.setup_relationships() //Set up faction relationships AFTER they're all initialised to avoid errors. for(var/datum/star_system/S in systems) //Setup the neutral zone for easier access - Bit of overhead but better than having to search for sector 2 systems everytime we want a new neutral zone occupier) - if(S.sector != 2) //Magic numbers bad I know, but there is no sector defines. + if(S.sector != SECTOR_NEUTRAL) continue neutral_zone_systems += S @@ -131,7 +125,7 @@ Returns a faction datum by its name (case insensitive!) owner = sys_info["owner"], hidden = sys_info["hidden"], sector = sys_info["sector"], - adjacency_list = json_decode(sys_info["adjacency_list"]), + adjacency_list = json_decode(sys_info["adjacency_list"]) || list(), //Optional props. Recommended, but can be left blank. threat_level = LAZYACCESS(sys_info, "threat_level") || THREAT_LEVEL_NONE, is_capital = LAZYACCESS(sys_info, "is_capital") || FALSE, @@ -149,7 +143,7 @@ Returns a faction datum by its name (case insensitive!) ) systems += next } - catch(var/exception/e){ + catch(var/exception/e){ //Please avoid using trycatch, you CANNOT debug try-catch. It's doesn't RUNTIME TRACK trycatch. Breakpoints do not trigger in trycatch. Fix runtimes or failure proof the system instead so nobody has to manually tear apart the trycatch while debugging. message_admins("WARNING: Invalid star system in json: [sys_info["name"]] ([e]). Skipping...") continue } @@ -190,13 +184,7 @@ Returns a faction datum by its name (case insensitive!) for(var/datum/star_system/S in systems) if(S == null || istype(S, /datum/star_system/random)) continue - var/list/initial_adjacency_list = initial(S.adjacency_list) //Don't copy adjacency changes from wormholes or badmins (this is just a lazy fix right now) - var/list/adjusted_adjacency_list = initial_adjacency_list.Copy() - //Don't cache randomized systems in adjacency matrices. - for(var/system_name in adjusted_adjacency_list) - var/datum/star_system/SS = system_by_id(system_name) - if(istype(SS, /datum/star_system/random)) - adjusted_adjacency_list.Remove(system_name) + var/list/adjusted_adjacency_list = S.initial_adjacencies.Copy() //Don't copy adjacency changes from wormholes or badmins /*var/list/adjusted_wormhole_connections = S.wormhole_connections.Copy() Not saving this right now, since wormholes spawn randomly for(var/system_name in adjusted_wormhole_connections) var/datum/star_system/SS = system_by_id(system_name) @@ -215,7 +203,7 @@ Returns a faction datum by its name (case insensitive!) "system_traits"=isnum(S.system_traits) ? S.system_traits : NONE, "is_capital"=S.is_capital, "adjacency_list"=json_encode(adjusted_adjacency_list), - "wormhole_connections"=S.wormhole_connections, + "wormhole_connections"=/*json_encode(S.wormhole_connections)*/json_encode(list()), //If you want to to have mapped wormholes stay, copy how I do adjacency lists or tell me. Do not initial and do not preserve random ones like it would if I just fixed the saving. -Delta "fleet_type" = S.fleet_type, //Coords, props. "x" = S.x, @@ -265,14 +253,20 @@ Returns a faction datum by its name (case insensitive!) if(sys.name == id) return sys -/datum/controller/subsystem/star_system/proc/find_system(obj/structure/overmap/OM) //Used to determine what system a ship is currently in. Famously used to determine the starter system that you've put the ship in. - if(!ships[OM]) - return - var/datum/star_system/system = system_by_id(OM.starting_system) - if(!ships[OM]["current_system"]) - ships[OM]["current_system"] = system - else - system = ships[OM]["current_system"] +/datum/controller/subsystem/star_system/proc/find_system(obj/O) //Used to determine what system a ship is currently in. Famously used to determine the starter system that you've put the ship in. + var/datum/star_system/system + if(isovermap(O)) + var/obj/structure/overmap/OM = O + system = system_by_id(OM.starting_system) + if(!ships[OM]) + return + else if(!ships[OM]["current_system"]) + ships[OM]["current_system"] = system + else + system = ships[OM]["current_system"] + else if(isanomaly(O)) + var/obj/effect/overmap_anomaly/AN = O + system = AN.current_system return system /datum/controller/subsystem/star_system/proc/spawn_ship(obj/structure/overmap/OM, datum/star_system/target_sys, center=FALSE)//Select Ship to Spawn and Location via Z-Trait @@ -335,6 +329,7 @@ Returns a faction datum by its name (case insensitive!) target_sys.contents_positions[anomaly] = list("x" = anomaly.x, "y" = anomaly.y) //Cache the ship's position so we can regenerate it later. target_sys.system_contents += anomaly anomaly.moveToNullspace() //Anything that's an NPC should be stored safely in nullspace until we return. + anomaly.current_system = target_sys return anomaly ///////BOUNTIES////// @@ -420,6 +415,8 @@ Returns a faction datum by its name (case insensitive!) var/system_traits = NONE var/is_capital = FALSE var/list/adjacency_list = list() //Which systems are near us, by name + ///List of adjacencies this system started with. Should never be edited. Cannot be initialed due to the json loading to system adjacencies. + var/list/initial_adjacencies = list() var/occupying_z = 0 //What Z-level is this currently stored on? This will always be a number, as Z-levels are "held" by ships. var/list/wormhole_connections = list() //Where did we dun go do the wormhole to honk var/fleet_type = null //Wanna start this system with a fleet in it? @@ -448,6 +445,12 @@ Returns a faction datum by its name (case insensitive!) message_admins("WARNING: Invalid startup_proc declared for [name]! Review your defines (~L438, starsystem.dm), please.") return 1 +/datum/star_system/vv_edit_var(var_name, var_value) + var/list/banned_edits = list(NAMEOF(src, initial_adjacencies)) + if(var_name in banned_edits) + return FALSE //Don't you dare break the json. + return ..() + /datum/star_system/New(name, desc, threat_level, alignment, owner, hidden, system_type, system_traits, is_capital, adjacency_list, wormhole_connections, fleet_type, x, y, parallax_property, visitable, sector, is_hypergate, preset_trader, audio_cues, startup_proc) . = ..() //Load props first. @@ -470,7 +473,9 @@ Returns a faction datum by its name (case insensitive!) if(is_capital) src.is_capital = is_capital if(adjacency_list) - src.adjacency_list = adjacency_list + var/list/cast_adjacency_list = adjacency_list + src.adjacency_list = cast_adjacency_list + src.initial_adjacencies = cast_adjacency_list.Copy() if(wormhole_connections) src.wormhole_connections = wormhole_connections if(fleet_type) @@ -559,6 +564,7 @@ Returns a faction datum by its name (case insensitive!) icon_state = "rit-elec-aoe" bound_width = 64 bound_height = 64 + var/datum/star_system/current_system var/research_points = 25000 //Glitches in spacetime are *really* interesting okay? var/scanned = FALSE var/specialist_research_type = null //Special techweb node unlocking. @@ -569,6 +575,7 @@ Returns a faction datum by its name (case insensitive!) COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) + GLOB.overmap_anomalies += src /obj/effect/overmap_anomaly/proc/on_entered(datum/source, atom/movable/AM) SIGNAL_HANDLER @@ -597,6 +604,11 @@ Returns a faction datum by its name (case insensitive!) pixel_y = -64 specialist_research_type = TECHWEB_POINT_TYPE_WORMHOLE +#define OVERMAP_SINGULARITY_PROX_GRAVITY 2 +#define OVERMAP_SINGULARITY_REDSHIFT_GRAV 3.5 +#define OVERMAP_SINGULARITY_DANGER_GRAV 5 +#define OVERMAP_SINGULARITY_DEATH_GRAV 40 + /obj/effect/overmap_anomaly/singularity name = "Black hole" desc = "A peek into the void between worlds. These stellar demons consume everything in their path. Including you. Scanning this singularity could lead to groundbreaking discoveries in the field of quantum physics!" @@ -605,12 +617,22 @@ Returns a faction datum by its name (case insensitive!) research_points = 20000 //These things are pretty damn valuable, for their risk of course. pixel_x = -64 pixel_y = -64 + ///Overmap objects currently being in range of the black hole var/list/affecting = list() + ///Assoc list that tracks which grav we already made the ship suffer + var/list/grav_tracker = list() + ///Previous colors of overmaps before being discolored, to preserve fighters var/list/cached_colours = list() - var/event_horizon_range = 15 //Point of no return. Getting this close will require an emergency FTL jump or shuttle call. + ///Range closer than which things get a lot more dangerous. + var/event_horizon_range = 15 + ///Range closer than which starts discoloring everything into red var/redshift_range = 30 - var/influence_range = 100 - var/base_pull_strength = 0.10 + ///Total range of the black hole influence + var/influence_range = 90 //Slightly less since it loops now. + ///Gravity pull when being close + var/inner_pull_strength = 0.2 //Somewhat more since the vectors get correctly calced now. + ///Gravity pull while far away + var/outer_pull_strength = 0.1 /obj/effect/overmap_anomaly/singularity/Initialize(mapload) . = ..() @@ -625,45 +647,84 @@ Returns a faction datum by its name (case insensitive!) for(var/obj/structure/overmap/OM as() in GLOB.overmap_objects) //Has to go through global overmaps due to anomalies not referencing their system - probably something to change one day. if(LAZYFIND(affecting, OM)) continue - if(get_dist(src, OM) <= influence_range && OM.z == z) + if(OM.z != z) + continue + if(overmap_dist(src, OM) <= influence_range) affecting += OM + grav_tracker[OM] = 0 cached_colours[OM] = OM.color //So that say, a yellow fighter doesnt get its paint cleared by redshifting OM.relay(S='nsv13/sound/effects/ship/falling.ogg', message="You feel weighed down.", loop=TRUE, channel=CHANNEL_HEARTBEAT) + ADD_TRAIT(OM, TRAIT_NODAMPENERS, TRAIT_SOURCE_OVERMAP_BLACKHOLE) + OM.disable_dampeners() + RegisterSignal(OM, COMSIG_PARENT_QDELETING, PROC_REF(handle_affecting_del)) for(var/obj/structure/overmap/OM as() in affecting) - if(get_dist(src, OM) > influence_range || !z || OM.z != z) + if(overmap_dist(src, OM) > influence_range || !z || OM.z != z) stop_affecting(OM) continue - var/incidence = get_dir(OM, src) var/dist = get_dist(src, OM) + var/grav_level = OVERMAP_SINGULARITY_PROX_GRAVITY if(dist <= redshift_range) var/redshift ="#[num2hex(130-dist,2)][num2hex(0,2)][num2hex(0,2)]" OM.color = redshift for(var/mob/M in OM.mobs_in_ship) M?.client?.color = redshift + grav_level = OVERMAP_SINGULARITY_REDSHIFT_GRAV + if(dist < event_horizon_range) //This var name kind of lies since the event horizon is actually at dist 2. I guess this is just the "it gets serious" distance. + grav_level = OVERMAP_SINGULARITY_DANGER_GRAV + else + if(grav_tracker[OM] >= OVERMAP_SINGULARITY_REDSHIFT_GRAV) + OM.color = cached_colours[OM] //Reset color, do not reset cache since we are still in proximity. + for(var/mob/M in OM.mobs_in_ship) + M?.client?.color = null if(dist <= 2) - affecting -= OM OM.current_system?.remove_ship(OM) + for(var/area/crushed as() in OM.linked_areas) + if(istype(crushed, /area/space)) + continue + crushed.has_gravity = OVERMAP_SINGULARITY_DEATH_GRAV //You are dead. qdel(OM) + continue + if(grav_tracker[OM] != grav_level) + for(var/area/crushed as() in OM.linked_areas) + if(istype(crushed, /area/space)) + continue + crushed.has_gravity = grav_level + grav_tracker[OM] = grav_level dist = (dist > 0) ? dist : 1 - var/pull_strength = (dist > event_horizon_range) ? 0.005 : base_pull_strength - var/succ_impulse = !OM.brakes ? pull_strength/dist*dist : (OM.forward_maxthrust / 10) + (pull_strength/dist*dist) //STOP RESISTING THE SUCC - if(incidence & NORTH) - OM.velocity.e += succ_impulse - if(incidence & SOUTH) - OM.velocity.e -= succ_impulse - if(incidence & EAST) - OM.velocity.a += succ_impulse - if(incidence & WEST) - OM.velocity.a -= succ_impulse + var/pull_strength = (dist > event_horizon_range) ? outer_pull_strength : inner_pull_strength + var/succ_impulse = !OM.brakes ? pull_strength/dist*dist : (OM.forward_maxthrust / 10) + (pull_strength/dist*dist) //STOP RESISTING THE SUCC - is this meant to be inverse square? Missing a () in that case.. probably more 'fun' this way though since very low velocities get zerod - Delta. + var/relative_angle = overmap_angle(OM, src) % 360 + var/x_succ = (succ_impulse * sin(relative_angle)) //I LOVE circle math I LOVE pi. (these two lines get the x and y component of the gravity vector) + var/y_succ = (succ_impulse * cos(relative_angle)) + OM.velocity.a += x_succ + OM.velocity.e += y_succ /obj/effect/overmap_anomaly/singularity/proc/stop_affecting(obj/structure/overmap/OM = null) if(OM) affecting -= OM + REMOVE_TRAIT(OM, TRAIT_NODAMPENERS, TRAIT_SOURCE_OVERMAP_BLACKHOLE) OM.stop_relay(CHANNEL_HEARTBEAT) OM.color = cached_colours[OM] cached_colours[OM] = null for(var/mob/M in OM.mobs_in_ship) M?.client?.color = null + for(var/area/crushed as() in OM.linked_areas) + if(istype(crushed, /area/space)) + continue + crushed.has_gravity = initial(crushed.has_gravity) + grav_tracker -= OM + UnregisterSignal(OM, COMSIG_PARENT_QDELETING) + +/obj/effect/overmap_anomaly/singularity/proc/handle_affecting_del(obj/structure/overmap/deleting) + affecting -= deleting + grav_tracker -= deleting + cached_colours[deleting] = null + UnregisterSignal(deleting, COMSIG_PARENT_QDELETING) + +#undef OVERMAP_SINGULARITY_PROX_GRAVITY +#undef OVERMAP_SINGULARITY_REDSHIFT_GRAV +#undef OVERMAP_SINGULARITY_DANGER_GRAV +#undef OVERMAP_SINGULARITY_DEATH_GRAV /obj/effect/overmap_anomaly/wormhole/Initialize(mapload) . = ..() @@ -742,7 +803,7 @@ Returns a faction datum by its name (case insensitive!) anomaly_type = /obj/effect/overmap_anomaly/singularity parallax_property = "pitchblack" if("blacksite") //this a special one! - adjacency_list += "Outpost 45" //you're going to risa, damnit. + adjacency_list += SSstar_system.return_system.name //you're going to risa, damnit. SSstar_system.spawn_anomaly(/obj/effect/overmap_anomaly/wormhole, src, center=TRUE) if(alignment == "syndicate") spawn_enemies() //Syndicate systems are even more dangerous, and come pre-loaded with some Syndie ships. @@ -1593,4 +1654,3 @@ Welcome to the endgame. This sector is the hardest you'll encounter in game and fleet_type = /datum/fleet/border adjacency_list = list("Rubicon", "Aeterna Victrix") -#define ALL_STARMAP_SECTORS 1,2,3 //KEEP THIS UPDATED. diff --git a/nsv13/code/datums/components/surgery_initiator.dm b/nsv13/code/datums/components/surgery_initiator.dm new file mode 100644 index 00000000000..b32ebf1a827 --- /dev/null +++ b/nsv13/code/datums/components/surgery_initiator.dm @@ -0,0 +1,332 @@ +/// Allows an item to be used to initiate surgeries. +/datum/component/surgery_initiator + /// The currently selected target that the user is proposing a surgery on + var/datum/weakref/surgery_target_ref + + /// The last user, as a weakref + var/datum/weakref/last_user_ref + +/datum/component/surgery_initiator/Initialize() + . = ..() + if(!isitem(parent)) + return COMPONENT_INCOMPATIBLE + +/datum/component/surgery_initiator/Destroy(force, silent) + last_user_ref = null + surgery_target_ref = null + + return ..() + +/datum/component/surgery_initiator/RegisterWithParent() + RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/initiate_surgery_moment) + +/datum/component/surgery_initiator/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_ITEM_ATTACK) + unregister_signals() + +/datum/component/surgery_initiator/proc/unregister_signals() + var/mob/living/last_user = last_user_ref?.resolve() + if (!isnull(last_user_ref)) + UnregisterSignal(last_user, COMSIG_MOB_SELECTED_ZONE_SET) + + var/mob/living/surgery_target = surgery_target_ref?.resolve() + if (!isnull(surgery_target_ref)) + UnregisterSignal(surgery_target, COMSIG_MOB_SURGERY_STARTED) + +/// Does the surgery initiation. +/datum/component/surgery_initiator/proc/initiate_surgery_moment(datum/source, atom/target, mob/user) + SIGNAL_HANDLER + if(!isliving(target)) + return + INVOKE_ASYNC(src, PROC_REF(do_initiate_surgery_moment), target, user) + return COMPONENT_CANCEL_ATTACK_CHAIN + +/datum/component/surgery_initiator/proc/do_initiate_surgery_moment(mob/living/target, mob/user) + var/datum/surgery/current_surgery + + for(var/i_one in target.surgeries) + var/datum/surgery/surgeryloop = i_one + if(surgeryloop.location == user.zone_selected) + current_surgery = surgeryloop + break + + if (!isnull(current_surgery) && !current_surgery.step_in_progress) + attempt_cancel_surgery(current_surgery, target, user) + return + + var/list/available_surgeries = get_available_surgeries(user, target) + + if(!length(available_surgeries)) + if (!(target.mobility_flags & MOBILITY_STAND)) + target.balloon_alert(user, "no surgeries available!") + else + target.balloon_alert(user, "make them lie down!") + + return + + unregister_signals() + + last_user_ref = WEAKREF(user) + surgery_target_ref = WEAKREF(target) + + RegisterSignal(user, COMSIG_MOB_SELECTED_ZONE_SET, PROC_REF(on_set_selected_zone)) + RegisterSignal(target, COMSIG_MOB_SURGERY_STARTED, PROC_REF(on_mob_surgery_started)) + + ui_interact(user) + +/datum/component/surgery_initiator/proc/get_available_surgeries(mob/user, mob/living/target) + var/list/available_surgeries = list() + + var/mob/living/carbon/carbon_target + var/obj/item/bodypart/affecting + if (iscarbon(target)) + carbon_target = target + affecting = carbon_target.get_bodypart(check_zone(user.zone_selected)) + + for(var/datum/surgery/surgery as anything in GLOB.surgeries_list) + if(!surgery.possible_locs.Find(user.zone_selected)) + continue + if(affecting) + if(!surgery.requires_bodypart) + continue + if(surgery.requires_bodypart_type && !(affecting.bodytype & surgery.requires_bodypart_type)) + continue + if(surgery.requires_real_bodypart && affecting.is_pseudopart) + continue + else if(carbon_target && surgery.requires_bodypart) //mob with no limb in surgery zone when we need a limb + continue + if(surgery.lying_required && (carbon_target.mobility_flags & MOBILITY_STAND)) + continue + if(!surgery.can_start(user, target)) + continue + for(var/path in surgery.target_mobtypes) + if(istype(target, path)) + available_surgeries += surgery + break + + return available_surgeries + +/// Does the surgery de-initiation. +/datum/component/surgery_initiator/proc/attempt_cancel_surgery(datum/surgery/the_surgery, mob/living/patient, mob/user) + var/selected_zone = user.zone_selected + + if(the_surgery.status == 1) + patient.surgeries -= the_surgery + user.visible_message( + "[user] removes [parent] from [patient]'s [parse_zone(selected_zone)].", + "You remove [parent] from [patient]'s [parse_zone(selected_zone)].", + ) + + patient.balloon_alert(user, "stopped work on [parse_zone(selected_zone)]") + + qdel(the_surgery) + return + + if(!the_surgery.can_cancel) + return + + var/required_tool_type = TOOL_CAUTERY + var/obj/item/close_tool = user.get_inactive_held_item() + var/is_robotic = the_surgery.requires_bodypart_type == BODYTYPE_ROBOTIC + + if(is_robotic) + required_tool_type = TOOL_SCREWDRIVER + + if(iscyborg(user)) + close_tool = locate(/obj/item/cautery) in user.held_items + if(!close_tool) + patient.balloon_alert(user, "need a cautery in an inactive slot to stop the surgery!") + return + else if(!close_tool || close_tool.tool_behaviour != required_tool_type) + patient.balloon_alert(user, "need a [is_robotic ? "screwdriver": "cautery"] in your inactive hand to stop the surgery!") + return + + patient.surgeries -= the_surgery + + user.visible_message( + "[user] closes [patient]'s [parse_zone(selected_zone)] with [close_tool] and removes [parent].", + "You close [patient]'s [parse_zone(selected_zone)] with [close_tool] and remove [parent].", + ) + + patient.balloon_alert(user, "closed up [parse_zone(selected_zone)]") + + qdel(the_surgery) + +/datum/component/surgery_initiator/proc/on_mob_surgery_started(mob/source, datum/surgery/surgery, surgery_location) + SIGNAL_HANDLER + + var/mob/living/last_user = last_user_ref.resolve() + + if (surgery_location != last_user.zone_selected) + return + + if (!isnull(last_user)) + source.balloon_alert(last_user, "someone else started a surgery!") + + ui_close() + +/datum/component/surgery_initiator/proc/on_set_selected_zone(mob/source, new_zone) + ui_interact(source) + +/datum/component/surgery_initiator/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if (!ui) + ui = new(user, src, "SurgeryInitiator") + ui.open() + +/datum/component/surgery_initiator/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if (.) + return . + + var/mob/user = usr + var/mob/living/surgery_target = surgery_target_ref.resolve() + + if (isnull(surgery_target)) + return TRUE + + switch (action) + if ("change_zone") + var/zone = params["new_zone"] + if (!(zone in list( + BODY_ZONE_HEAD, + BODY_ZONE_CHEST, + BODY_ZONE_L_ARM, + BODY_ZONE_R_ARM, + BODY_ZONE_L_LEG, + BODY_ZONE_R_LEG, + BODY_ZONE_PRECISE_EYES, + BODY_ZONE_PRECISE_MOUTH, + BODY_ZONE_PRECISE_GROIN, + ))) + return TRUE + + var/atom/movable/screen/zone_sel/zone_selector = user.hud_used?.zone_select + zone_selector?.set_selected_zone(zone, user) + + return TRUE + if ("start_surgery") + for (var/datum/surgery/surgery as anything in get_available_surgeries(user, surgery_target)) + if (surgery.name == params["surgery_name"]) + try_choose_surgery(user, surgery_target, surgery) + return TRUE + +/datum/component/surgery_initiator/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/simple/body_zones), + ) + +/datum/component/surgery_initiator/ui_data(mob/user) + var/mob/living/surgery_target = surgery_target_ref.resolve() + + var/list/surgeries = list() + if (!isnull(surgery_target)) + for (var/datum/surgery/surgery as anything in get_available_surgeries(user, surgery_target)) + var/list/surgery_info = list( + "name" = surgery.name, + ) + + if (surgery_needs_exposure(surgery, surgery_target)) + surgery_info["blocked"] = TRUE + + surgeries += list(surgery_info) + + return list( + "selected_zone" = user.zone_selected, + "target_name" = surgery_target?.name, + "surgeries" = surgeries, + ) + +/datum/component/surgery_initiator/ui_close(mob/user) + unregister_signals() + surgery_target_ref = null + + return ..() + +/datum/component/surgery_initiator/ui_status(mob/user, datum/ui_state/state) + var/obj/item/item_parent = parent + if (user != item_parent.loc) + return UI_CLOSE + + var/mob/living/surgery_target = surgery_target_ref?.resolve() + if (isnull(surgery_target)) + return UI_CLOSE + + if (!can_start_surgery(user, surgery_target)) + return UI_CLOSE + + return ..() + +/datum/component/surgery_initiator/proc/can_start_surgery(mob/user, mob/living/target) + if (!user.Adjacent(target)) + return FALSE + + // The item was moved somewhere else + if (!(parent in user)) + return FALSE + + // While we were choosing, another surgery was started at the same location + for (var/datum/surgery/surgery in target.surgeries) + if (surgery.location == user.zone_selected) + return FALSE + + return TRUE + +/datum/component/surgery_initiator/proc/try_choose_surgery(mob/user, mob/living/target, datum/surgery/surgery) + if (!can_start_surgery(user, target)) + // This could have a more detailed message, but the UI closes when this is true anyway, so + // if it ever comes up, it'll be because of lag. + target.balloon_alert(user, "can't start the surgery!") + return + + var/obj/item/bodypart/affecting_limb + + var/selected_zone = user.zone_selected + + if (iscarbon(target)) + var/mob/living/carbon/carbon_target = target + affecting_limb = carbon_target.get_bodypart(check_zone(selected_zone)) + + if (surgery.requires_bodypart == isnull(affecting_limb)) + if (surgery.requires_bodypart) + target.balloon_alert(user, "patient has no [parse_zone(selected_zone)]!") + else + target.balloon_alert(user, "patient has \a [parse_zone(selected_zone)]!") + + return + + if (!isnull(affecting_limb) && surgery.requires_bodypart_type && !(affecting_limb.bodytype & surgery.requires_bodypart_type)) + target.balloon_alert(user, "not the right type of limb!") + return + + if (surgery.lying_required && (target.mobility_flags & MOBILITY_STAND)) + target.balloon_alert(user, "patient is not lying down!") + return + + if (!surgery.can_start(user, target)) + target.balloon_alert(user, "can't start the surgery!") + return + + if (surgery_needs_exposure(surgery, target)) + target.balloon_alert(user, "expose [target.p_their()] [parse_zone(selected_zone)]!") + return + + ui_close() + + var/datum/surgery/procedure = new surgery.type(target, selected_zone, affecting_limb) + + target.balloon_alert(user, "starting \"[lowertext(procedure.name)]\"") + + user.visible_message( + "[user] drapes [parent] over [target]'s [parse_zone(selected_zone)] to prepare for surgery.", + "You drape [parent] over [target]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].", + ) + + log_combat(user, target, "operated on", null, "(OPERATION TYPE: [procedure.name]) (TARGET AREA: [selected_zone])") + +/datum/component/surgery_initiator/proc/surgery_needs_exposure(datum/surgery/surgery, mob/living/target) + var/mob/living/user = last_user_ref?.resolve() + if (isnull(user)) + return FALSE + + return !surgery.ignore_clothes && !get_location_accessible(target, user.zone_selected) diff --git a/nsv13/code/datums/holocall.dm b/nsv13/code/datums/holocall.dm index 9f7b712eab5..8b6d7711b09 100644 --- a/nsv13/code/datums/holocall.dm +++ b/nsv13/code/datums/holocall.dm @@ -26,7 +26,7 @@ DELAY 20 PRESET /datum/preset_holoimage/corgi NAME Burst Data - LANGUAGE /datum/language/eal + LANGUAGE /datum/language/machine SAY START NTINTEL METADATA SAY RECORDED 12-17-0000 SAY SECURITY CLASS UNCLASSIFIED @@ -320,7 +320,7 @@ DELAY 50 SAY If you need to shut down the reactor, lower the nucleium injection rate slowly. You can cycle coolant in an emergency for a quick cooling boost. DELAY 50 - SAY The reaction can be terminated when the reactor core is under 100 Celsius. Ensure cooling is adequate to achieve this. + SAY The reaction can be terminated when the reactor core is under 200 Celsius. Ensure cooling is adequate to achieve this. DELAY 50 SAY Finally. If your minimum input power ever starts to converge on the maximum, you are heading towards an emission. Rectify this immediately, or shut down the reactor safely. DELAY 50 @@ -328,7 +328,7 @@ DELAY 50 SAY Do your duty. This tape should be destroyed after use. Shield technology does not exist. Glory to Nanotrasen. NAME Burst Data - LANGUAGE /datum/language/eal + LANGUAGE /datum/language/machine DELAY 20 SAY START METADATA SAY RECORDED 5-25-0000 diff --git a/nsv13/code/datums/mood_events/nsv_events.dm b/nsv13/code/datums/mood_events/nsv_events.dm index 6e802afde16..d684925ae08 100644 --- a/nsv13/code/datums/mood_events/nsv_events.dm +++ b/nsv13/code/datums/mood_events/nsv_events.dm @@ -43,6 +43,11 @@ mood_change = 10 timeout = 10 MINUTES +/datum/mood_event/drink_navy_coffee/add_effects(list/faction) + if("Syndicate" in faction) + description = "THAT SHIT TASTED FUCKING DELICIOUS LET'S GO FUCK SOME NANOTRASEN SHIPS UP, NAVY FOR LIFE WOOOOOO!!\n" + + /datum/mood_event/cheers description = "Cheers! ¡Salud! Kanpai! Prost! Skål! Santé! Sláinte! Saúde!\n" mood_change = 3 diff --git a/nsv13/code/datums/shuttles.dm b/nsv13/code/datums/shuttles.dm index fa21c03cd71..e8e1fc6b175 100644 --- a/nsv13/code/datums/shuttles.dm +++ b/nsv13/code/datums/shuttles.dm @@ -34,10 +34,6 @@ suffix = "aetherwhisp" name = "arrival shuttle (Aetherwhisp)" -/datum/map_template/shuttle/arrival/atlas - suffix = "atlas" - name = "arrival shuttle (Atlas)" - /datum/map_template/shuttle/arrival/gladius suffix = "gladius" name = "arrival shuttle (Gladius)" diff --git a/nsv13/code/datums/starsystem_manager.dm b/nsv13/code/datums/starsystem_manager.dm index 4931393b614..77692b51d3d 100644 --- a/nsv13/code/datums/starsystem_manager.dm +++ b/nsv13/code/datums/starsystem_manager.dm @@ -49,10 +49,12 @@ sys_inf["visited"] = 0 sys_inf["hidden"] = (SS.sector != current_sector) var/label = "" + if(SS.hidden) + label += " HIDDEN" if(SS.is_hypergate) label += " HYPERGATE" if(SS.is_capital && !label) - label = "CAPITAL" + label = " CAPITAL" if(SS.trader && SS.sector != 3) //Use shortnames in brazil for readability label = " [SS.trader.name]" if(SS.trader && SS.sector == 3) //Use shortnames in brazil for readability @@ -220,6 +222,11 @@ usr.client.debug_variables(target) if(command == "Delete") usr.client.cmd_admin_delete(target) + if("hideSystem") + var/datum/star_system/target = locate(params["sys_id"]) + if(!istype(target)) + return + target.hidden = !target.hidden if("systemVV") var/datum/star_system/target = locate(params["sys_id"]) if(!istype(target)) diff --git a/nsv13/code/datums/traits/negative.dm b/nsv13/code/datums/traits/negative.dm index b7280103564..de7c4c37e93 100644 --- a/nsv13/code/datums/traits/negative.dm +++ b/nsv13/code/datums/traits/negative.dm @@ -6,3 +6,25 @@ gain_text = "The thought of FTL travel makes you uneasy" lose_text = "The thought of FTL travel doesn't seem so bad anymore." medical_record_text = "Patient is vulnerable to bluespace currents and often gets sick during FTL travel." + +/datum/quirk/junkie/coffee_addict + name = "Coffee Addict" + desc = "You have a strong addiction to caffeine. Probably not great in the long term." + value = -1 + gain_text = "You feel like you could use a cup of coffee." + lose_text = "You feel like you don't need that much caffeine anymore." + medical_record_text = "Patient is addicted to caffeine." + reagent_type = /datum/reagent/consumable/coffee + drug_container_type = /obj/item/reagent_containers/food/drinks/coffee + process = TRUE + +/datum/quirk/junkie/naval_coffee_Addict + name = "Naval Coffee Addict" + desc = "You have a strong addiction to the paint stripper liquid that the Navy calls coffee. Probably not great in the long term for your liver, or heart." + value = -1 + gain_text = "You feel your eyelids growing heavier, you really need a cup of navy coffee to get through this patrol." + lose_text = "The stress of the patrol has lessened, you don't feel like you need that much caffeine anymore." + medical_record_text = "Patient is heavily addicted to the dangerous liquid the navy calls coffee." + reagent_type = /datum/reagent/consumable/navy_coffee + drug_container_type = /obj/item/reagent_containers/food/drinks/coffee/navy_coffee + process = TRUE diff --git a/nsv13/code/datums/weapon_types.dm b/nsv13/code/datums/weapon_types.dm index 8f964f8d724..9ee7c1a34fd 100644 --- a/nsv13/code/datums/weapon_types.dm +++ b/nsv13/code/datums/weapon_types.dm @@ -142,6 +142,7 @@ miss_chance = 33 max_miss_distance = 6 ai_fire_delay = 0.5 SECONDS + allowed_roles = OVERMAP_USER_ROLE_PILOT /datum/ship_weapon/phaser // Big blue laser name = "Phaser Banks" diff --git a/nsv13/code/game/gamemodes/bloodling.dm b/nsv13/code/game/gamemodes/bloodling.dm index 87706ff243f..a075a456632 100644 --- a/nsv13/code/game/gamemodes/bloodling.dm +++ b/nsv13/code/game/gamemodes/bloodling.dm @@ -2,7 +2,8 @@ name = "bloodling" config_tag = "bloodling" report_type = "bloodling" - antag_flag = ROLE_BLOODLING + role_preference = /datum/role_preference/antagonist/bloodling + antag_datum = /datum/antagonist/bloodling false_report_weight = 10 restricted_jobs = list("AI", "Cyborg") protected_jobs = list(JOB_NAME_SECURITYOFFICER, JOB_NAME_WARDEN, JOB_NAME_HEADOFSECURITY, JOB_NAME_CAPTAIN, JOB_NAME_BRIGPHYSICIAN) @@ -108,19 +109,21 @@ Helper proc to spawn the lil' blood alien creature in a vent! Adapted from alien if(master) //There's already a master return if(bloodlings.len < bloodling_amount) - if(ROLE_BLOODLING in character.client.prefs.be_special) - if(!is_banned_from(character.ckey, list(ROLE_BLOODLING, ROLE_SYNDICATE)) && !QDELETED(character)) - if(age_check(character.client)) - if(!(character.job in restricted_jobs)) - if(!master) //Make him the master - master = spawn_bloodling() - if(!master) - return FALSE //yeah okay your shit map doesn't support bloodling RIP - master.key = character.client.ckey - bloodlings += master.mind - qdel(character) //Bye! - //Otherwise, make him a new thrall... - character.mind.add_antag_datum(/datum/antagonist/changeling/bloodling_thrall) + if(!QDELETED(character) && character.client?.should_include_for_role( + banning_key = initial(antag_datum.banning_key), + role_preference_key = role_preference, + req_hours = initial(antag_datum.required_living_playtime), + )) + if(!(character.job in restricted_jobs)) if(!(character.job in restricted_jobs)) + if(!master) //Make him the master + master = spawn_bloodling() + if(!master) + return FALSE //yeah okay your shit map doesn't support bloodling RIP + master.key = character.client.ckey + bloodlings += master.mind + qdel(character) //Bye! + //Otherwise, make him a new thrall... + character.mind.add_antag_datum(/datum/antagonist/changeling/bloodling_thrall) /datum/game_mode/bloodling/generate_report() diff --git a/nsv13/code/game/gamemodes/overmap/armada.dm b/nsv13/code/game/gamemodes/overmap/armada.dm index d273cb4d1e3..b1547949700 100644 --- a/nsv13/code/game/gamemodes/overmap/armada.dm +++ b/nsv13/code/game/gamemodes/overmap/armada.dm @@ -30,7 +30,7 @@ if(S.alignment == "nanotrasen") candidate += S.name - candidate -= "Outpost 45" + candidate -= SSmapping.config.return_system selected_system = pick(candidate) brief = "Fleet Intelligence indicates that the Syndicate are preparing an invasion fleet to capture [selected_system], rally defences to repel the Armada by freeing up fleet assets and prepare to defend the system." diff --git a/nsv13/code/game/gamemodes/overmap/objectives/board_ship.dm b/nsv13/code/game/gamemodes/overmap/objectives/board_ship.dm index 849ff71b614..ff14463b9b4 100644 --- a/nsv13/code/game/gamemodes/overmap/objectives/board_ship.dm +++ b/nsv13/code/game/gamemodes/overmap/objectives/board_ship.dm @@ -11,6 +11,7 @@ var/ship_type = pick(GLOB.boardable_ship_types) target_ship = instance_overmap(ship_type) target_ship.block_deletion = TRUE + target_ship.essential = TRUE RegisterSignal(target_ship, COMSIG_SHIP_BOARDED, PROC_REF(check_completion), target_ship) RegisterSignal(target_ship, COMSIG_SHIP_RELEASE_BOARDING, PROC_REF(release_boarding), target_ship) target_ship.ai_load_interior(SSstar_system.find_main_overmap()) @@ -60,6 +61,7 @@ if (target_ship.faction == SSovermap_mode.mode.starting_faction) status = 1 target_ship.block_deletion = FALSE + target_ship.essential = FALSE UnregisterSignal(target_ship, COMSIG_SHIP_BOARDED) UnregisterSignal(target_ship, COMSIG_SHIP_RELEASE_BOARDING) diff --git a/nsv13/code/game/gamemodes/overmap/objectives/perform_jumps.dm b/nsv13/code/game/gamemodes/overmap/objectives/perform_jumps.dm index 39d2fd4f917..2b78dcbe56a 100644 --- a/nsv13/code/game/gamemodes/overmap/objectives/perform_jumps.dm +++ b/nsv13/code/game/gamemodes/overmap/objectives/perform_jumps.dm @@ -5,8 +5,8 @@ tally = -1 // Don't count staging target = 1 - var/minimum_jumps = 8 - var/maximum_jumps = 13 + var/minimum_jumps = 6 + var/maximum_jumps = 10 /datum/overmap_objective/perform_jumps/instance() .=..() diff --git a/nsv13/code/game/gamemodes/overmap/objectives/rubicon.dm b/nsv13/code/game/gamemodes/overmap/objectives/rubicon.dm index d82752e25b2..621e1067838 100644 --- a/nsv13/code/game/gamemodes/overmap/objectives/rubicon.dm +++ b/nsv13/code/game/gamemodes/overmap/objectives/rubicon.dm @@ -8,11 +8,25 @@ var/system_name var/datum/star_system/target_system +/datum/overmap_objective/clear_system/New(datum/star_system/passed_input) + .=..() + if(passed_input) + system_name = passed_input.name + if(!system_name) + for(var/datum/star_system/S in SSstar_system.neutral_zone_systems) + if(S.hidden) + continue + if(length(S.enemies_in_system)) + system_name = S.name + break + continue + /datum/overmap_objective/clear_system/instance() .=..() desc = "Defeat all enemies in the [system_name] system" brief = desc target_system = SSstar_system.system_by_id(system_name) + target_system.hidden = FALSE RegisterSignal(SSstar_system.find_main_overmap(), COMSIG_SHIP_KILLED_FLEET, PROC_REF(check_completion)) /datum/overmap_objective/clear_system/check_completion() @@ -25,6 +39,9 @@ /datum/overmap_objective/clear_system/rubicon system_name = "Rubicon" extension_supported = TRUE + required_players = 10 /datum/overmap_objective/clear_system/dolos system_name = "Dolos Remnants" + extension_supported = TRUE //Only if Rubicon is not available + required_players = 10 diff --git a/nsv13/code/game/gamemodes/overmap/objectives/scan.dm b/nsv13/code/game/gamemodes/overmap/objectives/scan.dm new file mode 100644 index 00000000000..564ed396aa7 --- /dev/null +++ b/nsv13/code/game/gamemodes/overmap/objectives/scan.dm @@ -0,0 +1,44 @@ +/datum/overmap_objective/scan + name = "Scan anomalies" + desc = "Scan a target anomaly_type" + brief = "Locate and scan target anomaly_type" + binary = FALSE + var/anomaly_type + var/anomaly_name = "anomaly" + var/list/anomaly_whitelist = list( + /obj/effect/overmap_anomaly/safe/sun, + /obj/effect/overmap_anomaly/safe/sun/red_giant, + /obj/effect/overmap_anomaly/wormhole, + /obj/effect/overmap_anomaly/singularity) + var/minimum_anomalies = 1 + var/maximum_anomalies = 5 + +/datum/overmap_objective/scan/New() + . = ..() + var/list/valid_anomalies = anomaly_whitelist + target = rand(minimum_anomalies, maximum_anomalies) + while(length(valid_anomalies) && !anomaly_type) //doing this to check if there are enough of this type + anomaly_type = pick(valid_anomalies) + anomaly_name = get_atom_by_type(GLOB.overmap_anomalies, anomaly_type)?.name + if(!anomaly_name || (count_by_type(GLOB.overmap_anomalies, anomaly_type) < target)) + valid_anomalies -= anomaly_type + anomaly_type = null + anomaly_name = "ERROR" + if(!anomaly_type) + message_admins("Overmap gamemode failed to locate enough anomalies! Setting to auto-complete.") + status = 1 + +/datum/overmap_objective/scan/instance() + . = ..() + desc = "Scan [target] [anomaly_name]\s" + brief = "Locate and scan [target] [anomaly_name]\s" + RegisterSignal(SSstar_system.find_main_overmap(), COMSIG_ANOMALY_SCANNED, PROC_REF(register_scan)) + +/datum/overmap_objective/scan/proc/register_scan() + tally = count_by_type(SSstar_system.find_main_overmap().scanned, anomaly_type) + SSovermap_mode.update_reminder(objective=TRUE) + check_completion() + +/datum/overmap_objective/scan/check_completion() + if(tally >= target) + status = 1 diff --git a/nsv13/code/game/gamemodes/overmap/shakedown.dm b/nsv13/code/game/gamemodes/overmap/shakedown.dm index 0ce4263b069..90e698f98e5 100644 --- a/nsv13/code/game/gamemodes/overmap/shakedown.dm +++ b/nsv13/code/game/gamemodes/overmap/shakedown.dm @@ -22,5 +22,6 @@ random_objectives = list( /datum/overmap_objective/perform_jumps, /datum/overmap_objective/destroy_fleets, - /datum/overmap_objective/apnw_efficiency + /datum/overmap_objective/apnw_efficiency, + /datum/overmap_objective/scan ) diff --git a/nsv13/code/game/gamemodes/pvp/pvp.dm b/nsv13/code/game/gamemodes/pvp/pvp.dm index e2e82902605..703a8eb2491 100644 --- a/nsv13/code/game/gamemodes/pvp/pvp.dm +++ b/nsv13/code/game/gamemodes/pvp/pvp.dm @@ -16,8 +16,8 @@ GLOBAL_LIST_EMPTY(syndi_crew_leader_spawns) required_players = 24 //40 // 40 to make 20 v 20 required_enemies = 12 //20 recommended_enemies = 15 - antag_flag = ROLE_SYNDI_CREW - enemy_minimum_age = 0 + role_preference = /datum/role_preference/antagonist/pvp + antag_datum = /datum/antagonist/nukeop/syndi_crew announce_span = "danger" announce_text = "The Syndicate are planning an all out assault!\n\ diff --git a/nsv13/code/game/gamemodes/pvp/roles.dm b/nsv13/code/game/gamemodes/pvp/roles.dm index b29fb404a3a..98dfa96d77f 100644 --- a/nsv13/code/game/gamemodes/pvp/roles.dm +++ b/nsv13/code/game/gamemodes/pvp/roles.dm @@ -53,14 +53,14 @@ /datum/antagonist/nukeop/syndi_crew name = "Syndicate crew" nukeop_outfit = /datum/outfit/syndicate/no_crystals/syndi_crew - job_rank = ROLE_SYNDI_CREW + banning_key = ROLE_SYNDI_CREW tips = "galactic_conquest" give_objectives = FALSE //Their objective is to win the game /datum/antagonist/nukeop/syndi_crew/greet() owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ops.ogg',100,0) to_chat(owner, "You are a crewman aboard a Syndicate vessel!") - to_chat(owner, "Ensure the destruction of [station_name()], no matter what. Eliminate Nanotrasen's presence in the Abassi ridge before they can establish a foothold. The fleet is counting on you!") + to_chat(owner, "Ensure the destruction of [station_name()], no matter what. Eliminate Nanotrasen's presence in the Abassi Ridge before they can establish a foothold. The fleet is counting on you!") owner.announce_objectives() @@ -230,7 +230,7 @@ Singleton to handle conquest roles. This exists to populate the roles list and n /datum/antagonist/nukeop/syndi_crew/strategist name = "Syndicate Strategist" nukeop_outfit = /datum/outfit/syndicate/no_crystals/syndi_crew/strategist - job_rank = ROLE_SYNDI_CREW + banning_key = ROLE_SYNDI_CREW /datum/outfit/syndicate/no_crystals/syndi_crew/strategist name = "Syndicate Strategist" @@ -383,7 +383,7 @@ Singleton to handle conquest roles. This exists to populate the roles list and n /datum/antagonist/nukeop/syndi_crew/clown name = "Syndicate Clown" nukeop_outfit = /datum/outfit/syndicate/clownop/no_crystals/jojo_reference - job_rank = ROLE_SYNDI_CREW + banning_key = ROLE_SYNDI_CREW /datum/antagonist/nukeop/syndi_crew/clown/give_alias() owner.current.fully_replace_character_name(owner.current.real_name, owner.current.client.prefs.active_character.custom_names["clown"]) diff --git a/nsv13/code/game/general_quarters/dropship.dm b/nsv13/code/game/general_quarters/dropship.dm index e149d5eb45c..d075c2e01f7 100644 --- a/nsv13/code/game/general_quarters/dropship.dm +++ b/nsv13/code/game/general_quarters/dropship.dm @@ -122,6 +122,10 @@ user.forceMove(T) mobs_in_ship -= user +/obj/structure/overmap/small_craft/transport/attack_robot(mob/user) + if(user.Adjacent(src)) + return attack_hand(user) + /obj/structure/overmap/small_craft/transport/attack_hand(mob/user) if(allowed(user)) if(do_after(user, 2 SECONDS, target=src)) diff --git a/nsv13/code/game/general_quarters/dropship_types.dm b/nsv13/code/game/general_quarters/dropship_types.dm index 80bf3107f12..322745c3c05 100644 --- a/nsv13/code/game/general_quarters/dropship_types.dm +++ b/nsv13/code/game/general_quarters/dropship_types.dm @@ -189,7 +189,7 @@ Credit to TGMC for the interior sprites for all these! /obj/structure/overmap/small_craft/transport/sabre/syndicate name = "\improper Syndicate Utility Vessel" desc = "A boarding craft for rapid troop deployment. It contains a full combat medical bay for establishing FOBs." - icon = 'nsv13/icons/overmap/syndicate/syn_raptor.dmi' + icon = 'nsv13/icons/overmap/syndicate/syn_sabre.dmi' req_one_access = list(ACCESS_SYNDICATE) faction = "syndicate" start_emagged = TRUE diff --git a/nsv13/code/game/machinery/computer/atmos_control.dm b/nsv13/code/game/machinery/computer/atmos_control.dm new file mode 100644 index 00000000000..223ec4566f1 --- /dev/null +++ b/nsv13/code/game/machinery/computer/atmos_control.dm @@ -0,0 +1,11 @@ +/obj/machinery/computer/atmos_control/tank/nucleium_tank //NSV added nucleium tank console + name = "Nucleium Supply Monitor" + input_tag = ATMOS_GAS_MONITOR_INPUT_NUCLEIUM + output_tag = ATMOS_GAS_MONITOR_OUTPUT_NUCLEIUM + sensors = list(ATMOS_GAS_MONITOR_SENSOR_NUCLEIUM = "Nucleium Tank") + circuit = /obj/item/circuitboard/computer/atmos_control/tank/nucleium_tank + +/obj/machinery/air_sensor/atmos/nucleium_tank //nucleium stuff + name = "nucleium tank gas sensor" + id_tag = ATMOS_GAS_MONITOR_SENSOR_NUCLEIUM + diff --git a/nsv13/code/game/machinery/computer/tactical.dm b/nsv13/code/game/machinery/computer/tactical.dm index ac932fd001f..29bf67ac906 100644 --- a/nsv13/code/game/machinery/computer/tactical.dm +++ b/nsv13/code/game/machinery/computer/tactical.dm @@ -5,123 +5,8 @@ icon_screen = "tactical" position_type = /datum/component/overmap_piloting/gunner circuit = /obj/item/circuitboard/computer/ship/tactical_computer -/* -/obj/machinery/computer/ship/tactical/Destroy() - linked?.tactical = null - return ..() + ui_type = "JSTacticalConsole" -/obj/machinery/computer/ship/tactical/ui_interact(mob/user, datum/tgui/ui) - if(isobserver(user)) - return - if(!has_overmap()) - var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) - to_chat(user, "A warning flashes across [src]'s screen: Unable to locate armament parameters, no registered ship stored in microprocessor.") - return - if((position & (OVERMAP_USER_ROLE_PILOT | OVERMAP_USER_ROLE_GUNNER)) && linked.ai_controlled) - var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) - to_chat(user, "A warning flashes across [src]'s screen: Automated flight protocols are still active. Unable to comply.") - return FALSE - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - if(linked.gunner && !linked.gunner.client) - linked.stop_piloting(linked.gunner) - if(!linked.gunner && isliving(user)) - playsound(src, 'nsv13/sound/effects/computer/startup.ogg', 75, 1) - linked.start_piloting(user, position) - to_chat(user, " TACTICAL CONTROL: \ - Mouse 1 will fire the selected weapon (if applicable).") - to_chat(user, "=Hotkeys=") - to_chat(user, " Use tab to activate hotkey mode, then:") - to_chat(user, " Use the Ctrl + Scroll Wheel to zoom in / out. \ - Press Space to cycle fire modes.") - ui = new(user, src, "TacticalConsole") - ui.open() - ui.set_autoupdate(TRUE) - -/obj/machinery/computer/ship/tactical/ui_act(action, params, datum/tgui/ui) - . = ..() - if(.) - return - if(!linked) - return - switch(action) - if("toggle_gun_camera") - if(linked.no_gun_cam) - return - if(linked.target_lock) - var/scan_range = linked.dradis ? linked.dradis.visual_range : SENSOR_RANGE_DEFAULT - if(overmap_dist(linked, linked.target_lock) > scan_range) - to_chat(linked.gunner, "Target out of visual acquisition range.") - return - linked.update_gunner_cam(linked.target_lock) - return - linked.update_gunner_cam() - if("lock_ship") - var/target_name = params["target"] - for(var/obj/structure/overmap/OM in linked.target_painted) // Locking - if(OM.name == target_name) - linked.select_target(OM) - break - if("dump_lock") // Clearing a target track - var/target_name = params["target"] - for(var/obj/structure/overmap/OM in linked.target_painted) - if(OM.name == target_name) - linked.dump_lock(OM) - break - -/obj/machinery/computer/ship/tactical/ui_data(mob/user) - if(!linked) - return - var/list/data = list() - data["flakrange"] = linked.get_flak_range(linked.last_target) - data["integrity"] = linked.obj_integrity - data["max_integrity"] = linked.max_integrity - data["quadrant_fs_armour_current"] = linked.armour_quadrants["forward_starboard"]["current_armour"] - data["quadrant_fs_armour_max"] = linked.armour_quadrants["forward_starboard"]["max_armour"] - data["quadrant_as_armour_current"] = linked.armour_quadrants["aft_starboard"]["current_armour"] - data["quadrant_as_armour_max"] = linked.armour_quadrants["aft_starboard"]["max_armour"] - data["quadrant_ap_armour_current"] = linked.armour_quadrants["aft_port"]["current_armour"] - data["quadrant_ap_armour_max"] = linked.armour_quadrants["aft_port"]["max_armour"] - data["quadrant_fp_armour_current"] = linked.armour_quadrants["forward_port"]["current_armour"] - data["quadrant_fp_armour_max"] = linked.armour_quadrants["forward_port"]["max_armour"] - data["weapons"] = list() - data["target_name"] = (linked.target_lock) ? linked.target_lock.name : "none" - data["no_gun_cam"] = linked.no_gun_cam - for(var/datum/ship_weapon/SW_type in linked.weapon_types) - var/ammo = 0 - var/max_ammo = 0 - var/thename = SW_type.name - for(var/obj/machinery/ship_weapon/SW in SW_type.weapons["all"]) - if(!SW) - continue - max_ammo += SW.get_max_ammo() - ammo += SW.get_ammo() - data["weapons"] += list(list("name" = thename, "ammo" = ammo, "maxammo" = max_ammo)) - data["ships"] = list() - data["painted_targets"] = list() - data["target_lock"] = linked.target_lock?.name - if(!linked?.current_system) - return data - for(var/obj/structure/overmap/OM in linked.target_painted) - if(OM.current_system != linked.current_system) - continue - data["painted_targets"] += list(list("name" = OM.name, "integrity" = OM.obj_integrity, "max_integrity" = OM.max_integrity, "faction" = OM.faction, \ - "quadrant_fs_armour_current" = OM.armour_quadrants["forward_starboard"]["current_armour"], \ - "quadrant_fs_armour_max" = OM.armour_quadrants["forward_starboard"]["max_armour"], \ - "quadrant_as_armour_current" = OM.armour_quadrants["aft_starboard"]["current_armour"], \ - "quadrant_as_armour_max" = OM.armour_quadrants["aft_starboard"]["max_armour"], \ - "quadrant_ap_armour_current" = OM.armour_quadrants["aft_port"]["current_armour"], \ - "quadrant_ap_armour_max" = OM.armour_quadrants["aft_port"]["max_armour"], \ - "quadrant_fp_armour_current" = OM.armour_quadrants["forward_port"]["current_armour"], \ - "quadrant_fp_armour_max" = OM.armour_quadrants["forward_port"]["max_armour"])) - return data - -/obj/machinery/computer/ship/tactical/set_position(obj/structure/overmap/OM) - OM.tactical = src - return -*/ //For use in ghost ships /obj/machinery/computer/ship/tactical/internal name = "integrated tactical console" @@ -157,6 +42,14 @@ data["flakrange"] = linked.get_flak_range(linked.last_target) data["integrity"] = linked.obj_integrity data["max_integrity"] = linked.max_integrity + if(istype(linked, /obj/structure/overmap/small_craft)) + var/obj/structure/overmap/small_craft/small_ship = linked + var/obj/item/fighter_component/armour_plating/A = small_ship.loadout.get_slot(HARDPOINT_SLOT_ARMOUR) + data["has_quadrant"] = FALSE + data["armour_integrity"] = (A) ? A.obj_integrity : 0 + data["max_armour_integrity"] = (A) ? A.max_integrity : 100 + else + data["has_quadrant"] = TRUE // I'm uncertain about whether or not we have ANY small crafts that have armor quadrants so I'm making it like this instead. data["quadrant_fs_armour_current"] = linked.armour_quadrants["forward_starboard"]["current_armour"] data["quadrant_fs_armour_max"] = linked.armour_quadrants["forward_starboard"]["max_armour"] data["quadrant_as_armour_current"] = linked.armour_quadrants["aft_starboard"]["current_armour"] diff --git a/nsv13/code/game/machinery/iff_console.dm b/nsv13/code/game/machinery/iff_console.dm index 9f3126b912e..4b68ddfbdbd 100644 --- a/nsv13/code/game/machinery/iff_console.dm +++ b/nsv13/code/game/machinery/iff_console.dm @@ -33,6 +33,12 @@ If someone hacks it, you can always rebuild it. /obj/machinery/computer/iff_console/LateInitialize() . = ..() var/obj/structure/overmap/OM = get_overmap() + if(OM?.hammerlocked == TRUE) //In case the console gets destroyed and needs to be rebuilt + start_emagged = TRUE + if(OM.faction == "Syndicate") + radio_channel = RADIO_CHANNEL_SYNDICATE + else if(OM.faction == "Pirate") + radio_channel = RADIO_CHANNEL_PIRATE if(start_emagged) obj_flags |= EMAGGED if(!OM) diff --git a/nsv13/code/game/objects/effects/decals/plutonium_sludge.dm b/nsv13/code/game/objects/effects/decals/plutonium_sludge.dm index cbc274a736e..29669780b0e 100644 --- a/nsv13/code/game/objects/effects/decals/plutonium_sludge.dm +++ b/nsv13/code/game/objects/effects/decals/plutonium_sludge.dm @@ -27,11 +27,11 @@ if(isliving(AM)) var/mob/living/L = AM playsound(loc, 'sound/effects/gib_step.ogg', HAS_TRAIT(L, TRAIT_LIGHT_STEP) ? 20 : 50, 1) - radiation_pulse(src, 500, 5) //MORE RADS + radiation_pulse(src, 625, 5) //MORE RADS /obj/effect/decal/nuclear_waste/attackby(obj/item/tool, mob/user) if(tool.tool_behaviour == TOOL_SHOVEL) - radiation_pulse(src, 1000, 5) //MORE RADS + radiation_pulse(src, 500, 5) //MORE RADS //The careful clearing of sludge should not give off as much radiation as casually running through it. to_chat(user, "You start to clear [src]...") if(tool.use_tool(src, user, 50, volume=100)) to_chat(user, "You clear [src]. ") diff --git a/nsv13/code/game/objects/effects/spawners/custom_ghost_role_spawners.dm b/nsv13/code/game/objects/effects/spawners/custom_ghost_role_spawners.dm index 8eadc64edbc..4bee8db8109 100644 --- a/nsv13/code/game/objects/effects/spawners/custom_ghost_role_spawners.dm +++ b/nsv13/code/game/objects/effects/spawners/custom_ghost_role_spawners.dm @@ -29,7 +29,7 @@ . = ..() var/area/A = get_area(src) if(A) - notify_ghosts("A Syndicate Crewmember is about to thaw from cryo on \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_SYNDICATE) + notify_ghosts("A Syndicate Crewmember is about to thaw from cryo on \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE) /obj/effect/mob_spawn/human/nsv13/nt_prisoner/ name = "a prisoner stasis pod" diff --git a/nsv13/code/game/objects/items/colorizers/fighters.dm b/nsv13/code/game/objects/items/colorizers/fighters.dm new file mode 100644 index 00000000000..411c947e12e --- /dev/null +++ b/nsv13/code/game/objects/items/colorizers/fighters.dm @@ -0,0 +1,5 @@ +/obj/item/colorizer/fighterace + name = "Su-818 Rapier Colorizer (Flight Lead)" + desc = "This colorizer will apply a new livery to a light fighter. Upgraded parts are not included." + allowed_targets = list(/obj/structure/overmap/small_craft/combat/light) + apply_icon_state = "ace" diff --git a/nsv13/code/game/objects/items/custom_guns.dm b/nsv13/code/game/objects/items/custom_guns.dm index c1ef968621c..91318ca0970 100644 --- a/nsv13/code/game/objects/items/custom_guns.dm +++ b/nsv13/code/game/objects/items/custom_guns.dm @@ -47,7 +47,7 @@ name = "6mm electro-shock round" damage = 6 //Straight up WAY worse than the security glock at stunning, but they serve a purpose armour_penetration = 0 //Less strong. Can't penetrate armor. - stamina = 5 //20 hits required to fully stun, by that time you probably killed them anyway! + stamina = 15 //Slightly more than 3 bursts to stun stutter = 5 jitter = 5 range = 7 @@ -85,10 +85,10 @@ item_state = "mp16" mag_type = /obj/item/ammo_box/magazine/smgm9mm can_suppress = TRUE - w_class = WEIGHT_CLASS_BULKY //Too big for a backpack. Can fit on your belt or back. + w_class = WEIGHT_CLASS_BULKY //Too big for a backpack. Can fit on your belt back or suit slot with armor. fire_delay = 1 fire_rate = 4 - burst_size = 1 + burst_size = 2 can_bayonet = TRUE knife_x_offset = 25 knife_y_offset = 12 diff --git a/nsv13/code/game/objects/items/custom_items.dm b/nsv13/code/game/objects/items/custom_items.dm index 0985bd0f005..804e83c541c 100644 --- a/nsv13/code/game/objects/items/custom_items.dm +++ b/nsv13/code/game/objects/items/custom_items.dm @@ -15,9 +15,9 @@ attack_verb = list("immolated", "slashed") hitsound = 'sound/weapons/rapierhit.ogg' materials = list(/datum/material/iron = 1000) - var/stunforce_on = 60 - var/stunforce_off = 0 - var/stunforce = 60 + var/stuntime_on = (4 SECONDS) + var/stuntime_off = 0 + var/stuntime = (4 SECONDS) on_icon_state = "stunsword_active" off_icon_state = "stunsword" on_item_state = "stunsword_active" @@ -48,7 +48,7 @@ icon_state = on_icon_state item_state = on_item_state force = force_on - stunforce = stunforce_on + stuntime = stuntime_on attack_verb = list("sliced", "cut", "striken", "immobilized") hitsound = 'nsv13/sound/effects/saberhit.ogg' set_light(3) @@ -63,7 +63,7 @@ icon_state = off_icon_state item_state = off_icon_state slot_flags = ITEM_SLOT_BELT - stunforce = stunforce_off + stuntime = stuntime_off force = force_off attack_verb = list("immolated", "slashed") hitsound = 'sound/weapons/rapierhit.ogg' @@ -76,7 +76,7 @@ /obj/item/melee/classic_baton/telescopic/stunsword/attack(mob/living/target, mob/living/user) if(ishuman(target)) var/mob/living/carbon/human/H = target - H.adjustStaminaLoss(stunforce) + H.Paralyze(stuntime) H.apply_damage(force, BRUTE) user.do_attack_animation(H) playsound(user.loc, hitsound, 100, 1) @@ -99,7 +99,7 @@ /obj/item/paper/fab_error //For disabled designs name = "Fabrication Error Report" - info = "

                      Divide by cucumber error. Please reinstall universe and reboot.

                      " + default_raw_text = "

                      Divide by cucumber error. Please reinstall universe and reboot.

                      " /obj/item/kirbyplants/random/plush name = "plush potted plant" diff --git a/nsv13/code/game/objects/items/custom_materials.dm b/nsv13/code/game/objects/items/custom_materials.dm index 6b2dea5879a..8110773c570 100644 --- a/nsv13/code/game/objects/items/custom_materials.dm +++ b/nsv13/code/game/objects/items/custom_materials.dm @@ -13,7 +13,7 @@ GLOBAL_LIST_INIT(duranium_recipes, list ( \ icon_state = "sheet-duranium" item_state = "sheet-duranium" sheettype = "duranium" - materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT*7/40, /datum/material/plasma = MINERAL_MATERIAL_AMOUNT/20, /datum/material/silver = MINERAL_MATERIAL_AMOUNT*3/20, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT*5/8) + materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT*0.175, /datum/material/plasma = MINERAL_MATERIAL_AMOUNT*0.05, /datum/material/silver = MINERAL_MATERIAL_AMOUNT*0.15, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT*0.625) throwforce = 10 flags_1 = CONDUCT_1 resistance_flags = FIRE_PROOF @@ -54,7 +54,7 @@ GLOBAL_LIST_INIT(durasteel_recipes, list ( \ icon_state = "sheet-durasteel" item_state = "sheet-durasteel" sheettype = "durasteel" - materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT/5, /datum/material/silver = MINERAL_MATERIAL_AMOUNT*3/20, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT*12/20) + materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT*0.2, /datum/material/silver = MINERAL_MATERIAL_AMOUNT*0.15, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT*0.65) throwforce = 10 flags_1 = CONDUCT_1 resistance_flags = FIRE_PROOF diff --git a/nsv13/code/game/objects/items/munitions_items.dm b/nsv13/code/game/objects/items/munitions_items.dm index c3cb21fa75a..4d057b2acc6 100644 --- a/nsv13/code/game/objects/items/munitions_items.dm +++ b/nsv13/code/game/objects/items/munitions_items.dm @@ -140,20 +140,9 @@ icon_state = "muniband" -///////BOX//////// -/obj/item/storage/box/radiokey/mun - name = "box of munitions radio keys" - desc = "Grants access to munitions and supply radio." - radio_key = /obj/item/encryptionkey/munitions_tech - -/obj/item/storage/box/radiokey/pilot - name = "box of pilot radio keys" - desc = "Grants access to air traffic control and munitions radio." - radio_key = /obj/item/encryptionkey/pilot - ///////ATC STICKS/////// /obj/item/flashlight/atc_wavy_sticks //I dont know what theyre actually called :) - name = "Aircraft sigalling sticks" + name = "Aircraft signalling sticks" desc = "A large set of fluorescent sticks used to direct aircraft around the hangar bay." icon = 'nsv13/icons/objects/lighting.dmi' icon_state = "wavystick" diff --git a/nsv13/code/game/objects/items/nsv13_plushes.dm b/nsv13/code/game/objects/items/nsv13_plushes.dm index 2533f011a91..e648207b27a 100644 --- a/nsv13/code/game/objects/items/nsv13_plushes.dm +++ b/nsv13/code/game/objects/items/nsv13_plushes.dm @@ -1,3 +1,4 @@ +/* This file was unticked before so I just commented this out /obj/item/toy/plush/random name = "\improper Random Plush" icon_state = "debug" @@ -7,3 +8,37 @@ var/plush_type = pick(subtypesof(/obj/item/toy/plush/) - /obj/item/toy/plush/random/) new plush_type(loc) return INITIALIZE_HINT_QDEL +*/ +/obj/item/toy/plush/hfighter + name = "heavy fighter plush" + desc = "An adorable stuffed toy shaped like a Su-410 Scimitar heavy fighter." + icon = 'nsv13/icons/obj/custom_plushes.dmi' + icon_state = "heavyfighter" + attack_verb = list("bombed", "bumped", "rammed", "torpedoed") + squeak_override = list('nsv13/sound/effects/fighters/BRRTTTTTT.ogg'=1) + +/obj/item/toy/plush/lfighter + name = "light fighter plush" + desc = "An adorable stuffed toy shaped like a Su-818 Rapier light fighter." + icon = 'nsv13/icons/obj/custom_plushes.dmi' + icon_state = "lightfighter" + attack_verb = list("bumped", "rammed", "missiled") + squeak_override = list('nsv13/sound/effects/fighters/autocannon.ogg'=1) + +/obj/item/toy/plush/lfighter/synlfighter + name = "Syndicate light fighter plush" + desc = "An adorable stuffed toy shaped like a Su-818 Rapier light fighter with Syndicate livery." + icon_state = "synlightfighter" + +/obj/item/toy/plush/transport + name = "utility craft plush" + desc = "An adorable stuffed toy shaped like a Su-437 Sabre utility vessel." + icon = 'nsv13/icons/obj/custom_plushes.dmi' + icon_state = "transport" + attack_verb = list("bumped", "rammed") + squeak_override = list('nsv13/sound/effects/fighters/warmup.ogg'=1) + +/obj/item/toy/plush/transport/mining + name = "mining craft plush" + desc = "An adorable stuffed toy shaped like a Su-437 Sabre mining vessel." + icon_state = "mining" diff --git a/nsv13/code/game/objects/items/nsv_circuitboards.dm b/nsv13/code/game/objects/items/nsv_circuitboards.dm index 334fd8913af..2191f4ded8d 100644 --- a/nsv13/code/game/objects/items/nsv_circuitboards.dm +++ b/nsv13/code/game/objects/items/nsv_circuitboards.dm @@ -1,44 +1,44 @@ ////CIC consoles//// /obj/item/circuitboard/computer/ship/helm - name = "circuit board (helm computer)" + name = "helm computer (Computer Board)" build_path = /obj/machinery/computer/ship/helm /obj/item/circuitboard/computer/ship/tactical_computer - name = "circuit board (tactical computer)" + name = "tactical console (Computer Board)" build_path = /obj/machinery/computer/ship/tactical //Dradis /obj/item/circuitboard/computer/ship/dradis - name = "circuit board (dradis computer)" + name = "Dradis console (Computer Board)" build_path = /obj/machinery/computer/ship/dradis /obj/item/circuitboard/computer/ship/dradis/mining - name = "circuit board (mining dradis computer)" + name = "mining Dradis console (Computer Board)" build_path = /obj/machinery/computer/ship/dradis/mining /obj/item/circuitboard/computer/ship/dradis/cargo - name = "circuit board (cargo dradis computer)" + name = "cargo Dradis computer (Computer Board)" build_path = /obj/machinery/computer/ship/dradis/minor/cargo //FTL nav /obj/item/circuitboard/computer/ship/navigation - name = "circuit board (FTL Navigation console)" + name = "FTL navigation console (Computer Board)" build_path = /obj/machinery/computer/ship/navigation //Secondary ID console /obj/item/circuitboard/computer/card/secondary_ship_id_console - name = "circuit board (secondary ID console)" + name = "secondary ID console (Computer Board)" build_path = /obj/machinery/computer/secondary_ship_id_console /obj/item/circuitboard/computer/card/secondary_ship_id_console/syndicate - name = "circiut board (Syndicate ID console)" + name = "Syndicate ID console (Computer Board)" build_path = /obj/machinery/computer/secondary_ship_id_console/syndicate ////Security//// /obj/item/circuitboard/computer/security/syndicate - name = "circuit board (Syndicate camera console)" + name = "Syndicate camera console (Computer Board)" build_path = /obj/machinery/computer/security/syndicate ////Science//// @@ -59,15 +59,15 @@ ////Munitions consoles//// /obj/item/circuitboard/computer/ship/munitions_computer - name = "circuit board (munitions control computer)" + name = "munitions control computer (Computer Board)" build_path = /obj/machinery/computer/ship/munitions_computer /obj/item/circuitboard/computer/ship/ordnance_computer - name = "circuit board (ordnance computer)" + name = "ordnance monitoring console (Computer Board)" build_path = /obj/machinery/computer/ship/ordnance /obj/item/circuitboard/computer/ams - name = "AMS control console (computer)" + name = "AMS control console (Computer Board)" build_path = /obj/machinery/computer/ams resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF @@ -77,7 +77,7 @@ return ..() /obj/item/circuitboard/computer/anti_air - name = "Anti-air turret console (circuit)" + name = "anti-air turret console (Computer Board)" build_path = /obj/machinery/computer/anti_air resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF @@ -87,19 +87,19 @@ return ..() /obj/item/circuitboard/computer/ship/fighter_controller - name = "circuit board (fighter control computer)" + name = "fighter control computer (Computer Board)" build_path = /obj/machinery/computer/ship/fighter_controller //Mag-cat control console /obj/item/circuitboard/computer/ship/fighter_launcher - name = "circuit board (Mag-cat control console)" + name = "mag-cat control console (Computer Board)" build_path = /obj/machinery/computer/ship/fighter_launcher ////SHIP GUNS//// -//50 Cal. guns +//50 Cal. guns, currently not used /obj/item/circuitboard/machine/anti_air - name = "PDC turret (circuitboard)" + name = "PDC turret (Machine Board)" req_components = list( /obj/item/stack/sheet/mineral/titanium = 20, /obj/item/stack/sheet/mineral/copper = 10, @@ -114,7 +114,7 @@ return ..() /obj/item/circuitboard/machine/anti_air/heavy - name = "RPDC (circuitboard)" + name = "RPDC (Machine Board)" req_components = list( /obj/item/stack/sheet/mineral/titanium = 40, /obj/item/stack/sheet/mineral/copper = 40, @@ -123,36 +123,39 @@ /obj/item/stack/cable_coil = 5) build_path = /obj/machinery/ship_weapon/anti_air/heavy -//PDC and flak boards, currently not used +//PDC and flak boards #define PATH_PDC /obj/machinery/ship_weapon/pdc_mount #define PATH_FLAK /obj/machinery/ship_weapon/pdc_mount/flak /obj/item/circuitboard/machine/pdc_mount - name = "circuit board (pdc mount)" + name = "PDC loading rack (Machine Board)" desc = "You can use a screwdriver to switch between PDC and flak." req_components = list( /obj/item/stock_parts/manipulator = 4, /obj/item/stock_parts/capacitor = 2, /obj/item/stock_parts/matter_bin = 3, - /obj/item/ship_weapon/parts/firing_electronics = 1 ) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF + build_path = PATH_PDC +/* //Not using flak right now /obj/item/circuitboard/machine/pdc_mount/Initialize(mapload) . = ..() if(!build_path) if(prob(50)) - name = "PDC Loading Rack (Machine Board)" + name = "PDC loading rack (Machine Board)" build_path = PATH_PDC else - name = "Flak Loading Rack (Machine Board)" + name = "Flak loading rack (Machine Board)" build_path = PATH_FLAK +*/ /obj/item/circuitboard/machine/pdc_mount/Destroy(force=FALSE) if(!force) return QDEL_HINT_LETMELIVE return ..() +/* Flak isn't used right now /obj/item/circuitboard/machine/pdc_mount/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_SCREWDRIVER) var/obj/item/circuitboard/new_type @@ -169,10 +172,7 @@ I.play_tool_sound(src) to_chat(user, "You change the circuitboard setting to \"[new_setting]\".") return - -/obj/item/circuitboard/machine/pdc_mount - name = "PDC Mount (Machine Board)" - build_path = PATH_PDC +*/ /obj/item/circuitboard/machine/pdc_mount/flak name = "Flak Loading Rack (Machine Board)" @@ -183,7 +183,7 @@ //Deck Gun /obj/item/circuitboard/machine/deck_turret - name = "deck gun turret (circuitboard)" + name = "deck gun turret (Machine Board)" req_components = list() build_path = /obj/machinery/ship_weapon/deck_turret resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF @@ -197,17 +197,12 @@ return ..() /obj/item/circuitboard/computer/deckgun - name = "Deck gun loading computer (circuit)" + name = "deck gun loading computer (Machine Board)" build_path = /obj/machinery/computer/deckgun resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF -/obj/item/circuitboard/computer/deckgun/Destroy(force=FALSE) - if(!force) - return QDEL_HINT_LETMELIVE - return ..() - /obj/item/circuitboard/machine/deck_gun - name = "Deck gun core (circuitboard)" + name = "deck gun core (Machine Board)" req_components = list( /obj/item/stack/sheet/mineral/titanium = 10, /obj/item/stack/cable_coil = 5) @@ -215,13 +210,8 @@ needs_anchored = FALSE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF -/obj/item/circuitboard/machine/deck_gun/Destroy(force=FALSE) - if(!force) - return QDEL_HINT_LETMELIVE - return ..() - /obj/item/circuitboard/machine/deck_gun/powder - name = "Deck gun powder gate (circuitboard)" + name = "deck gun powder gate (Machine Board)" req_components = list( /obj/item/stack/sheet/iron = 20, /obj/item/stack/sheet/mineral/copper = 20, @@ -230,7 +220,7 @@ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF /obj/item/circuitboard/machine/deck_gun/payload - name = "Deck gun payload gate (circuitboard)" + name = "deck gun payload gate (Machine Board)" req_components = list( /obj/item/stack/sheet/iron = 20, /obj/item/stack/sheet/mineral/titanium = 5, @@ -244,7 +234,7 @@ // Inertial dampeners /obj/item/circuitboard/machine/inertial_dampener - name = "inertial dampener (circuitboard)" + name = "inertial dampener (Machine Board)" req_components = list( /obj/item/stock_parts/scanning_module = 2, /obj/item/stack/ore/bluespace_crystal = 2, @@ -255,7 +245,7 @@ //Upgrades /obj/item/circuitboard/machine/deck_gun/autoelevator - name = "Deck gun auto-elevator (circuitboard)" + name = "deck gun auto-elevator (Machine Board)" req_components = list( /obj/item/stack/sheet/mineral/titanium = 40, /obj/item/stack/sheet/mineral/copper = 20, @@ -264,7 +254,7 @@ build_path = /obj/machinery/deck_turret/autoelevator /obj/item/circuitboard/machine/deck_gun/autorepair - name = "Deck gun auto-repair module (circuitboard)" + name = "deck gun auto-repair module (Machine Board)" req_components = list( /obj/item/stack/sheet/mineral/titanium = 40, /obj/item/stack/sheet/mineral/copper = 20, @@ -275,30 +265,30 @@ //Missile factory /obj/item/circuitboard/machine/missile_builder - name = "Seegson model 'Ford' robotic autowrench (board)" + name = "Seegson model 'Ford' robotic autowrench (Machine Board)" build_path = /obj/machinery/missile_builder req_components = list() needs_anchored = FALSE /obj/item/circuitboard/machine/missile_builder/wirer - name = "Seegson model 'Ford' robotic autowirer (board)" + name = "Seegson model 'Ford' robotic autowirer (Machine Board)" build_path = /obj/machinery/missile_builder/wirer /obj/item/circuitboard/machine/missile_builder/welder - name = "Seegson model 'Ford' robotic autowelder (board)" + name = "Seegson model 'Ford' robotic autowelder (Machine Board)" build_path = /obj/machinery/missile_builder/welder /obj/item/circuitboard/machine/missile_builder/screwdriver - name = "Seegson model 'Ford' robotic bolt driver (board)" + name = "Seegson model 'Ford' robotic bolt driver (Machine Board)" build_path = /obj/machinery/missile_builder/screwdriver /obj/item/circuitboard/machine/missile_builder/assembler - name = "Seegson model 'Ford' robotic missile assembly arm (board)" + name = "Seegson model 'Ford' robotic missile assembly arm (Machine Board)" build_path = /obj/machinery/missile_builder/assembler //Missile system /obj/item/circuitboard/machine/vls - name = "M14 VLS Tube (Circuitboard)" + name = "M14 VLS Tube (Machine Board)" build_path = /obj/machinery/ship_weapon/vls req_components = list( /obj/item/stack/sheet/mineral/titanium = 20, @@ -314,8 +304,9 @@ //Gauss guns /obj/item/circuitboard/machine/gauss_turret - name = "gauss gun turret (circuitboard)" + name = "Gauss gun turret (Machine Board)" build_path = /obj/machinery/ship_weapon/gauss_gun + req_components = list() resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF /obj/item/circuitboard/machine/gauss_turret/Destroy(force=FALSE) @@ -324,12 +315,12 @@ return ..() /obj/item/circuitboard/computer/iff - name = "IFF Console (circuit)" + name = "IFF Console (Machine Board)" build_path = /obj/machinery/computer/iff_console //Coffee Machine - Navy's Lifeblood /obj/item/circuitboard/machine/coffeemaker - name = "Coffeemaker (Machine Board)" + name = "coffeemaker (Machine Board)" icon_state = "service" build_path = /obj/machinery/coffeemaker req_components = list( @@ -354,7 +345,7 @@ //Plasma Caster and Loader /obj/item/circuitboard/machine/plasma_loader - name = "Phoron Gas Regulator (Machine Board)" + name = "phoron gas regulator (Machine Board)" build_path = /obj/machinery/atmospherics/components/unary/plasma_loader var/pipe_layer = PIPING_LAYER_DEFAULT req_components = list( @@ -372,7 +363,7 @@ . += "It is set to layer [pipe_layer]." /obj/item/circuitboard/machine/plasma_caster - name = "circuit board (plasma caster)" + name = "plasma caster (Machine Board)" desc = "My faithful...stand firm!" req_components = list( /obj/item/stack/sheet/mineral/titanium = 25, @@ -389,7 +380,7 @@ // Laser PD console /obj/item/circuitboard/computer/laser_pd - name = "point defense laser console (circuit)" + name = "point defense laser console (Machine Board)" build_path = /obj/machinery/computer/laser_pd resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF @@ -400,7 +391,7 @@ // Laser PD /obj/item/circuitboard/machine/laser_pd - name = "point defense laser turret (circuitboard)" + name = "point defense laser turret (Machine Board)" build_path = /obj/machinery/ship_weapon/energy/laser_pd resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF req_components = list( @@ -408,9 +399,45 @@ /obj/item/stock_parts/cell = 5, /obj/item/stack/ore/bluespace_crystal = 5) +// Laser AMS +/obj/item/circuitboard/machine/laser_ams + name = "laser AMS (circuitboard)" + build_path = /obj/machinery/ship_weapon/energy/ams + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF + req_components = list( + /obj/item/stack/sheet/glass = 5, + /obj/item/stock_parts/micro_laser = 5, + /obj/item/stock_parts/capacitor = 5, + /obj/item/stock_parts/cell = 5, + /obj/item/stack/ore/bluespace_crystal = 5) + +// Phase Cannon +/obj/item/circuitboard/machine/phase_cannon + name = "phase cannon (circuitboard)" + build_path = /obj/machinery/ship_weapon/energy/beam + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF + req_components = list( + /obj/item/stack/sheet/glass = 5, + /obj/item/stock_parts/micro_laser = 5, + /obj/item/stock_parts/capacitor = 5, + /obj/item/stock_parts/cell = 5, + /obj/item/stack/ore/bluespace_crystal = 5) + +// Burst Phaser +/obj/item/circuitboard/machine/burst_phaser + name = "burst phaser MK2 (circuitboard)" + build_path = /obj/machinery/ship_weapon/energy + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF + req_components = list( + /obj/item/stack/sheet/glass = 3, + /obj/item/stock_parts/micro_laser = 3, + /obj/item/stock_parts/capacitor = 3, + /obj/item/stock_parts/cell = 3, + /obj/item/stack/ore/bluespace_crystal = 3) + // Smelter and console /obj/item/circuitboard/machine/processing_unit - name = "circuit board (furnace)" + name = "furnace (Machine Board)" desc = "It melts and purifies ores." req_components = list( /obj/item/stock_parts/micro_laser = 1, @@ -420,7 +447,7 @@ build_path = /obj/machinery/mineral/processing_unit /obj/item/circuitboard/machine/processing_unit_console - name = "circuit board (furnace console)" + name = "furnace console (Machine Board)" desc = "Circuit for a furnace control console." req_components = list( /obj/item/stack/sheet/glass = 1, @@ -430,7 +457,7 @@ //Non-magic chem dispenser /obj/item/circuitboard/machine/refillable_chem_dispenser - name = "refillable chem dispenser (machine board)" + name = "refillable chem dispenser (Machine Board)" icon_state = "medical" build_path = /obj/machinery/refillable_chem_dispenser req_components = list( @@ -438,3 +465,15 @@ /obj/item/stock_parts/manipulator = 1, /obj/item/stack/sheet/glass = 1) needs_anchored = FALSE + +//Atmospheric consoles +/obj/item/circuitboard/computer/atmos_control/tank/nucleium_tank + name = "nucleium supply control (Computer Board)" + build_path = /obj/machinery/computer/atmos_control/tank/nucleium_tank + +//Bot navbeacon +/obj/item/circuitboard/machine/navbeacon + name = "Bot Navigational Beacon Machine Board" + icon_state = "science" + build_path = /obj/machinery/navbeacon + req_components = list() diff --git a/nsv13/code/game/objects/items/stacks/tiles/tile_types.dm b/nsv13/code/game/objects/items/stacks/tiles/tile_types.dm index fff6ffc5fa9..9ca553a28d2 100644 --- a/nsv13/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/nsv13/code/game/objects/items/stacks/tiles/tile_types.dm @@ -24,13 +24,14 @@ icon = 'nsv13/icons/obj/custom_tiles.dmi' icon_state = "durasteel_tile" force = 6 - materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT/20, /datum/material/silver = MINERAL_MATERIAL_AMOUNT*3/80, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT*13/80) + materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT*0.05, /datum/material/silver = MINERAL_MATERIAL_AMOUNT*0.0375, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT*0.1625) throwforce = 10 flags_1 = CONDUCT_1 turf_type = /turf/open/floor/durasteel mineralType = "durasteel" armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70, "stamina" = 0) resistance_flags = FIRE_PROOF + var/catwalk_type = null var/list/tilelist = list( \ "durasteel_tile", \ "durasteel_tile_alt", \ @@ -40,7 +41,7 @@ "eris_techfloor_alt_tile", \ "lino_tile", \ "techfloor_tile", \ - "tech_grid_tile", \ + "techfloor_grid_tile", \ "monotile_steel", \ "monotile_dark", \ "monotile_light", \ @@ -55,12 +56,17 @@ "eris_techfloor_alt_tile" = /turf/open/floor/durasteel/eris_techfloor_alt, \ "lino_tile" = /turf/open/floor/durasteel/lino, \ "techfloor_tile" = /turf/open/floor/durasteel/techfloor, \ - "tech_grid_tile" = /turf/open/floor/durasteel/techfloor_grid, \ + "techfloor_grid_tile" = /turf/open/floor/durasteel/techfloor_grid, \ "monotile_steel" = /turf/open/floor/monotile/steel, \ "monotile_dark" = /turf/open/floor/monotile/dark, \ "monotile_light" = /turf/open/floor/monotile/light, \ "monofloor_tile" = /turf/open/floor/monofloor \ ) + var/list/catwalktypes = list( \ + "monotile_steel" = /obj/structure/lattice/catwalk/over/ship, \ + "monotile_dark" = /obj/structure/lattice/catwalk/over/ship/dark, \ + "monotile_light" = /obj/structure/lattice/catwalk/over/ship/light, \ + ) /obj/item/stack/tile/durasteel/Initialize(mapload, amount) . = ..() @@ -70,6 +76,8 @@ /obj/item/stack/tile/durasteel/examine(mob/user) . = ..() . += "Ctrl-click to change the tile type." + if(catwalk_type) + . += "There are attachment points for rods." /obj/item/stack/tile/durasteel/CtrlClick(mob/user) if((istype(user) && user.canUseTopic(src, BE_CLOSE, ismonkey(user))) && !is_cyborg && user.is_holding(src)) //Only activate when in your hand @@ -77,8 +85,32 @@ if(choice) icon_state = choice turf_type = tiletypes[icon_state] //it JUST works + catwalk_type = catwalktypes[icon_state] return ..() +/obj/item/stack/tile/durasteel/attackby(obj/item/W, mob/user, params)//plated catwalk construction + add_fingerprint(user) + if(istype(W, /obj/item/stack/rods)) + if(!catwalk_type) + to_chat(user, "You can't make a plated catwalk with this variant of tile!") + return + var/turf/T = get_turf(usr) + if(locate(/obj/structure/lattice/catwalk) in T) + to_chat(user, "There is already a catwalk here!") + return + if(!isfloorturf(T)) + to_chat(user, "You can only build a plated catwalk on a floor!") + return + var/obj/item/stack/rods/V = W + if (V.get_amount() >= 2 && get_amount() >= 1) + new catwalk_type(T) + V.use(2) + use(1) + else + to_chat(user, "You need two rods and one tile to make a plated catwalk!") + return + else + return ..() /obj/item/stack/tile/durasteel/alt icon_state = "durasteel_tile_alt" turf_type = /turf/open/floor/durasteel/alt @@ -114,14 +146,17 @@ /obj/item/stack/tile/durasteel/mono_steel icon_state = "monotile_steel" turf_type = /turf/open/floor/monotile/steel + catwalk_type = /obj/structure/lattice/catwalk/over/ship /obj/item/stack/tile/durasteel/mono_dark icon_state = "monotile_dark" turf_type = /turf/open/floor/monotile/dark + catwalk_type = /obj/structure/lattice/catwalk/over/ship/dark /obj/item/stack/tile/durasteel/mono_light icon_state = "monotile_light" turf_type = /turf/open/floor/monotile/light + catwalk_type = /obj/structure/lattice/catwalk/over/ship/light /obj/item/stack/tile/durasteel/monofloor icon_state = "monofloor_tile" @@ -135,6 +170,7 @@ icon = 'nsv13/icons/turf/dark_carpet.dmi' icon_state = "dark_carpet_tile" resistance_flags = FLAMMABLE + materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT*0.05, /datum/material/silver = MINERAL_MATERIAL_AMOUNT*0.0375, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT*0.1625) turf_type = /turf/open/floor/carpet/ship /obj/item/stack/tile/carpet/ship/blue diff --git a/nsv13/code/game/objects/items/storage_items.dm b/nsv13/code/game/objects/items/storage_items.dm index 7561c2e6248..15e0db3871b 100644 --- a/nsv13/code/game/objects/items/storage_items.dm +++ b/nsv13/code/game/objects/items/storage_items.dm @@ -1,3 +1,16 @@ +/* +This file contains various storage items in this order: + + ammo boxes + normal boxes + syndie kit boxes + first aid/medikits + reagent containers + +*/ + +//Ammo Boxes + /obj/item/storage/toolbox/ammo/shotgun name = "ammo box (12ga buckshot)" desc = "It contains a few buckshot rounds." @@ -24,6 +37,8 @@ new /obj/item/ammo_casing/shotgun/beanbag(src) new /obj/item/ammo_casing/shotgun/beanbag(src) +//Regular Boxes + /obj/item/storage/box/cookie name = "box of cookies" desc = "It contains a few cookies for good patients." @@ -37,12 +52,120 @@ new /obj/item/reagent_containers/food/snacks/sugarcookie/spookyskull( src ) new /obj/item/reagent_containers/food/snacks/sugarcookie/spookyskull( src ) -/obj/item/storage/box/beakers/large_mix - name = "box of beakers" - illustration = "beaker" - -/obj/item/storage/box/beakers/PopulateContents() +/obj/item/storage/box/beakers/large_mix/PopulateContents() for(var/i in 1 to 2) new /obj/item/reagent_containers/glass/beaker/large( src ) for(var/i in 1 to 5) new /obj/item/reagent_containers/glass/beaker( src ) + +/obj/item/storage/box/suitbox/maid + name = "compression box of maid uniforms" + desc = "Contains a state of the art maid uniform." + +/obj/item/storage/box/suitbox/maid/PopulateContents() + new /obj/item/clothing/head/maidheadband(src) + new /obj/item/clothing/neck/maid(src) + new /obj/item/clothing/gloves/maid(src) + new /obj/item/clothing/under/costume/maid(src) + +/obj/item/storage/box/radiokey/mun + name = "box of munitions radio keys" + desc = "Grants access to munitions and supply radio." + radio_key = /obj/item/encryptionkey/munitions_tech + +/obj/item/storage/box/radiokey/pilot + name = "box of pilot radio keys" + desc = "Grants access to air traffic control and munitions radio." + radio_key = /obj/item/encryptionkey/pilot + +/obj/item/storage/box/squad_lanyards + name = "Spare squad lanyards" + desc = "A box filled with lanyards for assigning personnel into squads. Repaint them using the squad management console and pass them out." + icon = 'nsv13/icons/obj/storage.dmi' + illustration = "lanyard" + +/obj/item/storage/box/squad_lanyards/PopulateContents() + generate_items_inside(list(/obj/item/clothing/neck/squad = 10),src) + +//Syndie Kit Boxes + +/obj/item/storage/box/syndie_kit/maid + name = "emergency maid kit" + +/obj/item/storage/box/syndie_kit/maid/PopulateContents() + new /obj/item/clothing/head/maidheadband/syndicate(src) + new /obj/item/clothing/under/syndicate/maid(src) + new /obj/item/clothing/gloves/combat/maid(src) + new /obj/item/clothing/accessory/maidapron/syndicate(src) + new /obj/item/clothing/shoes/jackboots(src) + new /obj/item/soap/syndie(src) + new /obj/item/reagent_containers/glass/bucket(src) + new /obj/item/mop/sharp(src) + +/obj/item/storage/box/syndie_kit/plushie + name = "\improper DIY plushbomb kit" + +/obj/item/storage/box/syndie_kit/plushie/PopulateContents() + new /obj/item/toy/plush/lfighter/synlfighter(src) + new /obj/item/kitchen/knife/combat/survival(src) + new /obj/item/grenade/syndieminibomb(src) + new /obj/item/screwdriver(src) + +//First aid kits + +/obj/item/storage/firstaid/robot + name = "robotic treatment kit" + desc = "Used to treat wounds and afflictions of robotic lifeforms." + icon = 'nsv13/icons/obj/storage.dmi' + icon_state = "firstaid-robot" + item_state = "firstaid-robot" + lefthand_file = 'nsv13/icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'nsv13/icons/mob/inhands/equipment/medical_righthand.dmi' + skin_type = MEDBOT_SKIN_ROBOT + +/obj/item/storage/firstaid/robot/Initialize(mapload) + . = ..() + icon_state = pick("firstaid-robot","firstaid-robotalt") + +/obj/item/storage/firstaid/robot/PopulateContents() + if(empty) + return + var/static/items_inside = list( + /obj/item/weldingtool = 1, + /obj/item/clothing/glasses/welding = 1, + /obj/item/stack/cable_coil/random = 1, + /obj/item/reagent_containers/hypospray/medipen/system_cleaner = 2, + /obj/item/reagent_containers/glass/bottle/radioactive_disinfectant = 1, + /obj/item/reagent_containers/syringe = 1, + /obj/item/healthanalyzer = 1) + generate_items_inside(items_inside,src) + +//Reagent containers + +/obj/item/reagent_containers/glass/bottle/solder + name = "solder bottle" + label_name = "solder" + desc = "A small bottle. Contains liquid solder. Useful for repairing synthethic brain damage." + list_reagents = list(/datum/reagent/medicine/liquid_solder = 30) + +/obj/item/reagent_containers/glass/bottle/radioactive_disinfectant + name = "radioactive disinfectant bottle" + label_name = "radioactive disinfectant" + desc = "A small bottle. Contains radioactive disinfectant. Useful for purging irradiation from synthethics." + list_reagents = list(/datum/reagent/medicine/radioactive_disinfectant = 30) + +/obj/item/reagent_containers/glass/bottle/system_cleaner + name = "system cleaner bottle" + label_name = "system cleaner" + desc = "A small bottle. Contains system cleaner. Useful for purging toxic chemicals and toxins from synthetics." + list_reagents = list(/datum/reagent/medicine/system_cleaner = 30) + +/obj/item/reagent_containers/hypospray/medipen/system_cleaner + name = "system cleaner medipen" + icon = 'nsv13/icons/obj/nsv13_syringe.dmi' + icon_state = "syscleanpen" + item_state = "syscleanpen" + lefthand_file = 'nsv13/icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'nsv13/icons/mob/inhands/equipment/medical_righthand.dmi' + desc = "A autoinjector containing system cleaner, used to purge toxins from synthetics quickly." + list_reagents = list(/datum/reagent/medicine/system_cleaner = 10) diff --git a/nsv13/code/game/objects/structures/catwalk.dm b/nsv13/code/game/objects/structures/catwalk.dm index 31ca02bc2d1..930ea96e4ff 100644 --- a/nsv13/code/game/objects/structures/catwalk.dm +++ b/nsv13/code/game/objects/structures/catwalk.dm @@ -9,13 +9,15 @@ canSmoothWith = null obj_flags = CAN_BE_HIT var/hatch_open = FALSE //To easily access wiring + var/plating_type = /obj/item/stack/tile/durasteel/mono_steel /obj/structure/lattice/catwalk/over/ship/light color = "#ffffff" - icon_state = "catwalk_platedwhite" + plating_type = /obj/item/stack/tile/durasteel/mono_light /obj/structure/lattice/catwalk/over/ship/dark - color = "#4c535b" //Curse you baystation + color = "#575757" //Curse you baystation + plating_type = /obj/item/stack/tile/durasteel/mono_dark /obj/structure/lattice/catwalk/over/ship/crowbar_act(mob/living/user, obj/item/I) var/turf/T = get_turf(src) @@ -38,13 +40,25 @@ if(hatch_open) icon_state = "catwalk_hatch_open" obj_flags &= ~(BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP) //Minecraft trap door. + flags_1 &= ~PREVENT_CLICK_UNDER_1 smooth = SMOOTH_FALSE clear_smooth_overlays() + queue_smooth(src) else - icon_state = initial(icon_state) + icon_state = "" obj_flags |= (BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP) + flags_1 |= PREVENT_CLICK_UNDER_1 smooth = SMOOTH_TRUE queue_smooth(src) -/obj/structure/lattice/catwalk/over/ship/can_lay_cable() - return hatch_open + +/obj/structure/lattice/catwalk/over/ship/deconstruct() + new plating_type(get_turf(src)) + . = ..() + +/obj/structure/lattice/catwalk/over/attackby(obj/item/C, mob/user, params) + if(resistance_flags & INDESTRUCTIBLE) + return + if(C.tool_behaviour == TOOL_WIRECUTTER) + to_chat(user, "Slicing [name] joints ...") + deconstruct() diff --git a/nsv13/code/game/turfs/custom_turfs.dm b/nsv13/code/game/turfs/custom_turfs.dm index 0ba8721e1a6..9a91b1ee9e8 100644 --- a/nsv13/code/game/turfs/custom_turfs.dm +++ b/nsv13/code/game/turfs/custom_turfs.dm @@ -166,3 +166,7 @@ var/obj/structure/overmap/small_craft/OM = AM return OM.check_overmap_elegibility(ignore_position = TRUE) return ..() + +/turf/open/floor/engine/nucleium + name = "Nucleium Floor" + initial_gas_mix = ATMOS_TANK_NUCLEIUM diff --git a/nsv13/code/game/turfs/legacy_smooth.dm b/nsv13/code/game/turfs/legacy_smooth.dm index 92e6976996b..a65faf509d3 100644 --- a/nsv13/code/game/turfs/legacy_smooth.dm +++ b/nsv13/code/game/turfs/legacy_smooth.dm @@ -42,6 +42,8 @@ /obj/structure/window/legacy_smooth() //A little cludge here, since I don't know how it will work with slim windows. Most likely VERY wrong. //this way it will only update full-tile ones + if(QDELETED(src)) + return . = ..() if(!can_visually_connect()) icon_state = initial(icon_state) @@ -59,6 +61,16 @@ I = image(icon, "[basestate][connections[i]]", dir = 1<<(i-1)) overlays += I + if(!fulltile) + return + var/ratio = obj_integrity / max_integrity + ratio = CEILING(ratio*4, 1) * 25 + cut_overlay(crack_overlay) + if(ratio > 75) + return + crack_overlay = mutable_appearance('icons/obj/structures.dmi', "damage[ratio]", (layer+0.1)) //NSV13 - made layer in front of windows + add_overlay(crack_overlay) + /obj/structure/window/proc/can_visually_connect_to(obj/structure/S) return istype(S, src) diff --git a/nsv13/code/modules/Security/genpop.dm b/nsv13/code/modules/Security/genpop.dm index 331699563d4..16f83b2e775 100644 --- a/nsv13/code/modules/Security/genpop.dm +++ b/nsv13/code/modules/Security/genpop.dm @@ -297,7 +297,8 @@ var/obj/item/card/id/id = new /obj/item/card/id/prisoner(get_turf(src), desired_sentence, desired_crime, desired_name) Radio.talk_into(src, "Prisoner [id.registered_name] has been incarcerated for [desired_sentence / 60 ] minutes.", FREQ_SECURITY) var/obj/item/paper/paperwork = new /obj/item/paper(get_turf(src)) - paperwork.info = "

                      Record Of Incarceration:


                      Name:

                      [desired_name]

                      Crime:

                      [desired_crime]

                      Sentence (Min)

                      [desired_sentence/60]

                      WhiteRapids Military Council, disciplinary authority

                      " + paperwork.add_raw_text("

                      Record Of Incarceration:


                      Name:

                      [desired_name]

                      Crime:

                      [desired_crime]

                      Sentence (Min)

                      [desired_sentence/60]

                      WhiteRapids Military Council, disciplinary authority

                      ") + paperwork.update_appearance() desired_sentence = 60 desired_crime = null desired_name = null @@ -352,7 +353,16 @@ desired_sentence = preset_time MINUTES desired_sentence /= 10 desired_crime = preset_crime - + if("adjust_time") + var/obj/item/card/id/prisoner/id = locate(params["id"]) + if(!istype(id)) + return + if(id.access == ACCESS_PRISONER) + return + var/value = text2num(params["adjust"]) + if(value && isnum(value)) + id.sentence += value + id.sentence = clamp(id.sentence,0,MAX_TIMER) if("release") var/obj/item/card/id/prisoner/id = locate(params["id"]) if(!istype(id)) diff --git a/nsv13/code/modules/antagonists/bloodling.dm b/nsv13/code/modules/antagonists/bloodling.dm index 69c3dc87153..e30d74b9320 100644 --- a/nsv13/code/modules/antagonists/bloodling.dm +++ b/nsv13/code/modules/antagonists/bloodling.dm @@ -283,6 +283,7 @@ Infestation! If given a human, it makes them a changeling thrall. If given any o var/antag_hud_type = ANTAG_HUD_BLOODLING var/antag_hud_name = "bloodling_thrall" var/component_type = /datum/component/bloodling + banning_key = ROLE_BLOODLING /datum/antagonist/bloodling/greet() to_chat(owner.current, "We are the master!") @@ -813,7 +814,7 @@ Depending on what creature the entity gives life to, this can be EXTREMELY stron refund_biomass(user, biomass_cost) return FALSE - var/list/candidates = pollCandidatesForMob("Do you want to play as a bloodling minion?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, M, POLL_IGNORE_SENTIENCE_POTION) // see poll_ignore.dm + var/list/candidates = pollCandidatesForMob("Do you want to play as a bloodling minion?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, M) // see poll_ignore.dm if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) var/datum/component/bloodling/B = user.GetComponent(/datum/component/bloodling) diff --git a/nsv13/code/modules/antagonists/ghostship/ghost_ship.dm b/nsv13/code/modules/antagonists/ghostship/ghost_ship.dm new file mode 100644 index 00000000000..000247bb89c --- /dev/null +++ b/nsv13/code/modules/antagonists/ghostship/ghost_ship.dm @@ -0,0 +1,8 @@ +/datum/antagonist/ghost_ship + name = "Ghost Ship" + show_name_in_check_antagonists = TRUE + show_in_antagpanel = FALSE + show_in_roundend = FALSE + banning_key = ROLE_GHOSTSHIP + +///Used for tracking and because the role_preferences needs an antag_datum to point at. diff --git a/nsv13/code/modules/antagonists/role_preference/role_antagonists.dm b/nsv13/code/modules/antagonists/role_preference/role_antagonists.dm new file mode 100644 index 00000000000..4da1ef38f9e --- /dev/null +++ b/nsv13/code/modules/antagonists/role_preference/role_antagonists.dm @@ -0,0 +1,7 @@ +/datum/role_preference/antagonist/bloodling + name = "Bloodling" + antag_datum = /datum/antagonist/bloodling + +/datum/role_preference/antagonist/pvp + name = "Syndicate Crewmember (Galactic Conquest)" + antag_datum = /datum/antagonist/nukeop/syndi_crew diff --git a/nsv13/code/modules/antagonists/role_preference/role_midrounds.dm b/nsv13/code/modules/antagonists/role_preference/role_midrounds.dm new file mode 100644 index 00000000000..38bf28a2bc9 --- /dev/null +++ b/nsv13/code/modules/antagonists/role_preference/role_midrounds.dm @@ -0,0 +1,7 @@ +/datum/role_preference/midround_ghost/ghost_ship + name = "Ghost Ship" + antag_datum = /datum/antagonist/ghost_ship + +/datum/role_preference/midround_ghost/boarder + name = "Boarder" + antag_datum = /datum/antagonist/traitor/boarder diff --git a/nsv13/code/modules/atmospherics/machinery/components/binary_devices/constrictor.dm b/nsv13/code/modules/atmospherics/machinery/components/binary_devices/constrictor.dm new file mode 100644 index 00000000000..0894c99c5e3 --- /dev/null +++ b/nsv13/code/modules/atmospherics/machinery/components/binary_devices/constrictor.dm @@ -0,0 +1,163 @@ + +////// Magnetic Constrictors////// + +/obj/machinery/atmospherics/components/binary/magnetic_constrictor //This heats the plasma up to acceptable levels for use in the reactor. + name = "magnetic constrictor" + desc = "A large magnet which is capable of pressurizing plasma into a more energetic state. It is able to self-regulate its plasma input valve, as long as plasma is supplied to it." + icon = 'nsv13/icons/obj/machinery/reactor_parts.dmi' + icon_state = "constrictor" + density = TRUE + circuit = /obj/item/circuitboard/machine/magnetic_constrictor + layer = OBJ_LAYER + pipe_flags = PIPING_ONE_PER_TURF + active_power_usage = 200 + interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT | INTERACT_MACHINE_ALLOW_SILICON + var/emagged = FALSE + var/constriction_rate = 0 //SSAtmos is 4x faster than SSMachines aka the reactor + var/max_output_pressure = 0 + +/obj/machinery/atmospherics/components/binary/magnetic_constrictor/on_construction() + var/obj/item/circuitboard/machine/thermomachine/board = circuit + if(board) + piping_layer = board.pipe_layer + ..(dir, piping_layer) + +/obj/machinery/atmospherics/components/binary/magnetic_constrictor/RefreshParts() + var/A + for(var/obj/item/stock_parts/capacitor/C in component_parts) + A += C.rating + constriction_rate = 0.9 + (0.1 * A) + var/B + for(var/obj/item/stock_parts/manipulator/M in component_parts) + B += M.rating + max_output_pressure = 100 + (100 * B) + +/obj/machinery/atmospherics/components/binary/magnetic_constrictor/interact(mob/user) + if(!can_interact(user)) + return + to_chat(user, "You turn on \the [src].") + on = !on + update_icon() + +/obj/machinery/atmospherics/components/binary/magnetic_constrictor/process_atmos() + ..() + if(!on) + return + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] + var/output_starting_pressure = air2.return_pressure() + if(output_starting_pressure >= max_output_pressure) + return + var/plasma_moles = air1.get_moles(GAS_PLASMA) + var/plasma_transfer_moles = min(constriction_rate, plasma_moles) + var/plasma_temperature = air1.return_temperature() + if(!plasma_moles) + return + + var/plasma_threshold + if(emagged) //Something's not right... + plasma_transfer_moles -= 0.1 + if(plasma_transfer_moles > 0) + var/turf/open/T = isopenturf(get_turf(src)) ? get_turf(src) : null + if(T) + plasma_threshold = TRUE + T.air.adjust_moles_temp(GAS_CONSTRICTED_PLASMA, 0.1, plasma_temperature) + else + plasma_transfer_moles += 0.1 + else + plasma_transfer_moles += 0.1 + + air2.adjust_moles_temp(GAS_CONSTRICTED_PLASMA, plasma_transfer_moles, plasma_temperature) + + if(emagged && plasma_threshold) //Still remove the proper amount of plasma + plasma_transfer_moles += 0.1 + plasma_threshold = FALSE + + air1.adjust_moles(GAS_PLASMA, -plasma_transfer_moles) + update_parents() + +/obj/machinery/atmospherics/components/binary/magnetic_constrictor/crowbar_act(mob/user, obj/item/I) + default_deconstruction_crowbar(I) + return TRUE + +/obj/machinery/atmospherics/components/binary/magnetic_constrictor/screwdriver_act(mob/user, obj/item/I) + if(..()) + return TRUE + if(on) + to_chat(user, "You must turn off [src] before opening the panel.") + return FALSE + panel_open = !panel_open + I.play_tool_sound(src) + to_chat(user, "You [panel_open?"open":"close"] the panel on [src].") + update_icon() + return TRUE + +/obj/machinery/atmospherics/components/binary/magnetic_constrictor/wrench_act(mob/user, obj/item/I) + if(default_change_direction_wrench(user, I) && panel_open) + I.play_tool_sound(src) + var/obj/machinery/atmospherics/node1 = nodes[1] + var/obj/machinery/atmospherics/node2 = nodes[2] + if(node2) + node2.disconnect(src) + nodes[2] = null + nullifyPipenet(parents[2]) + if(node1) + node1.disconnect(src) + nodes[1] = null + nullifyPipenet(parents[1]) + + SetInitDirections() + atmosinit() + node1 = nodes[1] + if(node1) + node1.atmosinit() + node1.addMember(src) + node2 = nodes[2] + if(node2) + node2.atmosinit() + node2.addMember(src) + SSair.add_to_rebuild_queue(src) + update_icon(TRUE) + return TRUE + +/obj/machinery/atmospherics/components/binary/magnetic_constrictor/update_icon() + cut_overlays() + if(panel_open) + icon_state = "constrictor_screw" + else if(on) + icon_state = "constrictor_active" + else + icon_state = "constrictor" + pixel_y = 0 + pixel_x = 0 + PIPING_LAYER_SHIFT(src, piping_layer) + +/obj/machinery/atmospherics/components/binary/magnetic_constrictor/emag_act(mob/user) + obj_flags |= EMAGGED + emagged = TRUE + to_chat(user, "You overload [src]'s hydraulics.") + audible_message("\The [src] makes a mechanical sound.") + visible_message("Some bolts fall off \the [src]!") + log_combat(user, src, "emagged") + +/obj/item/circuitboard/machine/magnetic_constrictor + name = "Magnetic Constrictor (Machine Board)" + build_path = /obj/machinery/atmospherics/components/binary/magnetic_constrictor + var/pipe_layer = PIPING_LAYER_DEFAULT + req_components = list( + /obj/item/stock_parts/capacitor = 1, + /obj/item/stock_parts/manipulator = 1) + +/obj/item/circuitboard/machine/magnetic_constrictor/multitool_act(mob/living/user, obj/item/I) + . = ..() + if(I.tool_behaviour == TOOL_MULTITOOL) + pipe_layer = (pipe_layer >= PIPING_LAYER_MAX) ? PIPING_LAYER_MIN : (pipe_layer + 1) + to_chat(user, "You change the circuitboard to layer [pipe_layer].") + +/datum/design/board/magnetic_constrictor + name = "Machine Design (Magnetic Constrictor Board)" + desc = "The circuit board for a Magnetic Constrictor." + id = "mag_cons" + build_path = /obj/item/circuitboard/machine/magnetic_constrictor + category = list("Engineering Machinery") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING diff --git a/nsv13/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/nsv13/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm new file mode 100644 index 00000000000..5a372955b8a --- /dev/null +++ b/nsv13/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -0,0 +1,3 @@ +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nucleium_input + name = "nucleium tank input injector" + id = ATMOS_GAS_MONITOR_INPUT_NUCLEIUM diff --git a/nsv13/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/nsv13/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm new file mode 100644 index 00000000000..2c9f578581e --- /dev/null +++ b/nsv13/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -0,0 +1,3 @@ +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nucleium_output + name = "nucleium tank output inlet" + id_tag = ATMOS_GAS_MONITOR_OUTPUT_NUCLEIUM diff --git a/nsv13/code/modules/cargo/objective_cargo.dm b/nsv13/code/modules/cargo/objective_cargo.dm index 2106893bad4..15a86587059 100644 --- a/nsv13/code/modules/cargo/objective_cargo.dm +++ b/nsv13/code/modules/cargo/objective_cargo.dm @@ -15,7 +15,7 @@ /obj/structure/closet/crate/large/freight_objective/New() . = ..() - RegisterSignal( src, COMSIG_FREIGHT_TAMPERED, .proc/poll_for_ghost_sentience ) + RegisterSignal( src, COMSIG_FREIGHT_TAMPERED, PROC_REF(poll_for_ghost_sentience) ) /obj/structure/closet/crate/large/freight_objective/attackby(obj/item/W, mob/user, params) if(W.tool_behaviour == TOOL_CROWBAR) @@ -42,7 +42,7 @@ /obj/structure/closet/crate/large/freight_objective/proc/poll_for_ghost_sentience() for ( var/mob/living/simple_animal/M in contents ) if ( rand( 1, 20 ) == 20 ) // Random sentient mob event! - var/list/candidates = pollCandidatesForMob("Do you want to play as [M]?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, M, POLL_IGNORE_SENTIENCE_POTION) + var/list/candidates = pollCandidatesForMob("Do you want to play as [M]?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, M) M.AIStatus = AI_ON // Keep the mob asleep unless the poll receives no candidates if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) diff --git a/nsv13/code/modules/cargo/packs.dm b/nsv13/code/modules/cargo/packs.dm index 399f439da0b..5adf8681e81 100644 --- a/nsv13/code/modules/cargo/packs.dm +++ b/nsv13/code/modules/cargo/packs.dm @@ -78,9 +78,9 @@ contains = list(/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, /obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, /obj/item/ship_weapon/ammunition/torpedo/torpedo_casing, - /obj/item/ship_weapon/parts/missile/warhead, - /obj/item/ship_weapon/parts/missile/warhead, - /obj/item/ship_weapon/parts/missile/warhead, + /obj/item/ship_weapon/parts/missile/warhead/torpedo, + /obj/item/ship_weapon/parts/missile/warhead/torpedo, + /obj/item/ship_weapon/parts/missile/warhead/torpedo, /obj/item/ship_weapon/parts/missile/guidance_system, /obj/item/ship_weapon/parts/missile/guidance_system, /obj/item/ship_weapon/parts/missile/guidance_system, @@ -531,6 +531,55 @@ /obj/item/gun/energy/laser) crate_name = "laser crate" +/datum/supply_pack/security/mparmor + name = "Military Police Replacement Crate" + desc = "Three vests of MP armor vests complete with MP undershirts, everything to replace which fire razed to the ground." + cost = 3600 + contains = list(/obj/item/clothing/suit/ship/squad/military_police, + /obj/item/clothing/suit/ship/squad/military_police, + /obj/item/clothing/suit/ship/squad/military_police, + /obj/item/clothing/under/ship/military_police, + /obj/item/clothing/under/ship/military_police, + /obj/item/clothing/under/ship/military_police, + /obj/item/clothing/head/helmet/ship/squad/leader, + /obj/item/clothing/head/helmet/ship/squad/leader, + /obj/item/clothing/head/helmet/ship/squad/leader) + crate_name = "MP armor crate" + +/datum/supply_pack/security/armory/m45single + name = "M1911 handgun Single-pack" + desc = "Single M1911 with a .45 magazine to fit inside of it." + cost = 1500 + contains = list(/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, + /obj/item/ammo_box/magazine/m45) + crate_name = "1911 single crate" + +/datum/supply_pack/security/armory/m45guns + name = "M1911 handgun Crate" + desc = "Holds 3 M1911's with 3 magazines to fit in each one of them." + cost = 4200 + contains = list(/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, + /obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, + /obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, + /obj/item/ammo_box/magazine/m45, + /obj/item/ammo_box/magazine/m45, + /obj/item/ammo_box/magazine/m45) + crate_name = "1911 single gun crate" + +/datum/supply_pack/security/armory/m45ammo + name = "M1911 Ammo Crate" + desc = "Contains 6 magazines and 2 ammoboxes which hold 3 loads each, which should contain enough lead for that holy crusade your chaplain always wanted." + cost = 2200 + contains = list(/obj/item/ammo_box/magazine/m45, + /obj/item/ammo_box/magazine/m45, + /obj/item/ammo_box/magazine/m45, + /obj/item/ammo_box/magazine/m45, + /obj/item/ammo_box/magazine/m45, + /obj/item/ammo_box/magazine/m45, + /obj/item/ammo_box/c45/m45, + /obj/item/ammo_box/c45/m45) // yes, they use the C20R ammo, funny KMC + crate_name = "1911 ammo crate" + /datum/supply_pack/munitions/fighter_fuel name = "Fighter fuel" desc = "One cryogenic Tyrosene fuel pump, capable of fully refuelling 3 fighters. Handle with care." @@ -769,6 +818,16 @@ /obj/item/reagent_containers/glass/bottle/sacid) crate_name = "Chemical Supply Crate - Chalcogens" +/datum/supply_pack/medical/robotic_firstaid + name = "Synthethic Treatment Kits Crate" + desc = "Contains three robotic first aid kits for all of your synthetic repairing needs. Tools, radioactive disinfectant and system cleaner medipens included." + contains = list(/obj/item/storage/firstaid/robot, + /obj/item/storage/firstaid/robot, + /obj/item/storage/firstaid/robot) + cost = 1400 + small_item = TRUE + crate_name = "synthethic treatment kits crate" + /datum/supply_pack/materials/plasma_canister //Purely used for the Serendipity's plasma caster name = "Phoron Canister" desc = "A single can of phoron gas, for all your plasma needs!" diff --git a/nsv13/code/modules/cargo/space_catalog.dm b/nsv13/code/modules/cargo/space_catalog.dm index 31a21f647bc..48ba0e8cb9e 100644 --- a/nsv13/code/modules/cargo/space_catalog.dm +++ b/nsv13/code/modules/cargo/space_catalog.dm @@ -29,6 +29,8 @@ nearby_traders = list() for(var/datum/trader/T as() in SSstar_system.traders) + if(istype(T, /datum/trader/randy)) + continue if(T.system.sector != my_system.sector) continue if(my_system.dist(T.system) > TOO_FAR) diff --git a/nsv13/code/modules/client/loadout/loadout_colorizers.dm b/nsv13/code/modules/client/loadout/loadout_colorizers.dm new file mode 100644 index 00000000000..9ab87aad1bb --- /dev/null +++ b/nsv13/code/modules/client/loadout/loadout_colorizers.dm @@ -0,0 +1,5 @@ +/datum/gear/colorizer/fighterace + display_name = "Su-818 Rapier Colorizer (Flight Lead)" + path = /obj/item/colorizer/fighterace + allowed_roles = list(JOB_NAME_PILOT) + cost = 10000 diff --git a/nsv13/code/modules/client/loadout/loadout_general.dm b/nsv13/code/modules/client/loadout/loadout_general.dm new file mode 100644 index 00000000000..6d0c5856437 --- /dev/null +++ b/nsv13/code/modules/client/loadout/loadout_general.dm @@ -0,0 +1,24 @@ +/datum/gear/misc/maid + display_name = "maid uniform" + path = /obj/item/storage/box/suitbox/maid + cost = 5000 + +/datum/gear/misc/lfighterplush + display_name = "light fighter plush" + path = /obj/item/toy/plush/lfighter + cost = 1000 + +/datum/gear/misc/hfighterplush + display_name = "heavy fighter plush" + path = /obj/item/toy/plush/hfighter + cost = 1000 + +/datum/gear/misc/transportplush + display_name = "utility craft plush" + path = /obj/item/toy/plush/transport + cost = 1000 + +/datum/gear/misc/miningplush + display_name = "mining craft plush" + path = /obj/item/toy/plush/transport/mining + cost = 1000 diff --git a/nsv13/code/modules/client/loadout/loadout_uniform.dm b/nsv13/code/modules/client/loadout/loadout_uniform.dm new file mode 100644 index 00000000000..7becfbc4a4f --- /dev/null +++ b/nsv13/code/modules/client/loadout/loadout_uniform.dm @@ -0,0 +1,4 @@ +/datum/gear/uniform/skirt/black + display_name = "skirt, black" + path = /obj/item/clothing/under/dress/skirt + diff --git a/nsv13/code/modules/clothing/custom_clothes.dm b/nsv13/code/modules/clothing/custom_clothes.dm index 5ee872c039f..13509b97ee5 100644 --- a/nsv13/code/modules/clothing/custom_clothes.dm +++ b/nsv13/code/modules/clothing/custom_clothes.dm @@ -795,3 +795,41 @@ w_class = WEIGHT_CLASS_SMALL rolled_up = !rolled_up + +/obj/item/clothing/head/maidheadband/syndicate + name = "tactical maid headband" + desc = "Tacticute." + icon = 'nsv13/icons/obj/clothing/hats.dmi' + worn_icon = 'nsv13/icons/mob/head.dmi' + icon_state = "syndieheadband" + item_state = "syndieheadband" + +/obj/item/clothing/under/syndicate/maid + name = "tactical maid outfit" + desc = "A 'tactical' turtleneck fashioned to the likeness of a maid outfit. Why the Syndicate has these, you'll never know." + icon = 'nsv13/icons/obj/clothing/uniforms.dmi' + worn_icon = 'nsv13/icons/mob/uniform.dmi' + icon_state = "syndimaid" + item_state = "syndimaid" + can_adjust = FALSE + +/obj/item/clothing/under/syndicate/skirt/maid/Initialize() + . = ..() + var/obj/item/clothing/accessory/maidapron/syndicate/A = new (src) + attach_accessory(A) + +/obj/item/clothing/gloves/combat/maid + name = "combat maid sleeves" + desc = "These 'tactical' gloves and sleeves are fireproof and electrically insulated. Warm to boot." + icon = 'nsv13/icons/obj/clothing/gloves.dmi' + worn_icon = 'nsv13/icons/mob/hands.dmi' + icon_state = "syndimaid_arms" + worn_icon_state = "syndimaid_arms" + item_state = "syndimaid_arms" + +/obj/item/clothing/accessory/maidapron/syndicate + name = "syndicate maid apron" + desc = "Practical? No. Tactical? Also no. Cute? Most definitely yes." + icon = 'nsv13/icons/mob/accessories.dmi' + icon_state = "maidapronsynd" + item_state = "maidapronsynd" diff --git a/nsv13/code/modules/clothing/custom_outfits.dm b/nsv13/code/modules/clothing/custom_outfits.dm index ec9a247935b..b033ba8b100 100644 --- a/nsv13/code/modules/clothing/custom_outfits.dm +++ b/nsv13/code/modules/clothing/custom_outfits.dm @@ -345,3 +345,23 @@ For when the marines are being irritating. /datum/outfit/boarding_droid/post_equip(mob/living/carbon/human/H) var/obj/item/implant/explosive/E = new/obj/item/implant/explosive(H) E.implant(H) + +/datum/outfit/syndie_maid/leader + name = "Syndicate Maid (Captain)" + id = /obj/item/card/id/syndi_crew/captain + r_hand = /obj/item/ship_loadout_selector + ears = /obj/item/radio/headset/syndicate/alt + +/datum/outfit/syndie_maid + name = "Syndicate Maid" + uniform = /obj/item/clothing/under/syndicate/maid + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat/maid + ears = /obj/item/radio/headset/syndicate + id = /obj/item/card/id/syndi_crew/technician + head = /obj/item/clothing/head/maidheadband/syndicate + back = /obj/item/storage/backpack/duffelbag/syndie + backpack_contents = list( + /obj/item/storage/box/syndie = 1, + /obj/item/kitchen/knife/combat/survival = 1 + ) diff --git a/nsv13/code/modules/clothing/helmet_camera.dm b/nsv13/code/modules/clothing/helmet_camera.dm index fdd180f80bd..7382761127d 100644 --- a/nsv13/code/modules/clothing/helmet_camera.dm +++ b/nsv13/code/modules/clothing/helmet_camera.dm @@ -38,7 +38,6 @@ on_drop(equipper) return if(builtInCamera && H) - builtInCamera.c_tag = "Helmet Cam #[rand(0,999)]" builtInCamera.forceMove(equipper) //I hate this. But, it's necessary. RegisterSignal(equipper, COMSIG_MOVABLE_MOVED, PROC_REF(update_camera_location)) diff --git a/nsv13/code/modules/coffee/items/coffee_pack.dm b/nsv13/code/modules/coffee/items/coffee_pack.dm index feb3876875b..9659011c3ad 100644 --- a/nsv13/code/modules/coffee/items/coffee_pack.dm +++ b/nsv13/code/modules/coffee/items/coffee_pack.dm @@ -22,7 +22,7 @@ icon = 'nsv13/icons/obj/coffee.dmi' icon_state = "arabica_beans" -/obj/item/storage/box/coffeepack/robusta/PopulateContents() +/obj/item/storage/box/coffeepack/arabica/PopulateContents() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 var/static/list/can_hold = typecacheof(list(/obj/item/reagent_containers/food/snacks/grown/coffee)) diff --git a/nsv13/code/modules/coffee/machine/coffeemaker.dm b/nsv13/code/modules/coffee/machine/coffeemaker.dm index 091c00b6b0e..bf8d4b65009 100644 --- a/nsv13/code/modules/coffee/machine/coffeemaker.dm +++ b/nsv13/code/modules/coffee/machine/coffeemaker.dm @@ -410,7 +410,7 @@ playsound(src, 'nsv13/sound/machines/coffeemaker_brew.ogg', 20, vary = TRUE) toggle_steam() use_power(active_power_usage * time * 0.1) // .1 needed here to convert time (in deciseconds) to seconds such that watts * seconds = joules - addtimer(CALLBACK(src, .proc/stop_operating), time / speed) + addtimer(CALLBACK(src, PROC_REF(stop_operating)), time / speed) /obj/machinery/coffeemaker/proc/stop_operating() brewing = FALSE diff --git a/nsv13/code/modules/collision/matrixvector.dm b/nsv13/code/modules/collision/matrixvector.dm index c71b39062fb..0a30f324641 100644 --- a/nsv13/code/modules/collision/matrixvector.dm +++ b/nsv13/code/modules/collision/matrixvector.dm @@ -9,17 +9,29 @@ This is done to allow vector-like operator interactions without overloading, as vectors are essentially column matrices You just have to keep in mind x and y are actually the variables a and e - Most of the procs here are just lazily edited versions from vector2d.dm to work with a matrix, so credit goes to qwertyquerty and Kmc2000 for that implementation. + Furthermore, the variables c and f indicate flat values that are added onto what is basically the origin point (0,0), to make a starting coordinate (c,f) + We can use this to essentially define a starting point for our vector as shown here: + -1 0 0 + 0 2 0 + 1 3 1 + Not only is the direction of this vector (-1 2) as said before, its starting point is now located at (x,y)=(1,3), this basically means it now functions + as a straight line from (1,3) to (0,5). + + Note that matrix datums have specific procs for specialized variants of specific functions as well. If you're unsure what to use, the byond reference has + all of these in a nice little list under matrix/proc. Some of them like Turn() and Scale() should almost always be substited with their exclusive variants + when used for vectors though. + + Most of the procs here are just lazily edited versions from vector2d.dm to work with a matrix, so credit goes to qwertyquerty and Kmc2000 for their implementation. Written by Bokkiewokkie */ - +//TODO: replace mentions of this with /matrix and shuffle the variables around to actually assign a through f instead of x and y /matrix/vector/New(x=0,y=0,b=0,c=0,d=0,f=0) return ..(x,b,c,d,y,f) -//Set the X and Y positions -/matrix/vector/proc/_set(x,y,sanity=FALSE) +//Set the X and Y length +/matrix/proc/_set(x,y,sanity=FALSE) a = x e = y if(sanity) //fall back to 0 if the inputs are invalid. @@ -28,67 +40,98 @@ Written by Bokkiewokkie if(!isnum_safe(y)) e = 0 -/matrix/vector/Destroy(force, ...) - . = ..() - return QDEL_HINT_QUEUE +//Set the X and Y coordinates, same as the above otherwise +/matrix/proc/_set_positions(x,y,sanity=FALSE) + c = x + f = y + if(sanity) + if(!isnum_safe(x)) + c = 0 + if(!isnum_safe(y)) + f = 0 -/matrix/vector/proc/to_string() +/matrix/proc/to_string() return "\[[a], [e]\]" -/matrix/vector/proc/dot(var/matrix/vector/V) +/matrix/proc/dot(var/matrix/V) return a * V.a + e * V.e -/matrix/vector/proc/cross(var/matrix/vector/V) +/matrix/proc/cross(var/matrix/V) return a * V.e - e * V.a -/matrix/vector/proc/ln2() +/matrix/proc/ln2() return dot(src) -/matrix/vector/proc/ln() +/matrix/proc/ln() return sqrt(dot(src)) -/matrix/vector/proc/angle() +/matrix/proc/angle() return ATAN2(a, e) -/matrix/vector/proc/normalize() +/matrix/proc/normalize() return src / src.ln() -/matrix/vector/proc/project(var/matrix/vector/V) +/matrix/proc/project(var/matrix/V) var/amt = src.dot(V) / V.ln2() a = amt * V.a e = amt * V.e return src -/matrix/vector/proc/project_n(var/matrix/vector/V) +/matrix/proc/project_n(var/matrix/V) var/amt = src.dot(V) a = amt * V.a e = amt * V.e return src -/matrix/vector/proc/reflect(axis) +/matrix/proc/reflect(axis) project(axis) src *= -2 -/matrix/vector/proc/reflect_n(axis) +/matrix/proc/reflect_n(axis) project_n(axis) src *= -2 -/matrix/vector/proc/perp() - RETURN_TYPE(/matrix/vector) - return Turn(90) +/matrix/proc/perp() + RETURN_TYPE(/matrix) + return turn_exclusive(90) -/matrix/vector/proc/copy(var/matrix/vector/V) +/matrix/proc/copy(var/matrix/V) a = V.a e = V.e return src -/matrix/vector/proc/clone() - return new /matrix/vector(a, e) +/matrix/proc/clone() + return new /matrix(a, e) -/matrix/vector/proc/rotate(angle) - return Turn(angle) +/matrix/proc/rotate(angle) + return turn_exclusive(angle) -/matrix/vector/proc/reverse() +/matrix/proc/reverse() return Multiply(-1) +//Only scale the length and not the position +/matrix/proc/scale_exclusive(x,y) + if(y && x) + e = e*y + a = a*x + if(x) //scale all by x if only one value is given + a = a*x + e = e*x + return src + +//Opposite of the above, only scale position numbers +/matrix/proc/scale_position(x,y) + if(y && x) + f = f*y + c = c*x + if(x) + f = f*x + c = c*x + return src + +//Rotate vector around the position only, rotates clockwise like Turn() +/matrix/proc/turn_exclusive(angle=0) + a = e*sin(angle) + a*cos(angle) + e = e*cos(angle) - a*sin(angle) + return src diff --git a/nsv13/code/modules/crew_objectives/engineering_objectives.dm b/nsv13/code/modules/crew_objectives/engineering_objectives.dm index cceed3c9e4e..3b8ebc8ea1e 100644 --- a/nsv13/code/modules/crew_objectives/engineering_objectives.dm +++ b/nsv13/code/modules/crew_objectives/engineering_objectives.dm @@ -69,8 +69,8 @@ explanation_text = "Maintain production of [target_amount] Watts in an engine until the end of the shift." /datum/objective/crew/power_generation/check_completion() - if(SD.last_power_produced >= target_amount) + if(SD?.last_power_produced >= target_amount) return TRUE - if(RBMK.last_power_produced >= target_amount) + if(RBMK?.last_power_produced >= target_amount) return TRUE return FALSE diff --git a/nsv13/code/modules/jobs/job_types/fighter_technician.dm b/nsv13/code/modules/jobs/job_types/fighter_technician.dm index 419a0c9267e..6e7a7d56eb8 100644 --- a/nsv13/code/modules/jobs/job_types/fighter_technician.dm +++ b/nsv13/code/modules/jobs/job_types/fighter_technician.dm @@ -33,7 +33,7 @@ head = /obj/item/clothing/head/helmet/decktech gloves = /obj/item/clothing/gloves/color/brown id = /obj/item/card/id/deck_technician - l_pocket = /obj/item/pda + l_pocket = /obj/item/modular_computer/tablet/pda/munition backpack = /obj/item/storage/backpack/munitions satchel = /obj/item/storage/backpack/satchel/munitions diff --git a/nsv13/code/modules/jobs/job_types/marine/midshipman.dm b/nsv13/code/modules/jobs/job_types/marine/midshipman.dm index 8a89c098285..c96c08c825d 100644 --- a/nsv13/code/modules/jobs/job_types/marine/midshipman.dm +++ b/nsv13/code/modules/jobs/job_types/marine/midshipman.dm @@ -68,3 +68,51 @@ Marine & all their unique stuff! name = "squad medic uniform" desc = "A cheaply made and uncomfortable uniform worn by squad medics. It has a conspicuous blue cross on the back. Shooting its bearer may constitute a war crime." icon_state = "marine_medic" + +/datum/job/assistant/after_spawn(mob/living/carbon/human/H, mob/M) + . = ..() + // Assign department + var/department = M?.client?.prefs?.active_character?.preferred_security_department + if(department == "None") + to_chat(M, "You have not been assigned to any department. Help in any way you can!") + return + else if(!(department in GLOB.available_depts)) + department = pick(GLOB.available_depts) + + var/ears = null + var/accessory = null + var/list/dep_access = null + switch(department) + if(SEC_DEPT_SUPPLY) + ears = /obj/item/radio/headset/headset_cargo + dep_access = list(ACCESS_MAILSORTING, ACCESS_CARGO) + accessory = /obj/item/clothing/accessory/armband/cargo + if(SEC_DEPT_ENGINEERING) + ears = /obj/item/radio/headset/headset_eng + dep_access = list(ACCESS_CONSTRUCTION, ACCESS_ENGINE, ACCESS_AUX_BASE) + accessory = /obj/item/clothing/accessory/armband/engine + if(SEC_DEPT_MEDICAL) + ears = /obj/item/radio/headset/headset_med + dep_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING) + accessory = /obj/item/clothing/accessory/armband/medblue + if(SEC_DEPT_SCIENCE) + ears = /obj/item/radio/headset/headset_sci + dep_access = list(ACCESS_RESEARCH) + accessory = /obj/item/clothing/accessory/armband/science + if(SEC_DEPT_MUNITIONS) + ears = /obj/item/radio/headset/munitions/munitions_tech + dep_access = list(ACCESS_MUNITIONS, ACCESS_MUNITIONS_STORAGE) + accessory = /obj/item/clothing/accessory/armband/munitions + + if(accessory) + var/obj/item/clothing/under/U = H.w_uniform + U.attach_accessory(new accessory) + if(ears) + if(H.ears) + qdel(H.ears) + H.equip_to_slot_or_del(new ears(H), ITEM_SLOT_EARS) + + var/obj/item/card/id/W = H.wear_id + W.access |= dep_access + + to_chat(M, "You have been assigned to [department]!") diff --git a/nsv13/code/modules/jobs/job_types/marine/military_police.dm b/nsv13/code/modules/jobs/job_types/marine/military_police.dm index 0d1da369fcb..2e9e50bddd5 100644 --- a/nsv13/code/modules/jobs/job_types/marine/military_police.dm +++ b/nsv13/code/modules/jobs/job_types/marine/military_police.dm @@ -83,7 +83,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S destination = /area/security/checkpoint/science spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns accessory = /obj/item/clothing/accessory/armband/science - if(SEC_DEPT_MUNITIONS) + if(SEC_DEPT_MUNITIONS) ears = /obj/item/radio/headset/munitions/munitions_security_alt dep_access = list(ACCESS_MUNITIONS, ACCESS_MUNITIONS_STORAGE) accessory = /obj/item/clothing/accessory/armband/munitions @@ -139,7 +139,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S id = /obj/item/card/id/job/security_officer l_pocket = /obj/item/restraints/handcuffs r_pocket = /obj/item/assembly/flash/handheld - backpack_contents = list(/obj/item/ammo_box/magazine/glock, /obj/item/gun/ballistic/tazer, /obj/item/ammo_box/magazine/tazer_cartridge_storage=1,/obj/item/pda/security, /obj/item/book/granter/martial/jujitsu, /obj/item/squad_pager/all_channels, /obj/item/club=1) //NSV13 + backpack_contents = list(/obj/item/ammo_box/magazine/glock, /obj/item/gun/ballistic/tazer, /obj/item/ammo_box/magazine/tazer_cartridge_storage=1,/obj/item/modular_computer/tablet/pda/security, /obj/item/book/granter/martial/jujitsu, /obj/item/squad_pager/all_channels, /obj/item/melee/classic_baton/police=1) //NSV13 backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec @@ -148,7 +148,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S implants = list(/obj/item/implant/mindshield) - chameleon_extras = list(/obj/item/gun/energy/disabler, /obj/item/clothing/glasses/hud/security/sunglasses, /obj/item/clothing/head/helmet) + chameleon_extras = list(/obj/item/gun/energy/e_gun/advtaser, /obj/item/clothing/glasses/hud/security/sunglasses, /obj/item/clothing/head/helmet) //The helmet is necessary because /obj/item/clothing/head/helmet/sec is overwritten in the chameleon list by the standard helmet, which has the same name and icon state diff --git a/nsv13/code/modules/jobs/job_types/master_at_arms.dm b/nsv13/code/modules/jobs/job_types/master_at_arms.dm index 120c46fc791..438644dfafa 100644 --- a/nsv13/code/modules/jobs/job_types/master_at_arms.dm +++ b/nsv13/code/modules/jobs/job_types/master_at_arms.dm @@ -50,8 +50,8 @@ head = /obj/item/clothing/head/ship/maa_hat glasses = /obj/item/clothing/glasses/sunglasses/advanced id = /obj/item/card/id/job/master_at_arms - l_pocket = /obj/item/pda - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) + l_pocket = /obj/item/modular_computer/tablet/pda/heads/maa + backpack_contents = list(/obj/item/melee/classic_baton/police/telescopic=1) backpack = /obj/item/storage/backpack/munitions satchel = /obj/item/storage/backpack/satchel/munitions diff --git a/nsv13/code/modules/jobs/job_types/munitions_technician.dm b/nsv13/code/modules/jobs/job_types/munitions_technician.dm index 96a9c748bd1..c0694020da2 100644 --- a/nsv13/code/modules/jobs/job_types/munitions_technician.dm +++ b/nsv13/code/modules/jobs/job_types/munitions_technician.dm @@ -37,7 +37,7 @@ head = /obj/item/clothing/head/helmet/decktech gloves = /obj/item/clothing/gloves/color/brown id = /obj/item/card/id/job/munitions_technician - l_pocket = /obj/item/pda + l_pocket = /obj/item/modular_computer/tablet/pda/munition backpack = /obj/item/storage/backpack/munitions satchel = /obj/item/storage/backpack/satchel/munitions diff --git a/nsv13/code/modules/jobs/security/martial_art.dm b/nsv13/code/modules/jobs/security/martial_art.dm index af918d05cd2..76f88c0170d 100644 --- a/nsv13/code/modules/jobs/security/martial_art.dm +++ b/nsv13/code/modules/jobs/security/martial_art.dm @@ -1,7 +1,7 @@ #define MARTIALART_JUJITSU "ju jitsu" - -#define TAKEDOWN_COMBO "DD" -#define JUDO_THROW "DHHG" +#define TAKEDOWN_COMBO "DG" +#define JUDO_THROW "HHG" +#define ARMLOCKING "DHGG" /obj/item/book/granter/martial/jujitsu martial = /datum/martial_art/jujitsu @@ -37,8 +37,11 @@ set desc = "Remember your police academy martial arts training." set category = "Jujitsu" to_chat(usr, "Combos:") - to_chat(usr, "Disarm, disarm will perform a takedown on the target, if they have been slowed / weakened first") - to_chat(usr, "Disarm, harm, harm, grab will execute a judo throw on the target,landing you on top of them in a pinning position. Provided that you have a grab on them on the final step...") + to_chat(usr, "Disarm, Grab will perform a takedown on the target, if they have been slowed / weakened first") + to_chat(usr, "Harm, Harm, Grab will execute a judo throw on the target,landing you on top of them in a pinning position. Provided that you have a grab on them on the final step...") + to_chat(usr, "Disarm, Harm, Grab, Grab will execute an armlock on the target, throwing you both to the ground. You however have more maneuverability than the perp from this position.") + + to_chat(usr, "In addition, you also have a small window of opportunity to forcefully grab the perp during armlock.") /datum/martial_art/jujitsu/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) if(findtext(streak,TAKEDOWN_COMBO)) @@ -49,6 +52,10 @@ streak = "" judo_throw(A,D) return TRUE + if(findtext(streak,ARMLOCKING)) + streak = "" + armlocking(A, D) + return TRUE return FALSE /datum/martial_art/jujitsu/proc/takedown(mob/living/carbon/human/A, mob/living/carbon/human/D) @@ -61,12 +68,15 @@ A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] trips [D] up and pins them to the ground!", "[A] is pinning you to the ground!") playsound(get_turf(D), 'nsv13/sound/effects/judo_throw.ogg', 100, TRUE) - D.Paralyze(7 SECONDS) //Equivalent to a clown PDA + D.Paralyze(2 SECONDS) + D.Knockdown(7 SECONDS) A.shake_animation(10) - D.shake_animation(10) + D.shake_animation(20) + D.adjustOxyLoss(10) // you smashed him into the ground A.forceMove(get_turf(D)) - A.start_pulling(D, supress_message = FALSE) - A.setGrabState(GRAB_AGGRESSIVE) + if(A.mobility_flags & MOBILITY_STAND) //Fixes permanent slowdown + A.start_pulling(D, supress_message = FALSE) + A.setGrabState(GRAB_AGGRESSIVE) last_move = world.time /datum/martial_art/jujitsu/proc/judo_throw(mob/living/carbon/human/A, mob/living/carbon/human/D) @@ -81,25 +91,78 @@ target = get_turf(A) D.forceMove(target) A.setDir(newdir) - A.start_pulling(D, supress_message = FALSE) - A.setGrabState(GRAB_AGGRESSIVE) + D.dropItemToGround(D.get_active_held_item()) // yeet + if(A.mobility_flags & MOBILITY_STAND) //Fixes permanent slowdown + A.start_pulling(D, supress_message = FALSE) + A.setGrabState(GRAB_AGGRESSIVE) + D.adjustOxyLoss(40) // YOU THREW HIM, THREW HIM!! D.Paralyze(7 SECONDS) //Equivalent to a clown PDA D.visible_message("[A] throws [D] over their shoulder and pins them down!", "[A] throws you over their shoulder and pins you to the ground!") playsound(get_turf(D), 'nsv13/sound/effects/judo_throw.ogg', 100, TRUE) last_move = world.time +// Armlock state removal after 5s +/datum/martial_art/jujitsu/proc/drop_armlocking() + armlockstate = FALSE + +// Armlock +/datum/martial_art/jujitsu/proc/armlocking(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!can_use(A)) + return FALSE + if(world.time < last_move+cooldown) + to_chat(A, "You're too fatigued to perform this move right now...") + return FALSE + if(!D.stat) + D.visible_message("[A] locks [D] into a armlock position!", \ + "[A] locks you into a armlock position!") + A.Knockdown(20) // knockdown officer with the perp + A.adjustStaminaLoss(15) + D.adjustStaminaLoss(30) + D.Paralyze(70) + D.shake_animation(50) + A.start_pulling(D, supress_message = FALSE) + armlockstate = TRUE + addtimer(CALLBACK(src, PROC_REF(drop_armlocking)), 50, TIMER_UNIQUE) // you get 3 seconds after standing up to grab the perp + A.do_attack_animation(D, ATTACK_EFFECT_DISARM) + playsound(get_turf(D), 'nsv13/sound/effects/judo_throw.ogg', 100, TRUE) + last_move = world.time + return TRUE + /datum/martial_art/jujitsu/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE if(A==D) return FALSE //prevents grabbing yourself - if(A.a_intent == INTENT_GRAB) + if(A.a_intent == INTENT_GRAB && A.mobility_flags & MOBILITY_STAND) //Fixes permanent slowdown and missfire + if(armlockstate == TRUE) // neck grabs if armlocked + A.setGrabState(GRAB_NECK) + D.visible_message("[A] grabs [D] from the armlock position by the neck!", \ + "[A] grabs you from the armlock position by the neck!") + armlockstate = FALSE add_to_streak("G",D) if(check_streak(A,D)) //doing combos is prioritized over upgrading grabs return TRUE return FALSE /datum/martial_art/jujitsu/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected)) + var/def_check = D.getarmor(BODY_ZONE_CHEST, "melee") + var/bonus_damage = 0 + if((armlockstate == TRUE)) // disable chosen arm temporarily when armlocked + if(A.zone_selected == BODY_ZONE_L_ARM) + D.apply_damage(100, STAMINA, BODY_ZONE_L_ARM, def_check) + D.visible_message("[A] has cracked [D]'s arm!", "[A] cracks your arm, causing a coursing pain!") + armlockstate = FALSE + if(A.zone_selected == BODY_ZONE_R_ARM) + D.apply_damage(100, STAMINA, BODY_ZONE_R_ARM, def_check) + D.visible_message("[A] has cracked [D]'s arm!", "[A] cracks your arm, causing a coursing pain!") + armlockstate = FALSE + return FALSE + if((A.grab_state >= GRAB_AGGRESSIVE)) + bonus_damage += 5 + D.apply_damage(rand(2,3) + bonus_damage, A.dna.species.attack_type, affecting, def_check) // bonus damage when grabbing at least aggressively if required to kill + if((D.mobility_flags & MOBILITY_STAND)) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) // makes punch be default if he's standing if(!can_use(A)) return FALSE add_to_streak("H",D) @@ -108,6 +171,19 @@ return FALSE /datum/martial_art/jujitsu/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + var/bonus_stam = 0 + if((A.grab_state >= GRAB_AGGRESSIVE)) // If you shove during agressive grab it deals bonus stam + bonus_stam = 20 + if(!(D.mobility_flags & MOBILITY_STAND)) // If you shove while perp is on ground and aggressive grabbing, it deals even more stam + bonus_stam += 10 + D.adjustStaminaLoss(10 + bonus_stam) // deals minor stam damage with scaling dependant on grab and perp standing + A.do_attack_animation(D, ATTACK_EFFECT_DISARM) + if(A.pulling == D && A.grab_state >= GRAB_NECK) // LV3 hold minimum + D.visible_message("[A] puts [D] into a chokehold!", \ + "[A] puts you into a chokehold!") + playsound(get_turf(D), 'nsv13/sound/weapons/chokehold.ogg', 50, 1, 1) + D.SetSleeping(200) + return FALSE if(!can_use(A)) return FALSE add_to_streak("D",D) diff --git a/nsv13/code/modules/jobs/security/weapons.dm b/nsv13/code/modules/jobs/security/weapons.dm index 83417424838..12bc53b086e 100644 --- a/nsv13/code/modules/jobs/security/weapons.dm +++ b/nsv13/code/modules/jobs/security/weapons.dm @@ -75,6 +75,9 @@ mag_type = /obj/item/ammo_box/magazine/m45 can_suppress = FALSE +/obj/item/ammo_box/c45/m45 // .45 ammobox intended for m1911 + max_ammo = 24 + /datum/design/gulagpack name = "Gulagpack" id = "gulagpack" @@ -96,6 +99,26 @@ icon_state = "commandglock" full_auto = TRUE requires_wielding = FALSE //While the HoS's upgraded energy gun gets a ion setting, Winona gets to fire with one hand without decreased accuracy. + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF + investigate_flags = ADMIN_INVESTIGATE_TARGET + +/datum/design/lethal9mm + name = "9mm Ammo Box" + id = "glock_lethalammo" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 30000) + build_path = /obj/item/ammo_box/c9mm + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/lethalglockmag + name = "Glock Magazine" + id = "glock_lethalmag" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 16500) + build_path = /obj/item/ammo_box/magazine/glock/lethal + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY /datum/design/rubbershot name = "9mm rubber Glock round" @@ -105,6 +128,60 @@ build_path = /obj/item/ammo_casing/c9mm/rubber category = list("initial", "Security") +/datum/design/rubber9mm + name = "9mm Ammo Box (Rubber)" + id = "glock_rubberammo" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 25000) + build_path = /obj/item/ammo_box/c9mm/rubber + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/glockmag + name = "Glock Magazine (Rubber)" + id = "glock_rubbermag" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 14000) + build_path = /obj/item/ammo_box/magazine/glock + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/ap9mm + name = "9mm Ammo Box (Armour Piercing)" + id = "glock_apammo" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 25000, /datum/material/titanium = 4000, /datum/material/silver = 1000) + build_path = /obj/item/ammo_box/c9mm/ap + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/apglockmag + name = "Glock Magazine (Armour Piercing)" + id = "glock_apmag" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 14000, /datum/material/titanium = 150, /datum/material/silver = 150) + build_path = /obj/item/ammo_box/magazine/glock/ap + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/inc9mm + name = "9mm Ammo box (Incendiary)" + id = "glock_incammo" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 25000, /datum/material/plasma = 4000, /datum/material/glass = 500, /datum/material/gold = 500) + build_path = /obj/item/ammo_box/c9mm/inc + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/incglockmag + name = "Glock Magazine (Incendiary)" + id = "glock_incmag" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 14000, /datum/material/plasma = 150, /datum/material/glass = 50, /datum/material/gold = 50) + build_path = /obj/item/ammo_box/magazine/glock/inc + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + /datum/design/tazer name = "3mm electro-shock tazer round" id = "tazer_ammo" @@ -129,10 +206,38 @@ caliber = "9mm" max_ammo = 15 +/obj/item/ammo_box/magazine/glock/ap + name = "pistol magazine (9mm Armour Piercing)" + desc = "Loaded with titanium tipped bullets that excel in dealing with armored hostile threats onboard or offboard the ship." + icon_state = "Glock-ap" + ammo_type = /obj/item/ammo_casing/c9mm/ap + caliber = "9mm" + max_ammo = 15 + +/obj/item/ammo_box/magazine/glock/inc + name = "pistol magazine (9mm Incendiary)" + desc = "Loaded with plasma tipped bullets that excel in setting any living target on fire." + icon_state = "Glock-lethal" + ammo_type = /obj/item/ammo_casing/c9mm/inc + caliber = "9mm" + max_ammo = 15 + /obj/item/ammo_box/magazine/glock/update_icon() ..() icon_state = "[initial(icon_state)][ammo_count() ? "" : "-0"]" +/obj/item/ammo_box/c9mm/ap // for colouring + name = "ammo box (9mm Armour Piercing)" + icon_state = "45box" + ammo_type = /obj/item/ammo_casing/c9mm/ap + max_ammo = 30 + +/obj/item/ammo_box/c9mm/inc + name = "ammo box (9mm Incendiary)" + icon_state = "10mmbox" + ammo_type = /obj/item/ammo_casing/c9mm/inc + max_ammo = 30 + /obj/item/ammo_casing/c9mm/rubber name = "9mm rubber bullet casing" desc = "A 9mm rubber bullet casing." @@ -140,7 +245,7 @@ projectile_type = /obj/item/projectile/bullet/c9mm/rubber /obj/item/ammo_box/c9mm/rubber - name = "ammo box (9mm, rubber)" + name = "ammo box (9mm Rubber)" icon_state = "9mmbox" ammo_type = /obj/item/ammo_casing/c9mm/rubber max_ammo = 30 @@ -213,3 +318,41 @@ M.set_heartattack(TRUE) M.reagents.add_reagent(/datum/reagent/medicine/corazone, 3) // To give the victim a final chance to shock their heart before losing consciousness . = ..() + + +//Secborg guns +/obj/item/gun/energy/printer/taser + name = "Cyborg X25 Taser" + desc = "A stunning weapon developed by Czanek Corp. It can deliver an extremely powerful electric shock via a specialised electrode, the electrodes are resupplied using the cyborg's internal power source. It has an effective range of 2 meters" + icon = 'nsv13/icons/obj/guns/projectile.dmi' + icon_state = "taser" + recoil = 2 //BZZZZTTTTTTT + ammo_type = list(/obj/item/ammo_casing/energy/taser) + automatic = FALSE + fire_rate = 0.2 + +/obj/item/ammo_casing/energy/taser + projectile_type = /obj/item/projectile/energy/electrode/hitscan + select_name = "electrode" + fire_sound = 'sound/weapons/zapbang.ogg' + firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect + e_cost = 600 //uses a lot more energy + +/obj/item/gun/energy/printer/glock + name = "Cyborg Glock-13BR" + desc = "An integrated 9mm handgun for use by Nanotrasen security cyborgs. Designed to fire lethal bullets" + icon = 'nsv13/icons/obj/guns/projectile.dmi' + icon_state = "secborgglock" + ammo_type = list(/obj/item/ammo_casing/energy/c9mmbullet/rubber, /obj/item/ammo_casing/energy/c9mmbullet) //Switch between lethal or rubber bullets with attack_self + automatic = FALSE + fire_rate = 2 + +/obj/item/ammo_casing/energy/c9mmbullet + projectile_type = /obj/item/projectile/bullet/c9mm + select_name = "9mm" + fire_sound = 'nsv13/sound/weapons/glock.ogg' + firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect + +/obj/item/ammo_casing/energy/c9mmbullet/rubber + projectile_type = /obj/item/projectile/bullet/c9mm/rubber + select_name = "9mm (Rubber)" diff --git a/nsv13/code/modules/mob/dead/new_player/sprite_accessories.dm b/nsv13/code/modules/mob/dead/new_player/sprite_accessories.dm new file mode 100644 index 00000000000..603431e0bb2 --- /dev/null +++ b/nsv13/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -0,0 +1,20 @@ + +/datum/sprite_accessory/undershirt/munitions + icon = 'nsv13/icons/mob/underwear.dmi' + name = "Shirt (Munitions)" + icon_state = "shirt_mun" + +/datum/sprite_accessory/undershirt/tank_munitions + icon = 'nsv13/icons/mob/underwear.dmi' + name = "Tank Top (Munitions)" + icon_state = "tank_mun" + +/datum/sprite_accessory/socks/munitions_thigh + icon = 'nsv13/icons/mob/underwear.dmi' + name = "Thigh-high (Munitions)" + icon_state = "mun_thigh" + +/datum/sprite_accessory/socks/munitions_knee + icon = 'nsv13/icons/mob/underwear.dmi' + name = "Knee-high (Munitions)" + icon_state = "mun_knee" diff --git a/nsv13/code/modules/mob/living/carbon/carbon.dm b/nsv13/code/modules/mob/living/carbon/carbon.dm index 1980d44d979..e343ce02b7d 100644 --- a/nsv13/code/modules/mob/living/carbon/carbon.dm +++ b/nsv13/code/modules/mob/living/carbon/carbon.dm @@ -2,10 +2,10 @@ // resides in it's own proc just in case we've already got a trait checked list /mob/living/proc/gravity_crush(gravity, harmlev = 1) var/range - var/Oloss = gravity * rand(1, 1.3) + var/Oloss = gravity * (rand(10, 13) * 0.1) //Rand with min-maxbound only creates whole numbers. switch(harmlev) if(1) // high G (i.e hacked gravity generator) - range = rand(1, 25) + range = rand(3, 25) //Low intensity high-grav doesn't knock you out flat. if(2) // Very high G (i.e fighter high G burns) range = rand(1, 16) Oloss *= 0.5 @@ -17,9 +17,9 @@ switch(range) if(1 to 2) - losebreath += 0.8 + gravity/3 - if(3 to 4) Sleeping(10 + losebreath * 3) + if(3 to 4) + losebreath += 0.8 + gravity/3 if(5 to 7) if(!IsKnockdown()) Knockdown(gravity * 5) @@ -46,6 +46,18 @@ to_chat(src, "You struggle to catch a breath.") /mob/living/carbon/handle_high_gravity(gravity) - if(HAS_TRAIT(src, TRAIT_GFORCE_WEAKNESS)) - gravity_crush(gravity) + if(HAS_TRAIT(src, TRAIT_GFORCE_WEAKNESS) || gravity > GRAVITY_DAMAGE_TRESHOLD) + var/harmlev_level = 1 + switch(gravity) + if(1 to 4) //A bunch of science journals say above ~4G gets not very fun but our game starts having grav damage at >3G, so low-intensity internal damage it is + harmlev_level = 1 + if(4 to 8) + harmlev_level = 2 + if(8 to INFINITY) //We're entering the bone zone of gravity. + harmlev_level = 3 + else + var/effective_gravity = gravity + if(!HAS_TRAIT(src, TRAIT_GFORCE_WEAKNESS)) + effective_gravity -= GRAVITY_DAMAGE_TRESHOLD //For non-grav-weak people, your gravity tolerance is substracted from the pain. + gravity_crush(effective_gravity, harmlev_level) ..() diff --git a/nsv13/code/modules/mob/living/carbon/examine_tgui.dm b/nsv13/code/modules/mob/living/carbon/examine_tgui.dm new file mode 100644 index 00000000000..9dbb9c97951 --- /dev/null +++ b/nsv13/code/modules/mob/living/carbon/examine_tgui.dm @@ -0,0 +1,63 @@ +/datum/examine_panel + /// Mob that the examine panel belongs to. + var/mob/living/holder + /// The screen containing the appearance of the mob + var/atom/movable/screen/examine_panel_screen/examine_panel_screen + +/datum/examine_panel/ui_state(mob/user) + return GLOB.always_state + + +/datum/examine_panel/ui_close(mob/user) + user.client.clear_map(examine_panel_screen.assigned_map) + + +/atom/movable/screen/examine_panel_screen + name = "examine panel screen" + +/datum/examine_panel/ui_interact(mob/user, datum/tgui/ui) + if(!examine_panel_screen) + examine_panel_screen = new + examine_panel_screen.name = "screen" + examine_panel_screen.assigned_map = "examine_panel_[REF(holder)]_map" + examine_panel_screen.del_on_map_removal = FALSE + examine_panel_screen.screen_loc = "[examine_panel_screen.assigned_map]:1,1" + + var/mutable_appearance/current_mob_appearance = new(holder) + current_mob_appearance.setDir(SOUTH) + current_mob_appearance.transform = matrix() // We reset their rotation, in case they're lying down. + + // In case they're pixel-shifted, we bring 'em back! + current_mob_appearance.pixel_x = 0 + current_mob_appearance.pixel_y = 0 + + examine_panel_screen.cut_overlays() + examine_panel_screen.add_overlay(current_mob_appearance) + + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + user.client.register_map_obj(examine_panel_screen) + ui = new(user, src, "ExaminePanel") + ui.open() + +/datum/examine_panel/ui_data(mob/user) + var/list/data = list() + + var/flavor_text + var/obscured + + if(issilicon(holder)) + flavor_text = user.client.prefs.active_character.silicon_flavor_text + + if(ishuman(holder)) + var/mob/living/carbon/human/holder_human = holder + obscured = (holder_human.wear_mask && (holder_human.wear_mask.flags_inv & HIDEFACE)) || (holder_human.head && (holder_human.head.flags_inv & HIDEFACE)) + flavor_text = obscured ? "Obscured" : holder_human.flavour_text + + var/name = obscured ? "Unknown" : holder.name + + data["obscured"] = obscured ? TRUE : FALSE + data["character_name"] = name + data["assigned_map"] = examine_panel_screen.assigned_map + data["flavor_text"] = flavor_text + return data diff --git a/nsv13/code/modules/mob/living/carbon/human/human.dm b/nsv13/code/modules/mob/living/carbon/human/human.dm new file mode 100644 index 00000000000..9a1b61d44fa --- /dev/null +++ b/nsv13/code/modules/mob/living/carbon/human/human.dm @@ -0,0 +1,11 @@ +/mob/living/carbon/human/handle_high_gravity(gravity) + if(!wear_suit || !head) + return ..() + if(!istype(wear_suit, /obj/item/clothing/suit/space/hardsuit) || !istype(head, /obj/item/clothing/head/helmet/space/hardsuit)) + return ..() + if(istype(wear_suit, /obj/item/clothing/suit/space/hardsuit/skinsuit) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/skinsuit)) //I dislike these being hardsuit subtypes. + return ..() + gravity -= 1 //Wearing a full hardsuit gives you 1G of bonus grav tolerance, at least in how much your body can withstand. Movement is very difficult regardless. + if(gravity <= 1) //This is fine. + return + return ..() diff --git a/nsv13/code/modules/mob/living/carbon/human/nsv_human_helpers.dm b/nsv13/code/modules/mob/living/carbon/human/nsv_human_helpers.dm new file mode 100644 index 00000000000..c54880f6993 --- /dev/null +++ b/nsv13/code/modules/mob/living/carbon/human/nsv_human_helpers.dm @@ -0,0 +1,25 @@ +/** + * # `species_examine_font()` + * + * This gets a humanoid's special examine font, which is used to color their species name during examine / health analyzing. + * The first of these that applies is returned. + * Returns: + * * Metallic font if robotic + * * Cyan if a toxinlover + * * Yellow-ish if an Ethereal + * * Purple if plasmaperson + * * Rock / Brownish if a golem + * * Green if none of the others apply (aka, generic organic) +*/ +/mob/living/carbon/human/proc/species_examine_font() + if((MOB_ROBOTIC in mob_biotypes)) + return "sc_robotic" + if(HAS_TRAIT(src, TRAIT_TOXINLOVER)) + return "sc_toxlover" + if(isethereal(src)) + return "sc_ethereal" + if(isplasmaman(src)) + return "sc_plasmaman" + if(isgolem(src)) + return "sc_golem" + return "sc_normal" diff --git a/nsv13/code/modules/mob/living/carbon/human/species_types/catgirl.dm b/nsv13/code/modules/mob/living/carbon/human/species_types/catgirl.dm new file mode 100644 index 00000000000..45b02d24912 --- /dev/null +++ b/nsv13/code/modules/mob/living/carbon/human/species_types/catgirl.dm @@ -0,0 +1,71 @@ +/datum/ai_controller/monkey/angry/slow + movement_delay = 1 SECONDS + +/mob/living/carbon/human/species/felinid/npc + ai_controller = /datum/ai_controller/monkey/angry/slow + faction = list("Syndicate","Pirate") + +/mob/living/carbon/human/species/felinid/npc/Initialize(mapload) + . = ..() + randomize_human(src) + equipOutfit(/datum/outfit/maid) + var/obj/item/organ/tail/tail = getorganslot(ORGAN_SLOT_TAIL) + if(tail) + tail.set_wagging(src, TRUE) + +/mob/living/carbon/human/ai_boarder/assistant/felinid + outfit = list(/datum/outfit/maid, /datum/outfit/maid/knpc_pistol, /datum/outfit/maid/knpc_smg) + taunts = list( + "Tee hee!~ UwU", + "Nya. I'm youw boawderw. Pwepawe to be pawned!", + "Hiss!" + ) + call_lines = list( + "I nyeed backuwp!", + "Fwends, come hewe!" + ) + response_lines = list( + "Nya~? What's ovew hewe?", + "Be wight thewe! =^.^=" + ) + + faction = list("Syndicate","Pirate") + +/mob/living/carbon/human/ai_boarder/assistant/felinid/Initialize(mapload) + . = ..() + var/obj/item/organ/tail/tail = getorganslot(ORGAN_SLOT_TAIL) + if(tail) + tail.set_wagging(src, TRUE) + +/mob/living/carbon/human/ai_boarder/assistant/felinid/smg + +// Can't believe this didn't exist already +/datum/outfit/maid + name = "Maid (KNPC)" + head = /obj/item/clothing/head/maidheadband + ears = /obj/item/radio/headset/syndicate/alt + uniform = /obj/item/clothing/under/costume/maid + gloves = /obj/item/clothing/gloves/maid + neck = /obj/item/clothing/neck/maid + shoes = /obj/item/clothing/shoes/jackboots + id = /obj/item/card/id/job/assistant + back = /obj/item/storage/backpack/duffelbag/syndie + backpack_contents = list(/obj/item/storage/toolbox/syndicate) + +/datum/outfit/maid/knpc_pistol + name = "Maid - Pistol (KNPC)" + l_pocket = /obj/item/reagent_containers/hypospray/medipen/survival + r_pocket = /obj/item/gun/ballistic/automatic/pistol + belt = /obj/item/storage/belt/utility/syndicate + back = /obj/item/storage/backpack/duffelbag/syndie + backpack_contents = list(/obj/item/storage/box/syndie=1, /obj/item/gun/ballistic/automatic/pistol=1, /obj/item/ammo_box/magazine/m10mm=5) + can_be_admin_equipped = FALSE // This presents problems + +/datum/outfit/maid/knpc_smg + name = "Maid - SMG (KNPC)" + l_pocket = /obj/item/reagent_containers/hypospray/medipen/survival + r_pocket = /obj/item/gun/ballistic/automatic/pistol + belt = /obj/item/storage/belt/utility/syndicate + back = /obj/item/storage/backpack/duffelbag/syndie + backpack_contents = list(/obj/item/storage/box/syndie=1, /obj/item/gun/ballistic/automatic/c20r=1, /obj/item/ammo_box/magazine/smgm45=5) + can_be_admin_equipped = FALSE // This presents problems diff --git a/nsv13/code/modules/mob/living/silicon/ai/custom_holoform.dm b/nsv13/code/modules/mob/living/silicon/ai/custom_holoform.dm new file mode 100644 index 00000000000..249c54f0772 --- /dev/null +++ b/nsv13/code/modules/mob/living/silicon/ai/custom_holoform.dm @@ -0,0 +1,28 @@ +/mob/living/silicon/ai/verb/clear_custom_holoform() + set name = "Clear Custom Holoform" + set desc = "Clear your current custom holoform" + set category = "AI Commands" + + if(!client.prefs) + to_chat(src, "No preferences datum on your client, contact an admin/coder!") + return + client.prefs.custom_holoform_icon = null + client.prefs.cached_holoform_icons = null + to_chat(src, "Holoform removed.") + +/mob/living/silicon/ai/verb/set_custom_holoform() + set name = "Set Custom Holoform" + set desc = "Set your custom holoform using your current preferences slot and a specified set of gear." + set category = "AI Commands" + + if(!client.prefs) + to_chat(src, "No preferences datum on your client, contact an admin/coder!") + return + if(client.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) + to_chat(src, "You are attempting to change custom holoforms too fast!") + var/icon/new_holoform = user_interface_custom_holoform(client) + if(new_holoform) + client.prefs.custom_holoform_icon = new_holoform + client.prefs.cached_holoform_icons = null + client.prefs.last_custom_holoform = world.time + to_chat(src, "Holoform set.") diff --git a/nsv13/code/modules/mob/living/silicon/ai/track.dm b/nsv13/code/modules/mob/living/silicon/ai/track.dm new file mode 100644 index 00000000000..673e7760b62 --- /dev/null +++ b/nsv13/code/modules/mob/living/silicon/ai/track.dm @@ -0,0 +1,83 @@ +GLOBAL_DATUM_INIT(tracking_menu, /datum/track_menu, new) + +/datum/track_menu + /// List of user -> UI source + var/list/ui_sources = list() + + var/static/list/mob_allowed_typecache + +/datum/track_menu/ui_state(mob/user) + return GLOB.default_state + +/datum/track_menu/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Tracking") + ui.open() + ui.set_autoupdate(TRUE) + +/datum/track_menu/proc/show(mob/user, source) + ui_sources[WEAKREF(user)] = source + ui_interact(user) + +/datum/track_menu/ui_host(mob/user) + return ui_sources[WEAKREF(user)] + +/datum/track_menu/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + if (..()) + return + + switch(action) + if("track") + var/ref = params["name"] + var/mob/living/silicon/ai/AI = usr + for(var/target in AI.trackable_mobs()) + if(target == ref) + AI.ai_camera_track(target) + return TRUE + if("refresh") + update_static_data(usr, ui) + return TRUE + +/datum/track_menu/ui_static_data(mob/user) + var/list/carbon = list() + var/list/simple_mob = list() + + var/mob/living/silicon/ai/AI = user + var/list/pois = AI.trackable_mobs() + for(var/name in pois) + var/list/serialized = list() + serialized["name"] = name + + var/poi = pois[name] + + serialized["ref"] = REF(poi) + + var/datum/weakref/target = poi + var/mob/mob_poi = target?.resolve() + if(istype(mob_poi)) + if(mob_poi.mind == null) + simple_mob += list(serialized) + else if(istype(mob_poi, /mob/living/carbon/human)) + var/mob/living/carbon/human/player = mob_poi + var/nanite_sensors = HAS_TRAIT(player, TRAIT_NANITE_SENSORS) + var/obj/item/clothing/under/uniform = player.w_uniform + if(nanite_sensors || uniform.sensor_mode >= SENSOR_VITALS) + serialized["health"] = FLOOR((player.health / player.maxHealth * 100), 1) + + var/obj/item/card/id/identification_card = mob_poi.get_idcard() + if(identification_card) + serialized["job"] = identification_card.assignment + serialized["role_icon"] = "hud[ckey(identification_card.GetJobIcon())]" + + carbon += list(serialized) + + return list( + "carbon" = carbon, + "simple_mob" = simple_mob, + ) + +/datum/track_menu/ui_assets() + . = ..() || list() + . += get_asset_datum(/datum/asset/simple/orbit) + . += get_asset_datum(/datum/asset/spritesheet/job_icons) diff --git a/nsv13/code/modules/mob/living/silicon/robot/cargoborg_items.dm b/nsv13/code/modules/mob/living/silicon/robot/cargoborg_items.dm new file mode 100644 index 00000000000..1e4504a3e26 --- /dev/null +++ b/nsv13/code/modules/mob/living/silicon/robot/cargoborg_items.dm @@ -0,0 +1,341 @@ +/// CARGO BORGS /// +#define CYBORG_FONT "Consolas" +#define MAX_PAPER_INTEGRATED_CLIPBOARD 10 + +/obj/item/pen/cyborg + name = "integrated pen" + font = CYBORG_FONT + desc = "You can almost hear the sound of gears grinding against one another as you write with this pen. Almost." + +/obj/item/clipboard/cyborg + name = "\improper integrated clipboard" + desc = "A clipboard which seems to come adapted with a paper synthetizer, carefully hidden in its paper clip." + integrated_pen = TRUE + /// When was the last time the printer was used? + COOLDOWN_DECLARE(printer_cooldown) + /// How long is the integrated printer's cooldown? + var/printer_cooldown_time = 10 SECONDS + /// How much charge is required to print a piece of paper? + var/paper_charge_cost = 50 + +/obj/item/clipboard/cyborg/Initialize(mapload) + . = ..() + pen = new /obj/item/pen/cyborg + +/obj/item/clipboard/cyborg/examine() + . = ..() + . += "Alt-click to synthetize a piece of paper." + if(!COOLDOWN_FINISHED(src, printer_cooldown)) + . += "Its integrated paper synthetizer seems to still be on cooldown." + +/obj/item/clipboard/cyborg/AltClick(mob/user) + if(!iscyborg(user)) + to_chat(user, "You do not seem to understand how to use [src].") + return + var/mob/living/silicon/robot/cyborg_user = user + // Not enough charge? Tough luck. + if(cyborg_user?.cell.charge < paper_charge_cost) + to_chat(user, "Your internal cell doesn't have enough charge left to use [src]'s integrated printer.") + return + // Check for cooldown to avoid paper spamming + if(COOLDOWN_FINISHED(src, printer_cooldown)) + // If there's not too much paper already, let's go + if(!toppaper_ref || length(contents) < MAX_PAPER_INTEGRATED_CLIPBOARD) + cyborg_user.cell.use(paper_charge_cost) + COOLDOWN_START(src, printer_cooldown, printer_cooldown_time) + var/obj/item/paper/new_paper = new /obj/item/paper + new_paper.forceMove(src) + if(toppaper_ref) + var/obj/item/paper/toppaper = toppaper_ref?.resolve() + UnregisterSignal(toppaper, COMSIG_ATOM_UPDATED_ICON) + RegisterSignal(new_paper, COMSIG_ATOM_UPDATED_ICON, PROC_REF(on_top_paper_change)) + toppaper_ref = WEAKREF(new_paper) + update_appearance() + to_chat(user, "[src]'s integrated printer whirs to life, spitting out a fresh piece of paper and clipping it into place.") + else + to_chat(user, "[src]'s integrated printer refuses to print more paper, as [src] already contains enough paper.") + else + to_chat(user, "[src]'s integrated printer refuses to print more paper, its bluespace paper synthetizer not having finished recovering from its last synthesis.") + +/obj/item/hand_labeler/cyborg + name = "integrated hand labeler" + labels_left = 9000 // I don't want to bother forcing them to recharge, honestly, that's a lot of code for a very niche functionality + +// The clamps +/obj/item/borg/hydraulic_clamp + name = "integrated hydraulic clamp" + desc = "A neat way to lift and move around few small packages for quick and painless deliveries!" + icon = 'icons/mecha/mecha_equipment.dmi' // Just some temporary sprites because I don't have any unique one yet + icon_state = "mecha_clamp" + /// How much power does it draw per operation? + var/charge_cost = 20 + /// How many items can it hold at once in its internal storage? + var/storage_capacity = 5 + /// Does it require the items it takes in to be wrapped in paper wrap? Can have unforeseen consequences, change to FALSE at your own risks. + var/whitelisted_contents = TRUE + /// What kind of wrapped item can it hold, if `whitelisted_contents` is set to true? + var/list/whitelisted_item_types = list(/obj/item/small_delivery) + /// A short description used when the check to pick up something has failed. + var/whitelisted_item_description = "small wrapped packages" + /// Weight limit on the items it can hold. Leave as NONE if there isn't. + var/item_weight_limit = WEIGHT_CLASS_NORMAL + /// Can it hold mobs? (Dangerous, it is recommended to leave this to FALSE) + var/can_hold_mobs = FALSE + /// Audio for using the hydraulic clamp. + var/clamp_sound = 'sound/mecha/hydraulic.ogg' + /// Volume of the clamp's loading and unloading noise. + var/clamp_sound_volume = 25 + /// Cooldown for the clamp. + COOLDOWN_DECLARE(clamp_cooldown) + /// How long is the clamp on cooldown for after every usage? + var/cooldown_duration = 0.5 SECONDS + /// How long does it take to load in an item? + var/loading_time = 2 SECONDS + /// How long does it take to unload an item? + var/unloading_time = 1 SECONDS + /// Is it currently in use? + var/in_use = FALSE + /// Index of the item we want to take out of the clamp, 0 if nothing selected. + var/selected_item_index = 0 + /// Weakref to the cyborg we're currently connected to. + var/datum/weakref/cyborg_holding_me + +/obj/item/borg/hydraulic_clamp/Initialize(mapload) + . = ..() + if(!istype(loc, /obj/item/robot_module)) + return + + var/obj/item/robot_module/holder_module = loc + cyborg_holding_me = WEAKREF(holder_module.robot) + + RegisterSignal(holder_module.robot, COMSIG_MOB_DEATH, PROC_REF(empty_contents)) + +/obj/item/borg/hydraulic_clamp/Destroy() + var/mob/living/silicon/robot/robot_holder = cyborg_holding_me?.resolve() + if(robot_holder) + UnregisterSignal(robot_holder, COMSIG_MOB_DEATH) + return ..() + +/obj/item/borg/hydraulic_clamp/examine(mob/user) + . = ..() + . += "It's cargo hold has a capacity of [storage_capacity] and is currently holding [contents.len ? contents.len : 0] items in it!" + if(storage_capacity > 1) + . += "Use in hand to select an item you want to prioritize taking out of the storage." + +/// A simple proc to empty the contents of the hydraulic clamp, forcing them on the turf it's on. Also forces `selected_item_index` to 0, to avoid any possible issues resulting from it. +/obj/item/borg/hydraulic_clamp/proc/empty_contents() + SIGNAL_HANDLER + + selected_item_index = 0 + var/spilled_amount = 0 + var/turf/turf_of_clamp = get_turf(src) + for(var/atom/movable/item in contents) + item.forceMove(turf_of_clamp) + spilled_amount++ + + if(spilled_amount) + var/holder = cyborg_holding_me?.resolve() + if(holder) + visible_message("[cyborg_holding_me?.resolve()] spills the content of [src]'s cargo hold all over the floor!") + +/obj/item/borg/hydraulic_clamp/attack_self(mob/user) + if(storage_capacity <= 1) // No need for selection if there's one or less item at maximum in the clamp. + return + + selected_item_index = 0 + + if(contents.len <= 1) + to_chat(user, "There's currently [contents.len ? "only one item" : "nothing"] to take out of [src]'s cargo hold, no need to pick!") + return + + . = ..() + + var/list/choices = list() + var/index = 1 + for(var/item in contents) + choices[item] = index + index++ + + var/selection = tgui_input_list(user, "Which item would you like to prioritize?", "Choose an item to prioritize", choices) + if(!selection) + return + + var/new_index = choices[selection] + if(!new_index) + return + + selected_item_index = new_index + to_chat(user, "[src] will now prioritize unloading [selection].") + +/obj/item/borg/hydraulic_clamp/emp_act(severity) + . = ..() + empty_contents() + +/obj/item/borg/hydraulic_clamp/pre_attack(atom/attacked_atom, mob/living/user, params) + if(!user.Adjacent(attacked_atom) || !COOLDOWN_FINISHED(src, clamp_cooldown) || in_use) + return + + in_use = TRUE + COOLDOWN_START(src, clamp_cooldown, cooldown_duration) + + // We're trying to unload something from the clamp, only possible on the floor, tables and conveyors. + if(isturf(attacked_atom) || istype(attacked_atom, /obj/structure/table) || istype(attacked_atom, /obj/machinery/conveyor)) + if(!contents.len) + in_use = FALSE + return + + var/extraction_index = selected_item_index ? selected_item_index : contents.len + var/atom/movable/extracted_item = contents[extraction_index] + selected_item_index = 0 + + if(unloading_time > 0.5 SECONDS) // We don't want too much chat spam if the clamp works fast. + to_chat(user, "You start unloading something from [src]...") + playsound(src, clamp_sound, clamp_sound_volume, FALSE, -5) + COOLDOWN_START(src, clamp_cooldown, cooldown_duration) + + if(!do_after(user, unloading_time, target = attacked_atom)) + in_use = FALSE + return + + var/turf/extraction_turf = get_turf(attacked_atom) + extracted_item.forceMove(extraction_turf) + visible_message("[src.loc] unloads [extracted_item] from [src].") + in_use = FALSE + return + + // We're trying to load something in the clamp + else + if(whitelisted_contents && !is_type_in_list(attacked_atom, whitelisted_item_types)) + to_chat(user, "[src] can only pick up [whitelisted_item_description]!") + in_use = FALSE + return + + if(contents.len >= storage_capacity) + to_chat(user, "[src] is already at full capacity!") + in_use = FALSE + return + + if(item_weight_limit) + var/obj/item/to_lift = attacked_atom + if(!to_lift || to_lift.w_class > item_weight_limit) + to_chat(user, "[to_lift] is too big for [src]!") + in_use = FALSE + return + + var/atom/movable/lifting_up = attacked_atom + + if(lifting_up.anchored) + to_chat(user, "[lifting_up] is firmly secured, it's not currently possible to move it into [src]!") + in_use = FALSE + return + + if(istype(lifting_up, /obj/structure/big_delivery)) + var/obj/structure/big_delivery/parcel = lifting_up + parcel.setAnchored(TRUE) + + lifting_up.add_fingerprint(user) + + if(loading_time > 0.5 SECONDS) // We don't want too much chat spam if the clamp works fast. + to_chat(user, "You start loading [lifting_up] into [src]'s cargo hold...") + playsound(src, clamp_sound, clamp_sound_volume, FALSE, -5) + + if(!do_after(user, loading_time, target = lifting_up)) // It takes two seconds to put stuff into the clamp's cargo hold + lifting_up.anchored = FALSE + in_use = FALSE + return + + lifting_up.anchored = FALSE + lifting_up.forceMove(src) + visible_message("[src.loc] loads [lifting_up] into [src]'s cargo hold.") + in_use = FALSE + +/obj/item/borg/hydraulic_clamp/better + name = "improved integrated hydraulic clamp" + desc = "A neat way to lift and move around wrapped crates for quick and painless deliveries!" + storage_capacity = 2 + whitelisted_item_types = list(/obj/item/small_delivery, /obj/structure/big_delivery) // If they want to carry a small package instead, so be it, honestly. + whitelisted_item_description = "wrapped packages" + item_weight_limit = NONE + clamp_sound_volume = 50 + +/obj/item/borg/hydraulic_clamp/better/examine(mob/user) + . = ..() + var/crate_count = contents.len + . += "There is currently [crate_count > 0 ? crate_count : "no"] crate[crate_count > 1 ? "s" : ""] stored in the clamp's internal storage." + +/obj/item/borg/hydraulic_clamp/mail + name = "integrated rapid mail delivery device" + desc = "Allows you to carry around a lot of mail, to distribute it around the ship like the good little mailbot you are!" + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "mailbag" + storage_capacity = 100 + loading_time = 0.25 SECONDS + unloading_time = 0.25 SECONDS + cooldown_duration = 0.25 SECONDS + whitelisted_item_types = list(/obj/item/mail) + whitelisted_item_description = "enveloppes" + item_weight_limit = WEIGHT_CLASS_NORMAL + clamp_sound_volume = 25 + clamp_sound = 'sound/items/pshoom.ogg' + +/datum/design/borg_upgrade_clamp + name = "Cyborg Upgrade (Improved Integrated Hydraulic Clamp)" + id = "borg_upgrade_clamp" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/better_clamp + materials = list(/datum/material/titanium = 4000, /datum/material/gold = 500, /datum/material/bluespace = 50) + construction_time = 12 SECONDS + category = list("Cyborg Upgrade Modules") + +/obj/item/borg/upgrade/better_clamp + name = "improved integrated hydraulic clamp" + desc = "An improved hydraulic clamp that trades its storage quantity to allow for bigger packages to be picked up instead!" + icon_state = "cyborg_upgrade3" + require_module = TRUE + module_type = list(/obj/item/robot_module/cargo) + module_flags = BORG_MODULE_CARGO + +/obj/item/borg/upgrade/better_clamp/action(mob/living/silicon/robot/cyborg, user = usr) + . = ..() + if(!.) + return + var/obj/item/borg/hydraulic_clamp/better/big_clamp = locate() in cyborg.module.modules + if(big_clamp) + to_chat(user, "This cyborg is already equipped with an improved integrated hydraulic clamp!") + return FALSE + + big_clamp = new(cyborg.module) + cyborg.module.basic_modules += big_clamp + cyborg.module.add_module(big_clamp, FALSE, TRUE) + +/obj/item/borg/upgrade/better_clamp/deactivate(mob/living/silicon/robot/cyborg, user = usr) + . = ..() + if(!.) + return + var/obj/item/borg/hydraulic_clamp/better/big_clamp = locate() in cyborg.module.modules + if(big_clamp) + cyborg.module.remove_module(big_clamp, TRUE) + +/// Holders for the package wrap and the wrapping paper synthesizers. + +/datum/robot_energy_storage/package_wrap + name ="Package wrapper synthetizer" + max_energy = 25 + recharge_rate = 2 + + +/datum/robot_energy_storage/wrapping_paper + name ="Wrapping paper synthetizer" + max_energy = 25 + recharge_rate = 2 + +/obj/item/stack/package_wrap/cyborg + name = "integrated package wrapper" + is_cyborg = TRUE + +/obj/item/stack/wrapping_paper/cyborg + name = "integrated wrapping paper" + is_cyborg = TRUE + +/obj/item/stack/wrapping_paper/cyborg/use(used, transfer, check = FALSE) // Check is set to FALSE here, so the stack istn't deleted. + . = ..() diff --git a/nsv13/code/modules/mob/living/silicon/robot/muni_upgrade.dm b/nsv13/code/modules/mob/living/silicon/robot/muni_upgrade.dm new file mode 100644 index 00000000000..cf388fb576e --- /dev/null +++ b/nsv13/code/modules/mob/living/silicon/robot/muni_upgrade.dm @@ -0,0 +1,61 @@ +/obj/item/borg/apparatus/munitions + name = "integrated mechanical clamp" + desc = "A mechanical clamp designed for carrying volatile equipment without causing violent reactions." + icon = 'icons/mecha/mecha_equipment.dmi' + icon_state = "mecha_clamp" + storable = list( + /obj/item/powder_bag, + /obj/item/ship_weapon/parts, + /obj/item/ammo_box/magazine/nsv, + /obj/item/fighter_component, + ) + +/obj/item/borg/apparatus/munitions/update_icon() + cut_overlays() + if(stored) + COMPILE_OVERLAYS(stored) + stored.pixel_x = 0 + stored.pixel_y = 0 + var/image/img = image("icon"=stored, "layer"=FLOAT_LAYER) + img.plane = FLOAT_PLANE + add_overlay(img) + +/obj/item/borg/apparatus/munitions/examine() + . = ..() + if(stored) + . += "The clamps are currently holding [stored]" + . += "Alt-click
                      will drop the currently stored [stored]." + +/obj/item/borg/apparatus/munitions/AltClick(mob/living/silicon/robot/user) + if(!stored) + return ..() + stored.pixel_x = initial(stored.pixel_x) + stored.pixel_y = initial(stored.pixel_y) + stored.forceMove(get_turf(user)) + +/obj/item/borg/upgrade/munitions + name = "munitions manipulation apparatus" + desc = "An engineering cyborg upgrade allowing for manipulation of munitions related equipment." + icon_state = "cyborg_upgrade3" + require_module = TRUE + module_type = list(/obj/item/robot_module/engineering, /obj/item/robot_module/saboteur) + module_flags = BORG_MODULE_ENGINEERING + +/obj/item/borg/upgrade/munitions/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + var/obj/item/borg/apparatus/munitions/M = locate() in R.module.modules + if(M) + to_chat(user, "This unit is already equipped with a munitions apparatus.") + return FALSE + + M = new(R.module) + R.module.basic_modules += M + R.module.add_module(M, FALSE, TRUE) + +/obj/item/borg/upgrade/munitions/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + var/obj/item/borg/apparatus/munitions/M = locate() in R.module.modules + if(M) + R.module.remove_module(M, TRUE) diff --git a/nsv13/code/modules/mob/living/silicon/robot/robot_modules.dm b/nsv13/code/modules/mob/living/silicon/robot/robot_modules.dm new file mode 100644 index 00000000000..4263ff91a61 --- /dev/null +++ b/nsv13/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -0,0 +1,30 @@ +// CARGO +/obj/item/robot_module/cargo + name = "Cargo" + basic_modules = list( + /obj/item/stamp, + /obj/item/stamp/denied, + /obj/item/pen/cyborg, + /obj/item/clipboard/cyborg, + /obj/item/stack/package_wrap/cyborg, + /obj/item/stack/wrapping_paper/cyborg, + /obj/item/assembly/flash/cyborg, + /obj/item/borg/hydraulic_clamp, + /obj/item/borg/hydraulic_clamp/mail, + /obj/item/hand_labeler/cyborg, + /obj/item/dest_tagger, + /obj/item/crowbar/cyborg, + /obj/item/extinguisher, + /obj/item/export_scanner, + ) + emag_modules = list( + /obj/item/stamp/chameleon, + ) + hat_offset = 0 + cyborg_base_icon = "cargo" + moduleselect_icon = "cargo" + canDispose = TRUE + borg_skins = list( + "Technician" = list(SKIN_ICON_STATE = "cargoborg", SKIN_ICON = CYBORG_ICON_CARGO), + "Zoomba" = list(SKIN_ICON_STATE = "zoomba_cargo", SKIN_ICON = CYBORG_ICON_CARGO, SKIN_FEATURES = list(R_TRAIT_UNIQUEWRECK), SKIN_HAT_OFFSET = -13) + ) diff --git a/nsv13/code/modules/mob/living/silicon/robot/update_icons.dm b/nsv13/code/modules/mob/living/silicon/robot/update_icons.dm new file mode 100644 index 00000000000..d53fe5578a7 --- /dev/null +++ b/nsv13/code/modules/mob/living/silicon/robot/update_icons.dm @@ -0,0 +1,9 @@ +/mob/living/silicon/robot/update_icons() + . = ..() + update_altborg_icons() + +/mob/living/silicon/robot/proc/update_altborg_icons() + if(stat == DEAD && (R_TRAIT_UNIQUEWRECK in module.module_features)) + icon_state = "[module.cyborg_base_icon]-wreck" + + update_fire() diff --git a/nsv13/code/modules/mob/living/simple_animal/bot/hugbot.dm b/nsv13/code/modules/mob/living/simple_animal/bot/hugbot.dm index 6af7a7e4471..0830a2c1f03 100644 --- a/nsv13/code/modules/mob/living/simple_animal/bot/hugbot.dm +++ b/nsv13/code/modules/mob/living/simple_animal/bot/hugbot.dm @@ -363,21 +363,14 @@ playsound(H, 'sound/weapons/tap.ogg', 50, 0) SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat) else if(check_zone(zone_selected) == BODY_ZONE_HEAD) - var/datum/species/S if(ishuman(H)) - S = H.dna.species - visible_message("[src] gives [H] a pat on the head to make [H.p_them()] feel better!", \ "You give [src] a pat on the head to make [H.p_them()] feel better!") SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat) - if(S?.can_wag_tail(src) && !(S?.is_wagging_tail())) - var/static/list/many_tails - if(!many_tails) - many_tails = list("tail_human", "tail_lizard", "mam_tail") - for(var/T in many_tails) - if(S.mutant_bodyparts[T] && H.dna.features[T] != "None") - H.emote("wag") - break + var/obj/item/organ/tail/tail = H.get_bodypart(ORGAN_SLOT_TAIL) + if(!tail) + return + tail.toggle_wag(H) else visible_message("[src] hugs [H] to make [H.p_them()] feel better!", \ "You hug [H] to make [H.p_them()] feel better!") diff --git a/nsv13/code/modules/modular_computer/wiki_uplink.dm b/nsv13/code/modules/modular_computer/wiki_uplink.dm index c0a9ca4f778..62e9703836b 100644 --- a/nsv13/code/modules/modular_computer/wiki_uplink.dm +++ b/nsv13/code/modules/modular_computer/wiki_uplink.dm @@ -9,7 +9,7 @@ program_icon = "book" /datum/computer_file/program/databank_uplink/ui_data(mob/user) - var/list/data = get_header_data() + var/list/data = list() var/wikiurl = CONFIG_GET(string/wikiurl) data["src"] = wikiurl diff --git a/nsv13/code/modules/munitions/ammunition/gauss_ammo.dm b/nsv13/code/modules/munitions/ammunition/gauss_ammo.dm index 80ad0ae414e..0fb7aabbe20 100644 --- a/nsv13/code/modules/munitions/ammunition/gauss_ammo.dm +++ b/nsv13/code/modules/munitions/ammunition/gauss_ammo.dm @@ -36,9 +36,6 @@ var/goal = 45 SECONDS var/ready = FALSE -/obj/machinery/gauss_dispenser/Initialize(mapload) - . = ..() - /obj/machinery/gauss_dispenser/RefreshParts() progress_rate = 0 SECONDS for(var/obj/item/stock_parts/S in component_parts) diff --git a/nsv13/code/modules/munitions/ammunition/missiles/missile_construction.dm b/nsv13/code/modules/munitions/ammunition/missiles/missile_construction.dm index b901a896ddd..d6e292ea521 100644 --- a/nsv13/code/modules/munitions/ammunition/missiles/missile_construction.dm +++ b/nsv13/code/modules/munitions/ammunition/missiles/missile_construction.dm @@ -7,6 +7,7 @@ density = TRUE move_resist = MOVE_FORCE_EXTREMELY_STRONG claimable_gulag_points = 0 + volatility = 0 var/state = 0 var/obj/item/ship_weapon/parts/missile/warhead/wh = null var/obj/item/ship_weapon/parts/missile/guidance_system/gs = null diff --git a/nsv13/code/modules/munitions/ammunition/railgun_ammo.dm b/nsv13/code/modules/munitions/ammunition/railgun_ammo.dm index cb70554ad7c..7956578711b 100644 --- a/nsv13/code/modules/munitions/ammunition/railgun_ammo.dm +++ b/nsv13/code/modules/munitions/ammunition/railgun_ammo.dm @@ -9,7 +9,7 @@ projectile_type = /obj/item/projectile/bullet/railgun_slug /obj/item/ship_weapon/ammunition/railgun_ammo/Initialize(mapload) - ..() + . = ..() AddComponent(/datum/component/two_handed, require_twohands=TRUE) /obj/item/ship_weapon/ammunition/railgun_ammo/uranium diff --git a/nsv13/code/modules/munitions/ammunition/torpedos/torpedo_construction.dm b/nsv13/code/modules/munitions/ammunition/torpedos/torpedo_construction.dm index 95eb602e44c..e3d2eaf29e1 100644 --- a/nsv13/code/modules/munitions/ammunition/torpedos/torpedo_construction.dm +++ b/nsv13/code/modules/munitions/ammunition/torpedos/torpedo_construction.dm @@ -4,13 +4,15 @@ name = "\improper NTB-M4A1-IB prebuilt torpedo-casing" icon_state = "case" desc = "The outer casing of a 30mm torpedo." + claimable_gulag_points = 0 + volatility = 0 var/state = 0 var/obj/item/ship_weapon/parts/missile/warhead/wh = null var/obj/item/ship_weapon/parts/missile/guidance_system/gs = null var/obj/item/ship_weapon/parts/missile/propulsion_system/ps = null var/obj/item/ship_weapon/parts/missile/iff_card/iff = null projectile_type = /obj/item/projectile/guided_munition/torpedo/dud //Forget to finish your torpedo? You get a dud torpedo that doesn't do anything - claimable_gulag_points = 0 + /obj/item/ship_weapon/ammunition/torpedo/torpedo_casing/examine(mob/user) //No better guide than an in-game play-by-play guide . = ..() diff --git a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/cargo_launcher.dm b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/cargo_launcher.dm index 3fbc8269c72..562e4da2f22 100644 --- a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/cargo_launcher.dm +++ b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/cargo_launcher.dm @@ -31,8 +31,7 @@ bound_x = -64 /obj/machinery/ship_weapon/torpedo_launcher/cargo/Initialize(mapload) - ..() - + . = ..() if(!linked_dradis) if(launcher_id) //If mappers set an ID for(var/obj/machinery/computer/ship/dradis/minor/cargo/W in GLOB.machines) diff --git a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/deck_guns.dm b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/deck_guns.dm index bde6240ae49..e21a649bc86 100644 --- a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/deck_guns.dm +++ b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/deck_guns.dm @@ -837,6 +837,7 @@ return INITIALIZE_HINT_LATELOAD /obj/machinery/ship_weapon/deck_turret/LateInitialize() + . = ..() link_via_id() /obj/machinery/ship_weapon/deck_turret/RefreshParts()//using this proc to create the parts instead diff --git a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/deck_guns_construction.dm b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/deck_guns_construction.dm index acc45fdb52e..493b23c3f07 100644 --- a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/deck_guns_construction.dm +++ b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/deck_guns_construction.dm @@ -39,7 +39,7 @@ var/output_path = /obj/machinery/ship_weapon/deck_turret /obj/structure/ship_weapon/artillery_frame/Initialize(mapload) - ..() + . = ..() LAZYINITLIST(contents) /obj/structure/ship_weapon/artillery_frame/examine(mob/user) diff --git a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/automation.dm b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/automation.dm index 3da4d67b4bd..6c8ef2f73e1 100644 --- a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/automation.dm +++ b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/automation.dm @@ -8,30 +8,23 @@ anchored = TRUE can_be_unanchored = TRUE density = TRUE - subsystem_type = /datum/controller/subsystem/processing //Needs to go faster than SSmachines - var/process_delay = 0.5 SECONDS - var/next_process = 0 + processing_flags = START_PROCESSING_MANUALLY //Does not process. + ///Icon state the arm of this device will have var/arm_icon_state = "welder3" - var/tier = 1 - var/list/held_components = list() //All the missile construction components that they've put into the arm. - var/obj/item/arm = null - var/obj/item/ship_weapon/ammunition/missile/missile_casing/target - var/munition_types = list(/obj/item/ship_weapon/ammunition/missile/missile_casing, /obj/item/ship_weapon/ammunition/torpedo/torpedo_casing) - var/list/target_states = list(1, 7, 9) //The target construction state of the missile - -/obj/machinery/missile_builder/examine(mob/user) - . = ..() - if(held_components.len) - . += "It currently holds..." - var/listofitems = list() - for(var/obj/item/C in held_components) - var/path = C.type - if (listofitems[path]) - listofitems[path]["amount"]++ - else - listofitems[path] = list("name" = C.name, "amount" = 1) - for(var/i in listofitems) - . += "[listofitems[i]["name"]] x[listofitems[i]["amount"]]" + ///An overlay for the machine that varies by its arm icon state. For some reason an item and not an overlay or any kind of effect. + var/obj/item/arm = null //This being an /item makes me scream. + ///List of valid munition types. These are SUPER DIRTY types. DO NOT TRUST THESE TYPES. If you are reading this, new coder, PLEASE keep a common ancestor if you want to access vars and have the things be basically the same!! + var/munition_types = list(/obj/item/ship_weapon/ammunition/missile/missile_casing, /obj/item/ship_weapon/ammunition/torpedo/torpedo_casing) //This is super bad but I don't feel like rewriting all of missile / torp casing code so it stays :) + ///The target construction states of the missile + var/list/target_states = list(1, 7, 9) //Who would magic number these even *after* having to reference them in machines too?? I am not cleaning up after you.. right now at least. -Delta + ///The turf this assembler is tracking + var/turf/target_turf + ///The timer that tracks how long the arm should be doing arm things. + var/active_arm_timer_id + ///Next time a success sound can play. + var/next_success_sound = 0 + ///Next time a fail sound can play. + var/next_fail_sound = 0 /obj/machinery/missile_builder/attackby(obj/item/I, mob/user, params) if(default_unfasten_wrench(user, I)) @@ -43,6 +36,19 @@ return . = ..() +/obj/machinery/missile_builder/default_unfasten_wrench(mob/user, obj/item/I, time) + . = ..() + if(. != SUCCESSFUL_UNFASTEN) + return + if(anchored) //just got anchored + target_turf = get_turf(get_step(src, src.dir)) + if(target_turf) + RegisterSignal(target_turf, COMSIG_ATOM_ENTERED, PROC_REF(attempt_assembler_action)) + else //just got unanchored + if(target_turf) + UnregisterSignal(target_turf, COMSIG_ATOM_ENTERED) + target_turf = null + /obj/item/stack/conveyor/slow name = "Slow conveyor assembly" conveyor_type = /obj/machinery/conveyor/slow @@ -70,59 +76,179 @@ /obj/machinery/missile_builder/AltClick(mob/user) . = ..() + if(target_turf) + UnregisterSignal(target_turf, COMSIG_ATOM_ENTERED) + target_turf = null setDir(turn(src.dir, -90)) + target_turf = get_turf(get_step(src, src.dir)) + if(target_turf) + RegisterSignal(target_turf, COMSIG_ATOM_ENTERED, PROC_REF(attempt_assembler_action)) /obj/machinery/missile_builder/Initialize(mapload) . = ..() - arm = new /obj/item(src) + arm = new /obj/item(src) //WHY IS THIS AN ITEM (worse, basetype..) and not an overlay or something else that would make more sense?! arm.icon = icon arm.icon_state = arm_icon_state vis_contents += arm arm.mouse_opacity = FALSE + target_turf = get_turf(get_step(src, src.dir)) + if(target_turf) + RegisterSignal(target_turf, COMSIG_ATOM_ENTERED, PROC_REF(attempt_assembler_action)) //aaa /obj/machinery/missile_builder/Destroy() qdel(arm) - . = ..() + if(target_turf) + UnregisterSignal(target_turf, COMSIG_ATOM_ENTERED) + target_turf = null + if(active_arm_timer_id) + deltimer(active_arm_timer_id) + active_arm_timer_id = null + return ..() -/obj/machinery/missile_builder/process() - if(world.time < next_process) +/** + * This beautiful proc handles interacting with objects that enter the turf we watch. Which is much more effective than processing all the time. + * * Does not return anything. SHOULD NOT RETURN ANYTHING. +**/ +/obj/machinery/missile_builder/proc/attempt_assembler_action(turf/source, atom/movable/entering, old_loc, old_locs) + SIGNAL_HANDLER + if(QDELETED(entering)) //How would this happen? Who knows.. but this is NSV after all. + return + if(!isobj(entering) || iseffect(entering)) return - next_process = world.time + process_delay - var/turf/input_turf = get_turf(get_step(src, src.dir)) - if(target && target.loc != input_turf) - target = null - visible_message("[name] shakes its arm melancholically.") + if(!(entering.type in munition_types)) + visible_message("[src] shakes its arm melancholically.") arm.shake_animation() - playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) - if(target) - arm.icon_state = arm_icon_state - target.state++ //Next step! - target.check_completion() - do_sparks(10, TRUE, target) - playsound(src, 'sound/items/welder.ogg', 100, 1) - target = null + if(world.time >= next_fail_sound) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) + next_fail_sound = world.time + 0.2 SECONDS return - for(var/munition_type in munition_types) - target = locate(munition_type) in input_turf - if(target) - break - if(!target) - target = null - arm.icon_state = arm_icon_state + switch(entering.type) //This is VERY BAD but they do not share a common type. + if(/obj/item/ship_weapon/ammunition/missile/missile_casing) + var/obj/item/ship_weapon/ammunition/missile/missile_casing/missile_target = entering + if(!(missile_target.state in target_states)) + visible_message("[src] sighs.") + if(world.time >= next_fail_sound) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) + next_fail_sound = world.time + 0.5 SECONDS + return + trigger_arm_animation() + missile_target.state++ //Next step! + missile_target.check_completion() + if(world.time >= next_success_sound) + do_sparks(4, TRUE, missile_target) + playsound(src, 'sound/items/welder.ogg', 100, 1) + next_success_sound = world.time + 0.2 SECONDS + if(/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing) + var/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing/torpedo_target = entering + if(!(torpedo_target.state in target_states)) + visible_message("[src] sighs.") + if(world.time >= next_fail_sound) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) + next_fail_sound = world.time + 0.5 SECONDS + return + trigger_arm_animation() + torpedo_target.state++ //Next step! + torpedo_target.check_completion() + if(world.time >= next_success_sound) + do_sparks(4, TRUE, torpedo_target) + playsound(src, 'sound/items/welder.ogg', 100, 1) + next_success_sound = world.time + 0.2 SECONDS + else + CRASH("Please stop handing the missile assemblers invalid types as valid ammunition. Type: [entering.type]. ALL valid casings must be missile or torpedo types.") + +//overrides parent. +/obj/machinery/missile_builder/assembler/attempt_assembler_action(turf/source, atom/movable/entering, old_loc, old_locs) + if(QDELETED(entering)) //How would this happen? Who knows.. but this is NSV after all. return - var/found = FALSE - for(var/target_state in target_states) - if(target.state == target_state) - found = TRUE - break - if(!found) - visible_message("[src] sighs.") - playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) - target = null - return FALSE - src.visible_message("[src] whirrs into life!") - arm.icon_state = "[arm_icon_state]_anim" - playsound(src, 'sound/items/drill_use.ogg', 70, 1) + if(!isobj(entering) || iseffect(entering)) + return + if(entering.loc != source) + return + if(tracked_component_type && tracked_component_type == entering.type) //Please do throw these hungry machines some components. + var/obj/item/entering_item = entering + visible_message("[src] happily adds [entering_item] to its component storage.") + if(world.time >= next_success_sound) + playsound(src, 'sound/machines/ping.ogg', 50, 0) + next_success_sound = world.time + 0.2 SECONDS + entering_item.do_pickup_animation(src) + entering_item.forceMove(src) + held_components += entering_item + return + if(!(entering.type in munition_types)) + visible_message("[src] shakes its arm melancholically.") + arm.shake_animation() + if(world.time >= next_fail_sound) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) + next_fail_sound = world.time + 0.2 SECONDS + return + switch(entering.type) //This is VERY BAD but they do not share a common type. + if(/obj/item/ship_weapon/ammunition/missile/missile_casing) + var/obj/item/ship_weapon/ammunition/missile/missile_casing/missile_target = entering + if(!length(held_components)) + visible_message("[src] sighs.") + if(world.time >= next_fail_sound) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) + next_fail_sound = world.time + 0.5 SECONDS + return + var/obj/item/ship_weapon/parts/missile/missile_part = held_components[1] + if((missile_part.fits_type && !istype(missile_target, missile_part.fits_type)) || missile_target.state != missile_part.target_state) + visible_message("[src] sighs.") + if(world.time >= next_fail_sound) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) + next_fail_sound = world.time + 0.5 SECONDS + return + trigger_arm_animation() + do_item_attack_animation(missile_target, used_item = missile_part) + + missile_target.state++ //Next step! + missile_part.forceMove(missile_target) + held_components -= missile_part + missile_target.check_completion() + if(world.time >= next_success_sound) + do_sparks(4, TRUE, missile_target) + playsound(src, 'sound/machines/ping.ogg', 50, 0) + next_success_sound = world.time + 0.2 SECONDS + if(/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing) + var/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing/torpedo_target = entering + if(!length(held_components)) + if(world.time >= next_fail_sound) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) + next_fail_sound = world.time + 0.5 SECONDS + return + var/obj/item/ship_weapon/parts/missile/torpedo_part = held_components[1] + if((torpedo_part.fits_type && !istype(torpedo_target, torpedo_part.fits_type)) || torpedo_target.state != torpedo_part.target_state) + if(world.time >= next_fail_sound) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) + next_fail_sound = world.time + 0.5 SECONDS + return + trigger_arm_animation() + do_item_attack_animation(torpedo_target, used_item = torpedo_part) + + torpedo_target.state++ //Next step! + torpedo_part.forceMove(torpedo_target) + held_components -= torpedo_part + torpedo_target.check_completion() + if(world.time >= next_success_sound) + do_sparks(4, TRUE, torpedo_target) + playsound(src, 'sound/machines/ping.ogg', 50, 0) + next_success_sound = world.time + 0.2 SECONDS + else + CRASH("Please stop handing the missile assemblers invalid types as valid ammunition. Type: [entering.type]. ALL valid casings must be missile or torpedo types.") + + +///Starts the machine's arm animation to reset after some time. +/obj/machinery/missile_builder/proc/trigger_arm_animation() + if(arm.icon_state != "[arm_icon_state]_anim") + arm.icon_state = "[arm_icon_state]_anim" + visible_message("[src] whirrs into life!") + if(active_arm_timer_id) + deltimer(active_arm_timer_id) + active_arm_timer_id = addtimer(CALLBACK(src, PROC_REF(stop_arm_animation)), 1 SECONDS, TIMER_STOPPABLE) + +///Stops the machine's arm animation after some time. +/obj/machinery/missile_builder/proc/stop_arm_animation() + arm.icon_state = arm_icon_state + active_arm_timer_id = null /obj/machinery/missile_builder/assembler name = "Robotic Missile Part Applicator" @@ -130,6 +256,25 @@ desc = "An assembly arm which can slot a multitude of missile components into casings for you! Swipe it with an ID to release its stored components." req_one_access = list(ACCESS_MUNITIONS) circuit = /obj/item/circuitboard/machine/missile_builder/assembler + ///Currently loaded missile components. + var/list/held_components = list() + ///Currently tracked type for autopickup + var/tracked_component_type = null + +/obj/machinery/missile_builder/assembler/examine(mob/user) + . = ..() + if(!length(held_components)) + return + . += "It currently holds..." + var/listofitems = list() + for(var/obj/item/C in held_components) + var/path = C.type + if(listofitems[path]) + listofitems[path]["amount"]++ + else + listofitems[path] = list("name" = C.name, "amount" = 1) + for(var/i in listofitems) + . += "[listofitems[i]["name"]] x[listofitems[i]["amount"]]" /obj/machinery/missile_builder/assembler/attackby(obj/item/I, mob/living/user, params) . = ..() @@ -139,11 +284,13 @@ to_chat(user, "You slot [I] into [src], ready for construction.") I.forceMove(src) held_components += I + tracked_component_type = I.type if(istype(I, /obj/item/card/id) && allowed(user)) to_chat(user, "You dump [src]'s contents out.") for(var/obj/item/X in held_components) X.forceMove(get_turf(src)) held_components -= X + tracked_component_type = null /obj/machinery/missile_builder/assembler/MouseDrop_T(obj/structure/A, mob/user) . = ..() @@ -159,46 +306,6 @@ P.forceMove(src) held_components += P -/obj/machinery/missile_builder/assembler/process() - if(world.time < next_process) - return - next_process = world.time + process_delay - var/turf/input_turf = get_turf(get_step(src, src.dir)) - if(target && target.loc != input_turf) - target = null - visible_message("[name] shakes its arm melancholically.") - arm.shake_animation() - playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) - if(target) - var/found = FALSE - for(var/obj/item/ship_weapon/parts/missile/M in held_components) - if(M.fits_type && !istype(target, M.fits_type)) - continue - if(target.state == M.target_state) - M.forceMove(target) - held_components -= M - target.state ++ - found = TRUE - break - if(found) - target.check_completion() - playsound(src, 'sound/machines/ping.ogg', 50, 0) - do_sparks(10, TRUE, target) - target = null - arm.icon_state = arm_icon_state - return - for(var/munition_type in munition_types) - target = locate(munition_type) in input_turf - if(target) - break - if(!target || !held_components.len) - target = null - arm.icon_state = arm_icon_state - return - src.visible_message("[src] whirrs into life!") - arm.icon_state = "[arm_icon_state]_anim" - playsound(src, 'sound/items/drill_use.ogg', 70, 1) - /datum/design/board/ammo_sorter_computer name = "Ammo sorter console (circuitboard)" desc = "The central control console for ammo sorters.." @@ -238,7 +345,7 @@ var/list/linked_sorters = list() /obj/machinery/computer/ammo_sorter/Initialize(mapload, obj/item/circuitboard/C) - ..() + . = ..() if(mapload) return INITIALIZE_HINT_LATELOAD diff --git a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/vls.dm b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/vls.dm index da00b3258d0..3cf4a5d9905 100644 --- a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/vls.dm +++ b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/revision2/vls.dm @@ -48,27 +48,21 @@ circuit = /obj/item/circuitboard/machine/vls var/obj/structure/fluff/vls_hatch/hatch = null -/obj/machinery/ship_weapon/vls/proc/on_entered(datum/source, atom/movable/AM, oldloc) +/obj/machinery/ship_weapon/vls/proc/on_entered(datum/source, atom/movable/torp, oldloc) SIGNAL_HANDLER - var/can_shoot_this = FALSE - for(var/_ammo_type in ammo_type) - if(istype(AM, _ammo_type)) - can_shoot_this = TRUE - break + if(!is_type_in_list(torp, ammo_type)) + return FALSE - if(can_shoot_this) - if(ammo?.len >= max_ammo) - return FALSE - if(loading) - return FALSE - if(state >= 2) - return FALSE - ammo += AM - AM.forceMove(src) - if(load_sound) - playsound(src, load_sound, 100, 1) - state = 2 + if(ammo?.len >= max_ammo) + return FALSE + if(loading) + return FALSE + if(oldloc == src)// stops torps from getting sent back in instantly + return FALSE + if(state >= STATE_LOADED) + return FALSE + load(torp) // Handles removal of stuff /obj/machinery/ship_weapon/vls/Exited(atom/movable/gone, direction) @@ -140,13 +134,12 @@ return hatch.toggle(HT_CLOSED) -/obj/machinery/ship_weapon/vls/unload_magazine() +/obj/machinery/ship_weapon/vls/unload() . = ..() if(!hatch) return hatch.toggle(HT_CLOSED) - /obj/structure/fluff/vls_hatch name = "VLS Launch Hatch" desc = "A hatch designed to let cruise missiles out, and keep air in for the deck below." @@ -211,6 +204,7 @@ return FALSE // OM.fire_weapon(target, mode=weapon_type, lateral=TRUE) weapon_type.fire( target ) + OM.ams_shots_fired += 1 OM.next_ams_shot = world.time + OM.ams_targeting_cooldown //Subtypes. @@ -228,6 +222,11 @@ return list() . = ..() +/datum/ams_mode/sts/handle_autonomy(obj/structure/overmap/OM, datum/ship_weapon/weapon_type) + if(OM.ams_shot_limit <= OM.ams_shots_fired) + return FALSE + return ..() + /datum/ams_mode/countermeasures name = "Anti-missile countermeasures" desc = "This mode will target oncoming missiles and attempt to counter them with the ship's own missile complement. Recommended for usage exclusively with ECM missiles." @@ -247,8 +246,8 @@ /obj/machinery/computer/ams/ui_act(action, params) if(..()) return + var/obj/structure/overmap/linked = get_overmap() if(action == "data_source") - var/obj/structure/overmap/linked = get_overmap() if(!linked) return if(linked.ams_data_source == AMS_LOCKED_TARGETS) @@ -256,10 +255,15 @@ return linked.ams_data_source = AMS_LOCKED_TARGETS return - var/datum/ams_mode/target = locate(params["target"]) - if(!target) - return FALSE - target.enabled = !target.enabled + if(action == "set_shot_limit") + linked.ams_shot_limit = sanitize_integer(params["shot_limit"], 1, 100, 5) + return + if(action == "select") + var/datum/ams_mode/target = locate(params["target"]) + if(!target) + return FALSE + linked.ams_shots_fired = 0 + target.enabled = !target.enabled /obj/machinery/computer/ams/ui_data(mob/user) ..() @@ -278,6 +282,7 @@ categories[++categories.len] = category data["categories"] = categories data["data_source"] = OM.ams_data_source + data["shot_limit"] = OM.ams_shot_limit return data /obj/machinery/computer/ams/ui_interact(mob/user, datum/tgui/ui) diff --git a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/torpedo_launcher.dm b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/torpedo_launcher.dm index ba246a1469d..0ca22e5a016 100644 --- a/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/torpedo_launcher.dm +++ b/nsv13/code/modules/munitions/ship_weapons/ballistic_weapons/torpedo_launcher.dm @@ -39,7 +39,7 @@ bound_x = -64 /obj/machinery/ship_weapon/torpedo_launcher/Initialize(mapload) - ..() + . = ..() component_parts = list() component_parts += new/obj/item/ship_weapon/parts/firing_electronics diff --git a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/bsa.dm b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/bsa.dm index 23d46fa0fcc..c6f5ccb71b7 100644 --- a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/bsa.dm +++ b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/bsa.dm @@ -205,6 +205,7 @@ impact_type = /obj/effect/projectile/impact/bsa movement_type = FLYING projectile_piercing = ALL + relay_projectile_type = /obj/item/projectile/beam/laser/heavylaser/bsa/relayed /obj/effect/projectile/muzzle/bsa alpha = 0 @@ -216,3 +217,13 @@ /obj/effect/projectile/impact/bsa name = "bsa" icon_state = "bsa_impact" + +/obj/item/projectile/beam/laser/heavylaser/bsa/relayed + projectile_piercing = PASSGLASS|PASSGRILLE|PASSTABLE + +/obj/item/projectile/beam/laser/heavylaser/bsa/relayed/on_hit(atom/target, blocked) + . = ..() + if(isliving(target)) + var/mob/living/goodbye = target + goodbye.dust(TRUE, FALSE) + explosion(get_turf(target), 6, 8, 9, 12, ignorecap = TRUE, flame_range = 6) //I have to keep myself from letting it just truncate ships because thats a bit annoying to fix for the receiving side, even if accurate to appearance. diff --git a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_ams.dm b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_ams.dm index 0f7df94b0fd..3fed59003d7 100644 --- a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_ams.dm +++ b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/laser_ams.dm @@ -5,6 +5,7 @@ icon_state = "missile_cannon" fire_mode = FIRE_MODE_AMS_LASER //Shot automatically ammo_type = /obj/item/ship_weapon/ammunition/railgun_ammo + circuit = /obj/item/circuitboard/machine/laser_ams bound_width = 64 pixel_x = -32 pixel_y = -32 diff --git a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/phaser.dm b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/phaser.dm index 55f78f10201..cd041f433e3 100644 --- a/nsv13/code/modules/munitions/ship_weapons/energy_weapons/phaser.dm +++ b/nsv13/code/modules/munitions/ship_weapons/energy_weapons/phaser.dm @@ -5,6 +5,7 @@ icon_state = "phase_cannon" fire_mode = FIRE_MODE_RED_LASER //Shot by the pilot. ammo_type = /obj/item/ship_weapon/ammunition/railgun_ammo + circuit = /obj/item/circuitboard/machine/burst_phaser bound_width = 64 pixel_x = -32 pixel_y = -32 @@ -27,6 +28,7 @@ icon_state = "ion_cannon" fire_mode = FIRE_MODE_BLUE_LASER energy_weapon_type = /datum/ship_weapon/phaser + circuit = /obj/item/circuitboard/machine/phase_cannon charge_rate = 600000 // At power level 5, requires 3MW per tick to charge charge_per_shot = 4000000 // At power level 5, requires 20MW total to fire, takes about 12 seconds to gain 1 charge max_charge = 8000000 // Store 2 charges diff --git a/nsv13/code/modules/munitions/ship_weapons/hybrid_weapons/hybrid_railgun.dm b/nsv13/code/modules/munitions/ship_weapons/hybrid_weapons/hybrid_railgun.dm index aa5f11f269f..9636688c7f1 100644 --- a/nsv13/code/modules/munitions/ship_weapons/hybrid_weapons/hybrid_railgun.dm +++ b/nsv13/code/modules/munitions/ship_weapons/hybrid_weapons/hybrid_railgun.dm @@ -116,7 +116,7 @@ after_fire() return FALSE -/obj/machinery/ship_weapon/hybrid_rail/can_fire(shots = weapon_type.burst_size) +/obj/machinery/ship_weapon/hybrid_rail/can_fire(target, shots = weapon_type.burst_size) //Target is for the passed target variable, Shots is for the burst fire size if((state < STATE_CHAMBERED) || !chambered) return FALSE if(state >= STATE_FIRING) @@ -138,7 +138,7 @@ var/obj/item/ship_weapon/ammunition/T = chambered if(T) var/final_velo = projectile_velo - ((100 - alignment) / 100) //Misalignment slows projectiles - linked.fire_projectile(T.projectile_type, target, FALSE, final_velo, null, TRUE) + linked.fire_projectile(T.projectile_type, target, speed=final_velo, user_override=TRUE, lateral=TRUE) //CHECK THIS CODE LATERAL WAS RECEIVING NULL, REPLACED TO TRUE /obj/machinery/ship_weapon/hybrid_rail/after_fire() if(maint_state != 0) //MSTATE_CLOSED diff --git a/nsv13/code/modules/munitions/ship_weapons/ship_weapon_parts.dm b/nsv13/code/modules/munitions/ship_weapons/ship_weapon_parts.dm index 7ad188ebf78..5e4a7495e9f 100644 --- a/nsv13/code/modules/munitions/ship_weapons/ship_weapon_parts.dm +++ b/nsv13/code/modules/munitions/ship_weapons/ship_weapon_parts.dm @@ -31,7 +31,7 @@ righthand_file = 'nsv13/icons/mob/inhands/weapons/bombs_righthand.dmi' /obj/item/ship_weapon/parts/loading_tray/Initialize(mapload) - ..() + . = ..() AddComponent(/datum/component/two_handed, require_twohands=TRUE) /** @@ -46,7 +46,7 @@ righthand_file = 'nsv13/icons/mob/inhands/weapons/bombs_righthand.dmi' /obj/item/ship_weapon/parts/railgun_rail/Initialize(mapload) - ..() + . = ..() AddComponent(/datum/component/two_handed, require_twohands=TRUE) /** @@ -61,7 +61,7 @@ righthand_file = 'nsv13/icons/mob/inhands/weapons/bombs_righthand.dmi' /obj/item/ship_weapon/parts/mac_barrel/Initialize(mapload) - ..() + . = ..() AddComponent(/datum/component/two_handed, require_twohands=TRUE) /obj/item/ship_weapon/parts/broadside_casing diff --git a/nsv13/code/modules/overmap/FTL/components/drive.dm b/nsv13/code/modules/overmap/FTL/components/drive.dm index da4e83fe15c..f22dd4319fe 100644 --- a/nsv13/code/modules/overmap/FTL/components/drive.dm +++ b/nsv13/code/modules/overmap/FTL/components/drive.dm @@ -42,7 +42,7 @@ var/ftl_start = 'nsv13/sound/effects/ship/FTL_long_thirring.ogg' var/ftl_exit = 'nsv13/sound/effects/ship/freespace2/warp_close.wav' var/datum/looping_sound/advanced/ftl_drive/soundloop - var/auto_spool_capable = FALSE // whether the drive is capable of auto spooling or not + var/auto_spool_capable = TRUE // whether the drive is capable of auto spooling or not var/auto_spool_enabled = FALSE // whether the drive is set to auto spool or not var/lockout = FALSE //Used for our end round shenanigains @@ -55,7 +55,7 @@ radio.keyslot = new radio_key radio.listening = 0 radio.recalculateChannels() - soundloop = new(list(src), FALSE, FALSE, CHANNEL_FTL_MANIFOLD, TRUE) + soundloop = new(src, FALSE, FALSE, CHANNEL_FTL_MANIFOLD, TRUE) STOP_PROCESSING(SSmachines, src) return INITIALIZE_HINT_LATELOAD @@ -311,6 +311,7 @@ Preset classes of FTL drive with pre-programmed behaviours pylon_info["gyro"] = round(P.gyro_speed / P.req_gyro_speed, 0.01) pylon_info["capacitor"] = round(P.capacitor / P.req_capacitor, 0.01) pylon_info["draw"] = display_power(P.power_draw) + pylon_info["nucleium"] = round(P.get_nucleium_use() / 2, 0.01) //Converted into mol / second, SSmachines runs every 2 seconds. pylon_info["shielded"] = P.shielded all_pylon_info[++all_pylon_info.len] = pylon_info // Unfortunately, this is currently the best way to embed lists data["pylons"] = all_pylon_info @@ -360,8 +361,10 @@ Preset classes of FTL drive with pre-programmed behaviours progress = 0 soundloop.interrupt() jump_speed_pylon = initial(jump_speed_pylon) - if(shutdown_pylons) + if(shutdown_pylons && !auto_spool_enabled) for(var/obj/machinery/atmospherics/components/binary/drive_pylon/P as() in pylons) + if(P.pylon_state == PYLON_STATE_OFFLINE || P.pylon_state == PYLON_STATE_SHUTDOWN) + continue P.set_state(PYLON_STATE_SHUTDOWN) cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(post_cooldown), auto_spool_enabled), FTL_COOLDOWN) diff --git a/nsv13/code/modules/overmap/FTL/components/drive_pylon.dm b/nsv13/code/modules/overmap/FTL/components/drive_pylon.dm index a455f2ecf8a..f779618c35d 100644 --- a/nsv13/code/modules/overmap/FTL/components/drive_pylon.dm +++ b/nsv13/code/modules/overmap/FTL/components/drive_pylon.dm @@ -1,6 +1,7 @@ // in kPa #define MAX_WASTE_OUTPUT_PRESSURE 5000 #define MAX_WASTE_STORAGE_PRESSURE 8000 +#define POWER_FAIL_TOLERANCE 3 //! If more than this many cycles of power are missed, we shut down. If any stacks of this are present, it multiplies power drain of following cycles by the counter. // Base temperature to heat waste gas by in celcius. #define WASTE_GAS_HEAT 35 @@ -8,8 +9,6 @@ /// Multiplies power draw by this value every tick it remains active when spooled. Higher values will make power use increase faster #define PYLON_ACTIVE_EXPONENT 1.01 -/// Max power use before we start to overheat (watts) -#define POWER_USE_SAFE 100000 ///Thirring Drive PYLON/// /obj/machinery/atmospherics/components/binary/drive_pylon @@ -39,6 +38,8 @@ var/datum/gas_mixture/air_contents var/obj/structure/cable/cable var/obj/machinery/computer/ship/ftl_core/ftl_drive + ///Stacking counter of how many times we have missed power demands. If we go over the defined tolerance, we shut down. Even below, we use [counter] times more power to make up for the loss. + var/power_failure_counter = 0 /obj/machinery/atmospherics/components/binary/drive_pylon/Initialize(mapload) . = ..() @@ -72,15 +73,20 @@ switch(pylon_state) if(PYLON_STATE_ACTIVE) if(shielded) - active_mol_use = max(round(active_mol_use * PYLON_ACTIVE_EXPONENT, 0.1), 0.025) // Shielded pylons use less power but burn more fuel - power_draw += round(500 * (active_mol_use / 10 + 1), 1) + active_mol_use = max(active_mol_use * PYLON_ACTIVE_EXPONENT, active_mol_use + 0.015) // Shielded pylons use less power but burn more fuel + power_draw += round(100 * (active_mol_use / 10 + 1), 1) //Power scaling is considerably lower in exchange for a tangible cost. else power_draw = round(power_draw * PYLON_ACTIVE_EXPONENT + 300, 1) // Active pylons slowly but exponentially require more charge to stay stable. Don't leave them on when you don't need to - if(input.get_moles(GAS_NUCLEIUM) < active_mol_use) + var/rounded_mol_use = round(active_mol_use, 0.1) + if(input.get_moles(GAS_NUCLEIUM) < rounded_mol_use) say("Insufficient FTL fuel, spooling down.") set_state(PYLON_STATE_SHUTDOWN) return - input.adjust_moles(GAS_NUCLEIUM, -active_mol_use) + input.adjust_moles(GAS_NUCLEIUM, -rounded_mol_use) + var/outgoing_temp = T20C + WASTE_GAS_HEAT + round(power_draw / 1000 / log(power_draw), 1) + if(shielded) + outgoing_temp *= 2 + air_contents.adjust_moles_temp(GAS_PLASMA, rounded_mol_use, outgoing_temp) //Why did we have the whole piping stuff around output of this thing if we only ever ejected gas during the initial charge?? if(PYLON_STATE_STARTING) //pop the lid power_draw = 5000 @@ -124,22 +130,30 @@ /obj/machinery/atmospherics/components/binary/drive_pylon/proc/power_drain() var/turf/T = get_turf(src) - if(!cable || cable.loc != loc) - cable = T.get_cable_node() - if(!cable) + if(!cable || get_turf(cable) != get_turf(src)) + if(cable) + clear_cable_ref() + var/obj/structure/cable/new_cable = T.get_cable_node() + if(!new_cable) return FALSE - if(power_draw > cable.surplus()) - visible_message("\The [src] lets out a metallic groan as its power indicator flickers.") - return FALSE - cable.add_load(power_draw) + cable = new_cable + RegisterSignal(new_cable, COMSIG_PARENT_QDELETING, PROC_REF(clear_cable_ref)) + var/actual_power_draw = power_draw * (1 + power_failure_counter) + if(actual_power_draw > cable.surplus()) + power_failure_counter++ + if(power_failure_counter > POWER_FAIL_TOLERANCE) + visible_message("\The [src] lets out a metallic groan as its power indicator flickers.") + return FALSE + visible_message("The power warning diode on [src] flashes [power_failure_counter > 1 ? "bright red" : "yellow"]!") + else + power_failure_counter = max(0, power_failure_counter - 1) + cable.add_load(clamp(actual_power_draw, 0, cable.surplus())) return TRUE /obj/machinery/atmospherics/components/binary/drive_pylon/process_atmos() var/datum/gas_mixture/output = airs[2] var/i_pressure = air_contents.return_pressure() switch(i_pressure) - if(0) - return if(MAX_WASTE_STORAGE_PRESSURE/3 to MAX_WASTE_STORAGE_PRESSURE/2) switch(rand(1, 10)) if(1) @@ -172,19 +186,26 @@ explosion(T, 0, 1, 3) qdel(src) return + else + var/output_pressure = output.return_pressure() + //When I arrived here, this file was terrible. Now, it is still terrible, but at least the nodes update. ~Delta if(output_pressure < MAX_WASTE_OUTPUT_PRESSURE) var/transfer_moles = (MAX_WASTE_OUTPUT_PRESSURE - output_pressure) * output.return_volume()/(air_contents.return_temperature() * R_IDEAL_GAS_EQUATION) air_contents.transfer_to(output, transfer_moles) - update_parents() + update_parents() //Why would you not always be updating the gas input on a machine that consumes gas?? /obj/machinery/atmospherics/components/binary/drive_pylon/proc/try_enable() if(pylon_state == PYLON_STATE_SHUTDOWN) return FALSE var/turf/T = get_turf(src) - cable = T.get_cable_node() - if(!cable) + var/obj/structure/cable/new_cable = T.get_cable_node() + if(cable) + clear_cable_ref() + if(!new_cable) return FALSE + cable = new_cable + RegisterSignal(new_cable, COMSIG_PARENT_QDELETING, PROC_REF(clear_cable_ref)) on = TRUE START_PROCESSING(SSmachines, src) set_state(PYLON_STATE_STARTING) @@ -205,12 +226,12 @@ capacitor = 0 active_mol_use = initial(active_mol_use) on = FALSE + power_failure_counter = 0 STOP_PROCESSING(SSmachines, src) /// Main spool process, consumes nucleium and converts it into FTL capacitor power /obj/machinery/atmospherics/components/binary/drive_pylon/proc/consume_fuel() var/datum/gas_mixture/input = airs[1] - var/datum/gas_mixture/output = airs[2] // if(prob(30)) // tesla_zap(src, 2, 1000) var/input_fuel = min(input.get_moles(GAS_NUCLEIUM), max_charge_rate * mol_per_capacitor) @@ -219,19 +240,27 @@ var/datum/gas_mixture/waste = new waste.adjust_moles(GAS_PLASMA, input_fuel / 3) waste.adjust_moles(GAS_NUCLEIUM, input_fuel / 4) - var/heat_increase = WASTE_GAS_HEAT + round(power_draw / 1000 / log(power_draw), 1) - if(shielded) // Closing shields greatly increases internal temperture gain + var/heat_increase = WASTE_GAS_HEAT + round(power_draw / 1000 / log(power_draw), 1) //???? This proc only ever happens while the pylon boots up, during which power use is basically CONSTANT?????? + if(shielded) // Closing shields greatly increases internal temperature gain heat_increase *= 2 var/air_temperature = air_contents.return_temperature() var/air_heat_capacity = air_contents.heat_capacity() var/combined_energy = heat_capacity * (air_temperature + heat_increase) + air_heat_capacity * air_temperature // Thermodynamics and it's consequences have been a disaster for the humanity's programmers waste.set_temperature(combined_energy/(air_heat_capacity + heat_capacity)) // combined energy divided by combined heat capacity - if(output.return_pressure() < MAX_WASTE_OUTPUT_PRESSURE) - air_contents.merge(waste) - else - output.merge(waste) + air_contents.merge(waste) //Why was this snowflaked before?? We already handle overfilled internal storage on atmos process. qdel(waste) +///Returns the current nucleium use of this machine in moles / machine tick (2 seconds). Not rounded. +/obj/machinery/atmospherics/components/binary/drive_pylon/proc/get_nucleium_use() + switch(pylon_state) + if(PYLON_STATE_SPOOLING) + var/datum/gas_mixture/input = airs[1] + return min(input.get_moles(GAS_NUCLEIUM), max_charge_rate * mol_per_capacitor) + if(PYLON_STATE_ACTIVE) + return active_mol_use + else + return 0 + /obj/machinery/atmospherics/components/binary/drive_pylon/proc/toggle_shield() if(!pylon_shield) //somehow... initialize_shield() @@ -258,6 +287,8 @@ ftl_drive.pylons -= src ftl_drive = null pylon_shield.pylon = null + if(cable) + clear_cable_ref() QDEL_NULL(pylon_shield) var/datum/gas_mixture/input = airs[1] var/datum/gas_mixture/output = airs[2] @@ -274,6 +305,10 @@ qdel(spill) return ..() +///Clears the ref of the cable. Why this didn't have any measures for this before, I do not know. +/obj/machinery/atmospherics/components/binary/drive_pylon/proc/clear_cable_ref() + UnregisterSignal(cable, COMSIG_PARENT_QDELETING) + cable = null /obj/machinery/atmospherics/components/binary/drive_pylon/return_analyzable_air() return airs + air_contents @@ -352,16 +387,9 @@ else to_chat(user, "You don't think it would be wise to touch this right now.") - -#undef PYLON_STATE_OFFLINE -#undef PYLON_STATE_STARTING -#undef PYLON_STATE_WARMUP -#undef PYLON_STATE_SPOOLING -#undef PYLON_STATE_ACTIVE -#undef PYLON_STATE_SHUTDOWN - #undef MAX_WASTE_OUTPUT_PRESSURE #undef MAX_WASTE_STORAGE_PRESSURE +#undef WASTE_GAS_HEAT #undef PYLON_ACTIVE_EXPONENT -#undef POWER_USE_SAFE +#undef POWER_FAIL_TOLERANCE diff --git a/nsv13/code/modules/overmap/FTL/ftl_jump.dm b/nsv13/code/modules/overmap/FTL/ftl_jump.dm index a683c965fd9..ce78db84359 100644 --- a/nsv13/code/modules/overmap/FTL/ftl_jump.dm +++ b/nsv13/code/modules/overmap/FTL/ftl_jump.dm @@ -1,13 +1,17 @@ /datum/star_system/proc/add_ship(obj/structure/overmap/OM, turf/target_turf) if(!system_contents.Find(OM)) system_contents += OM //Lets be safe while I cast some black magic. + var/did_restore_system = FALSE if(!occupying_z && OM.z) //Does this system have a physical existence? if not, we'll set this now so that any inbound ships jump to the same Z-level that we're on. if(!SSmapping.level_trait(OM.z, ZTRAIT_OVERMAP)) occupying_z = OM.get_reserved_z() else occupying_z = OM.z - if(OM.role == MAIN_OVERMAP) //As these events all happen to the main ship, let's check that it's not say, the nomi that's triggering this system load... - try_spawn_event() + did_restore_system = TRUE + else if(!occupying_z && ((OM.overmap_flags & OVERMAP_FLAG_ZLEVEL_CARRIER) || length(OM.mobs_in_ship))) //If someone is inside, or we always want it loaded, load it. + occupying_z = OM.get_reserved_z() + did_restore_system = TRUE + if(did_restore_system) if(fleets.len) for(var/datum/fleet/F in fleets) if(!F.current_system) @@ -57,16 +61,6 @@ return TRUE OM.play_music(pick(audio_cues)) -/datum/star_system/proc/try_spawn_event() - if(possible_events && prob(event_chance)) - if(!length(possible_events)) - return FALSE - var/event_type = pick(possible_events) - for(var/datum/round_event_control/E in SSevents.control) - if(istype(E, event_type)) - SSevents.TriggerEvent(E) - break - /datum/star_system/proc/restore_contents() if(enemy_queue) for(var/X in enemy_queue) @@ -158,31 +152,36 @@ desired_angle = 90 //90 degrees AKA face EAST to match the FTL parallax. addtimer(CALLBACK(src, PROC_REF(jump_start), target_system, force), ftl_drive.ftl_startup_time) -/obj/structure/overmap/proc/force_return_jump(datum/star_system/target_system) +/obj/structure/overmap/proc/force_return_jump() + SIGNAL_HANDLER + var/datum/star_system/target_system = SSstar_system.return_system SSovermap_mode.already_ended = TRUE - if(ftl_drive) //Do we actually have an ftl drive? + if(ftl_drive && target_system) //Do we actually have an ftl drive? ftl_drive.lockout = TRUE //Prevent further jumps if(ftl_drive.ftl_state == FTL_STATE_JUMPING) - addtimer(CALLBACK(src, PROC_REF(force_return_jump), target_system), 30 SECONDS) - message_admins("[src] is already jumping, delaying recall for 30 seconds") - log_runtime("DEBUG: force_return_jump: Players were already jumping, trying again in 30 seconds") + RegisterSignal(src, COMSIG_SHIP_ARRIVED, PROC_REF(force_return_jump)) + message_admins("[src] is already jumping, delaying recall") + log_game("DEBUG: force_return_jump: Players were already jumping, trying again when jump is complete") else - target_system.hidden = FALSE //Reveal where we are going - - log_runtime("DEBUG: force_return_jump: Beginning jump to outpost 45") + SSstar_system.return_system.hidden = FALSE //Reveal where we are going + UnregisterSignal(src, COMSIG_SHIP_ARRIVED) + log_game("DEBUG: force_return_jump: Beginning jump to [target_system.name]") ftl_drive.force_jump(target_system) //Jump home addtimer(CALLBACK(src, PROC_REF(check_return_jump)), SSstar_system.ships[src]["to_time"] + 35 SECONDS) + else if(target_system) + message_admins("Failed to force return jump! [src] does not have an FTL Drive!") + log_runtime("DEBUG: force_return_jump: [src] had no FTL drive") else - message_admins("Target does not have an FTL Drive!") - log_runtime("DEBUG: force_return_jump: Ship had no FTL drive") + message_admins("Failed to force return jump! No target system was found! (Tell a coder)") + log_runtime("DEBUG: force_return_jump: No target system") /obj/structure/overmap/proc/check_return_jump() - log_runtime("DEBUG: check_return_jump called") - var/datum/star_system/S = SSstar_system.system_by_id("Outpost 45") + log_game("DEBUG: check_return_jump called") + var/datum/star_system/S = SSstar_system.return_system if(current_system != S && SSstar_system.ships[src]["target_system"] != S) // Not in 45 and not on our way there log_runtime("DEBUG: check_return_jump detected bad state, trying to force_return_jump") - force_return_jump(S) + force_return_jump() /obj/structure/overmap/proc/force_parallax_update(ftl_start) @@ -203,19 +202,17 @@ /obj/structure/overmap/proc/jump_start(datum/star_system/target_system, force=FALSE) if(ftl_drive?.ftl_state != FTL_STATE_JUMPING) - if(force) + if(force && ftl_drive) ftl_drive.ftl_state = FTL_STATE_JUMPING else log_runtime("DEBUG: jump_start: aborted jump to [target_system], drive state = [ftl_drive?.ftl_state]") return if((SEND_GLOBAL_SIGNAL(COMSIG_GLOB_CHECK_INTERDICT, src) & BEING_INTERDICTED) && !force) // Override interdiction if the game is over - ftl_drive?.radio?.talk_into(ftl_drive, "Warning. Local energy anomaly detected - calculated jump parameters invalid. Performing emergency reboot.", ftl_drive.radio_channel) + ftl_drive.radio.talk_into(ftl_drive, "Warning. Local energy anomaly detected - calculated jump parameters invalid. Performing emergency reboot.", ftl_drive.radio_channel) relay('sound/magic/lightning_chargeup.ogg', channel=CHANNEL_IMPORTANT_SHIP_ALERT) - ftl_drive?.depower() - log_runtime("DEBUG: jump_start: aborted jump to [target_system] due to interdiction") + ftl_drive.depower() return - log_runtime("DEBUG: jump_start: jump to [target_system] passed initial checks") relay_to_nearby('nsv13/sound/effects/ship/FTL.ogg', null, ignore_self=TRUE)//Ships just hear a small "crack" when another one jumps if(reserved_z) //Actual overmap parallax behaviour var/datum/space_level/SL = SSmapping.z_list[reserved_z] @@ -225,10 +222,12 @@ relay(ftl_drive.ftl_loop, "You feel the ship lurch forward", loop=TRUE, channel = CHANNEL_SHIP_ALERT) var/datum/star_system/curr = SSstar_system.ships[src]["current_system"] - log_runtime("DEBUG: jump_start: starting jump to [target_system] from [curr]") SEND_SIGNAL(src, COMSIG_SHIP_DEPARTED) // Let missions know we have left the system curr.remove_ship(src) - var/speed = (curr.dist(target_system) / (ftl_drive.get_jump_speed() * 10)) //TODO: FTL drive speed upgrades. + var/drive_speed = ftl_drive.get_jump_speed() + if(drive_speed <= 0) //Assumption: If we got into this proc with speed 0, we want it to jump anyways, as it should be caught before otherwise. Using very slow speed in this case. + drive_speed = 1 //Div-by-0s are not fun. + var/speed = (curr.dist(target_system) / (drive_speed * 10)) //TODO: FTL drive speed upgrades. SSstar_system.ships[src]["to_time"] = world.time + speed MINUTES SEND_SIGNAL(src, COMSIG_FTL_STATE_CHANGE) if(role == MAIN_OVERMAP) //Scuffed please fix diff --git a/nsv13/code/modules/overmap/ai-skynet.dm b/nsv13/code/modules/overmap/ai-skynet.dm index 55c1f2d770e..3a41913bb39 100644 --- a/nsv13/code/modules/overmap/ai-skynet.dm +++ b/nsv13/code/modules/overmap/ai-skynet.dm @@ -481,19 +481,19 @@ Adding tasks is easy! Just define a datum for it. /obj/structure/overmap/proc/make_paperwork( var/datum/freight_delivery_receipt/receipt, var/approval ) // Cargo DRADIS automatically synthesizes and attaches the requisition form to the cargo torp var/obj/item/paper/paper = new /obj/item/paper() - paper.info = "

                      [receipt.vessel] Shipping Manifest


                      " + var/final_paper_text = "

                      [receipt.vessel] Shipping Manifest


                      " if ( length( receipt.completed_objectives ) == 1 ) var/datum/overmap_objective/cargo/objective = receipt.completed_objectives[ 1 ] - paper.info += "Order: #[GLOB.round_id]-[objective.objective_number]
                      \ + final_paper_text += "Order: #[GLOB.round_id]-[objective.objective_number]
                      \ Destination: [src]
                      \ Item: [objective.crate_name]
                      " else - paper.info += "Order: N/A
                      \ + final_paper_text += "Order: N/A
                      \ Destination: [src]
                      \ Item: Unregistered Shipment
                      " - paper.info += "Contents:
                        " + final_paper_text += "Contents:
                          " if ( istype( receipt.shipment, /obj/item/ship_weapon/ammunition/torpedo/freight ) ) var/obj/item/ship_weapon/ammunition/torpedo/freight/shipment = receipt.shipment @@ -502,25 +502,28 @@ Adding tasks is easy! Just define a datum for it. for ( var/atom/item in shipment.GetAllContents() ) // Remove redundant objects that would otherwise always appear on the list if ( !is_type_in_typecache( item.type, GLOB.blacklisted_paperwork_itemtypes ) ) - paper.info += "
                        • [item]
                        • " + final_paper_text += "
                        • [item]
                        • " else - paper.info += "
                        • miscellaneous unpackaged objects
                        • " + final_paper_text += "
                        • miscellaneous unpackaged objects
                        • " - paper.info += "

                        Stamp below to confirm receipt of goods:

                        " + final_paper_text += "

                      Stamp below to confirm receipt of goods:

                      " - paper.stamped = list() - paper.stamps = list() + //paper.stamped = list() + //paper.stamps = list() var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/simple/paper) // Extremely cheap stamp code because the only way to add stamps is through tgui if ( approval ) - paper.stamped += "stamp-ok" - paper.stamps = list( list(sheet.icon_class_name("stamp-ok"), 1, 1, 0) ) + paper.add_stamp(sheet.icon_class_name("stamp-ok"), 1, 1, 0, "stamp-ok") + //paper.stamped += "stamp-ok" + //paper.stamps = list( list(sheet.icon_class_name("stamp-ok"), 1, 1, 0) ) else - paper.stamped += "stamp-deny" - paper.stamps = list( list(sheet.icon_class_name("stamp-deny"), 1, 1, 0) ) + paper.add_stamp(sheet.icon_class_name("stamp-deny"), 1, 1, 0, "stamp-deny") + //paper.stamped += "stamp-deny" + //paper.stamps = list( list(sheet.icon_class_name("stamp-deny"), 1, 1, 0) ) - paper.update_icon() + paper.add_raw_text(final_paper_text) + paper.update_appearance() return paper /obj/structure/overmap/proc/return_approved_form( var/datum/freight_delivery_receipt/receipt ) @@ -676,7 +679,7 @@ Adding tasks is easy! Just define a datum for it. if(OM.faction == alignment || federation_check(OM)) OM.hail(pick(greetings), name) assemble(current_system) - if(OM.faction != alignment) + if(OM.faction != alignment && !federation_check(OM)) if(OM.alpha >= 150) //Sensor cloaks my boy, sensor cloaks OM.hail(pick(taunts), name) last_encounter_time = world.time @@ -687,7 +690,7 @@ Adding tasks is easy! Just define a datum for it. if(SSovermap_mode.override_ghost_ships) message_admins("Failed to spawn ghost ship due to admin override.") return - if(!prob(10)) + if(!prob(20)) return var/player_check = get_active_player_count(alive_check = TRUE, afk_check = TRUE, human_check = TRUE) @@ -713,7 +716,7 @@ Adding tasks is easy! Just define a datum for it. var/target_location = locate(rand(round(world.maxx/2) + 10, world.maxx - 39), rand(40, world.maxy - 39), OM.z) var/obj/structure/overmap/selected_ship = pick(ship_list) var/target_ghost - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to pilot a [initial(selected_ship.faction)] [initial(selected_ship.name)]?", ROLE_GHOSTSHIP, null, null, 20 SECONDS, POLL_IGNORE_GHOSTSHIP) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to pilot a [initial(selected_ship.faction)] [initial(selected_ship.name)]?", ROLE_GHOSTSHIP, /datum/role_preference/midround_ghost/ghost_ship, 20 SECONDS, POLL_IGNORE_GHOSTSHIP) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) target_ghost = C @@ -1607,6 +1610,8 @@ Seek a ship thich we'll station ourselves around var/ai_can_launch_fighters = FALSE //AI variable. Allows your ai ships to spawn fighter craft var/list/ai_fighter_type = list() var/ai_flags = AI_FLAG_DESTROYER + ///Overmap bitflags + var/overmap_flags = NONE var/list/holding_cargo = list() // list of objective datums. This station has cargo to deliver to the players as part of a courier objective var/list/expecting_cargo = list() // list of objective datums. This station is expecting cargo delivered to them by the players as a part of a courier objective @@ -1965,7 +1970,7 @@ Seek a ship thich we'll station ourselves around /obj/structure/overmap/proc/move_toward(atom/target, ram_target = FALSE, ignore_all_collisions = FALSE) brakes = FALSE move_mode = NORTH - inertial_dampeners = TRUE + enable_dampeners() if(!target || QDELETED(target)) if(defense_target) //Maybe it's defending a ship, it'll still need to find its way home. target = defense_target @@ -1978,9 +1983,9 @@ Seek a ship thich we'll station ourselves around switch(angular_difference) if(-15 to 15) boost(NORTH) //ZOOOM - if(-45 to -180) + if(-180 to -45) boost(WEST) - if(-180 to -INFINITY) + if(-INFINITY to -180) boost(EAST) if(45 to 180) boost(EAST) @@ -2006,10 +2011,10 @@ Seek a ship thich we'll station ourselves around if(blocked) //Time to do some evasive. Determine the object's direction to evade in the opposite direction. if(blocked.velocity.a > 0) move_mode = EAST //The ship should still drift forward / backwards, but in this case let's not accelerate into an asteroid shall we... - inertial_dampeners = FALSE + disable_dampeners() if(blocked.velocity.a <= 0) move_mode = WEST - inertial_dampeners = FALSE + disable_dampeners() return diff --git a/nsv13/code/modules/overmap/aim_helper.dm b/nsv13/code/modules/overmap/aim_helper.dm index eca12d274ed..cdfcbe5b087 100644 --- a/nsv13/code/modules/overmap/aim_helper.dm +++ b/nsv13/code/modules/overmap/aim_helper.dm @@ -1,11 +1,21 @@ /obj/structure/overmap/onMouseDrag(src_object, over_object, src_location, over_location, params, mob/M) - aiming_target = over_object - aiming_params = params - var/datum/component/overmap_gunning/user_gun = M.GetComponent(/datum/component/overmap_gunning) - if(user_gun) + // Handle pilots dragging their mouse + if(M == pilot) + if(move_by_mouse && can_move() && !pilot.incapacitated()) + desired_angle = getMouseAngle(params, M) + + // If we're the pilot but not the gunner, don't update gunner-specific information + if(!LAZYFIND(gauss_gunners, M) && M != gunner) + return + + // Handle gunners dragging their mouse + if(LAZYFIND(gauss_gunners, M)) // Anyone with overmap_gunning should also be in gauss_gunners + var/datum/component/overmap_gunning/user_gun = M.GetComponent(/datum/component/overmap_gunning) user_gun.onMouseDrag(src_object, over_object, src_location, over_location, params, M) return TRUE if(aiming) + aiming_target = over_object + aiming_params = params if(target_lock) lastangle = get_angle(src, get_turf(over_object)) else @@ -23,6 +33,8 @@ if(user_gun) user_gun?.onMouseDown(object) return TRUE + if(M != gunner) + return if((fire_mode == FIRE_MODE_MAC || fire_mode == FIRE_MODE_BLUE_LASER || fire_mode == FIRE_MODE_HYBRID_RAIL)) aiming_target = object aiming_params = params @@ -41,6 +53,8 @@ if(user_gun) user_gun?.onMouseUp(object) return TRUE + if(M != gunner) + return autofire_target = null lastangle = get_angle(src, get_turf(object)) stop_aiming() diff --git a/nsv13/code/modules/overmap/armour/nano_well.dm b/nsv13/code/modules/overmap/armour/nano_well.dm index 70c8e68878e..241f095de8e 100644 --- a/nsv13/code/modules/overmap/armour/nano_well.dm +++ b/nsv13/code/modules/overmap/armour/nano_well.dm @@ -354,18 +354,14 @@ Starting Materials /obj/machinery/armour_plating_nanorepair_well/ui_act(action, params, datum/tgui/ui) if(..()) return - if(!(in_range(src, usr) | IsAdminGhost(usr))) + if(!(in_range(src, usr) || IsAdminGhost(usr))) return var/adjust = text2num(params["adjust"]) if(action == "power_allocation") - if(adjust && isnum(adjust)) + if(isnum(adjust)) power_allocation = adjust - if(power_allocation > maximum_power_allocation) - power_allocation = maximum_power_allocation - return - if(power_allocation < 0) - power_allocation = 0 - return + adjust = CLAMP(adjust, 0, maximum_power_allocation) + return switch(action) if("iron") if(material_tier != 0) diff --git a/nsv13/code/modules/overmap/boarding/boarding.dm b/nsv13/code/modules/overmap/boarding/boarding.dm index 80c499c72ab..39ed9034bb9 100644 --- a/nsv13/code/modules/overmap/boarding/boarding.dm +++ b/nsv13/code/modules/overmap/boarding/boarding.dm @@ -34,7 +34,7 @@ //20 or more players? You're allowed "real" boarders. if(player_check >= min_players_for_ghosts) // Remove the low pop boarder camping - candidates = pollCandidatesForMob("Do you want to play as a boarding team member?", ROLE_OPERATIVE, null, ROLE_OPERATIVE, 10 SECONDS, src) + candidates = pollCandidatesForMob("Do you want to play as a boarding team member?", ROLE_OPERATIVE, /datum/role_preference/midround_ghost/boarder, 10 SECONDS, src) //No candidates? Well! Guess you get to deal with some KNPCs :)))))) if(!length(candidates)) return spawn_knpcs(amount, faction_selection) @@ -91,6 +91,8 @@ knpc_types = list(/mob/living/carbon/human/ai_boarder/zombie,) if("droid") knpc_types = list(/mob/living/carbon/human/ai_boarder/boarding_droid,) + if("catgirl") + knpc_types = list(/mob/living/carbon/human/species/felinid/npc, /mob/living/carbon/human/ai_boarder/assistant/felinid) else message_admins("KNPC spawn failed. No knpcs configured for faction name \"[faction_selection]\".") throw EXCEPTION("No knpcs configured for faction name \"[faction_selection]\"") @@ -105,6 +107,11 @@ message_admins("KNPC boarder spawn aborted. This ship does not support KNPCs (add some patrol nodes!)") throw EXCEPTION("KNPC boarder spawn aborted. This ship does not support KNPCs (add some patrol nodes!)") + switch(faction_selection) + if("syndicate") + relay('nsv13/sound/effects/ship/boarding_pod.ogg', "You can hear several tethers attaching to the ship.") + else //No other special cases exist but this is a switch anyways to support them in the future (pirates have no tell) + var/obj/structure/closet/supplypod/syndicate_odst/toLaunch = new() var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/supplypod_temp_holding] toLaunch.forceMove(shippingLane) diff --git a/nsv13/code/modules/overmap/boarding/ghost_role_spawners.dm b/nsv13/code/modules/overmap/boarding/ghost_role_spawners.dm index 307cbf05edd..ed63d498484 100644 --- a/nsv13/code/modules/overmap/boarding/ghost_role_spawners.dm +++ b/nsv13/code/modules/overmap/boarding/ghost_role_spawners.dm @@ -1,3 +1,25 @@ +/obj/effect/mob_spawn/human/syndicate + name = "Syndicate Operative" + roundstart = FALSE + death = FALSE + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper_s" + outfit = /datum/outfit/syndicate_empty + assignedrole = "Space Syndicate" //I know this is really dumb, but Syndicate operative is nuke ops + +/datum/outfit/syndicate_empty + name = "Syndicate Operative Empty" + uniform = /obj/item/clothing/under/syndicate + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + ears = /obj/item/radio/headset/syndicate/alt + back = /obj/item/storage/backpack + implants = list(/obj/item/implant/weapons_auth) + id = /obj/item/card/id/syndicate + +/datum/outfit/syndicate_empty/post_equip(mob/living/carbon/human/H) + H.faction |= FACTION_SYNDICATE + /datum/outfit/syndicate_empty/boarding/captain name = "Syndicate Captain (Boarding)" id = /obj/item/card/id/syndicate/nuke_leader diff --git a/nsv13/code/modules/overmap/boarding/interiors.dm b/nsv13/code/modules/overmap/boarding/interiors.dm index 0193cdca1f5..be43f5760b7 100644 --- a/nsv13/code/modules/overmap/boarding/interiors.dm +++ b/nsv13/code/modules/overmap/boarding/interiors.dm @@ -8,6 +8,7 @@ Attempt to "board" an AI ship. You can only do this when they're low on health t /obj/structure/overmap/proc/kill_boarding_level(obj/structure/overmap/boarder) set waitfor = FALSE var/was_fully_loaded = TRUE + hammerlocked = FALSE if(interior_status != INTERIOR_READY) // determines whether this ship can be loaded again if(interior_status != INTERIOR_NOT_LOADED) message_admins("DEBUG: Deleting the interior for [src] before it was fully loaded") @@ -97,6 +98,7 @@ Attempt to "board" an AI ship. You can only do this when they're low on health t message_admins("Error parsing boarding interior map for [src]") return FALSE + hammerlocked = TRUE current_system = boarder.current_system get_overmap_level() boarding_reservation_z = boarder.boarding_reservation_z diff --git a/nsv13/code/modules/overmap/effects.dm b/nsv13/code/modules/overmap/effects.dm index 8ec25892706..6833cc57115 100644 --- a/nsv13/code/modules/overmap/effects.dm +++ b/nsv13/code/modules/overmap/effects.dm @@ -24,11 +24,6 @@ anchored = TRUE /obj/effect/particle_effect/phoron_explosion/Initialize(mapload) - ..() - return INITIALIZE_HINT_LATELOAD - -/obj/effect/particle_effect/phoron_explosion/LateInitialize() + . = ..() QDEL_IN(src, 1.5 SECONDS) -/obj/effect/particle_effect/phoron_explosion/Destroy() - return ..() diff --git a/nsv13/code/modules/overmap/factions.dm b/nsv13/code/modules/overmap/factions.dm index e7ea53482de..c01aef381d2 100644 --- a/nsv13/code/modules/overmap/factions.dm +++ b/nsv13/code/modules/overmap/factions.dm @@ -74,7 +74,7 @@ Set up relationships. if(main_ship) current_system = SSstar_system.ships[main_ship]["current_system"] var/list/possible_spawns = list() - for(var/datum/star_system/starsys in SSstar_system.systems) + for(var/datum/star_system/starsys in SSstar_system.neutral_zone_systems) //Neutral zone to prevent overcrowding the Syndicate and friendly sectors if(starsys != current_system && !starsys.hidden && (lowertext(starsys.alignment) == lowertext(src.name) || starsys.alignment == "unaligned" || starsys.alignment == "uncharted")) //Find one of our base systems and try to send a fleet out from there. possible_spawns += starsys if(!possible_spawns.len && !override) diff --git a/nsv13/code/modules/overmap/fighters/_fighters.dm b/nsv13/code/modules/overmap/fighters/_fighters.dm index e7f365b37a3..7b930cdfd01 100644 --- a/nsv13/code/modules/overmap/fighters/_fighters.dm +++ b/nsv13/code/modules/overmap/fighters/_fighters.dm @@ -455,7 +455,7 @@ Been a mess since 2018, we'll fix it someday (probably) /obj/structure/overmap/small_craft/combat/light/syndicate //PVP MODE name = "Syndicate Light Fighter" desc = "The Syndicate's answer to Nanotrasen's light fighter craft, this fighter is designed to maintain aerial supremacy." - icon = 'nsv13/icons/overmap/syndicate/syn_viper.dmi' + icon = 'nsv13/icons/overmap/syndicate/syn_rapier.dmi' req_one_access = ACCESS_SYNDICATE faction = "syndicate" start_emagged = TRUE @@ -688,7 +688,7 @@ Been a mess since 2018, we'll fix it someday (probably) /obj/structure/overmap/small_craft/attackby(obj/item/W, mob/user, params) //fueling and changing equipment add_fingerprint(user) - if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda) && length(operators)) + if(istype(W, /obj/item/card/id) || istype(W, /obj/item/modular_computer/tablet/pda) && length(operators)) if(!allowed(user)) var/ersound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') playsound(src, ersound, 100, 1) @@ -781,6 +781,9 @@ Been a mess since 2018, we'll fix it someday (probably) /obj/structure/overmap/small_craft/InterceptClickOn(mob/user, params, atom/target) if(user.incapacitated() || !isliving(user)) return FALSE + if(istype(target, /obj/machinery/button/door) || istype(target, /obj/machinery/turbolift_button)) + target.attack_hand(user) + return FALSE if((target == src) && (user == pilot)) helm?.ui_interact(user) return FALSE diff --git a/nsv13/code/modules/overmap/fighters/modules/cargo_hold.dm b/nsv13/code/modules/overmap/fighters/modules/cargo_hold.dm index 89fd890b616..7258fc9393f 100644 --- a/nsv13/code/modules/overmap/fighters/modules/cargo_hold.dm +++ b/nsv13/code/modules/overmap/fighters/modules/cargo_hold.dm @@ -19,7 +19,7 @@ max_freight = 20 /obj/item/fighter_component/secondary/utility/hold/load(obj/structure/overmap/target, atom/movable/AM) - if(length(contents) >= max_freight || isliving(AM) || istype(AM, /obj/item/fighter_component) || istype(AM, /obj/item/card/id) || istype(AM, /obj/item/pda) || istype(AM, /obj/structure/overmap)) //This just causess issues, trust me on this) + if(length(contents) >= max_freight || isliving(AM) || istype(AM, /obj/item/fighter_component) || istype(AM, /obj/item/card/id) || istype(AM, /obj/item/modular_computer/tablet/pda) || istype(AM, /obj/structure/overmap)) //This just causess issues, trust me on this) return FALSE if((AM.move_resist > MOVE_FORCE_DEFAULT) || !AM.doMove(src)) return //Can't put ultra heavy stuff in diff --git a/nsv13/code/modules/overmap/fighters/tug.dm b/nsv13/code/modules/overmap/fighters/tug.dm index 67f7d6aaf27..8604fe1e2ee 100644 --- a/nsv13/code/modules/overmap/fighters/tug.dm +++ b/nsv13/code/modules/overmap/fighters/tug.dm @@ -1,6 +1,7 @@ /obj/vehicle/sealed/car/realistic/fighter_tug name = "\improper M575 Aircraft Tug" - desc = "A variant of an armoured personnel carrier which is able to tow fighters around. Ctrl click it to grab the hitch" + desc = "A variant of an armoured personnel carrier which is able to tow fighters around.\n\ + You can click-drag a fighter onto the tug to load it." icon = 'nsv13/icons/obj/vehicles.dmi' icon_state = "tug" max_integrity = 150 @@ -87,30 +88,56 @@ /obj/vehicle/sealed/car/realistic/fighter_tug/proc/can_launch_fighters() return TRUE +/// Handles loading fighters from inside /obj/vehicle/sealed/car/realistic/fighter_tug/proc/load() - var/obj/structure/overmap/load = locate(/obj/structure/overmap/small_craft) in orange(get_turf(get_step(src, angle2dir(angle))), 1) - if(!load) - load = locate(/obj/structure/overmap/small_craft) in orange(1, src) //Failing a dir check, try this + if(LAZYLEN(loaded)) return - hitch(load) + var/list/possible_crafts = list() + for(var/obj/structure/overmap/small_craft/craft in orange(get_turf(get_step(src, angle2dir(angle))), 2)) + if(craft.mag_lock) + continue + possible_crafts[craft.name] = craft + var/load = input(usr, "Choose a fighter to load","[src]") as null|anything in possible_crafts + if(!possible_crafts[load] || get_dist(possible_crafts[load], src) > 3) // 3 tiles to account for the offset and the size of the vehicles + return + hitch(possible_crafts[load]) /obj/vehicle/sealed/car/realistic/fighter_tug/Initialize(mapload) . = ..() set_light(5) /obj/vehicle/sealed/car/realistic/fighter_tug/proc/hitch(obj/structure/overmap/small_craft/target) - if(!target || LAZYFIND(loaded, target) || target.mag_lock)//No sucking + if(!target || !istype(target) || LAZYFIND(loaded, target) || target.mag_lock)//No sucking return FALSE loaded += target STOP_PROCESSING(SSphysics_processing, target) target.forceMove(src) vis_contents += target playsound(src, 'nsv13/sound/effects/ship/freespace2/crane_1.wav', 100, FALSE) - visible_message("[target] is loaded onto [src]") + visible_message("[target] is loaded onto [src].") target.forceMove(src) target.mag_lock = src target.shake_animation() +/// Handles ground crew manually loading fighters. +/obj/vehicle/sealed/car/realistic/fighter_tug/MouseDrop_T(atom/dropping, mob/M) + var/obj/structure/overmap/small_craft/craft = dropping + if(LAZYLEN(loaded) || !istype(craft) || craft.mag_lock) + return ..() + if(get_dist(dropping, src) > 3) + to_chat(M, "[craft] is too far away!") + return + + visible_message("[M] starts loading [craft] onto [src]...") + if(!do_after(M, 5 SECONDS, target = src)) + return + + if(get_dist(craft, src) > 3) + to_chat(M, "[craft] is too far away!") + return + + hitch(craft) + /obj/vehicle/sealed/car/realistic/fighter_tug/process(time) . = ..() for(var/obj/structure/overmap/small_craft/target in loaded) @@ -182,11 +209,15 @@ target.shake_animation() vis_contents -= target loaded -= target + target.mag_lock = null var/turf/targetLoc = get_turf(get_step(src, angle2dir(angle))) if(!istype(targetLoc, /turf/open)) targetLoc = get_turf(src) //Prevents them yeeting fighters through walls. - var/obj/structure/fighter_launcher/FL = locate(/obj/structure/fighter_launcher) in orange(targetLoc, 2) - target.mag_lock = null + var/obj/structure/fighter_launcher/FL + for(var/obj/structure/fighter_launcher/target_launcher in orange(targetLoc, 2)) + if(!target_launcher.mag_locked) + FL = target_launcher + break if(FL) targetLoc = get_turf(FL) target.forceMove(targetLoc) @@ -194,7 +225,7 @@ /obj/item/key/fighter_tug name = "fighter tug key" - desc = "A small grey key with an inscription on it 'keep away from clown'." + desc = "A small grey key. An inscription on it reads: Keep away from clown." icon = 'nsv13/icons/obj/vehicles32.dmi' icon_state = "key" w_class = WEIGHT_CLASS_TINY diff --git a/nsv13/code/modules/overmap/knpc.dm b/nsv13/code/modules/overmap/knpc.dm index 99c3afe7031..8c655df0ca5 100644 --- a/nsv13/code/modules/overmap/knpc.dm +++ b/nsv13/code/modules/overmap/knpc.dm @@ -39,6 +39,7 @@ GLOBAL_LIST_EMPTY(knpcs) /mob/living/carbon/human/ai_boarder/Initialize(mapload) . = ..() + randomize_human(src) var/outfit_path = pick(outfit) var/datum/outfit/O = new outfit_path O.equip(src) diff --git a/nsv13/code/modules/overmap/overmap.dm b/nsv13/code/modules/overmap/overmap.dm index 02a6563c356..6eec8dbcc49 100644 --- a/nsv13/code/modules/overmap/overmap.dm +++ b/nsv13/code/modules/overmap/overmap.dm @@ -153,6 +153,8 @@ var/list/ams_data_source = AMS_LOCKED_TARGETS var/next_ams_shot = 0 var/ams_targeting_cooldown = 1.5 SECONDS + var/ams_shot_limit = 5 + var/ams_shots_fired = 0 // Railgun aim helper var/last_tracer_process = 0 @@ -177,7 +179,8 @@ // It's terrible I know, but until we decide/are bothered enough to throw out the legacy drive (or subtype it), this'll have to do var/obj/machinery/computer/ship/ftl_core/ftl_drive - + //Misc variables + var/list/scanned = list() //list of scanned overmap anomalies var/reserved_z = 0 //The Z level we were spawned on, and thus inhabit. This can be changed if we "swap" positions with another ship. var/list/occupying_levels = list() //Refs to the z-levels we own for setting parallax and that, or for admins to debug things when EVERYTHING INEVITABLY BREAKS var/torpedo_type = /obj/item/projectile/guided_munition/torpedo @@ -210,6 +213,7 @@ var/boarding_reservation_z = null //Do we have a reserved Z-level for boarding? This is set up on instance_overmap. Ships being boarded copy this value from the boarder. var/obj/structure/overmap/active_boarding_target = null var/static/next_boarding_time = 0 // This is stupid and lazy but it's 5am and I don't care anymore + var/hammerlocked = FALSE //Is this ship currently being hammerlocked? Currently used to ensure IFF consoles on boarded ships stay emmaged /** Proc to spool up a new Z-level for a player ship and assign it a treadmill. @return OM, a newly spawned overmap sitting on its treadmill as it ought to be. @@ -228,6 +232,7 @@ Proc to spool up a new Z-level for a player ship and assign it a treadmill. var/turf/exit = get_turf(locate(round(world.maxx * 0.5, 1), round(world.maxy * 0.5, 1), world.maxz)) //Plop them bang in the center of the system. var/obj/structure/overmap/OM = new _path(exit) //Ship'll pick up the info it needs, so just domp eet at the exit turf. OM.reserved_z = world.maxz + OM.overmap_flags |= OVERMAP_FLAG_ZLEVEL_CARRIER OM.current_system = SSstar_system.find_system(OM) if(OM.role == MAIN_OVERMAP) //If we're the main overmap, we'll cheat a lil' and apply our status to all of the Zs under "station" for(var/z in SSmapping.levels_by_trait(ZTRAIT_STATION)) @@ -287,6 +292,7 @@ Proc to spool up a new Z-level for a player ship and assign it a treadmill. flick("laser",src) /obj/structure/overmap/Initialize(mapload) //If I see one more Destroy() or Initialize() split into multiple files I'm going to lose my mind. + GLOB.overmap_objects += src . = ..() var/icon/I = icon(icon,icon_state,SOUTH) //SOUTH because all overmaps only ever face right, no other dirs. pixel_collision_size_x = I.Width() @@ -318,6 +324,7 @@ Proc to spool up a new Z-level for a player ship and assign it a treadmill. /obj/structure/overmap/LateInitialize() . = ..() + armor = armor.setRating(arglist(OM_ARMOR)) //add the default armor values if(role > NORMAL_OVERMAP) SSstar_system.add_ship(src) //reserved_z = src.z //Our "reserved" Z will always be kept for us, no matter what. If we, for example, visit a system that another player is on and then jump away, we are returned to our own Z. @@ -325,7 +332,6 @@ Proc to spool up a new Z-level for a player ship and assign it a treadmill. // AddComponent(/datum/component/nsv_mission_departure_from_system) // AddComponent(/datum/component/nsv_mission_killships) current_tracers = list() - GLOB.overmap_objects += src START_PROCESSING(SSphysics_processing, src) vector_overlay = new() @@ -543,6 +549,8 @@ Proc to spool up a new Z-level for a player ship and assign it a treadmill. return FALSE if(weapon_safety && !can_friendly_fire()) return FALSE + if(istype(target, /obj/machinery/button)) + return target.attack_hand(user) var/list/params_list = params2list(params) if(target == src || istype(target, /atom/movable/screen) || (target in user.GetAllContents()) || params_list["alt"] || params_list["shift"]) return FALSE @@ -576,6 +584,7 @@ Proc to spool up a new Z-level for a player ship and assign it a treadmill. playsound(tactical, sound, 100, 1) if(params_list["ctrl"]) //Ctrl click to lock on to people start_lockon(target) + ams_shots_fired = 0 return TRUE if(user == gunner) var/datum/ship_weapon/SW = weapon_types[fire_mode] @@ -714,6 +723,24 @@ Proc to spool up a new Z-level for a player ship and assign it a treadmill. else return null +/obj/structure/overmap/proc/enable_dampeners(mob/user) + if(HAS_TRAIT(src, TRAIT_NODAMPENERS)) + if(user) + to_chat(user, "WARNING: Inertia Dampeners Unavailable! Potential causes: Gravity above tolerance, malfunctions, damage, spontanious bluespace displacement.") + return FALSE + inertial_dampeners = TRUE + return TRUE + +/obj/structure/overmap/proc/disable_dampeners(mob/user) + inertial_dampeners = FALSE + return TRUE + +/obj/structure/overmap/proc/toggle_dampeners(mob/user) + if(inertial_dampeners) + return disable_dampeners(user) + else + return enable_dampeners(user) + /obj/structure/overmap/relaymove(mob/user, direction) if(user != pilot || pilot.incapacitated()) return @@ -794,10 +821,16 @@ Proc to spool up a new Z-level for a player ship and assign it a treadmill. SEND_SOUND(M, sound(S, repeat = loop, wait = 0, volume = 100)) if(message) to_chat(M, message) + for(var/obj/structure/overmap/O as() in overmaps_in_ship) //Of course they get relayed the same message if they're in the same ship too + if(length(O.mobs_in_ship)) + O.relay(args) /obj/structure/overmap/proc/stop_relay(channel) //Stops all playing sounds for crewmen on N channel. for(var/mob/M as() in mobs_in_ship) M.stop_sound_channel(channel) + for(var/obj/structure/overmap/O as() in overmaps_in_ship) //Of course they get relayed the same message if they're in the same ship too + if(length(O.mobs_in_ship)) + O.stop_relay(args) /obj/structure/overmap/proc/relay_to_nearby(S, message, ignore_self=FALSE, sound_range=20, faction_check=FALSE) //Sends a sound + text message to nearby ships for(var/obj/structure/overmap/ship as() in GLOB.overmap_objects) //Might be called in hyperspace or by fighters, so shouldn't use a system check. diff --git a/nsv13/code/modules/overmap/overmapJS/components/piloting.dm b/nsv13/code/modules/overmap/overmapJS/components/piloting.dm index 99d585f4a7f..035618a84f9 100644 --- a/nsv13/code/modules/overmap/overmapJS/components/piloting.dm +++ b/nsv13/code/modules/overmap/overmapJS/components/piloting.dm @@ -10,6 +10,8 @@ dupe_mode = COMPONENT_DUPE_HIGHLANDER var/rights = OVERMAP_CONTROL_RIGHTS_FULL var/fps_capability = -1 + // TODO store on the console instead + var/datum/weapon_group/selected_weapon_group = null /datum/component/overmap_piloting/pilot rights = OVERMAP_CONTROL_RIGHTS_HELM @@ -23,18 +25,22 @@ RegisterSignal(SSJSOvermap, COMSIG_JS_OVERMAP_UPDATE, PROC_REF(mark_dirty)) //Don't do this for turfs, because we don't care RegisterSignal(SSJSOvermap, COMSIG_JS_OVERMAP_STATIC_DATA_UPDATE, PROC_REF(force_update_static_data)) //Don't do this for turfs, because we don't care -/datum/component/overmap_piloting/proc/process_fire(weapon_type, coords) +/datum/component/overmap_piloting/gunner/Initialize(target, ui) + . = ..() + if(istype(target, /datum/overmap/ship) && !istype(selected_weapon_group)) + var/datum/overmap/ship/S = target + var/key = S.weapon_groups[1] + selected_weapon_group = S.weapon_groups[key] + +/datum/component/overmap_piloting/proc/process_fire(proj_angle) if(!(rights & OVERMAP_CONTROL_RIGHTS_GUNNER)) return - //TODO: Ignore for now! - var/_x = coords["x"] - var/_y = coords["y"] - var/angle = coords["angle"] - if(angle == -1) - angle = target.position.angle - //to_chat(world, _x) - //TODO: Check if theyre the gunner. Roles... I don't care for now! - target.fire_projectile(angle) + if(!selected_weapon_group) + return + for(var/W as() in selected_weapon_group.weapon_list) + var/datum/overmap_weapon/weap = W + if(weap.fire(target, proj_angle)) + break /datum/component/overmap_piloting/Destroy() UnregisterSignal(SSJSOvermap, COMSIG_JS_OVERMAP_UPDATE) @@ -42,7 +48,7 @@ //Bye bye mr UI, took my chevvy to the levy but the levy was dry.. ui?.close() - . = ..() + return ..() /** Mark our linked TGUI as requiring update. The server will send the new positions and state of the physics world. diff --git a/nsv13/code/modules/overmap/overmapJS/interior.dm b/nsv13/code/modules/overmap/overmapJS/interior.dm index b9f81508218..0d929c84b7e 100644 --- a/nsv13/code/modules/overmap/overmapJS/interior.dm +++ b/nsv13/code/modules/overmap/overmapJS/interior.dm @@ -42,7 +42,6 @@ //var/shipType = text2path(json["ship_type"]) var/mapPath = json["map_path"] var/mapFile = json["map_file"] - var/list/traits = json["traits"] if (istext(mapFile)) if (!fexists("_maps/[mapPath]/[mapFile]")) log_world("Map file ([mapPath]/[mapFile]) does not exist!") diff --git a/nsv13/code/modules/overmap/overmapJS/overmap_MC_subsystem.dm b/nsv13/code/modules/overmap/overmapJS/overmap_MC_subsystem.dm index da7e1bcf6a0..d7457a611f1 100644 --- a/nsv13/code/modules/overmap/overmapJS/overmap_MC_subsystem.dm +++ b/nsv13/code/modules/overmap/overmapJS/overmap_MC_subsystem.dm @@ -71,6 +71,7 @@ PROCESSING_SUBSYSTEM_DEF(JSOvermap) /datum/controller/subsystem/processing/JSOvermap/proc/ui_data_for(mob/user, datum/overmap/target) . = list() + .["debug_rights"] = FALSE .["map_id"] = target?.map?.identifier || 0 .["physics_world"] = list() var/datum/component/overmap_piloting/OP = user.GetComponent(/datum/component/overmap_piloting) @@ -82,7 +83,7 @@ PROCESSING_SUBSYSTEM_DEF(JSOvermap) .["can_pilot"] = OP.rights & OVERMAP_CONTROL_RIGHTS_HELM .["control_scheme"] = OP.rights .["fps_capability"] = OP.fps_capability - .["keys"] = target.keys + .["keys"] = target?.keys var/datum/its_sensor_datum/ship_sensor_mode = target.sensor_mode if(!isnull(ship_sensor_mode)) var/list/sensor_mode_data = list( @@ -105,7 +106,8 @@ PROCESSING_SUBSYSTEM_DEF(JSOvermap) if(O.armour_quadrants) quads = new(4) for(var/I = 1; I <=4; I++) - quads[I] = list(O.armour_quadrants[I].integrity, O.armour_quadrants[I].max_integrity) + var/datum/armour_quadrant/quad = O.armour_quadrants[I] + quads[I] = list(quad.integrity, quad.max_integrity) var/list/data = list( //icon = O.icon_base64, type = O.type, @@ -122,6 +124,13 @@ PROCESSING_SUBSYSTEM_DEF(JSOvermap) ) .["physics_world"] += list(data) + .["selected_weapon_group"] = OP.selected_weapon_group?.name + .["weapon_groups"] = list() + for(var/WG as() in target.weapon_groups) + var/datum/weapon_group/group = target.weapon_groups[WG] + var/list/group_data = group.get_ui_data() + .["weapon_groups"] += list(group_data) + /** Handle all signals sent by anything using the JS overmap system's frontend. Returns TRUE if the action was handled. @@ -140,7 +149,7 @@ PROCESSING_SUBSYSTEM_DEF(JSOvermap) C.set_zoom(params["key"]) return TRUE if("fire") - C.process_fire(params["weapon"], params["coords"]) + C.process_fire(params["angle"] - 90) // JS and byond use different orientations hence the -90 return TRUE if("keyup") C.process_input(params["key"], FALSE) @@ -154,6 +163,73 @@ PROCESSING_SUBSYSTEM_DEF(JSOvermap) if("sync_keys") C.sync_keys(params["zoom"], params["keys"]) return TRUE + + // Weapon group actions + if("default_sort_weapons") + var/response = tgui_alert(usr, "All weapons will be sorted into groups by name. Continue?", "Confirm Re-sort", list("Yes", "No"), timeout = 0, autofocus = TRUE) + if(response != "Yes") + return TRUE + C.target?.sort_weapons() + return TRUE + if("select_weapon_group") + C.selected_weapon_group = locate(params["group_id"]) + return TRUE + if("add_weapon_group") + var/new_name = tgui_input_text(usr, "Enter a unique name", "New Group") + if(new_name && !(new_name in C.target.weapon_groups)) + new /datum/weapon_group(C.target, new_name) + ui_interact() + if("rename_weapon_group") + var/datum/weapon_group/WG = locate(params["group_id"]) + var/new_name = tgui_input_text(usr, "Enter the new name", "Rename") + if(!new_name) + return + if(new_name in WG.holder.weapon_groups) + to_chat(usr, "The new group name must be unique!") + return + WG.holder.weapon_groups -= WG.name + WG.name = new_name + WG.holder.weapon_groups[WG.name] = WG + ui_interact(user) + if("delete_weapon_group") + var/datum/weapon_group/WG = locate(params["group_id"]) + WG.holder.weapon_groups -= WG.name + qdel(WG) + ui_interact(user) + if("add_weapon") + var/datum/weapon_group/WG = locate(params["group_id"]) + var/datum/overmap_weapon/OW = input(usr, "What weapon would you like to add to this group?","Weapon Management", null) as null|anything in WG.holder.all_weapons + if(OW) + WG.weapon_list |= OW + ui_interact(user) + if("remove_weapon") + var/datum/weapon_group/WG = locate(params["group_id"]) + var/datum/overmap_weapon/OW = locate(params["weapon_id"]) + WG.weapon_list -= OW + // Debug - make sure we don't somehow lose weapons + if(!(OW in WG.holder.all_weapons)) + message_admins("ERROR: would have lost reference to [OW]") + WG.holder.all_weapons |= OW + ui_interact(user) + if("rename_weapon") + var/datum/overmap_weapon/OW = locate(params["weapon_id"]) + var/new_name = tgui_input_text(usr, "Enter the new name", "Rename") + if(!new_name) + return + OW.name = new_name + ui_interact(user) + if("firing_arc_center") + var/datum/virtual_weapon/VW = locate(params["weapon_id"]) + if(VW) + VW.firing_arc_center_rel_deg = params["firing_arc_center"] + ui_interact(user) + return + if("firing_arc_width") + var/datum/virtual_weapon/VW = locate(params["weapon_id"]) + if(VW) + VW.firing_arc_width_deg = params["firing_arc_width"] + ui_interact(user) + return //datum/controller/subsystem/processing/JSOvermap/proc/start_piloting(mob/user, datum/overmap/OM) //TODO MAP STAYS SAME WHEN JUMPING!! @@ -182,6 +258,8 @@ PROCESSING_SUBSYSTEM_DEF(JSOvermap) .["spawn_type"] = "[spawn_type]" .["spawn_z"] = spawn_z .["hide_bullets"] = hide_bullets + if(check_rights(R_DEBUG)) + .["debug_rights"] = TRUE /datum/overmap_js_panel/ui_static_data(mob/user) var/list/data = SSJSOvermap.ui_static_data_for(user) @@ -203,13 +281,18 @@ PROCESSING_SUBSYSTEM_DEF(JSOvermap) //other times it's called by a string of procs that results in the usr being the panel itself if((usr != src) && !check_rights(0, 1, TRUE)) return + + var/datum/overmap/player_ship = SSJSOvermap.key_overmaps["player"] if (!selected_level) - selected_level = SSJSOvermap.debug_level + selected_level = player_ship.map if(!active_ship) - active_ship = length(selected_level.physics_objects) ? selected_level.physics_objects[1] : null + if(selected_level == player_ship.map) + active_ship = player_ship + else + active_ship = length(selected_level.physics_objects) ? selected_level.physics_objects[1] : null ui = SStgui.try_update_ui(user, src, ui) if(!ui) - log_admin_private("[user.ckey] opened the JS overmap panel.") + log_admin_private("[user?.ckey] opened the JS overmap panel.") ui = new(user, src, "JSOvermapPanel", "JS Overmap Panel") user.AddComponent(/datum/component/overmap_piloting/observer, active_ship, ui) ui.open() @@ -224,6 +307,7 @@ PROCESSING_SUBSYSTEM_DEF(JSOvermap) if (.) return var/datum/component/overmap_piloting/C = usr.GetComponent(/datum/component/overmap_piloting) + message_admins(action) switch(action) if("view_vars") usr.client.debug_variables(locate(params["target"])) diff --git a/nsv13/code/modules/overmap/overmapJS/overmap_js.dm b/nsv13/code/modules/overmap/overmapJS/overmap_js.dm index 594dca34311..205d32a502e 100644 --- a/nsv13/code/modules/overmap/overmapJS/overmap_js.dm +++ b/nsv13/code/modules/overmap/overmapJS/overmap_js.dm @@ -103,6 +103,11 @@ var/max_armour_plates = 0 var/linked_apnw = null //Our linked APNW + // Planets or stations may also have weapons + var/list/weapon_groups = list() + var/list/all_weapons = list() + + /** Constructor for overmap objects. Pre-bakes some maths for you and initialises processing. */ @@ -143,9 +148,24 @@ //TODO: replace this. START_PROCESSING(SSJSOvermap, src) setup_armour() + setup_weapons() + sort_weapons() //ITS-TODO: This will be on the sensor console once the scan modes are moved. setup_sensor_modes() +// This is where people should put specific loadout stuff +/datum/overmap/proc/setup_weapons() + +// Setarate from setup so we can reset to default sorting +/datum/overmap/proc/sort_weapons() + for(var/datum/overmap_weapon/OW as() in all_weapons) + var/datum/weapon_group/WG = null + if(!(OW.name in weapon_groups)) + WG = new /datum/weapon_group(src, OW.name) + else + WG = weapon_groups[OW.name] + WG.add_weapon(OW) + /datum/overmap/proc/setup_sensor_modes() if(!length(GLOB.its_sensor_datums)) //setup the global if not done yet for(var/typepath in subtypesof(/datum/its_sensor_datum)) @@ -365,17 +385,6 @@ cap modes: add_signature(SIG_GRAV, MASS_SIGNATURE_HUGE) -/datum/overmap/proc/fire_projectile(angle = src.position.angle, projectile_type=/datum/overmap/projectile/shell, burst_size=1) - if (!map) - CRASH("Overmap object with no map cannot fire projectiles.") - //TODO: magic number "10". - //We scromble the position so it originates from the centre of the ship. - for(var/i = 1; i <= burst_size; i++) - var/datum/overmap/projectile/O = new projectile_type(map, position.x + (collision_radius/2),position.y + (collision_radius/2), position.z, angle, position.velocity.ln()) - O.position.velocity += O.speed - O.faction = faction - //to_chat(world, "Fire missile.") - /datum/overmap/Destroy() QDEL_NULL(physics2d) map = null diff --git a/nsv13/code/modules/overmap/overmapJS/overmap_js_physics.dm b/nsv13/code/modules/overmap/overmapJS/overmap_js_physics.dm index 32a58b2d5e7..0d3ae6d7cc8 100644 --- a/nsv13/code/modules/overmap/overmapJS/overmap_js_physics.dm +++ b/nsv13/code/modules/overmap/overmapJS/overmap_js_physics.dm @@ -47,7 +47,7 @@ PROCESSING_SUBSYSTEM_DEF(physics_processing) //Set up this grid. var/rows = (JS_OVERMAP_TACMAP_TOTAL_SQUARES) var/cols = (JS_OVERMAP_TACMAP_TOTAL_SQUARES) - physics_levels[z_str] = new(cols) + physics_levels[z_str] = new/list(cols) //TODO: test me for(var/y = 1; y <= rows; y++) var/list/row = new(rows) diff --git a/nsv13/code/modules/overmap/overmapJS/overmap_js_test.dm b/nsv13/code/modules/overmap/overmapJS/overmap_js_test.dm index 4baa512aa64..8001ff9a1ad 100644 --- a/nsv13/code/modules/overmap/overmapJS/overmap_js_test.dm +++ b/nsv13/code/modules/overmap/overmapJS/overmap_js_test.dm @@ -65,8 +65,9 @@ C.set_zoom(params["key"]) return if("fire") - C.process_fire(params["weapon"], params["coords"]) - return; + C.process_fire(params["weapon"], params["angle"] - 90) + ui_interact(usr) + return if("keyup") C.process_input(params["key"], FALSE) return diff --git a/nsv13/code/modules/overmap/overmapJS/overmap_projectile.dm b/nsv13/code/modules/overmap/overmapJS/overmap_projectile.dm index 7378c944b20..85ffb2e0981 100644 --- a/nsv13/code/modules/overmap/overmapJS/overmap_projectile.dm +++ b/nsv13/code/modules/overmap/overmapJS/overmap_projectile.dm @@ -22,6 +22,20 @@ var/physical_projectile_type = /obj/item/projectile/bullet var/projectile_flags = OVERMAP_PROJECTILE_FLAGS_NONE +/datum/overmap/projectile/pdc + // Yes it's the default but I want them all to match! + name = "PDC round" + icon_state = "pdc" + damage = 10 + damage_type = OVERMAP_DAMAGE_TYPE_KINETIC_SUBCAPITAL + range = 1 KM + unstoppable = FALSE + speed = 10 + +/datum/virtual_weapon/pdc + name = "Point Defense Cannon" + shell_type = /datum/overmap/projectile/pdc + /datum/overmap/projectile/slug name = "railgun slug" icon_state = "railgun" @@ -30,6 +44,14 @@ range = 25 KM unstoppable = TRUE speed = 50 + +/datum/virtual_weapon/railgun + name = "Railgun" + shell_type = /datum/overmap/projectile/slug + // Testing - remove later + firing_arc_center_rel_deg = 0 // Bow + firing_arc_width_deg = 180 // Front half of the ship + /datum/overmap/projectile/shell name = "cannon shell" icon_state = "mac" @@ -38,6 +60,10 @@ range = 25 KM speed = 25 +/datum/virtual_weapon/cannon + name = "Naval Artillery Cannon" + shell_type = /datum/overmap/projectile/shell + /datum/overmap/projectile/warhead name = "conventional missile" icon_state = "torpedo" @@ -48,6 +74,13 @@ //Hint to gun batteries that we can shoot down warheads. projectile_flags = OVERMAP_PROJECTILE_FLAGS_CAN_BE_SHOT_DOWN +/datum/virtual_weapon/torpedo + name = "Torpedo Launcher" + shell_type = /datum/overmap/projectile/warhead + // Testing - remove later + firing_arc_center_rel_deg = 180 // Stern + firing_arc_width_deg = 180 // Back half of the ship + /datum/overmap/projectile/on_move() ..() distance_travelled += position.velocity.ln() diff --git a/nsv13/code/modules/overmap/overmapJS/overmap_weapon.dm b/nsv13/code/modules/overmap/overmapJS/overmap_weapon.dm new file mode 100644 index 00000000000..cca7582099f --- /dev/null +++ b/nsv13/code/modules/overmap/overmapJS/overmap_weapon.dm @@ -0,0 +1,114 @@ +/// This is a holder for some weapons that fire together +/datum/weapon_group + var/datum/overmap/ship/holder + /// The name must be unique within the parent ship so we can use it as a list index + var/name = "" + /// The references to the weapons associated with this group + var/list/weapon_list = list() + +/datum/weapon_group/New(datum/overmap/ship/holder, name) + . = ..() + src.holder = holder + if(!name) + name = "Group [rand(0, 999)]" + src.name = name + holder.weapon_groups[name] = src + +/datum/weapon_group/proc/add_weapon(datum/overmap_weapon/weap) + weapon_list |= weap + +/datum/weapon_group/proc/get_ui_data() + . = list() + .["name"] = name + .["id"] = "\ref[src]" + .["weapons"] = list() + for(var/datum/overmap_weapon/W as() in weapon_list) + .["weapons"] += list(list(name = W.name, id = "\ref[W]", firing_arc_center = W.firing_arc_center_rel_deg, firing_arc_width = W.firing_arc_width_deg)) + +// overmap_weapon does not have any children - it defines a template to be used for all +// other types that can be fired as a weapon. You can make them any type as long as +// they implement these variables and procs. +// In general trying to keep this to stuff that needs to be displayed and have no real +// implementation here to avoid the problems we had last time. +/datum/overmap_weapon + // Weapons will be sorted into groups by name by default + var/name + // Ammo counters - use whatever format you want, bullets, bursts, percents, joules... + var/ammo = 0 + var/max_ammo = 0 + // Testing - remove later + var/firing_arc_center_rel_deg + var/firing_arc_width_deg + +// Must return true if the weapon fired one or more projectiles +/datum/overmap_weapon/proc/fire() + return FALSE + +// virtual_weapon is a non-physical weapon that can be attached to a ship +/datum/virtual_weapon + var/name + // Firing rate stuff + var/seconds_between_projectiles = 0 + var/seconds_between_bursts = 0 // If this is a single-shot weapon, leave this at zero + var/burst_size = 1 + var/next_fire = 0 + // Resupply rate stuff. We'll just make it linear for now. + var/max_time_between_resupplies = 0 + var/resupply_time_slope = 0.5 // 20 minute fight = 10 minutes between resupplies + var/next_resupply = 0 + // Testing - remove later + var/shell_type + var/firing_arc_center_rel_deg = 0 + var/firing_arc_width_deg = 360 // Anything unspecified is omnidirectional + +// I know this feels redundant, but it makes default values on subclasses work +/datum/virtual_weapon/New(name_ = name, \ + firing_arc_center_rel_deg_ = firing_arc_center_rel_deg, \ + firing_arc_width_deg_ = firing_arc_width_deg, \ + seconds_between_projectiles_ = seconds_between_projectiles, \ + seconds_between_bursts_ = seconds_between_bursts) + name = name_ + firing_arc_center_rel_deg = firing_arc_center_rel_deg_ + firing_arc_width_deg = firing_arc_width_deg_ + seconds_between_projectiles = seconds_between_projectiles_ + seconds_between_bursts = seconds_between_bursts_ + +/datum/virtual_weapon/proc/fire(datum/overmap/src_overmap, angle) + var/proj_angle = angle + if(!src_overmap) + CRASH("Tried to fire [src] without a source overmap") + if(!proj_angle) + proj_angle = src_overmap.position.angle + + // Calculate the angle between the center of the firing arc and the requested angle, and compare it to the width of the firing arc + // CC-BY-SA algorithm from StackOverflow https://stackoverflow.com/questions/12234574/calculating-if-an-angle-is-between-two-angles + // Solution by Alnitak (https://stackoverflow.com/users/6782/alnitak) and hdante (https://stackoverflow.com/users/1797000/hdante) + var/current_arc_center = src_overmap.position.angle + firing_arc_center_rel_deg + var/adjusted_angle = arccos(cos(current_arc_center) * cos(proj_angle) + sin(current_arc_center) * sin(proj_angle)) + if(adjusted_angle > firing_arc_width_deg / 2) + to_chat(world, "adjusted angle [adjusted_angle] was out of range") + return FALSE + if(next_fire > world.time) + // Too soon + return FALSE + + spawn(-1) { + src_overmap.fire_projectile(proj_angle, shell_type) + // And then if we're a burst weapon... + for(var/i = 1; i < burst_size; i++) + sleep(seconds_between_projectiles SECONDS) + src_overmap.fire_projectile(proj_angle, shell_type) + next_fire = world.time + seconds_between_bursts SECONDS + } + return TRUE + //TODO: Check if theyre the gunner. Roles... I don't care for now! + +/datum/overmap/proc/fire_projectile(proj_angle = src.position.angle, datum/overmap/projectile/projectile_type=/datum/overmap/projectile/shell, burst_size=1) + if (!map) + CRASH("Overmap object with no map cannot fire projectiles.") + //We scromble the position so it originates from the centre of the ship. + var/new_velocity_x = position.velocity.x + initial(projectile_type.speed) * cos(proj_angle) + var/new_velocity_y = position.velocity.y + initial(projectile_type.speed) * sin(proj_angle) + var/datum/overmap/projectile/O = new projectile_type(src.map, position.x + (collision_radius/2), position.y + (collision_radius/2), position.z, proj_angle, new_velocity_x, new_velocity_y) + O.faction = faction + //to_chat(world, "Fire missile.") diff --git a/nsv13/code/modules/overmap/overmapJS/ship.dm b/nsv13/code/modules/overmap/overmapJS/ship.dm index 8c067398b10..fb95c372b83 100644 --- a/nsv13/code/modules/overmap/overmapJS/ship.dm +++ b/nsv13/code/modules/overmap/overmapJS/ship.dm @@ -27,6 +27,14 @@ starting_system = "Sol" //collision_positions = list(new /matrix/vector(-8,46), new /matrix/vector(-17,33), new /matrix/vector(-25,2), new /matrix/vector(-14,-45), new /matrix/vector(9,-46), new /matrix/vector(22,4), new /matrix/vector(14,36)) +/datum/overmap/ship/player/setup_weapons() + // TODO: Remove once machines do the thing + all_weapons.Add(new /datum/virtual_weapon/torpedo(), \ + new /datum/virtual_weapon/railgun(), \ + new /datum/virtual_weapon/cannon(), \ + new /datum/virtual_weapon/pdc(), \ + new /datum/virtual_weapon/pdc(name_ = "Point Defense Cannon 2")) + /datum/overmap/ship/player/cruiser name = "NSV Tycoon" faction = OVERMAP_FACTION_PLAYER diff --git a/nsv13/code/modules/overmap/overmap_ghosts.dm b/nsv13/code/modules/overmap/overmap_ghosts.dm index 7d149337133..56b960f254a 100644 --- a/nsv13/code/modules/overmap/overmap_ghosts.dm +++ b/nsv13/code/modules/overmap/overmap_ghosts.dm @@ -16,7 +16,7 @@ if("Cancel") return if("Open") - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to pilot a [src.faction] [src.name]?", ROLE_GHOSTSHIP, null, null, 20 SECONDS, POLL_IGNORE_GHOSTSHIP) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to pilot a [src.faction] [src.name]?", ROLE_GHOSTSHIP, /datum/role_preference/midround_ghost/ghost_ship, 20 SECONDS, POLL_IGNORE_GHOSTSHIP) if(LAZYLEN(candidates)) var/mob/dead/observer/C = pick(candidates) target_ghost = C @@ -52,6 +52,9 @@ if(gunner) QDEL_NULL(gunner) + //Buff the ships + spec_ghostship_changes() + //Insert the extra machines if(!dradis) if(mass >= MASS_SMALL) @@ -64,6 +67,11 @@ tactical = new /obj/machinery/computer/ship/tactical/internal(src) tactical.linked = src + //Lets ships with gauss use them + if(weapon_types[FIRE_MODE_GAUSS]) + var/datum/ship_weapon/GA = weapon_types[FIRE_MODE_GAUSS] + GA.allowed_roles = OVERMAP_USER_ROLE_GUNNER + //Override AMS weapon_types[FIRE_MODE_AMS] = null //Resolve this later to be auto weapon_types[FIRE_MODE_FLAK] = null //Resolve this later to be a toggle @@ -76,6 +84,10 @@ ghost.hud_type = /datum/hud //Mostly blank hud ghost.key = target.key + //More or less a modified version of how the morph antag gets the antag datum. + if(ghost.mind) + ghost.mind.add_antag_datum(/datum/antagonist/ghost_ship) + //Allows player to hear hails mobs_in_ship += ghost @@ -98,3 +110,16 @@ else //Try again later addtimer(CALLBACK(src, PROC_REF(ghost_key_check), ghost), 1 SECONDS) + +/obj/structure/overmap/proc/spec_ghostship_changes() //Proc to buff ghost ships. Currently handles only fighters. Override if you want + if(mass == MASS_TINY) //Makes dogfighting fun + obj_integrity *= 6 + max_integrity *= 6 //About as squishy, and fast, as a light fighter + forward_maxthrust *= 3.5 + backward_maxthrust *= 3.5 + side_maxthrust *= 2 + integrity_failure *= 3.5 + max_angular_acceleration *= 2 + speed_limit *= 2.5 + shots_left = 500 //Having 15 max cannon shots isn't fun + diff --git a/nsv13/code/modules/overmap/pdsr.dm b/nsv13/code/modules/overmap/pdsr.dm index 36ee7c4b56f..6c52dcb62d7 100644 --- a/nsv13/code/modules/overmap/pdsr.dm +++ b/nsv13/code/modules/overmap/pdsr.dm @@ -9,8 +9,11 @@ #define REACTOR_STATE_SHUTTING_DOWN 4 #define REACTOR_STATE_EMISSION 5 +#define DENSITY_LOW 0 //! Deflects only heavy hits. +#define DENSITY_HIGH 1 //! Deflects all hits. + /obj/machinery/atmospherics/components/trinary/defence_screen_reactor - name = "mk I Prototype Defence Screen Reactor" + name = "mk II Prototype Defence Screen Reactor" desc = "A highly experimental, unstable and highly illegal nucleium driven reactor for the generation of defensive screens." icon = 'nsv13/icons/obj/machinery/pdsr.dmi' icon_state = "idle" @@ -46,10 +49,20 @@ var/last_coolant_time = 0 //Last time we called to flush coolant var/flushing_coolant = 0 //Are we currently flushing coolant var/emission_tracker = 0 //Used to track emission timers + ///Time when our reactor was last shutdown. + var/powerdown_time = 0 + ///If this is already detonating + var/detonating = FALSE //!Shield Vars - var/list/shield = list("integrity" = 0, "max_integrity" = 0, "stability" = 0) + var/list/shield = list("integrity" = 0, "max_integrity" = 0, "stability" = 0, "density" = DENSITY_HIGH) var/power_input = 0 //How much power is currently allocated + ///Did we get enough power last power tick? + var/power_demand_met = FALSE + ///How much power did we use during the power tick? + var/last_power_use = 0 + ///How much power was in the grid during power tick? + var/last_avail_power = 0 var/screen_regen = 50 //Allocation to regenerate the !shields var/screen_hardening = 50 //Allocation to strengthen the !shields var/min_power_input = 0 //Minimum power required to sustain !shield integrity @@ -95,17 +108,28 @@ /obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/try_use_power(amount) var/turf/T = get_turf(src) C = T.get_cable_node() - if(C?.surplus() > amount) + if(C?.surplus() >= amount) C.powernet.load += amount + last_power_use = amount + power_demand_met = TRUE + last_avail_power = C?.surplus() return TRUE + power_demand_met = FALSE + last_power_use = 0 + last_avail_power = C?.surplus() return FALSE -/obj/machinery/atmospherics/components/trinary/defence_screen_reactor/process() +/obj/machinery/atmospherics/components/trinary/defence_screen_reactor/process_atmos() update_parents() - if(next_slowprocess < world.time) + if(next_slowprocess <= world.time) slowprocess() next_slowprocess = world.time + 1 SECONDS +/obj/machinery/atmospherics/components/trinary/defence_screen_reactor/process() + if(state == REACTOR_STATE_IDLE) + return + try_use_power(power_input) + /obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/slowprocess() var/datum/gas_mixture/nucleium_input = airs[2] var/datum/gas_mixture/coolant_input = airs[1] @@ -124,31 +148,32 @@ return current_uptime ++ - reaction_containment += 5 + reaction_containment += 20 // ~5 seconds as opposed to 20 for core start. if(reaction_containment >= 100) reaction_containment = 100 if(reaction_injection_rate < 2.5) say("Error: Unable to initialise reaction, insufficient nucleium injection.") - reaction_containment = 0 - current_uptime = 0 - state = REACTOR_STATE_IDLE + handle_shutdown() return if(nuc_in < reaction_injection_rate) say("Error: Unable to initialise reaction, insufficient nucleium available.") - reaction_containment = 0 - current_uptime = 0 - state = REACTOR_STATE_IDLE + handle_shutdown() + return + if(!power_demand_met) + say("Error: Power allocation exceeding grid capacity. Failed to initiate reaction.") + handle_shutdown() return - var/errors = rand(20, 200) + var/errors = rand(20, 199) say("Initiating Reaction - Injecting Nucleium.") say("Reaction Initialized - [errors] runtimes supressed.") reaction_temperature = 100 //Flash start to 100 + shield["stability"] = 50 //begin at 50 during startup. state = REACTOR_STATE_RUNNING if(state == REACTOR_STATE_RUNNING) - if(nuc_in >= reaction_injection_rate) //If we are running in nominal conditions... + if(nuc_in >= reaction_injection_rate && reaction_injection_rate >= 2.5) //If we are running in nominal conditions... nucleium_input.adjust_moles(GAS_NUCLEIUM, -reaction_injection_rate) //Handle reaction rate adjustments here var/target_reaction_rate = ((0.5 + (1e-03 * (reaction_injection_rate ** 2))) + (current_uptime / 2000)) * 16 @@ -157,7 +182,7 @@ reaction_temperature += reaction_rate * 0.35 //Function goes handle_polarity(TRUE) - else if(nuc_in < reaction_injection_rate) //If we are running without sufficient nucleium... + else //If we are running without sufficient nucleium... if(nuc_in <= 0) //...and none at all var/target_reaction_rate = 0 var/delta_reaction_rate = target_reaction_rate - reaction_rate @@ -176,7 +201,7 @@ handle_polarity(TRUE) if(reaction_rate > 5) //TEMP USE FUNCTIONS - reaction_energy_output = (reaction_rate + (reaction_injection_rate / 2)) * (2 - (current_uptime / 20000)) //FUNCTIONS + reaction_energy_output = (reaction_rate + (min(nuc_in, reaction_injection_rate) / 2)) * (2 - (current_uptime / 20000)) //FUNCTIONS radiation_pulse(src, reaction_energy_output) else @@ -205,21 +230,21 @@ state = REACTOR_STATE_SHUTTING_DOWN else say("Error: Reaction Prematurely Terminated - Inspect all systems for damage.") - state = REACTOR_STATE_IDLE + var/list/overload_candidate = list() + for(var/obj/machinery/defence_screen_relay/DSR in GLOB.machines) + if(DSR.powered() && DSR.overloaded == FALSE) + overload_candidate += DSR for(var/I = 0, I < 3, I++) //Overload Three Relays - var/list/overload_candidate = list() - for(var/obj/machinery/defence_screen_relay/DSR in GLOB.machines) - if(DSR.powered() && DSR.overloaded == FALSE) - overload_candidate += DSR - if(overload_candidate.len > 0) - var/obj/machinery/defence_screen_relay/DSRC = pick(overload_candidate) - DSRC.overload() + if(overload_candidate.len > 0) + var/obj/machinery/defence_screen_relay/DSRC = pick_n_take(overload_candidate) + DSRC.overload() depower_shield() OM.take_quadrant_hit(rand(100, 200), "forward_port") OM.take_quadrant_hit(rand(100, 200), "forward_starboard") OM.take_quadrant_hit(rand(100, 200), "aft_port") OM.take_quadrant_hit(rand(100, 200), "aft_starboard") + state = REACTOR_STATE_SHUTTING_DOWN handle_screens() handle_temperature() @@ -283,22 +308,23 @@ //////Reactor Procs////// /obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/handle_containment() //We manage poweruse and containment here - if(try_use_power(power_input)) - if(power_input > max_power_input && power_input <= 1.25 * max_power_input) //Overloading Containment - Rapid Rise + if(power_demand_met) + if(last_power_use > max_power_input && last_power_use <= 1.25 * max_power_input) //Overloading Containment - Rapid Rise var/overloading_containment = reaction_containment if(overloading_containment < 25) overloading_containment = 25 var/overloading_function = ((382 * NUM_E **(0.0764 * overloading_containment)) / ((50 + NUM_E ** (0.0764 * overloading_containment)) ** 2)) * 14 - reaction_containment += overloading_function * (power_input / max_power_input) + reaction_containment += overloading_function * (last_power_use / max_power_input) current_uptime ++ //Overloading has a cost - else if(power_input >= min_power_input && power_input <= max_power_input) //Nominal Containment - Maintain Containment + else if(last_power_use >= min_power_input && last_power_use <= max_power_input) //Nominal Containment - Maintain Containment var/containment_function = ((382 * NUM_E **(0.0764 * reaction_containment)) / ((50 + NUM_E ** (0.0764 * reaction_containment)) ** 2)) * 10 - reaction_containment += containment_function * (power_input / max_power_input) + reaction_containment += containment_function * (last_power_use / max_power_input) - else if(power_input < min_power_input && power_input >= 0.75 * min_power_input) //Insufficient Power for Containment - Slow Loss + else if(last_power_use < min_power_input && last_power_use >= 0.75 * min_power_input) //Insufficient Power for Containment - Slow Loss var/loss_function = ((382 * NUM_E **(0.0764 * reaction_containment)) / ((50 + NUM_E ** (0.0764 * reaction_containment)) ** 2)) * 4 - reaction_containment += loss_function * (power_input / max_power_input) + reaction_containment += loss_function * (last_power_use / max_power_input) + if(reaction_containment > 100) reaction_containment = 100 @@ -307,7 +333,7 @@ reaction_containment = 0 emission_tracker = world.time say("Error: Catatstropic Containment Failure - Initializing Emergency Termination Protocols") - playsound(src, 'sound/magic/lightning_chargeup.ogg', 100, 0, 15, 10, 10) //Replace me later? + playsound(src, 'sound/magic/lightning_chargeup.ogg', 100, FALSE, 15) //Replace me later? state = REACTOR_STATE_EMISSION //Whoops /obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/handle_power_reqs() //How much power is required @@ -320,7 +346,7 @@ if(reaction_containment < 33 && state == REACTOR_STATE_RUNNING) if(next_alarm_sfx < world.time) next_alarm_sfx = world.time + 3 SECONDS - playsound(src, 'nsv13/sound/effects/ship/pdsr_warning.ogg', 100, 0, 10, 10) + playsound(src, 'nsv13/sound/effects/ship/pdsr_warning.ogg', 100, FALSE, 10) if(next_alarm_message < world.time) next_alarm_message = world.time + 15 SECONDS say("DANGER: Reaction Containment Critical. Emission Imminent.") @@ -328,7 +354,7 @@ if(state == REACTOR_STATE_EMISSION) if(next_alarm_sfx < world.time) next_alarm_sfx = world.time + 3 SECONDS - playsound(src, 'nsv13/sound/effects/ship/pdsr_warning.ogg', 100, 0, 10, 10) + playsound(src, 'nsv13/sound/effects/ship/pdsr_warning.ogg', 100, FALSE, 10) /obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/handle_polarity(var/injecting = FALSE) if(reaction_polarity_timer < world.time) //Handle the trend @@ -343,11 +369,7 @@ else reaction_polarity -= 0.027 - if(reaction_polarity > 1) - reaction_polarity = 1 - - if(reaction_polarity < -1) - reaction_polarity = -1 + reaction_polarity = clamp(reaction_polarity, -1, 1) var/polarity_function = abs(0.5 * (reaction_polarity ** 2)) //RECHECK THIS WHEN NOT DEAD reaction_containment -= polarity_function @@ -360,7 +382,7 @@ if(in_view_range(M, src)) to_chat(M, "A stream of particles erupts from the [src]!") M.flash_act(1, 0, 1) - playsound(src, 'sound/magic/repulse.ogg', 100, 0, 5, 5) + playsound(src, 'sound/magic/repulse.ogg', 100, FALSE, 5) //more goes here /obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/handle_emission_release() @@ -368,13 +390,13 @@ if(DSR.powered() && DSR.overloaded == FALSE) DSR.overload() - var/emission_energy = reaction_energy_output * (1 + (current_uptime / 1000)) + var/emission_energy = max(10, reaction_energy_output) * (1 + (current_uptime / 1000)) radiation_pulse(src, emission_energy ** 2, 10, 1, 1) for(var/mob/living/M in OM.mobs_in_ship) if(M.client) - M.flash_act((emission_energy / 10), 0 , 1) - M.Knockdown(emission_energy / 10) + M.flash_act(clamp(emission_energy, 30, 100), TRUE, TRUE) + M.Knockdown(clamp(emission_energy, 20, 100)) M.adjust_disgust(rand(20, 50)) to_chat(M, "A wash of radiation passes through you!") @@ -390,6 +412,7 @@ say("Inspect all systems for damage.") /obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/handle_temperature() + reaction_containment -= (reaction_temperature / 50) + (current_uptime / 2000) var/turf/open/L = get_turf(src) if(!istype(L) || !(L.air)) return @@ -401,7 +424,6 @@ env.set_temperature(temperature += delta_env / 2) air_update_turf() - reaction_containment -= (reaction_temperature / 50) + (current_uptime / 2000) /obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/handle_atmos_check() for(var/obj/machinery/defence_screen_relay/DSR in GLOB.machines) @@ -418,6 +440,10 @@ flushing_coolant = 0 reaction_energy_output = 0 emission_tracker = 0 + powerdown_time = world.time + last_power_use = 0 + power_demand_met = FALSE + last_avail_power = 0 depower_shield() /obj/machinery/atmospherics/components/trinary/defence_screen_reactor/update_icon() @@ -442,22 +468,28 @@ //////Shield Procs////// -/obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/absorb_hit(damage) +/obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/absorb_hit(obj/item/projectile/proj) + var/damage = proj.damage if(!active) - return FALSE //!shields not raised + return SHIELD_NOEFFECT //!shields not raised + + if(shield["density"] == DENSITY_LOW && (proj.flag != "overmap_heavy" || proj.damage_type == BURN)) //Low density mode does not get hit by low impact projectiles, but also does not help vs. energy weapons. + return SHIELD_NOEFFECT if(shield["integrity"] >= damage) shield["integrity"] -= damage //Deduct from !shield var/current_hit = world.time - if(current_hit <= last_hit + 10) //1 Second - shield["stability"] -= rand((damage / 10), (damage / 5)) //Rapid hits will reduce stability greatly + if(current_hit <= last_hit + 1 SECONDS) //1 Second + shield["stability"] -= min(30, rand((damage / 10), (damage / 5))) //Rapid hits will reduce stability greatly else - shield["stability"] -= rand((damage / 50), (damage / 25)) //Reduce !shield stability + shield["stability"] -= min(10, rand((damage / 50), (damage / 25))) //Reduce !shield stability last_hit = current_hit //Set our last hit check_stability() - return TRUE + return SHIELD_FORCE_DEFLECT + + return SHIELD_NOEFFECT /obj/machinery/atmospherics/components/trinary/defence_screen_reactor/proc/check_stability() if(shield["stability"] <= 0) @@ -483,12 +515,16 @@ active = TRUE //Renable !shields else if(active) - shield["stability"] += power_input / ((max_power_input * 1.5) - max(min_power_input, 0)) - if(shield["stability"] > 100) - shield["stability"] = 100 var/hardening_allocation = max(((screen_hardening / 100) * reaction_energy_output), 0) shield["max_integrity"] = hardening_allocation * (connected_relays * 10) //Each relay is worth 10 base var/regen_allocation = max(((screen_regen / 100) * reaction_energy_output), 0) + + var/stability_recovery = last_power_use / ((max_power_input * 1.5) - max(min_power_input, 0)) + if(screen_regen == 100) //Stopping field emission entirely helps with stabilization. + stability_recovery *= 5 + shield["stability"] += stability_recovery + if(shield["stability"] > 100) + shield["stability"] = 100 shield["integrity"] += regen_allocation if(shield["integrity"] > shield["max_integrity"]) shield["integrity"] = shield["max_integrity"] @@ -507,10 +543,26 @@ shield["stability"] = 0 active = FALSE +/obj/machinery/atmospherics/components/trinary/defence_screen_reactor/ex_act(severity, target) + if(CHECK_BITFIELD(resistance_flags, INDESTRUCTIBLE)) + return + if(QDELETED(src)) + return + if(detonating) + return + detonating = TRUE + visible_message("[src] destabilizes violently.") + radiation_pulse(src, 5000) + explosion(get_turf(src), 5, 8, 0, 10, ignorecap = TRUE, flame_range = 10) + qdel(src) + + + + //////MAINFRAME CONSOLE////// /obj/machinery/computer/ship/defence_screen_mainframe_reactor //For controlling the reactor - name = "mk I Prototype Defence Screen Mainframe" + name = "mk II Prototype Defence Screen Mainframe" desc = "The mainframe controller for the PDSR" icon_screen = "idhos" //temp req_access = list(ACCESS_ENGINE) @@ -536,12 +588,12 @@ /obj/machinery/computer/ship/defence_screen_mainframe_reactor/attack_hand(mob/user) if(!allowed(user)) var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) + playsound(src, sound, 100, TRUE) to_chat(user, "Access denied") return if(!reactor) var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) + playsound(src, sound, 100, TRUE) to_chat(user, "Unable to detect linked reactor") return @@ -551,7 +603,7 @@ . = ..() if(!reactor) var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) + playsound(src, sound, 100, TRUE) to_chat(user, "Unable to detect linked reactor") return ui_interact(user) @@ -560,7 +612,7 @@ . = ..() if(!reactor) var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) + playsound(src, sound, 100, TRUE) to_chat(user, "Unable to detect linked reactor") return ui_interact(user) @@ -591,12 +643,8 @@ return var/adjust = text2num(params["adjust"]) if(action == "injection_allocation") - if(adjust && isnum(adjust)) - reactor.reaction_injection_rate = adjust - if(reactor.reaction_injection_rate > 25) - reactor.reaction_injection_rate = 25 - if(reactor.reaction_injection_rate < 0) - reactor.reaction_injection_rate = 0 + if(isnum(adjust)) + reactor.reaction_injection_rate = clamp(adjust, 0, 25) switch(action) if("polarity") @@ -604,6 +652,9 @@ return if("ignition") + if(world.time < reactor.powerdown_time + 30 SECONDS) + reactor.say("Realigning Particle Emitter - Field Unavailable.") + return if(reactor.state == REACTOR_STATE_IDLE) if(reactor.power_input >= reactor.min_power_input) reactor.say("Initiating Reaction - Charging Containment Field") @@ -633,6 +684,7 @@ reactor.say("Error: Unable to comply - Reactor parameters outside safe shutdown limits") return + /obj/machinery/computer/ship/defence_screen_mainframe_reactor/ui_data(mob/user) var/list/data = list() data["r_temp"] = reactor.reaction_temperature @@ -654,13 +706,13 @@ return data /obj/item/circuitboard/computer/defence_screen_mainframe_reactor - name = "mk I Prototype Defence Screen Mainframe (Computer Board)" + name = "mk II Prototype Defence Screen Mainframe (Computer Board)" build_path = /obj/machinery/computer/ship/defence_screen_mainframe_reactor //////SCREEN MANIPULATOR////// /obj/machinery/computer/ship/defence_screen_mainframe_shield //For controlling the !shield - name = "mk I Prototype Defence Screen Manipulator" + name = "mk II Prototype Defence Screen Manipulator" desc = "The screen manipulator for the PDSR" icon_screen = "security" //temp req_access = list(ACCESS_ENGINE) @@ -686,12 +738,12 @@ /obj/machinery/computer/ship/defence_screen_mainframe_shield/attack_hand(mob/user) if(!allowed(user)) var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) + playsound(src, sound, 100, TRUE) to_chat(user, "Access denied") return if(!reactor) var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) + playsound(src, sound, 100, TRUE) to_chat(user, "Unable to detect linked reactor") return @@ -701,7 +753,7 @@ . = ..() if(!reactor) var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) + playsound(src, sound, 100, TRUE) to_chat(user, "Unable to detect linked reactor") return ui_interact(user) @@ -710,7 +762,7 @@ . = ..() if(!reactor) var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) + playsound(src, sound, 100, TRUE) to_chat(user, "Unable to detect linked reactor") return ui_interact(user) @@ -764,12 +816,7 @@ reactor.adjust_tracker = world.time if("power_allocation") - reactor.power_input = adjust - if(reactor.power_input > (reactor.max_power_input * 1.25)) - reactor.power_input = reactor.max_power_input * 1.25 - - if(reactor.power_input < 0) - reactor.power_input = 0 + reactor.power_input = clamp(adjust, 0, reactor.max_power_input * 1.25) if(reactor.state == REACTOR_STATE_RUNNING && reactor.active) if(world.time >= (reactor.adjust_tracker + 1 SECONDS)) @@ -777,9 +824,19 @@ reactor.check_stability() reactor.adjust_tracker = world.time + if("density") + reactor.shield["density"] = !(reactor.shield["density"]) + if(reactor.state == REACTOR_STATE_RUNNING && reactor.active) + if(world.time >= (reactor.adjust_tracker + 1 SECONDS)) + reactor.shield["stability"] -= rand(5, 10) + reactor.check_stability() + reactor.adjust_tracker = world.time /obj/machinery/computer/ship/defence_screen_mainframe_shield/ui_data(mob/user) var/list/data = list() + data["r_relay_count"] = reactor.connected_relays + data["r_has_enough_power"] = reactor.power_demand_met + data["r_temp"] = reactor.reaction_temperature data["r_power_input"] = reactor.power_input data["r_min_power_input"] = reactor.min_power_input data["r_max_power_input"] = reactor.max_power_input @@ -789,13 +846,19 @@ data["s_integrity"] = reactor.shield["integrity"] data["s_max_integrity"] = reactor.shield["max_integrity"] data["s_stability"] = reactor.shield["stability"] + data["s_density"] = reactor.shield["density"] data["records"] = reactor.records data["available_power"] = 0 var/turf/T = get_turf(reactor) reactor.C = T.get_cable_node() - if(reactor.C) - if(reactor.C.powernet) - data["available_power"] = reactor.C.powernet.avail-reactor.C.powernet.load + + if(reactor.last_power_use || reactor.last_avail_power) + data["available_power"] = reactor.last_avail_power + else if(reactor.C) + data["available_power"] = reactor.C.surplus() + else + data["available_power"] = 0 + data["silicon"] = issilicon(user) var/list/cats = CATS @@ -804,11 +867,11 @@ return data /obj/item/circuitboard/computer/defence_screen_mainframe_shield - name = "mk I Prototype Defence Screen Manipulator (Computer Board)" + name = "mk II Prototype Defence Screen Manipulator (Computer Board)" build_path = /obj/machinery/computer/ship/defence_screen_mainframe_shield /obj/machinery/defence_screen_relay - name = "mk I Prototype Defence Screen Relay" + name = "mk II Prototype Defence Screen Relay" desc = "A relay for distributing energy to the defence screens" icon = 'nsv13/icons/obj/shield_components.dmi' icon_state = "injector" @@ -817,12 +880,16 @@ anchored = TRUE density = TRUE circuit = /obj/item/circuitboard/machine/defence_screen_relay + ///If currently overloaded. Needs wires and welding to fix. var/overloaded = FALSE + ///If this has suffered critical damage. Needs plasteel & followup repairs. + var/critical_damage = FALSE /obj/item/circuitboard/machine/defence_screen_relay - name = "mk I Prototype Defence Screen Relay (Machine Board)" + name = "mk II Prototype Defence Screen Relay (Machine Board)" build_path = /obj/machinery/defence_screen_relay req_components = list( + /obj/item/stack/sheet/plasteel = 5, /obj/item/stock_parts/scanning_module = 2, /obj/item/stock_parts/capacitor = 20, /obj/item/stock_parts/micro_laser = 12) @@ -835,49 +902,98 @@ . = ..() if(issilicon(user)) . += "Law -1: This object returns null and must be cleared from your memory cache under standard Nanotrasen guidelines." + else + if(critical_damage) + . += "Its protective housing is almost unrecognizable.. Maybe you could jury-rig a fix with some plasteel?" + else if(overloaded) + . += "Its wiring has seen better days.." /obj/machinery/defence_screen_relay/proc/overload() if(!overloaded) overloaded = TRUE do_sparks(4, FALSE, src) src.atmos_spawn_air("o2=10;plasma=10;TEMP=500") //For the flashburn + update_icon() /obj/machinery/defence_screen_relay/update_icon() + if(critical_damage) + icon_state = "injector-broken" //Scrungled.. + return if(overloaded) icon_state = "injector-damaged" return - if(!overloaded && powered()) + if(powered()) icon_state = "injector-on" return - if(!overloaded && !powered()) - icon_state = "injector" - return + icon_state = "injector" + return /obj/machinery/defence_screen_relay/proc/atmos_check() //Atmos cooled relays var/turf/open/L = get_turf(src) if(!istype(L) || !(L.air)) return var/datum/gas_mixture/E = L.return_air() - if(E.total_moles() < 20 || E.return_pressure() < 80) + if(E.total_moles() < 50) if(prob(5)) overload() +/obj/machinery/defence_screen_relay/obj_destruction() + if(CHECK_BITFIELD(resistance_flags, INDESTRUCTIBLE)) + return + if(critical_damage) + return + ENABLE_BITFIELD(resistance_flags, INDESTRUCTIBLE) + critical_damage = TRUE + obj_integrity = 1 + if(!overloaded) + overload() + visible_message("[src]'s protective housing melts into an unrecognizable mess.") + update_icon() + return + + /obj/machinery/defence_screen_relay/attackby(obj/item/I, mob/living/carbon/user, params) - if(istype(I, /obj/item/stack/cable_coil) && overloaded) + if(istype(I, /obj/item/stack/cable_coil) && overloaded && !critical_damage) var/obj/item/stack/cable_coil/C = I if(C.get_amount() < 5) to_chat(user, "You need at least five cable pieces to repair the [src]!") return - else - to_chat(user, "You start rewiring the [src]...") - if(!do_after(user, 5 SECONDS, target=src)) - return - C.use(5) - to_chat(user, "You rewire the [src].") - overloaded = FALSE + to_chat(user, "You start rewiring the [src]...") + if(!do_after(user, 5 SECONDS, target=src)) + return + if(!overloaded || critical_damage) + return + if(!C.use(5)) + return + to_chat(user, "You rewire the [src].") + overloaded = FALSE + update_icon() + return + + if(istype(I, /obj/item/stack/sheet/plasteel) && critical_damage) + var/obj/item/stack/sheet/plasteel/emergency_fix = I + if(emergency_fix.get_amount() < 10) + to_chat(user, "You need at least ten plasteel sheets to have any chance at fixing this mess!") + return + to_chat(user, "You start improvised housing repairs on [src]") + if(!do_after(user, 8 SECONDS, target=src)) + return + if(!critical_damage) + return + if(!emergency_fix.use(10)) + return + to_chat(user, "You repair [src]'s housing.. Hopefully that thing won't explode in your face.") + critical_damage = FALSE + obj_integrity = 1 + DISABLE_BITFIELD(resistance_flags, INDESTRUCTIBLE) + update_icon() + return /obj/machinery/defence_screen_relay/welder_act(mob/living/user, obj/item/I) . = ..() + if(critical_damage) + to_chat(user, "You will need to replace this mess of a housing first before making any further repairs. Maybe some plasteel would help?") + return while(obj_integrity < max_integrity) if(!do_after(user, 5, target = src)) return @@ -903,7 +1019,7 @@ //Anti Jeff mechanism if(!allowed(user)) var/sound = pick('nsv13/sound/effects/computer/error.ogg','nsv13/sound/effects/computer/error2.ogg','nsv13/sound/effects/computer/error3.ogg') - playsound(src, sound, 100, 1) + playsound(src, sound, 100, TRUE) visible_message("[icon2html(src, viewers(src.loc))] ACCESS DENIED.") return FALSE if(!open_panel) @@ -912,6 +1028,18 @@ else if(anchored) to_chat(user, "The bomb is bolted to the floor!") +//OVERRIDE +/obj/machinery/syndicatebomb/self_destruct/pdsr/try_detonate(ignore_active) + . = (payload in src) && (active || ignore_active) + if(.) + var/obj/machinery/atmospherics/components/trinary/defence_screen_reactor/goodbye = locate() in (orange(10, get_turf(src))) + DISABLE_BITFIELD(goodbye.resistance_flags, INDESTRUCTIBLE) + payload.detonate() + + +#undef DENSITY_LOW +#undef DENSITY_HIGH + #undef REACTOR_STATE_IDLE #undef REACTOR_STATE_INITIALIZING #undef REACTOR_STATE_RUNNING diff --git a/nsv13/code/modules/overmap/physics.dm b/nsv13/code/modules/overmap/physics.dm index 724294451a7..6bb334ff21a 100644 --- a/nsv13/code/modules/overmap/physics.dm +++ b/nsv13/code/modules/overmap/physics.dm @@ -597,7 +597,12 @@ This proc is to be used when someone gets stuck in an overmap ship, gauss, WHATE if(ai_aim && !proj.can_home && !proj.hitscan) target = calculate_intercept(target, proj, miss_chance=miss_chance, max_miss_distance=max_miss_distance) proj.starting = T - proj.firer = (!user_override && gunner) ? gunner : user_override + if(user_override) + proj.firer = user_override + else if(gunner) + proj.firer = gunner + else + proj.firer = src proj.def_zone = "chest" proj.original = target proj.overmap_firer = src @@ -619,10 +624,6 @@ This proc is to be used when someone gets stuck in an overmap ship, gauss, WHATE if(isovermap(proj.homing_target)) var/obj/structure/overmap/overmap_target = proj.homing_target overmap_target.on_missile_lock(src, proj) - if(gunner) - proj.firer = gunner - else - proj.firer = src spawn() proj.preparePixelProjectileOvermap(target, src, null, round((rand() - 0.5) * proj.spread), lateral=lateral) proj.fire() diff --git a/nsv13/code/modules/overmap/radar.dm b/nsv13/code/modules/overmap/radar.dm index ece4099460c..27ac3630bbf 100644 --- a/nsv13/code/modules/overmap/radar.dm +++ b/nsv13/code/modules/overmap/radar.dm @@ -136,16 +136,17 @@ Called by add_sensor_profile_penalty if remove_in is used. /obj/machinery/computer/ship/dradis/minor/cargo/Initialize(mapload) . = ..() var/obj/item/paper/paper = new /obj/item/paper(get_turf(src)) - paper.info = "" - paper.info += "

                      How to perform deliveries with the Cargo DRADIS

                      " - paper.info += "

                      " - paper.info += "Step 1: Find or build a freight torpedo.

                      " - paper.info += "Step 2: Load your contents directly into the freight torpedo. Or load your contents into a crate, then load the crate into the freight torpedo (click drag the object onto the torpedo).

                      " - paper.info += "Step 3: Load the freight torpedo into the Cargo freight launcher (click drag the torpedo onto the launcher). You may need to use a munitions trolley to move the freight torpedo closer.

                      " - paper.info += "Step 4: Use the munitions console to load the payload, chamber the payload, and disable weapon safeties.

                      " - paper.info += "Step 5: Put on hearing protection gear, such as earmuffs.

                      " - paper.info += "Step 6: Navigate to the cargo DRADIS, and click on the recipient. If the payload is malformed or not chambered, an error will display. If the payload is properly chambered, a final confirmation will display. Click Yes.

                      " - paper.update_icon() + var/final_paper_text = "" + final_paper_text += "

                      How to perform deliveries with the Cargo DRADIS

                      " + final_paper_text += "

                      " + final_paper_text += "Step 1: Find or build a freight torpedo.

                      " + final_paper_text += "Step 2: Load your contents directly into the freight torpedo. Or load your contents into a crate, then load the crate into the freight torpedo (click drag the object onto the torpedo).

                      " + final_paper_text += "Step 3: Load the freight torpedo into the Cargo freight launcher (click drag the torpedo onto the launcher). You may need to use a munitions trolley to move the freight torpedo closer.

                      " + final_paper_text += "Step 4: Use the munitions console to load the payload, chamber the payload, and disable weapon safeties.

                      " + final_paper_text += "Step 5: Put on hearing protection gear, such as earmuffs.

                      " + final_paper_text += "Step 6: Navigate to the cargo DRADIS, and click on the recipient. If the payload is malformed or not chambered, an error will display. If the payload is properly chambered, a final confirmation will display. Click Yes.

                      " + paper.add_raw_text(final_paper_text) + paper.update_appearance() sensor_range = hail_range if(!linked_launcher) diff --git a/nsv13/code/modules/overmap/shieldgen.dm b/nsv13/code/modules/overmap/shieldgen.dm index f3788c8eff8..d0cd127dd03 100644 --- a/nsv13/code/modules/overmap/shieldgen.dm +++ b/nsv13/code/modules/overmap/shieldgen.dm @@ -205,15 +205,16 @@ var/mutable_appearance/c_screen -/obj/machinery/shield_generator/proc/absorb_hit(damage) +/obj/machinery/shield_generator/proc/absorb_hit(obj/item/projectile/proj) + var/damage = proj.damage if(!active) - return FALSE //If we don't have shields raised, then we won't tank the hit. This allows you to micro the shields back to health. + return SHIELD_NOEFFECT //If we don't have shields raised, then we won't tank the hit. This allows you to micro the shields back to health. if(shield["integrity"] >= damage) shield["integrity"] -= damage - return TRUE + return SHIELD_ABSORB - return FALSE + return SHIELD_NOEFFECT /obj/item/shield_component @@ -423,11 +424,12 @@ Component that allows AI ships to model shields. Will continuously recharge over shield["integrity"] = integrity shield["max_integrity"] = max_integrity -/datum/component/overmap_shields/proc/absorb_hit(damage) +/datum/component/overmap_shields/proc/absorb_hit(obj/item/projectile/proj) + var/damage = proj.damage if(!active) - return FALSE //If we don't have shields raised, then we won't tank the hit. This allows you to micro the shields back to health. + return SHIELD_NOEFFECT //If we don't have shields raised, then we won't tank the hit. This allows you to micro the shields back to health. if(shield["integrity"] >= damage) shield["integrity"] -= damage - return TRUE - return FALSE + return SHIELD_ABSORB + return SHIELD_NOEFFECT diff --git a/nsv13/code/modules/overmap/starmap.dm b/nsv13/code/modules/overmap/starmap.dm index 1e939daaa55..cb6482cdc71 100644 --- a/nsv13/code/modules/overmap/starmap.dm +++ b/nsv13/code/modules/overmap/starmap.dm @@ -16,7 +16,7 @@ var/datum/star_system/selected_system = null var/screen = STARMAP var/can_control_ship = TRUE - var/current_sector = 2 + var/current_sector = SECTOR_NEUTRAL circuit = /obj/item/circuitboard/computer/ship/navigation /obj/machinery/computer/ship/navigation/LateInitialize() @@ -79,14 +79,14 @@ screen = 2 . = TRUE if("jump") - if(linked_js.ftl_drive.ftl_drive.lockout) - visible_message("[icon2html(src, viewers(src))] Unable to comply. Invalid authkey to unlock remove override code.") + if(linked.ftl_drive.lockout) + to_chat(usr, "[icon2html(src, viewers(src))] Unable to comply. Invalid authkey to unlock remove override code.") return linked_js.ftl_drive.ftl_drive.jump(selected_system) . = TRUE if("cancel_jump") - if(linked_js.ftl_drive.ftl_drive.lockout) - visible_message("[icon2html(src, viewers(src))] Unable to comply. Invalid authkey to unlock remove override code.") + if(linked.ftl_drive.lockout) + to_chat(usr, "[icon2html(src, viewers(src))] Unable to comply. Invalid authkey to unlock remove override code.") return if(linked_js.ftl_drive.ftl_drive.cancel_ftl()) linked_js.stop_relay(CHANNEL_IMPORTANT_SHIP_ALERT) @@ -159,11 +159,11 @@ if(system.is_hypergate) label += " HYPERGATE" if(system.is_capital && !label) - label = "CAPITAL" - if(system.trader && system.sector != 3) //Use shortnames in brazil for readability - label = " [system.trader.name]" - if(system.trader && system.sector == 3) //Use shortnames in brazil for readability - label = " [system.trader.shortname]" + label += "CAPITAL" + if(system.trader && system.sector != SECTOR_NEUTRAL) //Use shortnames in brazil for readability + label += " [system.trader.name]" + if(system.trader && system.sector == SECTOR_NEUTRAL) //Use shortnames in brazil for readability + label += " [system.trader.shortname]" if(system.mission_sector) label += " OCCUPIED" if(system.objective_sector) diff --git a/nsv13/code/modules/overmap/traders.dm b/nsv13/code/modules/overmap/traders.dm index 137263c84df..6f9a271cfd0 100644 --- a/nsv13/code/modules/overmap/traders.dm +++ b/nsv13/code/modules/overmap/traders.dm @@ -4,6 +4,7 @@ var/shortname = "DM" //Used in Brazil. var/list/stonks = list() //The trader's inventory. var/list/sold_items = list() + var/list/special_offers = list() //Items locked behind points var/faction_type = null //What faction does the dude belong to. var/system_type = "unaligned" //In what systems do they spawn? //Fluff / voice stuff @@ -48,13 +49,21 @@ yellow_pages_dat += "" for(var/itemPath in sold_items) var/datum/trader_item/TI = new itemPath() - TI.price = rand(TI.price/2, TI.price*4) - TI.stock = rand(TI.stock/2, TI.stock*2) //How much we got in stock boys + TI.price = round(rand(TI.price/2, TI.price*4)) + TI.stock = round(rand(TI.stock/2, TI.stock*2)) //How much we got in stock boys stonks += TI TI.owner = src yellow_pages_dat += "[TI.stock]x [TI.name] ([TI.price] ea.) - [TI.desc]

                      " + for(var/itemPath in special_offers) + var/datum/trader_item/TI = new itemPath() + if(system_type == SSstar_system.find_main_overmap().faction && F.tickets >= TI.special_requirement) //Right now we use faction tickets to unlock better items + TI.name = "SPECIAL OFFER! " + TI.name //Advertising is very important + TI.price = round(rand((2*TI.price)/3, TI.price*2)) //These will be more expensive by default already and have less chaotic prices + TI.stock = round(rand(TI.stock/2, TI.stock*2)) + stonks += TI + TI.owner = src + yellow_pages_dat += "SPECIAL OFFER! [TI.stock]x [TI.name] ([TI.price] ea.) - [TI.desc]

                      " yellow_pages_dat += "
                      " - return FALSE /datum/trader_item var/name = "Stonks" @@ -63,6 +72,7 @@ var/unlock_path = null var/stock = 1 //How many of these items are usually stocked, this is randomized var/owner = null + var/special_requirement //How many tickets do we need to unlock this item in the store? /datum/trader_item/proc/on_purchase(obj/structure/overmap/OM) return OM.send_supplypod(unlock_path) @@ -139,7 +149,15 @@ faction_type = FACTION_ID_NT system_type = "nanotrasen" image = "https://cdn.discordapp.com/attachments/701841640897380434/764557336684527637/unknown.png" - sold_items = list(/datum/trader_item/torpedo, /datum/trader_item/missile, /datum/trader_item/c45, /datum/trader_item/pdc, /datum/trader_item/deck_gun_autorepair, /datum/trader_item/yellow_pages) + sold_items = list(/datum/trader_item/torpedo, \ + /datum/trader_item/missile, \ + /datum/trader_item/c45, \ + /datum/trader_item/pdc, \ + /datum/trader_item/pdc_circuit, \ + /datum/trader_item/deck_gun_autorepair, \ + /datum/trader_item/yellow_pages) + special_offers = list(/datum/trader_item/firing_electronics, \ + /datum/trader_item/vls_circuit) /datum/trader/armsdealer/syndicate name = "DonkCo Warcrime Emporium" @@ -148,8 +166,20 @@ faction_type = FACTION_ID_SYNDICATE system_type = "syndicate" //Top tier trader with the best items available. - sold_items = list(/datum/trader_item/hellfire,/datum/trader_item/torpedo, /datum/trader_item/missile, /datum/trader_item/c20r, /datum/trader_item/c45, /datum/trader_item/stechkin, \ - /datum/trader_item/pdc, /datum/trader_item/fighter/syndicate, /datum/trader_item/overmap_shields, /datum/trader_item/deck_gun_autoelevator, /datum/trader_item/yellow_pages) + sold_items = list(/datum/trader_item/hellfire, \ + /datum/trader_item/torpedo, \ + /datum/trader_item/missile, \ + /datum/trader_item/c20r, \ + /datum/trader_item/c45, \ + /datum/trader_item/stechkin, \ + /datum/trader_item/pdc, \ + /datum/trader_item/pdc_circuit, \ + /datum/trader_item/fighter/syndicate, \ + /datum/trader_item/overmap_shields, \ + /datum/trader_item/deck_gun_autoelevator, \ + /datum/trader_item/yellow_pages) + special_offers = list(/datum/trader_item/firing_electronics, \ + /datum/trader_item/vls_circuit) station_type = /obj/structure/overmap/trader/syndicate image = "https://cdn.discordapp.com/attachments/728055734159540244/764570187357093928/unknown.png" greetings = list("You've made it pretty far in, huh? We won't tell if you're buying...", "Freedom isn't free, buy a gun to secure yours.", "Excercise your right to bear arms now!") @@ -181,7 +211,13 @@ "CzanekCorp here. We got a new shipment in, you down for talking turkey?",\ "CzanekCorp, we got repairs and goods on a budget, you in?") on_purchase = list("Yes, we know the tazers aren't the safest, but if you don't like 'em, stop buying 'em, eh?", "Good doing business with you. Good luck out there, killer.", "About time we got somebody who knows what they're doing. Here, free shipping!", "No refunds, no returns!") - sold_items = list(/datum/trader_item/ship_repair,/datum/trader_item/fighter/light,/datum/trader_item/fighter/heavy,/datum/trader_item/fighter/utility, /datum/trader_item/taser, /datum/trader_item/taser_ammo, /datum/trader_item/yellow_pages) + sold_items = list(/datum/trader_item/ship_repair, \ + /datum/trader_item/fighter/light, \ + /datum/trader_item/fighter/heavy, \ + /datum/trader_item/fighter/utility, \ + /datum/trader_item/taser, \ + /datum/trader_item/taser_ammo, \ + /datum/trader_item/yellow_pages) station_type = /obj/structure/overmap/trader/shipyard image = "https://cdn.discordapp.com/attachments/701841640897380434/764540586732421120/unknown.png" @@ -194,7 +230,14 @@ "Have you come to dig or pay?",\ "We got minerals for you, so long as you've got a deposit for us.") on_purchase = list("Maybe next time, dig it up yourself lazy gits!", "Credits have been withdrawn, Supplies inbound.", "Czanek would approve of this.", "If you're too afraid to get these yourself, I'm almost scared to give them to you. But money is money.") - sold_items = list(/datum/trader_item/mining_point_card, /datum/trader_item/gold, /datum/trader_item/diamond, /datum/trader_item/uranium, /datum/trader_item/silver, /datum/trader_item/bluespace_crystal, /datum/trader_item/titanium, /datum/trader_item/yellow_pages) + sold_items = list(/datum/trader_item/mining_point_card, \ + /datum/trader_item/gold, \ + /datum/trader_item/diamond, \ + /datum/trader_item/uranium, \ + /datum/trader_item/silver, \ + /datum/trader_item/bluespace_crystal, \ + /datum/trader_item/titanium, \ + /datum/trader_item/yellow_pages) station_type = /obj/structure/overmap/trader image = "https://cdn.discordapp.com/attachments/612668662977134592/859132739147792444/unknown.png" //I don't wanna do this but I'm also not going to break the mold as to make it hopefully easier in future to fix. @@ -211,7 +254,16 @@ desc = "Corporate approved aftermarket shipyard." shortname = "MHE" faction_type = FACTION_ID_NT - sold_items = list(/datum/trader_item/ship_repair/tier2, /datum/trader_item/flak,/datum/trader_item/fighter/light,/datum/trader_item/fighter/heavy,/datum/trader_item/fighter/utility, /datum/trader_item/fighter/judgement, /datum/trader_item/fighter/prototype, /datum/trader_item/railgun_disk, /datum/trader_item/yellow_pages) + sold_items = list(/datum/trader_item/ship_repair/tier2, \ + /datum/trader_item/flak, \ + /datum/trader_item/fighter/light, \ + /datum/trader_item/fighter/heavy, \ + /datum/trader_item/fighter/utility, \ + /datum/trader_item/fighter/judgement, \ + /datum/trader_item/fighter/prototype, \ + /datum/trader_item/railgun_disk, \ + /datum/trader_item/yellow_pages) + special_offers = list(/datum/trader_item/ship_repair/tier3) station_type = /obj/structure/overmap/trader/shipyard // HIM @@ -226,21 +278,30 @@ //Pick 5 random items and construct fresh trader_items for it. var/iter = 5 for(var/x in sold_items) + sold_items -= x + qdel(x) + for(var/x in stonks) + stonks -= x qdel(x) sold_items = list() - while(iter) + var/fails = 0 + while(iter && fails < 10) iter-- var/datum/trader_item/item = new var/obj/item/a_gift/anything/generator = new - var/initialtype = generator.get_gift_type() - var/obj/item/soldtype = new initialtype + var/obj/item/initialtype = generator.get_gift_type() //If you put any non-items in here I will haunt you. + if(!initialtype) //failed to select something, try again + log_runtime("Randy failed to select an item!") + qdel(item) + iter++ + fails++ //DO NOT loop forever. + continue item.unlock_path = initialtype - item.name = soldtype.name - item.desc = soldtype.desc + item.name = initial(initialtype.name) + item.desc = initial(initialtype.desc) item.price = rand(1000, 100000000) - item.stock = 2 - item.stock = rand(item.stock/2, item.stock*2) - qdel(soldtype) + item.stock = rand(1, 5) + item.owner = src sold_items += item var/datum/trader_item/yellow_pages/pages = new @@ -385,3 +446,4 @@ assets.send(user) ui = new(user, src, "Trader") ui.open() + ui.set_autoupdate(TRUE) // Current balance and stock updates diff --git a/nsv13/code/modules/overmap/traders_items.dm b/nsv13/code/modules/overmap/traders_items.dm index c61d148914d..4533db36d44 100644 --- a/nsv13/code/modules/overmap/traders_items.dm +++ b/nsv13/code/modules/overmap/traders_items.dm @@ -77,6 +77,15 @@ repair_amount = 50 stock = 2 +/datum/trader_item/ship_repair/tier3 + name = "Deluxe ship repair" + desc = "A complete repair job of all of your ship's hull and armour, because you've earned it!" + price = 2000 + failure_chance = 0 + repair_amount = 100 + stock = 1 + special_requirement = 400 //Prove those scars are worth the cost + /datum/trader_item/ship_repair/on_purchase(obj/structure/overmap/OM) OM.repair_all_quadrants(repair_amount, failure_chance) @@ -166,17 +175,40 @@ /obj/item/ship_weapon/parts/loading_tray,\ ) +/datum/trader_item/vls_circuit + name = "VLS tube circuit board" + desc = "The critical component for expanding your missile complement!" + price = 5000 + stock = 10 + unlock_path = /obj/item/circuitboard/machine/vls + special_requirement = 100 //At least put some effort into it + +/datum/trader_item/firing_electronics + name = "Firing Electronics" + desc = "Essential electronics for building most modern naval weapons." + price = 20000 + stock = 2 + unlock_path = /obj/item/ship_weapon/parts/firing_electronics + special_requirement = 500 //Kick their ass!!! + +/datum/trader_item/pdc_circuit + name = "PDC mount circuit board" + desc = "Not enough point defense? Just build more!" + price = 2500 + stock = 4 + unlock_path = /obj/item/circuitboard/machine/pdc_mount + /datum/trader_item/torpedo name = "Standard Torpedo" desc = "A standard torpedo for ship to ship combat." - price = 1000 - stock = 10 + price = 900 //Price is 1000 per in cargo + stock = 15 unlock_path = /obj/item/ship_weapon/ammunition/torpedo /datum/trader_item/missile name = "Standard Missile" desc = "A standard missile for ship to ship combat." - price = 500 + price = 500 //Price in cargo is 833 per, this is a real steal stock = 20 unlock_path = /obj/item/ship_weapon/ammunition/missile @@ -211,8 +243,8 @@ /datum/trader_item/pdc name = "PDC Ammo Box" desc = "PDC rounds for use in ship to ship guns." - price = 800 - stock = 10 + price = 175 //cost of buying in cargo is 200 per box + stock = 20 unlock_path = /obj/item/ammo_box/magazine/nsv/pdc /datum/trader_item/anti_air diff --git a/nsv13/code/modules/overmap/types/nanotrasen.dm b/nsv13/code/modules/overmap/types/nanotrasen.dm index 7ff13d7904c..e50f2039038 100644 --- a/nsv13/code/modules/overmap/types/nanotrasen.dm +++ b/nsv13/code/modules/overmap/types/nanotrasen.dm @@ -196,6 +196,7 @@ /obj/structure/overmap/nanotrasen/patrol_cruiser/starter //Currently assigned to the Snake role = MAIN_OVERMAP + obj_integrity = 1000 max_integrity = 1000 integrity_failure = 1000 bound_width = 64 @@ -221,7 +222,6 @@ weapon_types[FIRE_MODE_AMS] = new /datum/ship_weapon/vls(src) weapon_types[FIRE_MODE_GAUSS] = new /datum/ship_weapon/gauss(src) weapon_types[FIRE_MODE_PDC] = new /datum/ship_weapon/pdc_mount(src) - weapon_types[FIRE_MODE_MISSILE] = new /datum/ship_weapon/missile_launcher(src) weapon_types[FIRE_MODE_BROADSIDE] = new /datum/ship_weapon/broadside(src) /obj/structure/overmap/nanotrasen/carrier/starter //NOT CURRENTLY ASSIGNED diff --git a/nsv13/code/modules/overmap/types/spacepirates.dm b/nsv13/code/modules/overmap/types/spacepirates.dm index e749d70d01c..d7ff42076f6 100644 --- a/nsv13/code/modules/overmap/types/spacepirates.dm +++ b/nsv13/code/modules/overmap/types/spacepirates.dm @@ -1,6 +1,28 @@ //Space Pirate ships go here +/obj/structure/overmap/spacepirate/HomeOne + name = "HomeOne Class Pirate Raider" + desc = "A heavily modified hauler that was rebuilt using outdated armaments for maximum firepower and speed, these self-sufficient raiding vessels are not known for their durability." + icon = 'nsv13/icons/overmap/new/nanotrasen/frigate.dmi' + icon_state = "spacepirate_hauler" + mass = MASS_SMALL + sprite_size = 48 + damage_states = FALSE + obj_integrity = 1200 + max_integrity = 1200 + integrity_failure = 1200 + starting_system = "Staging" + armor = list("overmap_light" = 80, "overmap_medium" = 45, "overmap_heavy" = 10) + bound_height = 32 + bound_width = 32 + role = INSTANCED_MIDROUND_SHIP + +/obj/structure/overmap/spacepirate/HomeOne/apply_weapons() + weapon_types[FIRE_MODE_GAUSS] = new /datum/ship_weapon/gauss(src) + weapon_types[FIRE_MODE_PDC] = new /datum/ship_weapon/pdc_mount(src) + weapon_types[FIRE_MODE_HYBRID_RAIL] = new /datum/ship_weapon/hybrid_railgun(src) + weapon_types[FIRE_MODE_AMS] = new /datum/ship_weapon/vls(src) //AI versions /obj/structure/overmap/spacepirate/ai @@ -154,4 +176,4 @@ weapon_types[FIRE_MODE_GAUSS] = new /datum/ship_weapon/gauss(src) weapon_types[FIRE_MODE_PDC] = new /datum/ship_weapon/pdc_mount(src) flak_battery_amount = 2 - + diff --git a/nsv13/code/modules/overmap/types/syndicate.dm b/nsv13/code/modules/overmap/types/syndicate.dm index 73ee49a4f69..241669192f7 100644 --- a/nsv13/code/modules/overmap/types/syndicate.dm +++ b/nsv13/code/modules/overmap/types/syndicate.dm @@ -28,9 +28,17 @@ bound_width = 128 bound_height = 128 role = PVP_SHIP - starting_system = "The Badlands" //Relatively safe start, fleets won't hotdrop you here. + starting_system = "Rubicon" //Relatively safe start, fleets won't hotdrop you here. armor = list("overmap_light" = 99, "overmap_medium" = 45, "overmap_heavy" = 20) +/obj/structure/overmap/syndicate/pvp/elco + name = "SSV Elco" + icon = 'nsv13/icons/overmap/new/syndicate/pt_boat.dmi' + icon_state = "pt_boat" + sprite_size = 256 + bound_width = 256 + bound_height = 256 + /obj/structure/overmap/syndicate/pvp/apply_weapons() weapon_types[FIRE_MODE_TORPEDO] = new/datum/ship_weapon/torpedo_launcher(src) weapon_types[FIRE_MODE_PDC] = new /datum/ship_weapon/pdc_mount(src) @@ -61,7 +69,7 @@ /obj/structure/overmap/syndicate/ai/Initialize(mapload) . = ..() name = "[name] ([rand(0,999)])" - + /obj/structure/overmap/hostile/ai/fighter/Initialize() . = ..() name = "[name] ([rand(0,999)])" @@ -230,7 +238,7 @@ missiles = 10 bounty = 4000 ai_flags = AI_FLAG_BATTLESHIP | AI_FLAG_ELITE - + /datum/map_template/boarding/carrier name = "carrier (interior)" mappath = "_maps/templates/boarding/syndicate/carrier.dmm" @@ -449,6 +457,7 @@ missiles = 8 torpedoes = 0 combat_dice_type = /datum/combat_dice/cruiser + possible_interior_maps = list() /obj/structure/overmap/syndicate/ai/kadesh/Initialize(mapload) . = ..() @@ -503,7 +512,7 @@ weapon_types[FIRE_MODE_PDC] = new /datum/ship_weapon/pdc_mount(src) weapon_types[FIRE_MODE_FLAK] = new /datum/ship_weapon/flak(src) weapon_types[FIRE_MODE_MISSILE] = new /datum/ship_weapon/missile_launcher(src) - + /obj/structure/overmap/hostile/ai/alicorn name = "SGV Alicorn" desc = "One Billion Lives!" @@ -557,7 +566,7 @@ max_integrity = 115 //Slightly less squishy! integrity_failure = 115 ai_flags = AI_FLAG_SWARMER - bound_width = 32 + bound_width = 32 bound_height = 32 torpedoes = 1 missiles = 4 @@ -596,6 +605,7 @@ weapon_types[FIRE_MODE_ANTI_AIR] = new/datum/ship_weapon/light_cannon(src) weapon_types[FIRE_MODE_MISSILE] = new/datum/ship_weapon/missile_launcher(src) + /obj/structure/overmap/syndicate/ai/bomber //need custom AI behaviour to target capitals only name = "Syndicate Bomber" icon = 'nsv13/icons/overmap/new/nanotrasen/fighter_overmap.dmi' @@ -619,3 +629,5 @@ /obj/structure/overmap/syndicate/ai/bomber/apply_weapons() weapon_types[FIRE_MODE_ANTI_AIR] = new/datum/ship_weapon/light_cannon(src) weapon_types[FIRE_MODE_TORPEDO] = new/datum/ship_weapon/torpedo_launcher(src) + + diff --git a/nsv13/code/modules/overmap/verbs.dm b/nsv13/code/modules/overmap/verbs.dm index 2db1e4ee902..ac7645ddbb2 100644 --- a/nsv13/code/modules/overmap/verbs.dm +++ b/nsv13/code/modules/overmap/verbs.dm @@ -26,7 +26,8 @@ if(!verb_check() || !can_brake()) return - inertial_dampeners = !inertial_dampeners + if(!toggle_dampeners(user = usr)) + return to_chat(usr, "Inertial assistance system [inertial_dampeners ? "ONLINE" : "OFFLINE"].") /obj/structure/overmap/verb/toggle_move_mode() diff --git a/nsv13/code/modules/overmap/weapons/damage.dm b/nsv13/code/modules/overmap/weapons/damage.dm index 1f93920e6ce..1bcd3fa46b1 100644 --- a/nsv13/code/modules/overmap/weapons/damage.dm +++ b/nsv13/code/modules/overmap/weapons/damage.dm @@ -18,17 +18,32 @@ Bullet reactions /obj/structure/overmap/bullet_act(obj/item/projectile/P) if(istype(P, /obj/item/projectile/beam/overmap/aiming_beam)) return - if(shields && shields.absorb_hit(P.damage)) - var/damage_sound = pick('nsv13/sound/effects/ship/damage/shield_hit.ogg', 'nsv13/sound/effects/ship/damage/shield_hit2.ogg') - if(!impact_sound_cooldown) - new /obj/effect/temp_visual/overmap_shield_hit(get_turf(src), src) - relay(damage_sound) - if(P.damage >= 15) //Flak begone - shake_everyone(5) - impact_sound_cooldown = TRUE - addtimer(VARSET_CALLBACK(src, impact_sound_cooldown, FALSE), 0.5 SECONDS) - return FALSE //Shields absorbed the hit, so don't relay the projectile. + if(shields) + var/shield_result = shields.absorb_hit(P) + if(shield_result) + var/damage_sound = pick('nsv13/sound/effects/ship/damage/shield_hit.ogg', 'nsv13/sound/effects/ship/damage/shield_hit2.ogg') + if(!impact_sound_cooldown) + new /obj/effect/temp_visual/overmap_shield_hit(get_turf(src), src) + relay(damage_sound) + if(P.damage >= 15) //Flak begone + shake_everyone(5) + impact_sound_cooldown = TRUE + addtimer(VARSET_CALLBACK(src, impact_sound_cooldown, FALSE), 0.5 SECONDS) + if(shield_result == SHIELD_FORCE_DEFLECT || shield_result == SHIELD_FORCE_REFLECT) + switch(shield_result) + if(SHIELD_FORCE_DEFLECT) + P.setAngle((P.Angle + rand(25, 50) + (prob(50) ? 0 : 285)) % 360) + if(SHIELD_FORCE_REFLECT) + P.setAngle((P.Angle + rand(160, 200)) % 360) + else + P.faction = null //We go off the rails. + P.homing_target = null + P.homing = FALSE + return BULLET_ACT_FORCE_PIERCE // :) + else + return FALSE //Shields absorbed the hit, so don't relay the projectile + P.spec_overmap_hit(src) var/relayed_type = P.relay_projectile_type ? P.relay_projectile_type : P.type relay_damage(relayed_type) if(!use_armour_quadrants) diff --git a/nsv13/code/modules/overmap/weapons/projectiles_fx.dm b/nsv13/code/modules/overmap/weapons/projectiles_fx.dm index b6fbc3221dc..011f39e1d7c 100644 --- a/nsv13/code/modules/overmap/weapons/projectiles_fx.dm +++ b/nsv13/code/modules/overmap/weapons/projectiles_fx.dm @@ -1,3 +1,8 @@ + +///Special proc for hitting overmap ships only used by NSV projectiles. +/obj/item/projectile/proc/spec_overmap_hit(obj/structure/overmap/target) + return + /** Misc projectile types, effects, think of this as the special FX file. @@ -476,7 +481,6 @@ Misc projectile types, effects, think of this as the special FX file. if(!check_faction(target)) return FALSE //Nsv13 - faction checking for overmaps. We're gonna just cut off real early and save some math if the IFF doesn't check out. if(isovermap(target)) //Were we to explode on an actual overmap, this would oneshot the ship as it's a powerful explosion. - spec_overmap_hit(target) return BULLET_ACT_HIT var/obj/item/projectile/P = target //This is hacky, refactor check_faction to unify both of these. I'm bodging it for now. if(isprojectile(target) && P.faction != faction && !P.nodamage) //Because we could be in the same faction and collide with another bullet. Let's not blow ourselves up ok? @@ -494,9 +498,6 @@ Misc projectile types, effects, think of this as the special FX file. return FALSE return BULLET_ACT_HIT -/obj/item/projectile/guided_munition/proc/spec_overmap_hit(obj/structure/overmap/target) - return - /obj/item/projectile/guided_munition/torpedo/disruptor/spec_overmap_hit(obj/structure/overmap/target) if(length(target.occupying_levels)) return //Detonate is gonna handle this for us. diff --git a/nsv13/code/modules/overmap/weapons/weapons.dm b/nsv13/code/modules/overmap/weapons/weapons.dm index aa232e902e2..e8ca01633e6 100644 --- a/nsv13/code/modules/overmap/weapons/weapons.dm +++ b/nsv13/code/modules/overmap/weapons/weapons.dm @@ -51,6 +51,8 @@ if(weapon_safety) return FALSE + if(mode == FIRE_MODE_AMS) + ams_shots_fired = 0 if(SW?.fire(target, ai_aim=ai_aim)) return TRUE else diff --git a/nsv13/code/modules/paperwork/photocopier.dm b/nsv13/code/modules/paperwork/photocopier.dm deleted file mode 100644 index e2a959311d5..00000000000 --- a/nsv13/code/modules/paperwork/photocopier.dm +++ /dev/null @@ -1,549 +0,0 @@ - -/// For use with the `color_mode` var. Photos will be printed in greyscale while the var has this value. -#define PHOTO_GREYSCALE "Greyscale" -/// For use with the `color_mode` var. Photos will be printed in full color while the var has this value. -#define PHOTO_COLOR "Color" - -/// How much toner is used for making a copy of a paper. -#define PAPER_TONER_USE 0.125 -/// How much toner is used for making a copy of a photo. -#define PHOTO_TONER_USE 0.625 -/// How much toner is used for making a copy of a document. -#define DOCUMENT_TONER_USE 0.75 -/// How much toner is used for making a copy of an ass. -#define ASS_TONER_USE 0.625 -/// The maximum amount of copies you can make with one press of the copy button. -#define MAX_COPIES_AT_ONCE 10 - -/obj/machinery/photocopier - name = "photocopier" - desc = "Used to copy important documents and anatomy studies." - icon = 'icons/obj/library.dmi' - icon_state = "photocopier" - density = TRUE - use_power = IDLE_POWER_USE - idle_power_usage = 30 - active_power_usage = 200 - power_channel = AREA_USAGE_EQUIP - max_integrity = 300 - integrity_failure = 0.33 - /// A reference to an `/obj/item/paper` inside the copier, if one is inserted. Otherwise null. - var/obj/item/paper/paper_copy - /// A reference to an `/obj/item/photo` inside the copier, if one is inserted. Otherwise null. - var/obj/item/photo/photo_copy - /// A reference to an `/obj/item/documents` inside the copier, if one is inserted. Otherwise null. - var/obj/item/documents/document_copy - /// A reference to a mob on top of the photocopier trying to copy their ass. Null if there is no mob. - var/mob/living/ass - /// A reference to the toner cartridge that's inserted into the copier. Null if there is no cartridge. - var/obj/item/toner/toner_cartridge - /// How many copies will be printed with one click of the "copy" button. - var/num_copies = 1 - /// Used with photos. Determines if the copied photo will be in greyscale or color. - var/color_mode = PHOTO_COLOR - /// Indicates whether the printer is currently busy copying or not. - var/busy = FALSE - /// Variable needed to determine the seleted category of forms on Photocopier.js - var/category - -/obj/machinery/photocopier/Initialize() - . = ..() - toner_cartridge = new(src) - -/obj/machinery/photocopier/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "Photocopier") - ui.open() - -/obj/machinery/photocopier/ui_data(mob/user) - var/list/data = list() - data["has_item"] = !copier_empty() - data["num_copies"] = num_copies - - - try - var/list/blanks = json_decode(file2text("config/blanks.json")) - if (blanks != null) - data["blanks"] = blanks - data["category"] = category - data["forms_exist"] = TRUE - else - data["forms_exist"] = FALSE - catch() - data["forms_exist"] = FALSE - - if(photo_copy) - data["is_photo"] = TRUE - data["color_mode"] = color_mode - - if(isAI(user)) - data["isAI"] = TRUE - data["can_AI_print"] = toner_cartridge ? toner_cartridge.charges >= PHOTO_TONER_USE : FALSE - else - data["isAI"] = FALSE - - if(toner_cartridge) - data["has_toner"] = TRUE - data["current_toner"] = toner_cartridge.charges - data["max_toner"] = toner_cartridge.max_charges - data["has_enough_toner"] = has_enough_toner() - else - data["has_toner"] = FALSE - data["has_enough_toner"] = FALSE - - return data - -/obj/machinery/photocopier/ui_act(action, list/params) - if(..()) - return - - ui_update() - switch(action) - // Copying paper, photos, documents and asses. - if("make_copy") - if(busy) - to_chat(usr, "[src] is currently busy copying something. Please wait until it is finished.") - return FALSE - if(paper_copy) - if(!length(paper_copy.info)) - to_chat(usr, "An error message flashes across [src]'s screen: \"The supplied paper is blank. Aborting.\"") - return FALSE - // Basic paper - if(istype(paper_copy, /obj/item/paper)) - do_copy_loop(CALLBACK(src, PROC_REF(make_paper_copy)), usr) - return TRUE - // Devil contract paper. - if(istype(paper_copy, /obj/item/paper/contract/employment)) - do_copy_loop(CALLBACK(src, PROC_REF(make_devil_paper_copy)), usr) - return TRUE - // Copying photo. - if(photo_copy) - do_copy_loop(CALLBACK(src, PROC_REF(make_photo_copy)), usr) - return TRUE - // Copying Documents. - if(document_copy) - do_copy_loop(CALLBACK(src, PROC_REF(make_document_copy)), usr) - return TRUE - // ASS COPY. By Miauw - if(ass) - do_copy_loop(CALLBACK(src, PROC_REF(make_ass_copy)), usr) - return TRUE - - // Remove the paper/photo/document from the photocopier. - if("remove") - if(paper_copy) - remove_photocopy(paper_copy, usr) - paper_copy = null - else if(photo_copy) - remove_photocopy(photo_copy, usr) - photo_copy = null - else if(document_copy) - remove_photocopy(document_copy, usr) - document_copy = null - else if(check_ass()) - to_chat(ass, "You feel a slight pressure on your ass.") - return TRUE - - // AI printing photos from their saved images. - if("ai_photo") - if(busy) - to_chat(usr, "[src] is currently busy copying something. Please wait until it is finished.") - return FALSE - var/mob/living/silicon/ai/tempAI = usr - if(!length(tempAI.aicamera.stored)) - to_chat(usr, "No images saved.") - return - var/datum/picture/selection = tempAI.aicamera.selectpicture(usr) - var/obj/item/photo/photo = new(loc, selection) // AI prints color photos only. - give_pixel_offset(photo) - toner_cartridge.charges -= PHOTO_TONER_USE - return TRUE - - // Switch between greyscale and color photos - if("color_mode") - if(params["mode"] in list(PHOTO_GREYSCALE, PHOTO_COLOR)) - color_mode = params["mode"] - return TRUE - - // Remove the toner cartridge from the copier. - if("remove_toner") - if(issilicon(usr) || (ishuman(usr) && !usr.put_in_hands(toner_cartridge))) - toner_cartridge.forceMove(drop_location()) - toner_cartridge = null - return TRUE - - // Set the number of copies to be printed with 1 click of the "copy" button. - if("set_copies") - num_copies = clamp(text2num(params["num_copies"]), 1, MAX_COPIES_AT_ONCE) - return TRUE - // Changes the forms displayed on Photocopier.js when you switch categories - if("choose_category") - category = params["category"] - return TRUE - // Called when you press print blank - if("print_blank") - if(busy) - to_chat(usr, "[src] is currently busy copying something. Please wait until it is finished.") - return FALSE - if(toner_cartridge.charges - PAPER_TONER_USE < 0) - to_chat(usr, "There is not enough toner in [src] to print the form, please replace the cartridge.") - return FALSE - do_copy_loop(CALLBACK(src, PROC_REF(make_blank_print)), usr) - var/obj/item/paper/printblank = new /obj/item/paper (loc) - var/printname = params["name"] - var/list/printinfo - for(var/infoline as anything in params["info"]) - printinfo += infoline - printblank.name = printname - printblank.info = printinfo - return printblank -/** - * Determines if the photocopier has enough toner to create `num_copies` amount of copies of the currently inserted item. - */ -/obj/machinery/photocopier/proc/has_enough_toner() - if(paper_copy) - return toner_cartridge.charges >= (PAPER_TONER_USE * num_copies) - else if(document_copy) - return toner_cartridge.charges >= (DOCUMENT_TONER_USE * num_copies) - else if(photo_copy) - return toner_cartridge.charges >= (PHOTO_TONER_USE * num_copies) - else if(ass) - return toner_cartridge.charges >= (ASS_TONER_USE * num_copies) - return FALSE - -/** - * Will invoke the passed in `copy_cb` callback in 1 second intervals, and charge the user 5 credits for each copy made. - * - * Arguments: - * * copy_cb - a callback for which proc to call. Should only be one of the `make_x_copy()` procs, such as `make_paper_copy()`. - * * user - the mob who clicked copy. - */ -/obj/machinery/photocopier/proc/do_copy_loop(datum/callback/copy_cb, mob/user) - busy = TRUE - var/i - for(i in 1 to num_copies) - addtimer(copy_cb, i SECONDS) - addtimer(CALLBACK(src, PROC_REF(reset_busy)), i SECONDS) - -/** - * Sets busy to `FALSE`. Created as a proc so it can be used in callbacks. - */ -/obj/machinery/photocopier/proc/reset_busy() - busy = FALSE - -/** - * Gives items a random x and y pixel offset, between -10 and 10 for each. - * - * This is done that when someone prints multiple papers, we dont have them all appear to be stacked in the same exact location. - * - * Arguments: - * * copied_item - The paper, document, or photo that was just spawned on top of the printer. - */ -/obj/machinery/photocopier/proc/give_pixel_offset(obj/item/copied_item) - copied_item.pixel_x = rand(-10, 10) - copied_item.pixel_y = rand(-10, 10) - -/** - * Handles the copying of devil contract paper. Transfers all the text, stamps and so on from the old paper, to the copy. - * - * Checks first if `paper_copy` exists. Since this proc is called from a timer, it's possible that it was removed. - * Does not check if it has enough toner because devil contracts cost no toner to print. - */ -/obj/machinery/photocopier/proc/make_devil_paper_copy() - if(!paper_copy) - return - var/obj/item/paper/contract/employment/E = paper_copy - var/obj/item/paper/contract/employment/C = new(loc, E.target.current) - give_pixel_offset(C) - -/** - * Handles the copying of paper. Transfers all the text, stamps and so on from the old paper, to the copy. - * - * Checks first if `paper_copy` exists. Since this proc is called from a timer, it's possible that it was removed. - */ -/obj/machinery/photocopier/proc/make_paper_copy() - if(!paper_copy) - return - var/obj/item/paper/copied_paper = new(loc) - give_pixel_offset(copied_paper) - if(toner_cartridge.charges > 10) // Lots of toner, make it dark. - copied_paper.info = "" - else // No toner? shitty copies for you! - copied_paper.info = "" - - var/copied_info = paper_copy.info - copied_info = replacetext(copied_info, "" - copied_paper.name = paper_copy.name - copied_paper.update_icon() - copied_paper.stamps = paper_copy.stamps - if(paper_copy.stamped) - copied_paper.stamped = paper_copy.stamped.Copy() - copied_paper.copy_overlays(paper_copy, TRUE) - toner_cartridge.charges -= PAPER_TONER_USE - -/** - * Handles the copying of photos, which can be printed in either color or greyscale. - * - * Checks first if `photo_copy` exists. Since this proc is called from a timer, it's possible that it was removed. - */ -/obj/machinery/photocopier/proc/make_photo_copy() - if(!photo_copy) - return - var/obj/item/photo/copied_pic = new(loc, photo_copy.picture.Copy(color_mode == PHOTO_GREYSCALE ? TRUE : FALSE)) - give_pixel_offset(copied_pic) - toner_cartridge.charges -= PHOTO_TONER_USE - -/** - * Handles the copying of documents. - * - * Checks first if `document_copy` exists. Since this proc is called from a timer, it's possible that it was removed. - */ -/obj/machinery/photocopier/proc/make_document_copy() - if(!document_copy) - return - var/obj/item/documents/photocopy/copied_doc = new(loc, document_copy) - give_pixel_offset(copied_doc) - toner_cartridge.charges -= DOCUMENT_TONER_USE - -/** - * The procedure is called when printing a blank to write off toner consumption. - */ -/obj/machinery/photocopier/proc/make_blank_print() - toner_cartridge.charges -= PAPER_TONER_USE - -/** - * Handles the copying of an ass photo. - * - * Calls `check_ass()` first to make sure that `ass` exists, among other conditions. Since this proc is called from a timer, it's possible that it was removed. - * Additionally checks that the mob has their clothes off. - */ -/obj/machinery/photocopier/proc/make_ass_copy() - if(!check_ass()) - return - if(ishuman(ass) && (ass.get_item_by_slot(ITEM_SLOT_ICLOTHING) || ass.get_item_by_slot(ITEM_SLOT_OCLOTHING))) - to_chat(usr, "You feel kind of silly, copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "[ass.p_their()]"] clothes on." ) - return - - var/icon/temp_img - if(ishuman(ass)) - var/mob/living/carbon/human/H = ass - var/datum/species/spec = H.dna.species - if(spec.ass_image) - temp_img = icon(spec.ass_image) - else - temp_img = icon(H.dna.features["body_model"] == FEMALE ? 'icons/ass/assfemale.png' : 'icons/ass/assmale.png') - else if(isalienadult(ass) || istype(ass, /mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro. - temp_img = icon('icons/ass/assalien.png') - else if(issilicon(ass)) - temp_img = icon('icons/ass/assmachine.png') - else if(isdrone(ass)) //Drones are hot - temp_img = icon('icons/ass/assdrone.png') - - var/obj/item/photo/copied_ass = new /obj/item/photo(loc) - var/datum/picture/toEmbed = new(name = "[ass]'s Ass", desc = "You see [ass]'s ass on the photo.", image = temp_img) - give_pixel_offset(copied_ass) - toEmbed.psize_x = 128 - toEmbed.psize_y = 128 - copied_ass.set_picture(toEmbed, TRUE, TRUE) - toner_cartridge.charges -= ASS_TONER_USE - -/** - * Inserts the item into the copier. Called in `attackby()` after a human mob clicked on the copier with a paper, photo, or document. - * - * Arugments: - * * object - the object that got inserted. - * * user - the mob that inserted the object. - */ -/obj/machinery/photocopier/proc/do_insertion(obj/item/object, mob/user) - object.forceMove(src) - to_chat(user, "You insert [object] into [src].") - flick("photocopier1", src) - -/** - * Called when someone hits the "remove item" button on the copier UI. - * - * If the user is a silicon, it drops the object at the location of the copier. If the user is not a silicon, it tries to put the object in their hands first. - * Sets `busy` to `FALSE` because if the inserted item is removed, the copier should halt copying. - * - * Arguments: - * * object - the item we're trying to remove. - * * user - the user removing the item. - */ -/obj/machinery/photocopier/proc/remove_photocopy(obj/item/object, mob/user) - if(!issilicon(user)) //surprised this check didn't exist before, putting stuff in AI's hand is bad - object.forceMove(user.loc) - user.put_in_hands(object) - else - object.forceMove(drop_location()) - to_chat(user, "You take [object] out of [src]. [busy ? "The [src] comes to a halt." : ""]") - -/obj/machinery/photocopier/attackby(obj/item/O, mob/user, params) - if(default_unfasten_wrench(user, O)) - return - - else if(istype(O, /obj/item/paper)) - if(copier_empty()) - if(istype(O, /obj/item/paper/contract/infernal)) - to_chat(user, "[src] smokes, smelling of brimstone!") - resistance_flags |= FLAMMABLE - fire_act() - else - if(!user.temporarilyRemoveItemFromInventory(O)) - return - paper_copy = O - do_insertion(O, user) - else - to_chat(user, "There is already something in [src]!") - - else if(istype(O, /obj/item/photo)) - if(copier_empty()) - if(!user.temporarilyRemoveItemFromInventory(O)) - return - photo_copy = O - do_insertion(O, user) - else - to_chat(user, "There is already something in [src]!") - - else if(istype(O, /obj/item/documents)) - if(copier_empty()) - if(!user.temporarilyRemoveItemFromInventory(O)) - return - document_copy = O - do_insertion(O, user) - else - to_chat(user, "There is already something in [src]!") - - else if(istype(O, /obj/item/toner)) - if(toner_cartridge) - to_chat(user, "[src] already has a toner cartridge inserted. Remove that one first.") - return - O.forceMove(src) - toner_cartridge = O - to_chat(user, "You insert [O] into [src].") - - else if(istype(O, /obj/item/areaeditor/blueprints)) - to_chat(user, "The Blueprint is too large to put into the copier. You need to find something else to record the document.") - else - return ..() - -/obj/machinery/photocopier/obj_break(damage_flag) - . = ..() - if(. && toner_cartridge.charges) - new /obj/effect/decal/cleanable/oil(get_turf(src)) - toner_cartridge.charges = 0 - -/obj/machinery/photocopier/MouseDrop_T(mob/target, mob/user) - check_ass() //Just to make sure that you can re-drag somebody onto it after they moved off. - if(!istype(target) || target.anchored || target.buckled || !Adjacent(target) || !user.canUseTopic(src, BE_CLOSE) || target == ass || copier_blocked()) - return - add_fingerprint(user) - if(target == user) - user.visible_message("[user] starts climbing onto the photocopier!", "You start climbing onto the photocopier...") - else - user.visible_message("[user] starts putting [target] onto the photocopier!", "You start putting [target] onto the photocopier...") - - if(do_after(user, 20, target = src)) - if(!target || QDELETED(target) || QDELETED(src) || !Adjacent(target)) //check if the photocopier/target still exists. - return - - if(target == user) - user.visible_message("[user] climbs onto the photocopier!", "You climb onto the photocopier.") - else - user.visible_message("[user] puts [target] onto the photocopier!", "You put [target] onto the photocopier.") - - target.forceMove(drop_location()) - ass = target - - if(photo_copy) - photo_copy.forceMove(drop_location()) - visible_message("[photo_copy] is shoved out of the way by [ass]!") - photo_copy = null - - else if(paper_copy) - paper_copy.forceMove(drop_location()) - visible_message("[paper_copy] is shoved out of the way by [ass]!") - paper_copy = null - - else if(document_copy) - document_copy.forceMove(drop_location()) - visible_message("[document_copy] is shoved out of the way by [ass]!") - document_copy = null - -/obj/machinery/photocopier/Exited(atom/movable/AM, atom/newloc) - check_ass() // There was potentially a person sitting on the copier, check if they're still there. - return ..() - -/** - * Checks the living mob `ass` exists and its location is the same as the photocopier. - * - * Returns FALSE if `ass` doesn't exist or is not at the copier's location. Returns TRUE otherwise. - */ -/obj/machinery/photocopier/proc/check_ass() //I'm not sure wether I made this proc because it's good form or because of the name. - if(!ass) - return FALSE - if(ass.loc != loc) - ass = null - return FALSE - return TRUE - -/** - * Checks if the copier is deleted, or has something dense at its location. Called in `MouseDrop_T()` - */ -/obj/machinery/photocopier/proc/copier_blocked() - if(QDELETED(src)) - return - if(loc.density) - return TRUE - for(var/atom/movable/AM in loc) - if(AM == src) - continue - if(AM.density) - return TRUE - return FALSE - -/** - * Checks if there is an item inserted into the copier or a mob sitting on top of it. - * - * Return `FALSE` is the copier has something inside of it. Returns `TRUE` if it doesn't. - */ -/obj/machinery/photocopier/proc/copier_empty() - if(paper_copy || photo_copy || document_copy || check_ass()) - return FALSE - else - return TRUE - -/* - * Toner cartridge - */ -/obj/item/toner - name = "toner cartridge" - icon = 'icons/obj/device.dmi' - icon_state = "tonercartridge" - grind_results = list(/datum/reagent/iodine = 40, /datum/reagent/iron = 10) - var/charges = 5 - var/max_charges = 5 - -/obj/item/toner/large - name = "large toner cartridge" - grind_results = list(/datum/reagent/iodine = 90, /datum/reagent/iron = 10) - charges = 15 - max_charges = 15 - -/obj/item/toner/extreme - name = "extremely large toner cartridge" - desc = "Why would ANYONE need THIS MUCH TONER?" - charges = 200 - max_charges = 200 - -#undef PHOTO_GREYSCALE -#undef PHOTO_COLOR -#undef PAPER_TONER_USE -#undef PHOTO_TONER_USE -#undef DOCUMENT_TONER_USE -#undef ASS_TONER_USE -#undef MAX_COPIES_AT_ONCE - diff --git a/nsv13/code/modules/power/reactor/rbmk.dm b/nsv13/code/modules/power/reactor/rbmk.dm index 1f17e90509c..ddd020636f9 100644 --- a/nsv13/code/modules/power/reactor/rbmk.dm +++ b/nsv13/code/modules/power/reactor/rbmk.dm @@ -715,23 +715,15 @@ The reactor CHEWS through moderator. It does not do this slowly. Be very careful var/datum/radio_frequency/radio_connection var/on = FALSE -/obj/machinery/computer/reactor/pump/AltClick(mob/user) +/obj/machinery/computer/reactor/pump/interact(mob/living/user) . = ..() - var/newPressure = input(user, "Set new output pressure (kPa)", "Remote pump control", null) as num + var/newPressure = input(user, "Set new output pressure (kPa)", "Remote pump control", null) as null|num if(!newPressure) return newPressure = clamp(newPressure, 0, MAX_OUTPUT_PRESSURE) //Number sanitization is not handled in the pumps themselves, only during their ui_act which this doesn't use. signal(on, newPressure) -/obj/machinery/computer/reactor/attack_robot(mob/user) - . = ..() - attack_hand(user) - -/obj/machinery/computer/reactor/attack_ai(mob/user) - . = ..() - attack_hand(user) - -/obj/machinery/computer/reactor/pump/attack_hand(mob/living/user) +/obj/machinery/computer/reactor/pump/AltClick(mob/user) . = ..() if(!is_operational) return FALSE @@ -806,6 +798,7 @@ The reactor CHEWS through moderator. It does not do this slowly. Be very careful network_destination = "rbmk monitoring system" size = 2 tgui_id = "NtosRbmkStats" + program_icon = "radiation" var/active = TRUE //Easy process throttle var/next_stat_interval = 0 var/list/psiData = list() @@ -851,7 +844,7 @@ The reactor CHEWS through moderator. It does not do this slowly. Be very careful if(tempOutputdata.len > 100) //Only lets you track over a certain timeframe. tempOutputdata.Cut(1, 2) -/datum/computer_file/program/nuclear_monitor/run_program(mob/living/user) +/datum/computer_file/program/nuclear_monitor/on_start(mob/living/user) . = ..(user) //No reactor? Go find one then. if(!reactor) @@ -866,7 +859,7 @@ The reactor CHEWS through moderator. It does not do this slowly. Be very careful ..() /datum/computer_file/program/nuclear_monitor/ui_data() - var/list/data = get_header_data() + var/list/data = list() data["powerData"] = powerData data["psiData"] = psiData data["tempInputData"] = tempInputData diff --git a/nsv13/code/modules/power/stormdrive.dm b/nsv13/code/modules/power/stormdrive.dm index 92bb1d2664b..be8a18393af 100644 --- a/nsv13/code/modules/power/stormdrive.dm +++ b/nsv13/code/modules/power/stormdrive.dm @@ -586,7 +586,7 @@ Control Rods var/datum/gas_mixture/air1 = airs[1] var/nucleium_power_reduction = 0 - var/fuel_check = ((air1.get_moles(GAS_PLASMA) + air1.get_moles(GAS_CONSTRICTED_PLASMA) + air1.get_moles(GAS_TRITIUM)) / air1.total_moles()) * 100 + var/fuel_check = air1.total_moles() <= 0 ? 0 : ((air1.get_moles(GAS_PLASMA) + air1.get_moles(GAS_CONSTRICTED_PLASMA) + air1.get_moles(GAS_TRITIUM)) / air1.total_moles()) * 100 if(air1.total_moles() >= reaction_rate && fuel_check >= 12.5) //1:8 ratio var/datum/gas_mixture/reaction_chamber_gases = air1.remove(reaction_rate) @@ -1416,128 +1416,11 @@ Control Rods departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING /datum/techweb_node/stormdrive_reactor_control - id = "sd_r_c_c" - display_name = "Seegson RBMK RCC" - description = "Seegson's latest and greatest (within your budget range) reactor control design!" + id = "sd_rcc+cons" + display_name = "Seegson Storm Drive Machinery" + description = "Seegson's latest and greatest (within your budget range) reactor control and plasma constriction designs!" prereq_ids = list("adv_engi", "adv_power") - design_ids = list("sd_r_c_c") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) - export_price = 5000 - -////// Magnetic Constrictors////// - -/obj/machinery/atmospherics/components/binary/magnetic_constrictor //This heats the plasma up to acceptable levels for use in the reactor. - name = "magnetic constrictor" - desc = "A large magnet which is capable of pressurizing plasma into a more energetic state. It is able to self-regulate its plasma input valve, as long as plasma is supplied to it." - icon = 'nsv13/icons/obj/machinery/reactor_parts.dmi' - icon_state = "constrictor" - density = TRUE - circuit = /obj/item/circuitboard/machine/magnetic_constrictor - layer = OBJ_LAYER - pipe_flags = PIPING_ONE_PER_TURF - active_power_usage = 200 - var/constriction_rate = 0 //SSAtmos is 4x faster than SSMachines aka the reactor - var/max_output_pressure = 0 - -/obj/machinery/atmospherics/components/binary/magnetic_constrictor/on_construction() - var/obj/item/circuitboard/machine/thermomachine/board = circuit - if(board) - piping_layer = board.pipe_layer - ..(dir, piping_layer) - -/obj/machinery/atmospherics/components/binary/magnetic_constrictor/RefreshParts() - var/A - for(var/obj/item/stock_parts/capacitor/C in component_parts) - A += C.rating - constriction_rate = 0.9 + (0.1 * A) - var/B - for(var/obj/item/stock_parts/manipulator/M in component_parts) - B += M.rating - max_output_pressure = 100 + (100 * B) - -/obj/machinery/atmospherics/components/binary/magnetic_constrictor/attack_hand(mob/user) - . = ..() - if(panel_open) - to_chat(user, "You must turn close the panel on [src] before turning it on.") - return - to_chat(user, "You press [src]'s power button.") - on = !on - update_icon() - -/obj/machinery/atmospherics/components/binary/magnetic_constrictor/ComponentInitialize() - . = ..() - AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ) - -/obj/machinery/atmospherics/components/binary/magnetic_constrictor/process_atmos() - ..() - if(!on) - return - var/datum/gas_mixture/air1 = airs[1] - var/datum/gas_mixture/air2 = airs[2] - var/output_starting_pressure = air2.return_pressure() - if(output_starting_pressure >= max_output_pressure) - return - var/plasma_moles = air1.get_moles(GAS_PLASMA) - var/plasma_transfer_moles = min(constriction_rate, plasma_moles) - air2.adjust_moles(GAS_CONSTRICTED_PLASMA, plasma_transfer_moles) - air2.set_temperature(air1.return_temperature()) - air1.adjust_moles(GAS_PLASMA, -plasma_transfer_moles) - update_parents() - -/obj/machinery/atmospherics/components/binary/magnetic_constrictor/crowbar_act(mob/user, obj/item/I) - default_deconstruction_crowbar(I) - return TRUE - -/obj/machinery/atmospherics/components/binary/magnetic_constrictor/screwdriver_act(mob/user, obj/item/I) - if(..()) - return TRUE - if(on) - to_chat(user, "You must turn off [src] before opening the panel.") - return FALSE - panel_open = !panel_open - I.play_tool_sound(src) - to_chat(user, "You [panel_open?"open":"close"] the panel on [src].") - update_icon() - return TRUE - -/obj/machinery/atmospherics/components/binary/magnetic_constrictor/update_icon() - cut_overlays() - if(panel_open) - icon_state = "constrictor_screw" - else if(on) - icon_state = "constrictor_active" - else - icon_state = "constrictor" - -/obj/item/circuitboard/machine/magnetic_constrictor - name = "Magnetic Constrictor (Machine Board)" - build_path = /obj/machinery/atmospherics/components/binary/magnetic_constrictor - var/pipe_layer = PIPING_LAYER_DEFAULT - req_components = list( - /obj/item/stock_parts/capacitor = 1, - /obj/item/stock_parts/manipulator = 1) - -/obj/item/circuitboard/machine/magnetic_constrictor/attackby(obj/item/I, mob/user, params) - if(I.tool_behaviour == TOOL_MULTITOOL) - pipe_layer = (pipe_layer >= PIPING_LAYER_MAX) ? PIPING_LAYER_MIN : (pipe_layer + 1) - to_chat(user, "You change the circuitboard to layer [pipe_layer].") - return - . = ..() - -/datum/design/board/magnetic_constrictor - name = "Machine Design (Magnetic Constrictor Board)" - desc = "The circuit board for a Magnetic Constrictor." - id = "mag_cons" - build_path = /obj/item/circuitboard/machine/magnetic_constrictor - category = list("Engineering Machinery") - departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING - -/datum/techweb_node/magnetic_constrictor - id = "mag_cons" - display_name = "Magnetic Constriction of Plasma" - description = "Beating plasma into submission - a guide." - prereq_ids = list("adv_engi", "adv_power") - design_ids = list("mag_cons") + design_ids = list("sd_r_c_c", "mag_cons") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -1865,6 +1748,7 @@ Control Rods network_destination = "storm drive monitoring system" size = 2 tgui_id = "NtosStormdriveMonitor" + program_icon = "atom" var/active = TRUE //Easy process throttle var/obj/machinery/atmospherics/components/binary/stormdrive_reactor/reactor //Our reactor. @@ -1894,7 +1778,7 @@ Control Rods if(istype(computer)) computer.update_icon() -/datum/computer_file/program/stormdrive_monitor/run_program(mob/living/user) +/datum/computer_file/program/stormdrive_monitor/on_start(mob/living/user) . = ..(user) //No reactor? Go find one then. if(!reactor) @@ -1909,7 +1793,7 @@ Control Rods ..() /datum/computer_file/program/stormdrive_monitor/ui_data() - var/list/data = get_header_data() + var/list/data = list() data["heat"] = reactor.heat data["rod_integrity"] = reactor.control_rod_integrity data["control_rod_percent"] = reactor.control_rod_percent diff --git a/nsv13/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/nsv13/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 36b469184aa..075d123ece5 100644 --- a/nsv13/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/nsv13/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -1,4 +1,4 @@ -/datum/reagent/drug/highjack //NSV13 +/datum/reagent/drug/highjack name = "Highjack" description = "Repairs brain damage in synthetics." color = "#271509" @@ -16,5 +16,13 @@ /datum/reagent/drug/highjack/overdose_process(mob/living/M) var/obj/item/bodypart/head/head = M.get_bodypart("head") if(prob(30)) - to_chat(M, "You feel really lightheaded...") - head.dismember() + if(head) + to_chat(M, "You feel really lightheaded...") + head.dismember() + else + to_chat(M,"You can feel oil leaking from your headless neck.") + //Because the Bleed() proc doesn't work for species without blood datums, just make oil like silicons + var/turf/T = get_turf(src) + var/obj/effect/decal/cleanable/oil/B = locate() in T.contents + if(!B) + B = new(T) diff --git a/nsv13/code/modules/reagents/chemistry/reagents/other_reagents.dm b/nsv13/code/modules/reagents/chemistry/reagents/other_reagents.dm index c2e1ab381f0..49e76832c83 100644 --- a/nsv13/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/nsv13/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -27,6 +27,10 @@ M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.AdjustSleeping(-40, FALSE) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "navy_coffee", /datum/mood_event/drink_navy_coffee) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "navy_coffee", /datum/mood_event/drink_navy_coffee, M.faction) ..() . = 1 + +/obj/item/reagent_containers/food/drinks/coffee/navy_coffee + name = "naval coffee" + list_reagents = list(/datum/reagent/consumable/navy_coffee = 30) diff --git a/nsv13/code/modules/recycling/replicatorDS.dm b/nsv13/code/modules/recycling/replicatorDS.dm index 9b138f8db0f..e8749e170a7 100644 --- a/nsv13/code/modules/recycling/replicatorDS.dm +++ b/nsv13/code/modules/recycling/replicatorDS.dm @@ -341,8 +341,8 @@ menu = design menu = lowertext(menu) - addtimer(CALLBACK(src, .proc/replicate, menu, temperature, user), speed_mult) - addtimer(CALLBACK(src, .proc/set_ready, TRUE), speed_mult) + addtimer(CALLBACK(src, PROC_REF(replicate), menu, temperature, user), speed_mult) + addtimer(CALLBACK(src, PROC_REF(set_ready), TRUE), speed_mult) /obj/machinery/replicator/proc/set_ready() icon_state = "replicator-on" diff --git a/nsv13/code/modules/research/astrometrics.dm b/nsv13/code/modules/research/astrometrics.dm index 04f751e30d0..567d3e5d034 100644 --- a/nsv13/code/modules/research/astrometrics.dm +++ b/nsv13/code/modules/research/astrometrics.dm @@ -19,7 +19,6 @@ you build. var/scan_goal_system = 15 SECONDS var/scan_goal_anomaly = 2 MINUTES var/datum/star_system/scan_target = null - var/list/scanned = list() var/datum/techweb/linked_techweb = null var/obj/item/radio/radio //For engineering alerts. var/radio_key = /obj/item/encryptionkey/headset_sci @@ -64,7 +63,7 @@ Clean override of the navigation computer to provide scan functionality. var/datum/star_system/curr = info["current_system"] data["star_dist"] = curr.dist(selected_system) data["anomalies"] = selected_system.get_info() - if(LAZYFIND(scanned, selected_system.name)) //If we've scanned this one before, get me the list of its anomalies. + if(is_visited(selected_system)) //If we've scanned this one before, get me the list of its anomalies. data["scanned"] = TRUE if ( data["scanned"] ) data["system_type"] = syst ? syst[ "label" ] : "ERROR" //the list /should/ always be initialized when players get to press the button, but alas never trust it. @@ -81,7 +80,7 @@ Clean override of the navigation computer to provide scan functionality. return current_system && system && current_system.dist(system) <= max_range /obj/machinery/computer/ship/navigation/astrometrics/is_visited(datum/star_system/system) - return LAZYFIND(scanned, system.name) + return LAZYFIND(linked.scanned, system) /obj/machinery/computer/ship/navigation/astrometrics/ui_act(action, params, datum/tgui/ui) . = ..() @@ -128,19 +127,24 @@ Clean override of the navigation computer to provide scan functionality. if(scan_target) scan_progress += delta_time SECONDS if(scan_progress >= scan_goal) - say("Scan of [scan_target] complete!") - playsound(src, 'nsv13/sound/voice/scanning_complete.wav', 100, FALSE) - radio.talk_into(src, "Scan of [scan_target] complete!", channel) - scanned += scan_target.name - if(istype(scan_target, /obj/effect/overmap_anomaly)) - var/obj/effect/overmap_anomaly/OA = scan_target - if(OA.research_points > 0 && !OA.scanned) //In case someone else did a scan on it already. - var/reward = OA.research_points * 0.5 - OA.research_points -= reward - linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DISCOVERY, reward) - OA.scanned = TRUE - scan_target = null - scan_progress = 0 + finish_scan() + +/obj/machinery/computer/ship/navigation/astrometrics/proc/finish_scan() + say("Scan of [scan_target] complete!") + playsound(src, 'nsv13/sound/voice/scanning_complete.wav', 100, FALSE) + radio.talk_into(src, "Scan of [scan_target] complete!", channel) + linked.scanned += scan_target + SEND_SIGNAL(linked, COMSIG_ANOMALY_SCANNED) + if(istype(scan_target, /obj/effect/overmap_anomaly)) + var/obj/effect/overmap_anomaly/OA = scan_target + if(OA.research_points > 0 && !OA.scanned) //In case someone else did a scan on it already. + var/reward = OA.research_points * 0.5 + OA.research_points -= reward + linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DISCOVERY, reward) + OA.scanned = TRUE + scan_target = null + scan_progress = 0 + /obj/machinery/computer/ship/navigation/astrometrics/Destroy() QDEL_NULL(radio) diff --git a/nsv13/code/modules/research/designs/mechfabricator_designs.dm b/nsv13/code/modules/research/designs/mechfabricator_designs.dm index dc508ca4dce..9cfa4e614dc 100644 --- a/nsv13/code/modules/research/designs/mechfabricator_designs.dm +++ b/nsv13/code/modules/research/designs/mechfabricator_designs.dm @@ -34,3 +34,12 @@ materials = list(/datum/material/iron=25000, /datum/material/glass=5000) construction_time = 200 category = list("Exosuit Equipment") + +/datum/design/borg_upgrade_muni_app + name = "Cyborg Upgrade (Munitions Manipulator)" + id = "borg_upgrade_muniapp" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/munitions + materials = list(/datum/material/iron = 2000, /datum/material/titanium = 500) + construction_time = 120 + category = list("Cyborg Upgrade Modules") diff --git a/nsv13/code/modules/research/designs/nsv_circuitboard_designs.dm b/nsv13/code/modules/research/designs/nsv_circuitboard_designs.dm index 8fe4b72c03a..fe3d9edd61b 100644 --- a/nsv13/code/modules/research/designs/nsv_circuitboard_designs.dm +++ b/nsv13/code/modules/research/designs/nsv_circuitboard_designs.dm @@ -121,3 +121,12 @@ build_path = /obj/item/circuitboard/machine/coffeemaker category = list("Misc. Machinery") departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/board/navbeacon + name = "Machine Design (Bot Navigational Beacon)" + desc = "The circuit board for a beacon that aids bot navigation." + id = "botnavbeacon" + build_type = IMPRINTER + build_path = /obj/item/circuitboard/machine/navbeacon + category = list ("Research Machinery") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING diff --git a/nsv13/code/modules/research/designs/smelting_designs.dm b/nsv13/code/modules/research/designs/smelting_designs.dm index 713590f5448..c998ffb364f 100644 --- a/nsv13/code/modules/research/designs/smelting_designs.dm +++ b/nsv13/code/modules/research/designs/smelting_designs.dm @@ -12,7 +12,7 @@ name = "Durasteel alloy" id = "durasteel" build_type = SMELTER | PROTOLATHE - materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT, /datum/material/silver = MINERAL_MATERIAL_AMOUNT) + materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT*0.2, /datum/material/silver = MINERAL_MATERIAL_AMOUNT*0.15, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT*0.65) build_path = /obj/item/stack/sheet/durasteel category = list("initial", "Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING @@ -22,7 +22,7 @@ name = "Duranium alloy" id = "duranium" build_type = SMELTER | PROTOLATHE - materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT, /datum/material/plasma = MINERAL_MATERIAL_AMOUNT/2, /datum/material/silver = MINERAL_MATERIAL_AMOUNT/2) + materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT*0.175, /datum/material/plasma = MINERAL_MATERIAL_AMOUNT*0.05, /datum/material/silver = MINERAL_MATERIAL_AMOUNT*0.15, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT*0.625) build_path = /obj/item/stack/sheet/duranium category = list("initial", "Stock Parts") departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING diff --git a/nsv13/code/modules/research/techweb/all_nsv_nodes.dm b/nsv13/code/modules/research/techweb/all_nsv_nodes.dm index 635be9b14ae..af5aabeaa06 100644 --- a/nsv13/code/modules/research/techweb/all_nsv_nodes.dm +++ b/nsv13/code/modules/research/techweb/all_nsv_nodes.dm @@ -6,6 +6,7 @@ design_ids = list("shield_fan", "shield_capacitor", "shield_modulator", "shield_interface", "shield_frame") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000) export_price = 5000 + tech_tier = 5 hidden = TRUE /datum/techweb_node/ship_circuits @@ -16,6 +17,7 @@ design_ids = list("helm_circuit", "navigation_console_circuit", "tactical_comp_circuit", "astrometrics_console", "dradis_console", "cargo_dradis_console") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 1000 + tech_tier = 1 //Munitions tech /datum/techweb_node/maa_circuits @@ -26,6 +28,7 @@ design_ids = list("fighter_computer_circuit", "ordnance_comp_circuit", "fighter_launcher_circuit", "ammo_sorter_computer", "ammo_sorter", "munitions_computer_circuit") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 1000 + tech_tier = 1 /datum/techweb_node/basic_torpedo_components id = "basic_torpedo_components" @@ -35,6 +38,7 @@ design_ids = list("warhead", "missile_warhead", "decoy_warhead", "freight_warhead", "guidance_system", "propulsion_system", "iff_card") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500) export_price = 2000 + tech_tier = 3 /datum/techweb_node/advanced_torpedo_components id = "advanced_torpedo_components" @@ -44,6 +48,7 @@ design_ids = list("bb_warhead", "hellfire_warhead", "probe_warhead") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 7500 + tech_tier = 4 /datum/techweb_node/prototype_disruption_warheads id = "prototype_disruption_warheads" @@ -53,25 +58,27 @@ design_ids = list("proto_disruption_warhead") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 6500) export_price = 7000 - tech_tier = 3 + tech_tier = 4 /datum/techweb_node/advanced_ballistics id = "adv_ballistics" display_name = "Advanced Ballistics" description = "More guns means better guns... Right?" prereq_ids = list("ballistic_weapons") - design_ids = list("naval_shell", "powder_bag", "gauss_rack_upgrade", "broadside_casing", "broadside_load", "broadside_packer", "plasma_core") + design_ids = list("naval_shell", "powder_bag", "naval_artillery_comp", "artillery_loader", "powder_loader", "payload_gate", "broadside_casing", "broadside_load", "broadside_packer", "plasma_core") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 5000 + tech_tier = 3 /datum/techweb_node/macro_ballistics id = "macro_ballistics" display_name = "Macro-Ballistics" description = "Asking important questions, like what if we made even bigger guns?" prereq_ids = list("adv_ballistics", "adv_plasma") - design_ids = list("naval_shell_ap", "plasma_accelerant", "deck_gun_autorepair", "deck_gun_autoelevator") + design_ids = list("naval_shell_ap", "plasma_accelerant", "deck_gun_autorepair", "deck_gun_autoelevator", "gauss_rack_upgrade") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500) export_price = 10000 + tech_tier = 4 /datum/techweb_node/missile_automation id = "missile_automation" @@ -81,6 +88,7 @@ design_ids = list("missilebuilder", "slowconveyor", "missilewelder", "missilescrewer", "missilewirer", "missileassembler") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 + tech_tier = 3 //Fighter tech /datum/techweb_node/countermeasure_charge @@ -100,6 +108,7 @@ prereq_ids = list("base") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000) export_price = 1000 + tech_tier = 1 /datum/techweb_node/fighter_tier1 id = "fighter_tier1" @@ -109,6 +118,7 @@ prereq_ids = list("fighter_fabrication") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 1000 + tech_tier = 2 /datum/techweb_node/fighter_tier2 id = "fighter_tier2" @@ -118,6 +128,7 @@ prereq_ids = list("fighter_tier1", "adv_engi") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 4000 + tech_tier = 3 /datum/techweb_node/fighter_tier3 id = "fighter_tier3" @@ -127,6 +138,7 @@ prereq_ids = list("fighter_tier2", "bluespace_travel", "bluespace_power") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500) export_price = 7500 + tech_tier = 4 /datum/techweb_node/fighter_guns_tier1 id = "fightergun1" @@ -136,6 +148,7 @@ prereq_ids = list("fighter_tier1", "weaponry") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 1000 + tech_tier = 2 /datum/techweb_node/fighter_guns_tier2 id = "fightergun2" @@ -145,6 +158,7 @@ prereq_ids = list("fightergun1", "ballistic_weapons") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 2500 + tech_tier = 3 /datum/techweb_node/fighter_guns_tier3 id = "fightergun3" @@ -154,6 +168,7 @@ prereq_ids = list("fightergun2", "adv_weaponry") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 5000 + tech_tier = 4 /datum/techweb_node/fighter_mining id = "fightermining" @@ -163,6 +178,7 @@ prereq_ids = list("fighter_tier1", "adv_mining", "adv_plasma") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500) export_price = 1000 + tech_tier = 3 /datum/techweb_node/autoinjector id = "autoinjector" @@ -172,15 +188,17 @@ prereq_ids = list("adv_biotech","adv_surgery") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500) export_price = 1500 + tech_tier = 4 /datum/techweb_node/xenoorgan_biotech - id = "xenoorgan_bio" - display_name = "Xeno-organ Biology" - description = "Plasmaman, Ethereals, Lizardpeople... What makes our non-human crewmembers tick?" - prereq_ids = list("adv_biotech") - design_ids = list("limbdesign_felinid", "limbdesign_lizard", "limbdesign_plasmaman", "limbdesign_ethereal", "limbdesign_moth", "limbdesign_apid") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 6500) - export_price = 9000 + id = "xenoorgan_bio" + display_name = "Xeno-organ Biology" + description = "Plasmaman, Ethereals, Lizardpeople... What makes our non-human crewmembers tick?" + prereq_ids = list("adv_biotech") + design_ids = list("limbdesign_felinid", "limbdesign_lizard", "limbdesign_plasmaman", "limbdesign_ethereal", "limbdesign_moth", "limbdesign_apid") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 6500) + export_price = 9000 + tech_tier = 1 //Vehicle Hardpoint tech /datum/techweb_node/vehicle_start @@ -191,6 +209,7 @@ prereq_ids = list("engineering") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500) export_price = 1000 + tech_tier = 1 /datum/techweb_node/vehicle_utility id = "vehicle_utility" @@ -200,6 +219,7 @@ prereq_ids = list("vehicle_start") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 2000 + tech_tier = 1 /datum/techweb_node/vehicle_tier1 id = "vehicle_tier1" @@ -209,6 +229,7 @@ prereq_ids = list("vehicle_start") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 2500 + tech_tier = 1 /datum/techweb_node/vehicle_tier2 id = "vehicle_tier2" @@ -218,6 +239,7 @@ prereq_ids = list("vehicle_tier1") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3500) export_price = 3500 + tech_tier = 2 /datum/techweb_node/vehicle_tier3 id = "vehicle_tier3" @@ -227,3 +249,15 @@ prereq_ids = list("vehicle_tier2") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 5000 + tech_tier = 3 + +/// Munitions Upgrade for Engineering Borg +/datum/techweb_node/cyborg_upg_muni + id = "cyborg_upg_muni" + tech_tier = 4 + display_name = "Cyborg Upgrades: Munitions" + description = "Munition related upgrades for cyborgs." + prereq_ids = list("adv_robotics", "adv_engi" , "adv_ballistics") + design_ids = list("borg_upgrade_muniapp") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) + export_price = 5000 diff --git a/nsv13/code/modules/ship_missions/hail_computer.dm b/nsv13/code/modules/ship_missions/hail_computer.dm index bc63176dbe4..560cbd4b0ce 100644 --- a/nsv13/code/modules/ship_missions/hail_computer.dm +++ b/nsv13/code/modules/ship_missions/hail_computer.dm @@ -12,9 +12,10 @@ category = PROGRAM_CATEGORY_SUPL size = 4 tgui_id = "NtosHailLogs" + program_icon = "envelope-open" var/obj/var/obj/structure/overmap/ship //Our ship -/datum/computer_file/program/ship_hail_logger/run_program(mob/living/user) +/datum/computer_file/program/ship_hail_logger/on_start(mob/living/user) . = ..(user) ship = user.get_overmap() @@ -29,7 +30,7 @@ /datum/computer_file/program/ship_hail_logger/ui_data() - var/list/data = get_header_data() + var/list/data = list() data["ship_name"] = ship ? ship.name : "No ship detected!" data["missions"] = prep_missions() return data diff --git a/nsv13/code/modules/squads/squad_computers.dm b/nsv13/code/modules/squads/squad_computers.dm index 8b1e314d877..88200bd8457 100644 --- a/nsv13/code/modules/squads/squad_computers.dm +++ b/nsv13/code/modules/squads/squad_computers.dm @@ -135,15 +135,17 @@ program_icon_state = "ntnrc_idle" extended_desc = "A program to allow you to manage the ship's squads while on the go!" requires_ntnet = TRUE - transfer_access = ACCESS_HOP + required_access = list(ACCESS_HEADS) + transfer_access = list(ACCESS_HEADS) category = PROGRAM_CATEGORY_CREW network_destination = "squad management" size = 2 tgui_id = "NtosSquadManager" + program_icon = "users-cog" var/next_major_action = 0 /datum/computer_file/program/squad_manager/ui_data() - var/list/data = get_header_data() + var/list/data = list() var/list/squads_info = list() for(var/datum/squad/S in GLOB.squad_manager.squads) var/list/squad_info = list() diff --git a/nsv13/code/modules/squads/squad_items.dm b/nsv13/code/modules/squads/squad_items.dm index 313ce2d97c7..86b58a3d305 100644 --- a/nsv13/code/modules/squads/squad_items.dm +++ b/nsv13/code/modules/squads/squad_items.dm @@ -229,15 +229,6 @@ . = ..() apply_squad(squad) -/obj/item/storage/box/squad_lanyards - name = "Spare squad lanyards" - desc = "A box filled with lanyards for assigning personnel into squads. Repaint them using the squad management console and pass them out." - -/obj/item/storage/box/squad_lanyards/PopulateContents() - for(var/I = 0; I < 10; I++){ - new /obj/item/clothing/neck/squad(src) - } - //When initialized, if passed a squad already, apply its reskin. diff --git a/nsv13/code/modules/squads/squad_manager.dm b/nsv13/code/modules/squads/squad_manager.dm index 6ce6150a7e4..c34635a64bf 100644 --- a/nsv13/code/modules/squads/squad_manager.dm +++ b/nsv13/code/modules/squads/squad_manager.dm @@ -9,7 +9,7 @@ GLOBAL_DATUM_INIT(squad_manager, /datum/squad_manager, new) var/static/list/role_access_map = list( DC_SQUAD = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_ATMOSPHERICS), //Low staffing? Guess you better get the engine running MEDICAL_SQUAD = list(ACCESS_MEDICAL, ACCESS_SURGERY), - SECURITY_SQUAD = list(ACCESS_BRIG, ACCESS_SEC_DOORS), + SECURITY_SQUAD = list(ACCESS_BRIG, ACCESS_SEC_DOORS, ACCESS_TRANSPORT_PILOT, ACCESS_HANGAR), MUNITIONS_SUPPORT = list(ACCESS_MUNITIONS, ACCESS_MUNITIONS_STORAGE), COMBAT_AIR_PATROL = list(ACCESS_COMBAT_PILOT, ACCESS_MUNITIONS), //Hangar is typically through munitions CIC_OPS = list(ACCESS_HEADS, ACCESS_RC_ANNOUNCE), @@ -51,12 +51,14 @@ GLOBAL_DATUM_INIT(squad_manager, /datum/squad_manager, new) // Try to find a squad that's not already tasked that can do the job /datum/squad_manager/proc/assign_squad(role) - var/datum/squad/assigned = role_squad_map[role] - if(assigned && length(assigned.members)) - assigned.lowpop_retasked = TRUE - assigned.access_enabled = TRUE // They won't be much help without this - return - + var/list/assigned_list = role_squad_map[role] + if(length(assigned_list)) + for(var/datum/squad/assigned in assigned_list) + if(!istype(assigned) || !length(assigned.members)) + continue + assigned.lowpop_retasked = TRUE + assigned.access_enabled = TRUE // They won't be much help without this + return //Prefer DC squads by default. Make sure there are people in them and we haven't tasked them already var/list/possible = role_squad_map[DC_SQUAD] for(var/datum/squad/S in possible) diff --git a/nsv13/code/modules/turbolift/lazylift.dm b/nsv13/code/modules/turbolift/lazylift.dm index 18c550f494c..a0677e3eac9 100644 --- a/nsv13/code/modules/turbolift/lazylift.dm +++ b/nsv13/code/modules/turbolift/lazylift.dm @@ -38,9 +38,6 @@ That's it, ok bye! //Mappers, DON'T USE ME! Use the other one. -/area/shuttle/turbolift - ambient_buzz = 'nsv13/sound/effects/lift/elevatormusic.ogg' //Mandatory. - /obj/machinery/lazylift_button name = "Turbolift call button" desc = "A button that can call a turbolift to your location, so that you can board it. Be sure to mash it as often as physically possible." @@ -213,6 +210,7 @@ That's it, ok bye! var/wait_time = 5 SECONDS //Brief cooldown after the lift reaches its destination, to allow people from that floor to board it. var/play_voice_lines = TRUE //Do you want your elevator to sarcastically tell you that it's going up or down? Thanks to Corsaka / Skullmagic for the VA! var/open_doors_on_arrival = FALSE + var/use_music = TRUE //Default on /obj/machinery/lazylift/master/aircraft_elevator open_doors_on_arrival = TRUE @@ -276,10 +274,10 @@ That's it, ok bye! close_all_doors() //Start off by closing all the doors. platform_location.unbolt_doors(open_doors_on_arrival) //But ensure that you can board the lift at some point. - set_music() + if(use_music) + set_music() //Lets you set the elevator music for this turbolift. Used by emags to make the music ~~horrible~~ amazing - /obj/machinery/lazylift/master/proc/set_music(what) if(!what) what = pick('sound/effects/turbolift/elevatormusic.ogg','nsv13/sound/effects/lift/elevatormusic.ogg', 'nsv13/sound/effects/lift/GeorgeForse-rick.ogg', 'nsv13/sound/effects/lift/tchaikovsky.ogg') @@ -295,6 +293,7 @@ That's it, ok bye! /obj/machinery/lazylift/master/emag_act(mob/user) if(obj_flags & EMAGGED) return + use_music = TRUE set_music('nsv13/sound/effects/lift/emagged.ogg') //Wonderful music, manifique, c'est encroyable. req_access = list() obj_flags |= EMAGGED @@ -400,6 +399,7 @@ That's it, ok bye! for(var/turf/T as() in platform) T.ChangeTurf(/turf/open/floor/plasteel/elevatorshaft, list(/turf/open/openspace, /turf/open/floor/plating), CHANGETURF_INHERIT_AIR) + open_all_doors(target.z) //Special FX and stuff. /obj/machinery/lazylift/master/proc/sound_effect(list/moblist, start = FALSE) @@ -463,3 +463,19 @@ That's it, ok bye! for(var/obj/machinery/lazylift/target in decks) target.unbolt_doors() return TRUE + +/obj/machinery/lazylift/proc/open_doors(var/deck_holder) + for(var/obj/machinery/door/airlock/theDoor in doors) + theDoor.unbolt() + if(theDoor.z == deck_holder) + if(!theDoor.open()) + if(!theDoor.locked) + return FALSE + theDoor.bolt() + return TRUE + +/obj/machinery/lazylift/master/proc/open_all_doors(var/deck_holder) + for(var/obj/machinery/lazylift/target in decks) + if(!target.open_doors(deck_holder)) + return FALSE + return TRUE diff --git a/nsv13/code/modules/turbolift/turbolift.dm b/nsv13/code/modules/turbolift/turbolift.dm index 986ca02d5b3..0b6e9753f11 100644 --- a/nsv13/code/modules/turbolift/turbolift.dm +++ b/nsv13/code/modules/turbolift/turbolift.dm @@ -7,6 +7,7 @@ icon = 'nsv13/goonstation/icons/turbolift_blast_door.dmi' desc = "A bulkhead which opens and closes." door_animation_speed = 1 + autoclose = FALSE //Door open/close is controlled by the lift box // Turbolifts /datum/map_template/shuttle/turbolift/nsv/enterprise diff --git a/nsv13/code/modules/uplink/uplink_items.dm b/nsv13/code/modules/uplink/uplink_items.dm index 61aa6232b0c..f0b8475f7b5 100644 --- a/nsv13/code/modules/uplink/uplink_items.dm +++ b/nsv13/code/modules/uplink/uplink_items.dm @@ -13,3 +13,29 @@ item = /obj/item/gun/ballistic/rifle/boltaction/pdc cost = 12 restricted_roles = list(JOB_NAME_MUNITIONSTECHNICIAN,JOB_NAME_MASTERATARMS) + +/datum/uplink_item/badass/maid + name = "Emergency Maid Kit" + desc = "A kit containing everything you need to become a proper syndicate maid. \ + Contains a maid outfit, a mop, a bucket and a bar of soap. \ + Because you never know when you might need to clean up a mess." + item = /obj/item/storage/box/syndie_kit/maid + cost = 20 + cant_discount = TRUE + surplus = 0 + +/datum/uplink_item/explosives/fighterplushie + name = "Plushie Bomb Kit" + desc = "A kit with all of the tools and items required to assemble your very own plushie bomb! \ + Take out the clueless Nanotrasen scum with a gift they'll never expect. \ + Contains a Syndicate light fighter plush, syndicate minibomb, screwdriver and a survival knife." + item = /obj/item/storage/box/syndie_kit/plushie + cost = 8 + +/datum/uplink_item/race_restricted/robotic_firstaid + name = "Robotic First-Aid Kit" + desc = "A first-aid kit with all of the tools required to repair a positronic chassis.\ + Also comes with a radioactive disinfectant bottle and system cleaner medipens." + item = /obj/item/storage/firstaid/robot + restricted_species = list(SPECIES_IPC) + cost = 3 diff --git a/nsv13/code/modules/vehicles/_vehicle.dm b/nsv13/code/modules/vehicles/_vehicle.dm index 8ebf00a6f14..222582e3ad4 100644 --- a/nsv13/code/modules/vehicles/_vehicle.dm +++ b/nsv13/code/modules/vehicles/_vehicle.dm @@ -40,6 +40,7 @@ MASSIVE THANKS TO MONSTER860 FOR HELP WITH THIS. HE EXPLAINED PHYSICS AND MATH T var/bounce_factor = 0.2 // how much of our velocity to keep on collision var/lateral_bounce_factor = 0.95 // mostly there to slow you down when you drive (pilot?) down a 2x2 corridor + COOLDOWN_DECLARE(key_cooldown) // Anti-spam for keys var/brakes = FALSE //Helps you stop the tug var/last_slowprocess = 0 var/last_squeak = 0 @@ -74,9 +75,11 @@ MASSIVE THANKS TO MONSTER860 FOR HELP WITH THIS. HE EXPLAINED PHYSICS AND MATH T /obj/vehicle/sealed/car/realistic/after_remove_occupant(mob/M) M.set_focus(M) + M?.client.AdjustView() /obj/vehicle/sealed/car/realistic/proc/toggle_brakes() brakes = !brakes + to_chat(usr, "You toggle the brakes [brakes ? "on" : "off"].") /obj/effect/decal/cleanable/tyre_marks name = "Tyre tracks" @@ -100,7 +103,9 @@ MASSIVE THANKS TO MONSTER860 FOR HELP WITH THIS. HE EXPLAINED PHYSICS AND MATH T /obj/vehicle/sealed/car/realistic/driver_move(mob/user, direction) if(key_type && !is_key(inserted_key)) - to_chat(user, "[src] has no key inserted!") + if(COOLDOWN_FINISHED(src, key_cooldown)) + to_chat(user, "[src] has no key inserted!") + COOLDOWN_START(src, key_cooldown, 1 SECONDS) return FALSE if(world.time >= last_enginesound_time + engine_sound_length) last_enginesound_time = world.time diff --git a/nsv13/icons/mob/accessories.dmi b/nsv13/icons/mob/accessories.dmi index 1cfb2460476..3e08852a28f 100644 Binary files a/nsv13/icons/mob/accessories.dmi and b/nsv13/icons/mob/accessories.dmi differ diff --git a/nsv13/icons/mob/aibots.dmi b/nsv13/icons/mob/aibots.dmi index 1f3937003ba..c04d7c8fb25 100644 Binary files a/nsv13/icons/mob/aibots.dmi and b/nsv13/icons/mob/aibots.dmi differ diff --git a/nsv13/icons/mob/augmentation/bishop.dmi b/nsv13/icons/mob/augmentation/bishop.dmi new file mode 100644 index 00000000000..6620da21781 Binary files /dev/null and b/nsv13/icons/mob/augmentation/bishop.dmi differ diff --git a/nsv13/icons/mob/augmentation/shellguard.dmi b/nsv13/icons/mob/augmentation/shellguard.dmi new file mode 100644 index 00000000000..0cdd5b79b7b Binary files /dev/null and b/nsv13/icons/mob/augmentation/shellguard.dmi differ diff --git a/nsv13/icons/mob/augmentation/veymed.dmi b/nsv13/icons/mob/augmentation/veymed.dmi new file mode 100644 index 00000000000..4c3561799da Binary files /dev/null and b/nsv13/icons/mob/augmentation/veymed.dmi differ diff --git a/nsv13/icons/mob/augmentation/veymedm.dmi b/nsv13/icons/mob/augmentation/veymedm.dmi new file mode 100644 index 00000000000..873ecb90c54 Binary files /dev/null and b/nsv13/icons/mob/augmentation/veymedm.dmi differ diff --git a/nsv13/icons/mob/augmentation/wardtakahashi.dmi b/nsv13/icons/mob/augmentation/wardtakahashi.dmi new file mode 100644 index 00000000000..de99f4a31b8 Binary files /dev/null and b/nsv13/icons/mob/augmentation/wardtakahashi.dmi differ diff --git a/nsv13/icons/mob/augmentation/xion.dmi b/nsv13/icons/mob/augmentation/xion.dmi new file mode 100644 index 00000000000..01d1185cd48 Binary files /dev/null and b/nsv13/icons/mob/augmentation/xion.dmi differ diff --git a/nsv13/icons/mob/augmentation/zenghu.dmi b/nsv13/icons/mob/augmentation/zenghu.dmi new file mode 100644 index 00000000000..9659b0d0cf8 Binary files /dev/null and b/nsv13/icons/mob/augmentation/zenghu.dmi differ diff --git a/nsv13/icons/mob/hands.dmi b/nsv13/icons/mob/hands.dmi new file mode 100644 index 00000000000..48467d08e54 Binary files /dev/null and b/nsv13/icons/mob/hands.dmi differ diff --git a/nsv13/icons/mob/head.dmi b/nsv13/icons/mob/head.dmi index 05fca07d984..6e2d2ecaf9f 100644 Binary files a/nsv13/icons/mob/head.dmi and b/nsv13/icons/mob/head.dmi differ diff --git a/nsv13/icons/mob/inhands/equipment/medical_lefthand.dmi b/nsv13/icons/mob/inhands/equipment/medical_lefthand.dmi new file mode 100644 index 00000000000..b95fe076fc6 Binary files /dev/null and b/nsv13/icons/mob/inhands/equipment/medical_lefthand.dmi differ diff --git a/nsv13/icons/mob/inhands/equipment/medical_righthand.dmi b/nsv13/icons/mob/inhands/equipment/medical_righthand.dmi new file mode 100644 index 00000000000..52b04f024dc Binary files /dev/null and b/nsv13/icons/mob/inhands/equipment/medical_righthand.dmi differ diff --git a/nsv13/icons/mob/inhands/weapons/guns_lefthand.dmi b/nsv13/icons/mob/inhands/weapons/guns_lefthand.dmi index f160de60581..6198b0ed1d4 100644 Binary files a/nsv13/icons/mob/inhands/weapons/guns_lefthand.dmi and b/nsv13/icons/mob/inhands/weapons/guns_lefthand.dmi differ diff --git a/nsv13/icons/mob/inhands/weapons/guns_righthand.dmi b/nsv13/icons/mob/inhands/weapons/guns_righthand.dmi index 3e55deba377..f1e97f91ee7 100644 Binary files a/nsv13/icons/mob/inhands/weapons/guns_righthand.dmi and b/nsv13/icons/mob/inhands/weapons/guns_righthand.dmi differ diff --git a/nsv13/icons/mob/silicon/robots_cargo.dmi b/nsv13/icons/mob/silicon/robots_cargo.dmi new file mode 100644 index 00000000000..ed8b039d476 Binary files /dev/null and b/nsv13/icons/mob/silicon/robots_cargo.dmi differ diff --git a/nsv13/icons/mob/suit.dmi b/nsv13/icons/mob/suit.dmi index a971b70c7b4..cea84ef18c2 100644 Binary files a/nsv13/icons/mob/suit.dmi and b/nsv13/icons/mob/suit.dmi differ diff --git a/nsv13/icons/mob/underwear.dmi b/nsv13/icons/mob/underwear.dmi new file mode 100644 index 00000000000..5da0ca1ca69 Binary files /dev/null and b/nsv13/icons/mob/underwear.dmi differ diff --git a/nsv13/icons/mob/uniform.dmi b/nsv13/icons/mob/uniform.dmi index 432de6c84f1..c19252d18a4 100644 Binary files a/nsv13/icons/mob/uniform.dmi and b/nsv13/icons/mob/uniform.dmi differ diff --git a/nsv13/icons/obj/clothing/accessories.dmi b/nsv13/icons/obj/clothing/accessories.dmi index ba1bd12d3ce..8e89d055c6e 100644 Binary files a/nsv13/icons/obj/clothing/accessories.dmi and b/nsv13/icons/obj/clothing/accessories.dmi differ diff --git a/nsv13/icons/obj/clothing/gloves.dmi b/nsv13/icons/obj/clothing/gloves.dmi new file mode 100644 index 00000000000..5c5559b4e97 Binary files /dev/null and b/nsv13/icons/obj/clothing/gloves.dmi differ diff --git a/nsv13/icons/obj/clothing/hats.dmi b/nsv13/icons/obj/clothing/hats.dmi index 64e97726482..95ac354857a 100644 Binary files a/nsv13/icons/obj/clothing/hats.dmi and b/nsv13/icons/obj/clothing/hats.dmi differ diff --git a/nsv13/icons/obj/clothing/uniforms.dmi b/nsv13/icons/obj/clothing/uniforms.dmi index dd248c37b83..297055cdec4 100644 Binary files a/nsv13/icons/obj/clothing/uniforms.dmi and b/nsv13/icons/obj/clothing/uniforms.dmi differ diff --git a/nsv13/icons/obj/custom_plushes.dmi b/nsv13/icons/obj/custom_plushes.dmi new file mode 100644 index 00000000000..63b3474c15d Binary files /dev/null and b/nsv13/icons/obj/custom_plushes.dmi differ diff --git a/nsv13/icons/obj/guns/projectile.dmi b/nsv13/icons/obj/guns/projectile.dmi index cc6f81f8d47..ce4ac44209c 100644 Binary files a/nsv13/icons/obj/guns/projectile.dmi and b/nsv13/icons/obj/guns/projectile.dmi differ diff --git a/nsv13/icons/obj/nsv13_syringe.dmi b/nsv13/icons/obj/nsv13_syringe.dmi index d83538c25af..7a4e08a5a8c 100644 Binary files a/nsv13/icons/obj/nsv13_syringe.dmi and b/nsv13/icons/obj/nsv13_syringe.dmi differ diff --git a/nsv13/icons/obj/pda.dmi b/nsv13/icons/obj/pda.dmi index dbcf1b12884..f2736834ad8 100644 Binary files a/nsv13/icons/obj/pda.dmi and b/nsv13/icons/obj/pda.dmi differ diff --git a/nsv13/icons/obj/shield_components.dmi b/nsv13/icons/obj/shield_components.dmi index e7d28d423cd..4a9eea81087 100644 Binary files a/nsv13/icons/obj/shield_components.dmi and b/nsv13/icons/obj/shield_components.dmi differ diff --git a/nsv13/icons/obj/smooth_structures/catwalk_plated.dmi b/nsv13/icons/obj/smooth_structures/catwalk_plated.dmi index 837e13e9a5a..c0b898e2f8f 100644 Binary files a/nsv13/icons/obj/smooth_structures/catwalk_plated.dmi and b/nsv13/icons/obj/smooth_structures/catwalk_plated.dmi differ diff --git a/nsv13/icons/obj/storage.dmi b/nsv13/icons/obj/storage.dmi index 4329fe97294..71ee9acf80f 100644 Binary files a/nsv13/icons/obj/storage.dmi and b/nsv13/icons/obj/storage.dmi differ diff --git a/nsv13/icons/overmap/nanotrasen/carrier.dmi b/nsv13/icons/overmap/nanotrasen/carrier.dmi index d3b665e7198..3f36f9f1806 100644 Binary files a/nsv13/icons/overmap/nanotrasen/carrier.dmi and b/nsv13/icons/overmap/nanotrasen/carrier.dmi differ diff --git a/nsv13/icons/overmap/new/syndicate/pt_boat.dmi b/nsv13/icons/overmap/new/syndicate/pt_boat.dmi new file mode 100644 index 00000000000..c77bb608ab8 Binary files /dev/null and b/nsv13/icons/overmap/new/syndicate/pt_boat.dmi differ diff --git a/nsv13/icons/overmap/syndicate/syn_rapier.dmi b/nsv13/icons/overmap/syndicate/syn_rapier.dmi new file mode 100644 index 00000000000..2ae4524cf7a Binary files /dev/null and b/nsv13/icons/overmap/syndicate/syn_rapier.dmi differ diff --git a/nsv13/icons/overmap/syndicate/syn_raptor.dmi b/nsv13/icons/overmap/syndicate/syn_raptor.dmi deleted file mode 100644 index fa757147ac4..00000000000 Binary files a/nsv13/icons/overmap/syndicate/syn_raptor.dmi and /dev/null differ diff --git a/nsv13/icons/overmap/syndicate/syn_sabre.dmi b/nsv13/icons/overmap/syndicate/syn_sabre.dmi new file mode 100644 index 00000000000..69a0d3cbb22 Binary files /dev/null and b/nsv13/icons/overmap/syndicate/syn_sabre.dmi differ diff --git a/nsv13/icons/overmap/syndicate/syn_viper.dmi b/nsv13/icons/overmap/syndicate/syn_viper.dmi deleted file mode 100644 index 718e4f43799..00000000000 Binary files a/nsv13/icons/overmap/syndicate/syn_viper.dmi and /dev/null differ diff --git a/nsv13/sound/weapons/chokehold.ogg b/nsv13/sound/weapons/chokehold.ogg new file mode 100644 index 00000000000..43e0db0741f Binary files /dev/null and b/nsv13/sound/weapons/chokehold.ogg differ diff --git a/rust_g.dll b/rust_g.dll index 3c53cf871af..bccb89a274b 100644 Binary files a/rust_g.dll and b/rust_g.dll differ diff --git a/sound/mecha/hydraulic.ogg b/sound/mecha/hydraulic.ogg new file mode 100644 index 00000000000..3281ed2dc0f Binary files /dev/null and b/sound/mecha/hydraulic.ogg differ diff --git a/tgui/.eslintrc-sonar.yml b/tgui/.eslintrc-sonar.yml index 3cdd49f889e..ca6f2bfa806 100644 --- a/tgui/.eslintrc-sonar.yml +++ b/tgui/.eslintrc-sonar.yml @@ -1,26 +1,26 @@ rules: - # radar/cognitive-complexity: error - radar/max-switch-cases: error - radar/no-all-duplicated-branches: error - radar/no-collapsible-if: error - radar/no-collection-size-mischeck: error - radar/no-duplicate-string: error - radar/no-duplicated-branches: error - radar/no-element-overwrite: error - radar/no-extra-arguments: error - radar/no-identical-conditions: error - radar/no-identical-expressions: error - radar/no-identical-functions: error - radar/no-inverted-boolean-check: error - radar/no-one-iteration-loop: error - radar/no-redundant-boolean: error - radar/no-redundant-jump: error - radar/no-same-line-conditional: error - radar/no-small-switch: error - radar/no-unused-collection: error - radar/no-use-of-empty-return-value: error - radar/no-useless-catch: error - radar/prefer-immediate-return: error - radar/prefer-object-literal: error - radar/prefer-single-boolean-return: error - radar/prefer-while: error + # sonarjs/cognitive-complexity: error + sonarjs/max-switch-cases: error + sonarjs/no-all-duplicated-branches: error + sonarjs/no-collapsible-if: error + sonarjs/no-collection-size-mischeck: error + sonarjs/no-duplicate-string: error + sonarjs/no-duplicated-branches: error + sonarjs/no-element-overwrite: error + sonarjs/no-extra-arguments: error + sonarjs/no-identical-conditions: error + sonarjs/no-identical-expressions: error + sonarjs/no-identical-functions: error + sonarjs/no-inverted-boolean-check: error + sonarjs/no-one-iteration-loop: error + sonarjs/no-redundant-boolean: error + sonarjs/no-redundant-jump: error + sonarjs/no-same-line-conditional: error + sonarjs/no-small-switch: error + sonarjs/no-unused-collection: error + sonarjs/no-use-of-empty-return-value: error + sonarjs/no-useless-catch: error + sonarjs/prefer-immediate-return: error + sonarjs/prefer-object-literal: error + sonarjs/prefer-single-boolean-return: error + sonarjs/prefer-while: error diff --git a/tgui/.eslintrc.yml b/tgui/.eslintrc.yml index 59b5f4bb5b3..db7c6694996 100644 --- a/tgui/.eslintrc.yml +++ b/tgui/.eslintrc.yml @@ -12,7 +12,7 @@ env: globals: Byond: readonly plugins: - - radar + - sonarjs - react settings: react: @@ -315,7 +315,8 @@ rules: imports: always-multiline, exports: always-multiline, functions: only-multiline, ## Optional on functions - }] + } + ] ## Enforce consistent spacing before and after commas comma-spacing: [error, { before: false, after: true }] ## Enforce consistent comma style @@ -377,7 +378,8 @@ rules: ignoreUrls: true, ignoreRegExpLiterals: true, ignoreStrings: true, - }] + } + ] ## Enforce a maximum number of lines per file # max-lines: error ## Enforce a maximum number of line of code in a function @@ -486,7 +488,8 @@ rules: anonymous: always, named: never, asyncArrow: always, - }] + } + ] ## Enforce consistent spacing inside parentheses space-in-parens: [error, never] ## Require spacing around infix operators @@ -690,7 +693,8 @@ rules: ## NOTE: Not really sure about enforcing this one selfClosing: false, nonEmpty: after-props, - }] + } + ] ## Validate closing tag location in JSX (fixable) react/jsx-closing-tag-location: error ## Enforce or disallow newlines inside of curly braces in JSX attributes and @@ -710,7 +714,8 @@ rules: ## Validate JSX indentation (fixable) react/jsx-indent: [error, 2, { checkAttributes: true, - }] + } + ] ## Validate props indentation in JSX (fixable) react/jsx-indent-props: [error, 2] ## Validate JSX has key prop when in array or iterator diff --git a/tgui/.gitignore b/tgui/.gitignore index 55091b21862..4d0dd666d88 100644 --- a/tgui/.gitignore +++ b/tgui/.gitignore @@ -16,6 +16,7 @@ package-lock.json /public/.tmp/**/* /public/**/* !/public/*.html +!/public/tgui-polyfill.min.js /coverage ## Previously ignored locations that are kept to avoid confusing git diff --git a/tgui/.yarn/releases/yarn-3.1.1.cjs b/tgui/.yarn/releases/yarn-3.1.1.cjs deleted file mode 100644 index f5f2adca83b..00000000000 --- a/tgui/.yarn/releases/yarn-3.1.1.cjs +++ /dev/null @@ -1,768 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var Mfe=Object.create,Vf=Object.defineProperty,Ofe=Object.defineProperties,Kfe=Object.getOwnPropertyDescriptor,Ufe=Object.getOwnPropertyDescriptors,Hfe=Object.getOwnPropertyNames,hE=Object.getOwnPropertySymbols,Gfe=Object.getPrototypeOf,eb=Object.prototype.hasOwnProperty,lO=Object.prototype.propertyIsEnumerable;var cO=(t,e,r)=>e in t?Vf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,P=(t,e)=>{for(var r in e||(e={}))eb.call(e,r)&&cO(t,r,e[r]);if(hE)for(var r of hE(e))lO.call(e,r)&&cO(t,r,e[r]);return t},_=(t,e)=>Ofe(t,Ufe(e)),jfe=t=>Vf(t,"__esModule",{value:!0});var qr=(t,e)=>{var r={};for(var i in t)eb.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&hE)for(var i of hE(t))e.indexOf(i)<0&&lO.call(t,i)&&(r[i]=t[i]);return r},Yfe=(t,e)=>()=>(t&&(e=t(t=0)),e),E=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),it=(t,e)=>{for(var r in e)Vf(t,r,{get:e[r],enumerable:!0})},qfe=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Hfe(e))!eb.call(t,i)&&i!=="default"&&Vf(t,i,{get:()=>e[i],enumerable:!(r=Kfe(e,i))||r.enumerable});return t},ie=t=>qfe(jfe(Vf(t!=null?Mfe(Gfe(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var MO=E((i$e,FO)=>{FO.exports=NO;NO.sync=Ahe;var LO=require("fs");function lhe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{OO.exports=KO;KO.sync=che;var UO=require("fs");function KO(t,e,r){UO.stat(t,function(i,n){r(i,i?!1:HO(n,e))})}function che(t,e){return HO(UO.statSync(t),e)}function HO(t,e){return t.isFile()&&uhe(t,e)}function uhe(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=r&c||r&l&&n===o||r&a&&i===s||r&u&&s===0;return g}});var YO=E((o$e,jO)=>{var s$e=require("fs"),xE;process.platform==="win32"||global.TESTING_WINDOWS?xE=MO():xE=GO();jO.exports=db;db.sync=ghe;function db(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){db(t,e||{},function(s,o){s?n(s):i(o)})})}xE(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function ghe(t,e){try{return xE.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var XO=E((a$e,qO)=>{var eu=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",JO=require("path"),fhe=eu?";":":",WO=YO(),zO=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),VO=(t,e)=>{let r=e.colon||fhe,i=t.match(/\//)||eu&&t.match(/\\/)?[""]:[...eu?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=eu?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=eu?n.split(r):[""];return eu&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},_O=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=VO(t,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(zO(t));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=JO.join(h,t),d=!h&&/^\.[\\\/]/.test(t)?t.slice(0,2)+p:p;u(l(d,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];WO(c+p,{pathExt:s},(d,m)=>{if(!d&&m)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},hhe=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=VO(t,e),s=[];for(let o=0;o{"use strict";var ZO=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Cb.exports=ZO;Cb.exports.default=ZO});var iK=E((l$e,eK)=>{"use strict";var tK=require("path"),phe=XO(),dhe=$O();function rK(t,e){let r=t.options.env||process.env,i=process.cwd(),n=t.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch(a){}let o;try{o=phe.sync(t.command,{path:r[dhe({env:r})],pathExt:e?tK.delimiter:void 0})}catch(a){}finally{s&&process.chdir(i)}return o&&(o=tK.resolve(n?t.options.cwd:"",o)),o}function Che(t){return rK(t)||rK(t,!0)}eK.exports=Che});var nK=E((c$e,mb)=>{"use strict";var Eb=/([()\][%!^"`<>&|;, *?])/g;function mhe(t){return t=t.replace(Eb,"^$1"),t}function Ehe(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(Eb,"^$1"),e&&(t=t.replace(Eb,"^$1")),t}mb.exports.command=mhe;mb.exports.argument=Ehe});var oK=E((u$e,sK)=>{"use strict";sK.exports=/^#!(.*)/});var AK=E((g$e,aK)=>{"use strict";var Ihe=oK();aK.exports=(t="")=>{let e=t.match(Ihe);if(!e)return null;let[r,i]=e[0].replace(/#! ?/,"").split(" "),n=r.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var cK=E((f$e,lK)=>{"use strict";var Ib=require("fs"),yhe=AK();function whe(t){let e=150,r=Buffer.alloc(e),i;try{i=Ib.openSync(t,"r"),Ib.readSync(i,r,0,e,0),Ib.closeSync(i)}catch(n){}return yhe(r.toString())}lK.exports=whe});var hK=E((h$e,uK)=>{"use strict";var Bhe=require("path"),gK=iK(),fK=nK(),Qhe=cK(),bhe=process.platform==="win32",vhe=/\.(?:com|exe)$/i,She=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function xhe(t){t.file=gK(t);let e=t.file&&Qhe(t.file);return e?(t.args.unshift(t.file),t.command=e,gK(t)):t.file}function khe(t){if(!bhe)return t;let e=xhe(t),r=!vhe.test(e);if(t.options.forceShell||r){let i=She.test(e);t.command=Bhe.normalize(t.command),t.command=fK.command(t.command),t.args=t.args.map(s=>fK.argument(s,i));let n=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${n}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function Phe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let i={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?i:khe(i)}uK.exports=Phe});var CK=E((p$e,pK)=>{"use strict";var yb=process.platform==="win32";function wb(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function Dhe(t,e){if(!yb)return;let r=t.emit;t.emit=function(i,n){if(i==="exit"){let s=dK(n,e,"spawn");if(s)return r.call(t,"error",s)}return r.apply(t,arguments)}}function dK(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawn"):null}function Rhe(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawnSync"):null}pK.exports={hookChildProcess:Dhe,verifyENOENT:dK,verifyENOENTSync:Rhe,notFoundError:wb}});var bb=E((d$e,tu)=>{"use strict";var mK=require("child_process"),Bb=hK(),Qb=CK();function EK(t,e,r){let i=Bb(t,e,r),n=mK.spawn(i.command,i.args,i.options);return Qb.hookChildProcess(n,i),n}function Fhe(t,e,r){let i=Bb(t,e,r),n=mK.spawnSync(i.command,i.args,i.options);return n.error=n.error||Qb.verifyENOENTSync(n.status,i),n}tu.exports=EK;tu.exports.spawn=EK;tu.exports.sync=Fhe;tu.exports._parse=Bb;tu.exports._enoent=Qb});var yK=E((y$e,IK)=>{"use strict";IK.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Nb=E((w$e,wK)=>{var gh=yK(),BK={};for(let t of Object.keys(gh))BK[gh[t]]=t;var Xe={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};wK.exports=Xe;for(let t of Object.keys(Xe)){if(!("channels"in Xe[t]))throw new Error("missing channels property: "+t);if(!("labels"in Xe[t]))throw new Error("missing channel labels property: "+t);if(Xe[t].labels.length!==Xe[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=Xe[t];delete Xe[t].channels,delete Xe[t].labels,Object.defineProperty(Xe[t],"channels",{value:e}),Object.defineProperty(Xe[t],"labels",{value:r})}Xe.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(e,r,i),s=Math.max(e,r,i),o=s-n,a,l;s===n?a=0:e===s?a=(r-i)/o:r===s?a=2+(i-e)/o:i===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+s)/2;return s===n?l=0:c<=.5?l=o/(s+n):l=o/(2-s-n),[a,l*100,c*100]};Xe.rgb.hsv=function(t){let e,r,i,n,s,o=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),g=function(f){return(c-f)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,e=g(o),r=g(a),i=g(l),o===c?n=i-r:a===c?n=1/3+e-i:l===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};Xe.rgb.hwb=function(t){let e=t[0],r=t[1],i=t[2],n=Xe.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,i));return i=1-1/255*Math.max(e,Math.max(r,i)),[n,s*100,i*100]};Xe.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(1-e,1-r,1-i),s=(1-e-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,a=(1-i-n)/(1-n)||0;return[s*100,o*100,a*100,n*100]};function The(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Xe.rgb.keyword=function(t){let e=BK[t];if(e)return e;let r=Infinity,i;for(let n of Object.keys(gh)){let s=gh[n],o=The(t,s);o.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=e*.4124+r*.3576+i*.1805,s=e*.2126+r*.7152+i*.0722,o=e*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};Xe.rgb.lab=function(t){let e=Xe.rgb.xyz(t),r=e[0],i=e[1],n=e[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),a=200*(i-n);return[s,o,a]};Xe.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let a=2*i-n,l=[0,0,0];for(let c=0;c<3;c++)s=e+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=a+(n-a)*6*s:2*s<1?o=n:3*s<2?o=a+(n-a)*(2/3-s)*6:o=a,l[c]=o*255;return l};Xe.hsl.hsv=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,a=i===0?2*n/(s+n):2*r/(i+r);return[e,a*100,o*100]};Xe.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-r),a=255*i*(1-r*s),l=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,l,o];case 1:return[a,i,o];case 2:return[o,i,l];case 3:return[o,a,i];case 4:return[l,o,i];case 5:return[i,o,a]}};Xe.hsv.hsl=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let a=(2-r)*n;return s=r*n,s/=a<=1?a:2-a,s=s||0,o/=2,[e,s*100,o*100]};Xe.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*e),a=1-i;s=6*e-o,(o&1)!=0&&(s=1-s);let l=r+s*(a-r),c,u,g;switch(o){default:case 6:case 0:c=a,u=l,g=r;break;case 1:c=l,u=a,g=r;break;case 2:c=r,u=a,g=l;break;case 3:c=r,u=l,g=a;break;case 4:c=l,u=r,g=a;break;case 5:c=a,u=r,g=l;break}return[c*255,u*255,g*255]};Xe.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n=t[3]/100,s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,a*255]};Xe.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n,s,o;return n=e*3.2406+r*-1.5372+i*-.4986,s=e*-.9689+r*1.8758+i*.0415,o=e*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};Xe.xyz.lab=function(t){let e=t[0],r=t[1],i=t[2];e/=95.047,r/=100,i/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(e-r),o=200*(r-i);return[n,s,o]};Xe.lab.xyz=function(t){let e=t[0],r=t[1],i=t[2],n,s,o;s=(e+16)/116,n=r/500+s,o=s-i/200;let a=s**3,l=n**3,c=o**3;return s=a>.008856?a:(s-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};Xe.lab.lch=function(t){let e=t[0],r=t[1],i=t[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[e,o,n]};Xe.lch.lab=function(t){let e=t[0],r=t[1],n=t[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[e,s,o]};Xe.rgb.ansi16=function(t,e=null){let[r,i,n]=t,s=e===null?Xe.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};Xe.hsv.ansi16=function(t){return Xe.rgb.ansi16(Xe.hsv.rgb(t),t[2])};Xe.rgb.ansi256=function(t){let e=t[0],r=t[1],i=t[2];return e===r&&r===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};Xe.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,i=(e&1)*r*255,n=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[i,n,s]};Xe.ansi256.rgb=function(t){if(t>=232){let s=(t-232)*10+8;return[s,s,s]}t-=16;let e,r=Math.floor(t/36)/5*255,i=Math.floor((e=t%36)/6)/5*255,n=e%6/5*255;return[r,i,n]};Xe.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};Xe.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(a=>a+a).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};Xe.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.max(Math.max(e,r),i),s=Math.min(Math.min(e,r),i),o=n-s,a,l;return o<1?a=s/(1-o):a=0,o<=0?l=0:n===e?l=(r-i)/o%6:n===r?l=2+(i-e)/o:l=4+(e-r)/o,l/=6,l%=1,[l*360,o*100,a*100]};Xe.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=r<.5?2*e*r:2*e*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[t[0],i*100,n*100]};Xe.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=e*r,n=0;return i<1&&(n=(r-i)/(1-i)),[t[0],i*100,n*100]};Xe.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=e%1*6,o=s%1,a=1-o,l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-r)*i,[(r*n[0]+l)*255,(r*n[1]+l)*255,(r*n[2]+l)*255]};Xe.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e),n=0;return i>0&&(n=e/i),[t[0],n*100,i*100]};Xe.hcg.hsl=function(t){let e=t[1]/100,i=t[2]/100*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[t[0],n*100,i*100]};Xe.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e);return[t[0],(i-e)*100,(1-i)*100]};Xe.hwb.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=1-r,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[t[0],n*100,s*100]};Xe.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Xe.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Xe.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Xe.gray.hsl=function(t){return[0,0,t[0]]};Xe.gray.hsv=Xe.gray.hsl;Xe.gray.hwb=function(t){return[0,100,t[0]]};Xe.gray.cmyk=function(t){return[0,0,0,t[0]]};Xe.gray.lab=function(t){return[t[0],0,0]};Xe.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,i=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(i.length)+i};Xe.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var bK=E((B$e,QK)=>{var kE=Nb();function Mhe(){let t={},e=Object.keys(kE);for(let r=e.length,i=0;i{var Lb=Nb(),Hhe=bK(),ru={},Ghe=Object.keys(Lb);function jhe(t){let e=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function Yhe(t){let e=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=t(r);if(typeof n=="object")for(let s=n.length,o=0;o{ru[t]={},Object.defineProperty(ru[t],"channels",{value:Lb[t].channels}),Object.defineProperty(ru[t],"labels",{value:Lb[t].labels});let e=Hhe(t);Object.keys(e).forEach(i=>{let n=e[i];ru[t][i]=Yhe(n),ru[t][i].raw=jhe(n)})});vK.exports=ru});var FK=E((b$e,xK)=>{"use strict";var kK=(t,e)=>(...r)=>`[${t(...r)+e}m`,PK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};5;${i}m`},DK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};2;${i[0]};${i[1]};${i[2]}m`},PE=t=>t,RK=(t,e,r)=>[t,e,r],iu=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let i=r();return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},Tb,nu=(t,e,r,i)=>{Tb===void 0&&(Tb=SK());let n=i?10:0,s={};for(let[o,a]of Object.entries(Tb)){let l=o==="ansi16"?"ansi":o;o===e?s[l]=t(r,n):typeof a=="object"&&(s[l]=t(a[e],n))}return s};function qhe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,i]of Object.entries(e)){for(let[n,s]of Object.entries(i))e[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=e[n],t.set(s[0],s[1]);Object.defineProperty(e,r,{value:i,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="",e.bgColor.close="",iu(e.color,"ansi",()=>nu(kK,"ansi16",PE,!1)),iu(e.color,"ansi256",()=>nu(PK,"ansi256",PE,!1)),iu(e.color,"ansi16m",()=>nu(DK,"rgb",RK,!1)),iu(e.bgColor,"ansi",()=>nu(kK,"ansi16",PE,!0)),iu(e.bgColor,"ansi256",()=>nu(PK,"ansi256",PE,!0)),iu(e.bgColor,"ansi16m",()=>nu(DK,"rgb",RK,!0)),e}Object.defineProperty(xK,"exports",{enumerable:!0,get:qhe})});var LK=E((v$e,NK)=>{"use strict";NK.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Jhe=require("os"),MK=require("tty"),Wn=LK(),{env:Wr}=process,tA;Wn("no-color")||Wn("no-colors")||Wn("color=false")||Wn("color=never")?tA=0:(Wn("color")||Wn("colors")||Wn("color=true")||Wn("color=always"))&&(tA=1);"FORCE_COLOR"in Wr&&(Wr.FORCE_COLOR==="true"?tA=1:Wr.FORCE_COLOR==="false"?tA=0:tA=Wr.FORCE_COLOR.length===0?1:Math.min(parseInt(Wr.FORCE_COLOR,10),3));function Mb(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Ob(t,e){if(tA===0)return 0;if(Wn("color=16m")||Wn("color=full")||Wn("color=truecolor"))return 3;if(Wn("color=256"))return 2;if(t&&!e&&tA===void 0)return 0;let r=tA||0;if(Wr.TERM==="dumb")return r;if(process.platform==="win32"){let i=Jhe.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Wr)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(i=>i in Wr)||Wr.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Wr)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Wr.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Wr)return 1;if(Wr.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Wr){let i=parseInt((Wr.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Wr.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Wr.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Wr.TERM)||"COLORTERM"in Wr?1:r}function Whe(t){let e=Ob(t,t&&t.isTTY);return Mb(e)}TK.exports={supportsColor:Whe,stdout:Mb(Ob(!0,MK.isatty(1))),stderr:Mb(Ob(!0,MK.isatty(2)))}});var UK=E((x$e,KK)=>{"use strict";var zhe=(t,e,r)=>{let i=t.indexOf(e);if(i===-1)return t;let n=e.length,s=0,o="";do o+=t.substr(s,i-s)+e+r,s=i+n,i=t.indexOf(e,s);while(i!==-1);return o+=t.substr(s),o},Vhe=(t,e,r,i)=>{let n=0,s="";do{let o=t[i-1]==="\r";s+=t.substr(n,(o?i-1:i)-n)+e+(o?`\r -`:` -`)+r,n=i+1,i=t.indexOf(` -`,n)}while(i!==-1);return s+=t.substr(n),s};KK.exports={stringReplaceAll:zhe,stringEncaseCRLFWithFirstIndex:Vhe}});var qK=E((k$e,HK)=>{"use strict";var _he=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,GK=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Xhe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Zhe=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,$he=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function jK(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):$he.get(t)||t}function epe(t,e){let r=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(Xhe))r.push(n[2].replace(Zhe,(a,l,c)=>l?jK(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`)}return r}function tpe(t){GK.lastIndex=0;let e=[],r;for(;(r=GK.exec(t))!==null;){let i=r[1];if(r[2]){let n=epe(i,r[2]);e.push([i].concat(n))}else e.push([i])}return e}function YK(t,e){let r={};for(let n of e)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=t;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}HK.exports=(t,e)=>{let r=[],i=[],n=[];if(e.replace(_he,(s,o,a,l,c,u)=>{if(o)n.push(jK(o));else if(l){let g=n.join("");n=[],i.push(r.length===0?g:YK(t,r)(g)),r.push({inverse:a,styles:tpe(l)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(YK(t,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var jb=E((P$e,JK)=>{"use strict";var fh=FK(),{stdout:Kb,stderr:Ub}=OK(),{stringReplaceAll:rpe,stringEncaseCRLFWithFirstIndex:ipe}=UK(),WK=["ansi","ansi","ansi256","ansi16m"],su=Object.create(null),npe=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=Kb?Kb.level:0;t.level=e.level===void 0?r:e.level},zK=class{constructor(e){return VK(e)}},VK=t=>{let e={};return npe(e,t),e.template=(...r)=>spe(e.template,...r),Object.setPrototypeOf(e,DE.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=zK,e.template};function DE(t){return VK(t)}for(let[t,e]of Object.entries(fh))su[t]={get(){let r=RE(this,Hb(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};su.visible={get(){let t=RE(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var _K=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of _K)su[t]={get(){let{level:e}=this;return function(...r){let i=Hb(fh.color[WK[e]][t](...r),fh.color.close,this._styler);return RE(this,i,this._isEmpty)}}};for(let t of _K){let e="bg"+t[0].toUpperCase()+t.slice(1);su[e]={get(){let{level:r}=this;return function(...i){let n=Hb(fh.bgColor[WK[r]][t](...i),fh.bgColor.close,this._styler);return RE(this,n,this._isEmpty)}}}}var ope=Object.defineProperties(()=>{},_(P({},su),{level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}})),Hb=(t,e,r)=>{let i,n;return r===void 0?(i=t,n=e):(i=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:i,closeAll:n,parent:r}},RE=(t,e,r)=>{let i=(...n)=>ape(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=ope,i._generator=t,i._styler=e,i._isEmpty=r,i},ape=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:i,closeAll:n}=r;if(e.indexOf("")!==-1)for(;r!==void 0;)e=rpe(e,r.close,r.open),r=r.parent;let s=e.indexOf(` -`);return s!==-1&&(e=ipe(e,n,i,s)),i+e+n},Gb,spe=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let i=e.slice(1),n=[r.raw[0]];for(let s=1;s{XK.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var ml=E(Dn=>{"use strict";var $K=ZK(),ro=process.env;Object.defineProperty(Dn,"_vendors",{value:$K.map(function(t){return t.constant})});Dn.name=null;Dn.isPR=null;$K.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(i){return e1(i)});if(Dn[t.constant]=r,r)switch(Dn.name=t.name,typeof t.pr){case"string":Dn.isPR=!!ro[t.pr];break;case"object":"env"in t.pr?Dn.isPR=t.pr.env in ro&&ro[t.pr.env]!==t.pr.ne:"any"in t.pr?Dn.isPR=t.pr.any.some(function(i){return!!ro[i]}):Dn.isPR=e1(t.pr);break;default:Dn.isPR=null}});Dn.isCI=!!(ro.CI||ro.CONTINUOUS_INTEGRATION||ro.BUILD_NUMBER||ro.RUN_ID||Dn.name);function e1(t){return typeof t=="string"?!!ro[t]:Object.keys(t).every(function(e){return ro[e]===t[e]})}});var FE=E(zn=>{"use strict";zn.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;zn.find=(t,e)=>t.nodes.find(r=>r.type===e);zn.exceedsLimit=(t,e,r=1,i)=>i===!1||!zn.isInteger(t)||!zn.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=i;zn.escapeNode=(t,e=0,r)=>{let i=t.nodes[e];!i||(r&&i.type===r||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};zn.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0==0?(t.invalid=!0,!0):!1;zn.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0==0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;zn.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;zn.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);zn.flatten=(...t)=>{let e=[],r=i=>{for(let n=0;n{"use strict";var r1=FE();t1.exports=(t,e={})=>{let r=(i,n={})=>{let s=e.escapeInvalid&&r1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&r1.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=r(l);return a};return r(t)}});var n1=E((L$e,i1)=>{"use strict";i1.exports=function(t){return typeof t=="number"?t-t==0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var f1=E((T$e,s1)=>{"use strict";var o1=n1(),El=(t,e,r)=>{if(o1(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(o1(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i=P({relaxZeros:!0},r);typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=t+":"+e+"="+n+s+o+a;if(El.cache.hasOwnProperty(l))return El.cache[l].result;let c=Math.min(t,e),u=Math.max(t,e);if(Math.abs(c-u)===1){let d=t+"|"+e;return i.capture?`(${d})`:i.wrap===!1?d:`(?:${d})`}let g=A1(t)||A1(e),f={min:t,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let d=u<0?Math.abs(u):1;p=a1(d,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=a1(c,u,f,i)),f.negatives=p,f.positives=h,f.result=Ape(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),El.cache[l]=f,f.result};function Ape(t,e,r){let i=Yb(t,e,"-",!1,r)||[],n=Yb(e,t,"",!1,r)||[],s=Yb(t,e,"-?",!0,r)||[];return i.concat(s).concat(n).join("|")}function cpe(t,e){let r=1,i=1,n=l1(t,r),s=new Set([e]);for(;t<=n&&n<=e;)s.add(n),r+=1,n=l1(t,r);for(n=c1(e+1,i)-1;t1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+u1(a.count),o=c+1;continue}r.isPadded&&(g=hpe(c,r,i)),u.string=g+u.pattern+u1(u.count),s.push(u),o=c+1,a=u}return s}function Yb(t,e,r,i,n){let s=[];for(let o of t){let{string:a}=o;!i&&!g1(e,"string",a)&&s.push(r+a),i&&g1(e,"string",a)&&s.push(r+a)}return s}function upe(t,e){let r=[];for(let i=0;ie?1:e>t?-1:0}function g1(t,e,r){return t.some(i=>i[e]===r)}function l1(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function c1(t,e){return t-t%Math.pow(10,e)}function u1(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function gpe(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function A1(t){return/^-?(0+)\d/.test(t)}function hpe(t,e,r){if(!e.isPadded)return t;let i=Math.abs(e.maxLen-String(t).length),n=r.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}El.cache={};El.clearCache=()=>El.cache={};s1.exports=El});var Wb=E((M$e,h1)=>{"use strict";var ppe=require("util"),p1=f1(),d1=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),dpe=t=>e=>t===!0?Number(e):String(e),qb=t=>typeof t=="number"||typeof t=="string"&&t!=="",ph=t=>Number.isInteger(+t),Jb=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},Cpe=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,mpe=(t,e,r)=>{if(e>0){let i=t[0]==="-"?"-":"";i&&(t=t.slice(1)),t=i+t.padStart(i?e-1:e,"0")}return r===!1?String(t):t},C1=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((o,a)=>oa?1:0),t.positives.sort((o,a)=>oa?1:0);let r=e.capture?"":"?:",i="",n="",s;return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(n=`-(${r}${t.negatives.join("|")})`),i&&n?s=`${i}|${n}`:s=i||n,e.wrap?`(${r}${s})`:s},m1=(t,e,r,i)=>{if(r)return p1(t,e,P({wrap:!1},i));let n=String.fromCharCode(t);if(t===e)return n;let s=String.fromCharCode(e);return`[${n}-${s}]`},E1=(t,e,r)=>{if(Array.isArray(t)){let i=r.wrap===!0,n=r.capture?"":"?:";return i?`(${n}${t.join("|")})`:t.join("|")}return p1(t,e,r)},I1=(...t)=>new RangeError("Invalid range arguments: "+ppe.inspect(...t)),y1=(t,e,r)=>{if(r.strictRanges===!0)throw I1([t,e]);return[]},Ipe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},ype=(t,e,r=1,i={})=>{let n=Number(t),s=Number(e);if(!Number.isInteger(n)||!Number.isInteger(s)){if(i.strictRanges===!0)throw I1([t,e]);return[]}n===0&&(n=0),s===0&&(s=0);let o=n>s,a=String(t),l=String(e),c=String(r);r=Math.max(Math.abs(r),1);let u=Jb(a)||Jb(l)||Jb(c),g=u?Math.max(a.length,l.length,c.length):0,f=u===!1&&Cpe(t,e,i)===!1,h=i.transform||dpe(f);if(i.toRegex&&r===1)return m1(C1(t,g),C1(e,g),!0,i);let p={negatives:[],positives:[]},d=B=>p[B<0?"negatives":"positives"].push(Math.abs(B)),m=[],I=0;for(;o?n>=s:n<=s;)i.toRegex===!0&&r>1?d(n):m.push(mpe(h(n,I),g,f)),n=o?n-r:n+r,I++;return i.toRegex===!0?r>1?Epe(p,i):E1(m,null,P({wrap:!1},i)):m},wpe=(t,e,r=1,i={})=>{if(!ph(t)&&t.length>1||!ph(e)&&e.length>1)return y1(t,e,i);let n=i.transform||(f=>String.fromCharCode(f)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(i.toRegex&&r===1)return m1(l,c,!1,i);let u=[],g=0;for(;a?s>=o:s<=o;)u.push(n(s,g)),s=a?s-r:s+r,g++;return i.toRegex===!0?E1(u,null,{wrap:!1,options:i}):u},LE=(t,e,r,i={})=>{if(e==null&&qb(t))return[t];if(!qb(t)||!qb(e))return y1(t,e,i);if(typeof r=="function")return LE(t,e,1,{transform:r});if(d1(r))return LE(t,e,0,r);let n=P({},i);return n.capture===!0&&(n.wrap=!0),r=r||n.step||1,ph(r)?ph(t)&&ph(e)?ype(t,e,r,n):wpe(t,e,Math.max(Math.abs(r),1),n):r!=null&&!d1(r)?Ipe(r,n):LE(t,e,1,r)};h1.exports=LE});var Q1=E((O$e,w1)=>{"use strict";var Bpe=Wb(),B1=FE(),Qpe=(t,e={})=>{let r=(i,n={})=>{let s=B1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(i.isOpen===!0||i.isClose===!0)return l+i.value;if(i.type==="open")return a?l+i.value:"(";if(i.type==="close")return a?l+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":a?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let u=B1.reduce(i.nodes),g=Bpe(...u,_(P({},e),{wrap:!1,toRegex:!0}));if(g.length!==0)return u.length>1&&g.length>1?`(${g})`:g}if(i.nodes)for(let u of i.nodes)c+=r(u,i);return c};return r(t)};w1.exports=Qpe});var S1=E((K$e,b1)=>{"use strict";var bpe=Wb(),v1=NE(),ou=FE(),Il=(t="",e="",r=!1)=>{let i=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ou.flatten(e).map(n=>`{${n}}`):e;for(let n of t)if(Array.isArray(n))for(let s of n)i.push(Il(s,e,r));else for(let s of e)r===!0&&typeof s=="string"&&(s=`{${s}}`),i.push(Array.isArray(s)?Il(n,s,r):n+s);return ou.flatten(i)},vpe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(n,s={})=>{n.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(n.invalid||n.dollar){a.push(Il(a.pop(),v1(n,e)));return}if(n.type==="brace"&&n.invalid!==!0&&n.nodes.length===2){a.push(Il(a.pop(),["{}"]));return}if(n.nodes&&n.ranges>0){let g=ou.reduce(n.nodes);if(ou.exceedsLimit(...g,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=bpe(...g,e);f.length===0&&(f=v1(n,e)),a.push(Il(a.pop(),f)),n.nodes=[];return}let l=ou.encloseBrace(n),c=n.queue,u=n;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let g=0;g{"use strict";x1.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` -`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var N1=E((H$e,P1)=>{"use strict";var Spe=NE(),{MAX_LENGTH:D1,CHAR_BACKSLASH:zb,CHAR_BACKTICK:xpe,CHAR_COMMA:kpe,CHAR_DOT:Ppe,CHAR_LEFT_PARENTHESES:Dpe,CHAR_RIGHT_PARENTHESES:Rpe,CHAR_LEFT_CURLY_BRACE:Fpe,CHAR_RIGHT_CURLY_BRACE:Npe,CHAR_LEFT_SQUARE_BRACKET:R1,CHAR_RIGHT_SQUARE_BRACKET:F1,CHAR_DOUBLE_QUOTE:Lpe,CHAR_SINGLE_QUOTE:Tpe,CHAR_NO_BREAK_SPACE:Mpe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Ope}=k1(),Kpe=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},i=typeof r.maxLength=="number"?Math.min(D1,r.maxLength):D1;if(t.length>i)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${i})`);let n={type:"root",input:t,nodes:[]},s=[n],o=n,a=n,l=0,c=t.length,u=0,g=0,f,h={},p=()=>t[u++],d=m=>{if(m.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&m.type==="text"){a.value+=m.value;return}return o.nodes.push(m),m.parent=o,m.prev=a,a=m,m};for(d({type:"bos"});u0){if(o.ranges>0){o.ranges=0;let m=o.nodes.shift();o.nodes=[m,{type:"text",value:Spe(o)}]}d({type:"comma",value:f}),o.commas++;continue}if(f===Ppe&&g>0&&o.commas===0){let m=o.nodes;if(g===0||m.length===0){d({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){m.pop();let I=m[m.length-1];I.value+=a.value+f,a=I,o.ranges--;continue}d({type:"dot",value:f});continue}d({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(B=>{B.nodes||(B.type==="open"&&(B.isOpen=!0),B.type==="close"&&(B.isClose=!0),B.nodes||(B.type="text"),B.invalid=!0)});let m=s[s.length-1],I=m.nodes.indexOf(o);m.nodes.splice(I,1,...o.nodes)}while(s.length>0);return d({type:"eos"}),n};P1.exports=Kpe});var M1=E((G$e,L1)=>{"use strict";var T1=NE(),Upe=Q1(),Hpe=S1(),Gpe=N1(),Rn=(t,e={})=>{let r=[];if(Array.isArray(t))for(let i of t){let n=Rn.create(i,e);Array.isArray(n)?r.push(...n):r.push(n)}else r=[].concat(Rn.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.parse=(t,e={})=>Gpe(t,e);Rn.stringify=(t,e={})=>typeof t=="string"?T1(Rn.parse(t,e),e):T1(t,e);Rn.compile=(t,e={})=>(typeof t=="string"&&(t=Rn.parse(t,e)),Upe(t,e));Rn.expand=(t,e={})=>{typeof t=="string"&&(t=Rn.parse(t,e));let r=Hpe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Rn.compile(t,e):Rn.expand(t,e);L1.exports=Rn});var dh=E((j$e,O1)=>{"use strict";var jpe=require("path"),io="\\\\/",K1=`[^${io}]`,ea="\\.",Ype="\\+",qpe="\\?",TE="\\/",Jpe="(?=.)",U1="[^/]",Vb=`(?:${TE}|$)`,H1=`(?:^|${TE})`,_b=`${ea}{1,2}${Vb}`,Wpe=`(?!${ea})`,zpe=`(?!${H1}${_b})`,Vpe=`(?!${ea}{0,1}${Vb})`,_pe=`(?!${_b})`,Xpe=`[^.${TE}]`,Zpe=`${U1}*?`,G1={DOT_LITERAL:ea,PLUS_LITERAL:Ype,QMARK_LITERAL:qpe,SLASH_LITERAL:TE,ONE_CHAR:Jpe,QMARK:U1,END_ANCHOR:Vb,DOTS_SLASH:_b,NO_DOT:Wpe,NO_DOTS:zpe,NO_DOT_SLASH:Vpe,NO_DOTS_SLASH:_pe,QMARK_NO_DOT:Xpe,STAR:Zpe,START_ANCHOR:H1},$pe=_(P({},G1),{SLASH_LITERAL:`[${io}]`,QMARK:K1,STAR:`${K1}*?`,DOTS_SLASH:`${ea}{1,2}(?:[${io}]|$)`,NO_DOT:`(?!${ea})`,NO_DOTS:`(?!(?:^|[${io}])${ea}{1,2}(?:[${io}]|$))`,NO_DOT_SLASH:`(?!${ea}{0,1}(?:[${io}]|$))`,NO_DOTS_SLASH:`(?!${ea}{1,2}(?:[${io}]|$))`,QMARK_NO_DOT:`[^.${io}]`,START_ANCHOR:`(?:^|[${io}])`,END_ANCHOR:`(?:[${io}]|$)`}),ede={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};O1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:ede,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:jpe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?$pe:G1}}});var Ch=E(cn=>{"use strict";var tde=require("path"),rde=process.platform==="win32",{REGEX_BACKSLASH:ide,REGEX_REMOVE_BACKSLASH:nde,REGEX_SPECIAL_CHARS:sde,REGEX_SPECIAL_CHARS_GLOBAL:ode}=dh();cn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);cn.hasRegexChars=t=>sde.test(t);cn.isRegexChar=t=>t.length===1&&cn.hasRegexChars(t);cn.escapeRegex=t=>t.replace(ode,"\\$1");cn.toPosixSlashes=t=>t.replace(ide,"/");cn.removeBackslashes=t=>t.replace(nde,e=>e==="\\"?"":e);cn.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};cn.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:rde===!0||tde.sep==="\\";cn.escapeLast=(t,e,r)=>{let i=t.lastIndexOf(e,r);return i===-1?t:t[i-1]==="\\"?cn.escapeLast(t,e,i-1):`${t.slice(0,i)}\\${t.slice(i)}`};cn.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};cn.wrapOutput=(t,e={},r={})=>{let i=r.contains?"":"^",n=r.contains?"":"$",s=`${i}(?:${t})${n}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var X1=E((q$e,j1)=>{"use strict";var Y1=Ch(),{CHAR_ASTERISK:Xb,CHAR_AT:ade,CHAR_BACKWARD_SLASH:mh,CHAR_COMMA:Ade,CHAR_DOT:Zb,CHAR_EXCLAMATION_MARK:q1,CHAR_FORWARD_SLASH:J1,CHAR_LEFT_CURLY_BRACE:$b,CHAR_LEFT_PARENTHESES:ev,CHAR_LEFT_SQUARE_BRACKET:lde,CHAR_PLUS:cde,CHAR_QUESTION_MARK:W1,CHAR_RIGHT_CURLY_BRACE:ude,CHAR_RIGHT_PARENTHESES:z1,CHAR_RIGHT_SQUARE_BRACKET:gde}=dh(),V1=t=>t===J1||t===mh,_1=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?Infinity:1)},fde=(t,e)=>{let r=e||{},i=t.length-1,n=r.parts===!0||r.scanToEnd===!0,s=[],o=[],a=[],l=t,c=-1,u=0,g=0,f=!1,h=!1,p=!1,d=!1,m=!1,I=!1,B=!1,b=!1,R=!1,H=0,L,K,J={value:"",depth:0,isGlob:!1},ne=()=>c>=i,q=()=>l.charCodeAt(c+1),A=()=>(L=K,l.charCodeAt(++c));for(;c0&&(W=l.slice(0,u),l=l.slice(u),g-=u),V&&p===!0&&g>0?(V=l.slice(0,g),X=l.slice(g)):p===!0?(V="",X=l):V=l,V&&V!==""&&V!=="/"&&V!==l&&V1(V.charCodeAt(V.length-1))&&(V=V.slice(0,-1)),r.unescape===!0&&(X&&(X=Y1.removeBackslashes(X)),V&&B===!0&&(V=Y1.removeBackslashes(V)));let F={prefix:W,input:t,start:u,base:V,glob:X,isBrace:f,isBracket:h,isGlob:p,isExtglob:d,isGlobstar:m,negated:b};if(r.tokens===!0&&(F.maxDepth=0,V1(K)||o.push(J),F.tokens=o),r.parts===!0||r.tokens===!0){let D;for(let he=0;he{"use strict";var ME=dh(),Fn=Ch(),{MAX_LENGTH:OE,POSIX_REGEX_SOURCE:hde,REGEX_NON_SPECIAL_CHARS:pde,REGEX_SPECIAL_CHARS_BACKREF:dde,REPLACEMENTS:$1}=ME,Cde=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch(i){return t.map(n=>Fn.escapeRegex(n)).join("..")}return r},au=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,eU=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=$1[t]||t;let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OE,r.maxLength):OE,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);let s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",l=Fn.isWindows(e),c=ME.globChars(l),u=ME.extglobChars(c),{DOT_LITERAL:g,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:p,DOTS_SLASH:d,NO_DOT:m,NO_DOT_SLASH:I,NO_DOTS_SLASH:B,QMARK:b,QMARK_NO_DOT:R,STAR:H,START_ANCHOR:L}=c,K=G=>`(${a}(?:(?!${L}${G.dot?d:g}).)*?)`,J=r.dot?"":m,ne=r.dot?b:R,q=r.bash===!0?K(r):H;r.capture&&(q=`(${q})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Fn.removePrefix(t,A),n=t.length;let V=[],W=[],X=[],F=s,D,he=()=>A.index===n-1,pe=A.peek=(G=1)=>t[A.index+G],Ne=A.advance=()=>t[++A.index],Pe=()=>t.slice(A.index+1),qe=(G="",Ce=0)=>{A.consumed+=G,A.index+=Ce},re=G=>{A.output+=G.output!=null?G.output:G.value,qe(G.value)},se=()=>{let G=1;for(;pe()==="!"&&(pe(2)!=="("||pe(3)==="?");)Ne(),A.start++,G++;return G%2==0?!1:(A.negated=!0,A.start++,!0)},be=G=>{A[G]++,X.push(G)},ae=G=>{A[G]--,X.pop()},Ae=G=>{if(F.type==="globstar"){let Ce=A.braces>0&&(G.type==="comma"||G.type==="brace"),ee=G.extglob===!0||V.length&&(G.type==="pipe"||G.type==="paren");G.type!=="slash"&&G.type!=="paren"&&!Ce&&!ee&&(A.output=A.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=q,A.output+=F.output)}if(V.length&&G.type!=="paren"&&!u[G.value]&&(V[V.length-1].inner+=G.value),(G.value||G.output)&&re(G),F&&F.type==="text"&&G.type==="text"){F.value+=G.value,F.output=(F.output||"")+G.value;return}G.prev=F,o.push(G),F=G},De=(G,Ce)=>{let ee=_(P({},u[Ce]),{conditions:1,inner:""});ee.prev=F,ee.parens=A.parens,ee.output=A.output;let Ue=(r.capture?"(":"")+ee.open;be("parens"),Ae({type:G,value:Ce,output:A.output?"":p}),Ae({type:"paren",extglob:!0,value:Ne(),output:Ue}),V.push(ee)},$=G=>{let Ce=G.close+(r.capture?")":"");if(G.type==="negate"){let ee=q;G.inner&&G.inner.length>1&&G.inner.includes("/")&&(ee=K(r)),(ee!==q||he()||/^\)+$/.test(Pe()))&&(Ce=G.close=`)$))${ee}`),G.prev.type==="bos"&&(A.negatedExtglob=!0)}Ae({type:"paren",extglob:!0,value:D,output:Ce}),ae("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let G=!1,Ce=t.replace(dde,(ee,Ue,Oe,vt,dt,ri)=>vt==="\\"?(G=!0,ee):vt==="?"?Ue?Ue+vt+(dt?b.repeat(dt.length):""):ri===0?ne+(dt?b.repeat(dt.length):""):b.repeat(Oe.length):vt==="."?g.repeat(Oe.length):vt==="*"?Ue?Ue+vt+(dt?q:""):q:Ue?ee:`\\${ee}`);return G===!0&&(r.unescape===!0?Ce=Ce.replace(/\\/g,""):Ce=Ce.replace(/\\+/g,ee=>ee.length%2==0?"\\\\":ee?"\\":"")),Ce===t&&r.contains===!0?(A.output=t,A):(A.output=Fn.wrapOutput(Ce,A,e),A)}for(;!he();){if(D=Ne(),D==="\0")continue;if(D==="\\"){let ee=pe();if(ee==="/"&&r.bash!==!0||ee==="."||ee===";")continue;if(!ee){D+="\\",Ae({type:"text",value:D});continue}let Ue=/^\\+/.exec(Pe()),Oe=0;if(Ue&&Ue[0].length>2&&(Oe=Ue[0].length,A.index+=Oe,Oe%2!=0&&(D+="\\")),r.unescape===!0?D=Ne()||"":D+=Ne()||"",A.brackets===0){Ae({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(r.posix!==!1&&D===":"){let ee=F.value.slice(1);if(ee.includes("[")&&(F.posix=!0,ee.includes(":"))){let Ue=F.value.lastIndexOf("["),Oe=F.value.slice(0,Ue),vt=F.value.slice(Ue+2),dt=hde[vt];if(dt){F.value=Oe+dt,A.backtrack=!0,Ne(),!s.output&&o.indexOf(F)===1&&(s.output=p);continue}}}(D==="["&&pe()!==":"||D==="-"&&pe()==="]")&&(D=`\\${D}`),D==="]"&&(F.value==="["||F.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&F.value==="["&&(D="^"),F.value+=D,re({value:D});continue}if(A.quotes===1&&D!=='"'){D=Fn.escapeRegex(D),F.value+=D,re({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&Ae({type:"text",value:D});continue}if(D==="("){be("parens"),Ae({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(au("opening","("));let ee=V[V.length-1];if(ee&&A.parens===ee.parens+1){$(V.pop());continue}Ae({type:"paren",value:D,output:A.parens?")":"\\)"}),ae("parens");continue}if(D==="["){if(r.nobracket===!0||!Pe().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));D=`\\${D}`}else be("brackets");Ae({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){Ae({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(au("opening","["));Ae({type:"text",value:D,output:`\\${D}`});continue}ae("brackets");let ee=F.value.slice(1);if(F.posix!==!0&&ee[0]==="^"&&!ee.includes("/")&&(D=`/${D}`),F.value+=D,re({value:D}),r.literalBrackets===!1||Fn.hasRegexChars(ee))continue;let Ue=Fn.escapeRegex(F.value);if(A.output=A.output.slice(0,-F.value.length),r.literalBrackets===!0){A.output+=Ue,F.value=Ue;continue}F.value=`(${a}${Ue}|${F.value})`,A.output+=F.value;continue}if(D==="{"&&r.nobrace!==!0){be("braces");let ee={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};W.push(ee),Ae(ee);continue}if(D==="}"){let ee=W[W.length-1];if(r.nobrace===!0||!ee){Ae({type:"text",value:D,output:D});continue}let Ue=")";if(ee.dots===!0){let Oe=o.slice(),vt=[];for(let dt=Oe.length-1;dt>=0&&(o.pop(),Oe[dt].type!=="brace");dt--)Oe[dt].type!=="dots"&&vt.unshift(Oe[dt].value);Ue=Cde(vt,r),A.backtrack=!0}if(ee.comma!==!0&&ee.dots!==!0){let Oe=A.output.slice(0,ee.outputIndex),vt=A.tokens.slice(ee.tokensIndex);ee.value=ee.output="\\{",D=Ue="\\}",A.output=Oe;for(let dt of vt)A.output+=dt.output||dt.value}Ae({type:"brace",value:D,output:Ue}),ae("braces"),W.pop();continue}if(D==="|"){V.length>0&&V[V.length-1].conditions++,Ae({type:"text",value:D});continue}if(D===","){let ee=D,Ue=W[W.length-1];Ue&&X[X.length-1]==="braces"&&(Ue.comma=!0,ee="|"),Ae({type:"comma",value:D,output:ee});continue}if(D==="/"){if(F.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",o.pop(),F=s;continue}Ae({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&F.type==="dot"){F.value==="."&&(F.output=g);let ee=W[W.length-1];F.type="dots",F.output+=D,F.value+=D,ee.dots=!0;continue}if(A.braces+A.parens===0&&F.type!=="bos"&&F.type!=="slash"){Ae({type:"text",value:D,output:g});continue}Ae({type:"dot",value:D,output:g});continue}if(D==="?"){if(!(F&&F.value==="(")&&r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("qmark",D);continue}if(F&&F.type==="paren"){let Ue=pe(),Oe=D;if(Ue==="<"&&!Fn.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(F.value==="("&&!/[!=<:]/.test(Ue)||Ue==="<"&&!/<([!=]|\w+>)/.test(Pe()))&&(Oe=`\\${D}`),Ae({type:"text",value:D,output:Oe});continue}if(r.dot!==!0&&(F.type==="slash"||F.type==="bos")){Ae({type:"qmark",value:D,output:R});continue}Ae({type:"qmark",value:D,output:b});continue}if(D==="!"){if(r.noextglob!==!0&&pe()==="("&&(pe(2)!=="?"||!/[!=<:]/.test(pe(3)))){De("negate",D);continue}if(r.nonegate!==!0&&A.index===0){se();continue}}if(D==="+"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("plus",D);continue}if(F&&F.value==="("||r.regex===!1){Ae({type:"plus",value:D,output:f});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||A.parens>0){Ae({type:"plus",value:D});continue}Ae({type:"plus",value:f});continue}if(D==="@"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){Ae({type:"at",extglob:!0,value:D,output:""});continue}Ae({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let ee=pde.exec(Pe());ee&&(D+=ee[0],A.index+=ee[0].length),Ae({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=q,A.backtrack=!0,A.globstar=!0,qe(D);continue}let G=Pe();if(r.noextglob!==!0&&/^\([^?]/.test(G)){De("star",D);continue}if(F.type==="star"){if(r.noglobstar===!0){qe(D);continue}let ee=F.prev,Ue=ee.prev,Oe=ee.type==="slash"||ee.type==="bos",vt=Ue&&(Ue.type==="star"||Ue.type==="globstar");if(r.bash===!0&&(!Oe||G[0]&&G[0]!=="/")){Ae({type:"star",value:D,output:""});continue}let dt=A.braces>0&&(ee.type==="comma"||ee.type==="brace"),ri=V.length&&(ee.type==="pipe"||ee.type==="paren");if(!Oe&&ee.type!=="paren"&&!dt&&!ri){Ae({type:"star",value:D,output:""});continue}for(;G.slice(0,3)==="/**";){let ii=t[A.index+4];if(ii&&ii!=="/")break;G=G.slice(3),qe("/**",3)}if(ee.type==="bos"&&he()){F.type="globstar",F.value+=D,F.output=K(r),A.output=F.output,A.globstar=!0,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&!vt&&he()){A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=K(r)+(r.strictSlashes?")":"|$)"),F.value+=D,A.globstar=!0,A.output+=ee.output+F.output,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&G[0]==="/"){let ii=G[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=`${K(r)}${h}|${h}${ii})`,F.value+=D,A.output+=ee.output+F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}if(ee.type==="bos"&&G[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${h}|${K(r)}${h})`,A.output=F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-F.output.length),F.type="globstar",F.output=K(r),F.value+=D,A.output+=F.output,A.globstar=!0,qe(D);continue}let Ce={type:"star",value:D,output:q};if(r.bash===!0){Ce.output=".*?",(F.type==="bos"||F.type==="slash")&&(Ce.output=J+Ce.output),Ae(Ce);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&r.regex===!0){Ce.output=D,Ae(Ce);continue}(A.index===A.start||F.type==="slash"||F.type==="dot")&&(F.type==="dot"?(A.output+=I,F.output+=I):r.dot===!0?(A.output+=B,F.output+=B):(A.output+=J,F.output+=J),pe()!=="*"&&(A.output+=p,F.output+=p)),Ae(Ce)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));A.output=Fn.escapeLast(A.output,"["),ae("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing",")"));A.output=Fn.escapeLast(A.output,"("),ae("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","}"));A.output=Fn.escapeLast(A.output,"{"),ae("braces")}if(r.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket")&&Ae({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let G of A.tokens)A.output+=G.output!=null?G.output:G.value,G.suffix&&(A.output+=G.suffix)}return A};eU.fastpaths=(t,e)=>{let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OE,r.maxLength):OE,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);t=$1[t]||t;let s=Fn.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:g,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:p}=ME.globChars(s),d=r.dot?g:u,m=r.dot?f:u,I=r.capture?"":"?:",B={negated:!1,prefix:""},b=r.bash===!0?".*?":h;r.capture&&(b=`(${b})`);let R=J=>J.noglobstar===!0?b:`(${I}(?:(?!${p}${J.dot?c:o}).)*?)`,H=J=>{switch(J){case"*":return`${d}${l}${b}`;case".*":return`${o}${l}${b}`;case"*.*":return`${d}${b}${o}${l}${b}`;case"*/*":return`${d}${b}${a}${l}${m}${b}`;case"**":return d+R(r);case"**/*":return`(?:${d}${R(r)}${a})?${m}${l}${b}`;case"**/*.*":return`(?:${d}${R(r)}${a})?${m}${b}${o}${l}${b}`;case"**/.*":return`(?:${d}${R(r)}${a})?${o}${l}${b}`;default:{let ne=/^(.*?)\.(\w+)$/.exec(J);if(!ne)return;let q=H(ne[1]);return q?q+o+ne[2]:void 0}}},L=Fn.removePrefix(t,B),K=H(L);return K&&r.strictSlashes!==!0&&(K+=`${a}?`),K};Z1.exports=eU});var iU=E((W$e,rU)=>{"use strict";var mde=require("path"),Ede=X1(),tv=tU(),rv=Ch(),Ide=dh(),yde=t=>t&&typeof t=="object"&&!Array.isArray(t),Dr=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(f=>Dr(f,e,r));return f=>{for(let h of u){let p=h(f);if(p)return p}return!1}}let i=yde(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let n=e||{},s=rv.isWindows(e),o=i?Dr.compileRe(t,e):Dr.makeRe(t,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(n.ignore){let u=_(P({},e),{ignore:null,onMatch:null,onResult:null});l=Dr(n.ignore,u,r)}let c=(u,g=!1)=>{let{isMatch:f,match:h,output:p}=Dr.test(u,o,e,{glob:t,posix:s}),d={glob:t,state:a,regex:o,posix:s,input:u,output:p,match:h,isMatch:f};return typeof n.onResult=="function"&&n.onResult(d),f===!1?(d.isMatch=!1,g?d:!1):l(u)?(typeof n.onIgnore=="function"&&n.onIgnore(d),d.isMatch=!1,g?d:!1):(typeof n.onMatch=="function"&&n.onMatch(d),g?d:!0)};return r&&(c.state=a),c};Dr.test=(t,e,r,{glob:i,posix:n}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let s=r||{},o=s.format||(n?rv.toPosixSlashes:null),a=t===i,l=a&&o?o(t):t;return a===!1&&(l=o?o(t):t,a=l===i),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Dr.matchBase(t,e,r,n):a=e.exec(l)),{isMatch:Boolean(a),match:a,output:l}};Dr.matchBase=(t,e,r,i=rv.isWindows(r))=>(e instanceof RegExp?e:Dr.makeRe(e,r)).test(mde.basename(t));Dr.isMatch=(t,e,r)=>Dr(e,r)(t);Dr.parse=(t,e)=>Array.isArray(t)?t.map(r=>Dr.parse(r,e)):tv(t,_(P({},e),{fastpaths:!1}));Dr.scan=(t,e)=>Ede(t,e);Dr.compileRe=(t,e,r=!1,i=!1)=>{if(r===!0)return t.output;let n=e||{},s=n.contains?"":"^",o=n.contains?"":"$",a=`${s}(?:${t.output})${o}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let l=Dr.toRegex(a,e);return i===!0&&(l.state=t),l};Dr.makeRe=(t,e,r=!1,i=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let n=e||{},s={negated:!1,fastpaths:!0},o="",a;return t.startsWith("./")&&(t=t.slice(2),o=s.prefix="./"),n.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a=tv.fastpaths(t,e)),a===void 0?(s=tv(t,e),s.prefix=o+(s.prefix||"")):s.output=a,Dr.compileRe(s,e,r,i)};Dr.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Dr.constants=Ide;rU.exports=Dr});var iv=E((z$e,nU)=>{"use strict";nU.exports=iU()});var Nn=E((V$e,sU)=>{"use strict";var oU=require("util"),aU=M1(),no=iv(),nv=Ch(),AU=t=>typeof t=="string"&&(t===""||t==="./"),pr=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let i=new Set,n=new Set,s=new Set,o=0,a=u=>{s.add(u.output),r&&r.onResult&&r.onResult(u)};for(let u=0;u!i.has(u));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};pr.match=pr;pr.matcher=(t,e)=>no(t,e);pr.isMatch=(t,e,r)=>no(e,r)(t);pr.any=pr.isMatch;pr.not=(t,e,r={})=>{e=[].concat(e).map(String);let i=new Set,n=[],s=a=>{r.onResult&&r.onResult(a),n.push(a.output)},o=pr(t,e,_(P({},r),{onResult:s}));for(let a of n)o.includes(a)||i.add(a);return[...i]};pr.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);if(Array.isArray(e))return e.some(i=>pr.contains(t,i,r));if(typeof e=="string"){if(AU(t)||AU(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return pr.isMatch(t,e,_(P({},r),{contains:!0}))};pr.matchKeys=(t,e,r)=>{if(!nv.isObject(t))throw new TypeError("Expected the first argument to be an object");let i=pr(Object.keys(t),e,r),n={};for(let s of i)n[s]=t[s];return n};pr.some=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(i.some(o=>s(o)))return!0}return!1};pr.every=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(!i.every(o=>s(o)))return!1}return!0};pr.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);return[].concat(e).every(i=>no(i,r)(t))};pr.capture=(t,e,r)=>{let i=nv.isWindows(r),s=no.makeRe(String(t),_(P({},r),{capture:!0})).exec(i?nv.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};pr.makeRe=(...t)=>no.makeRe(...t);pr.scan=(...t)=>no.scan(...t);pr.parse=(t,e)=>{let r=[];for(let i of[].concat(t||[]))for(let n of aU(String(i),e))r.push(no.parse(n,e));return r};pr.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:aU(t,e)};pr.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return pr.braces(t,_(P({},e),{expand:!0}))};sU.exports=pr});var cU=E((_$e,lU)=>{"use strict";lU.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var gU=E((X$e,uU)=>{"use strict";var wde=cU();uU.exports=t=>typeof t=="string"?t.replace(wde(),""):t});var lu={};it(lu,{KeyRelationship:()=>Bl,applyCascade:()=>fv,base64RegExp:()=>CU,colorStringAlphaRegExp:()=>dU,colorStringRegExp:()=>pU,computeKey:()=>rA,getPrintable:()=>Mr,hasExactLength:()=>wU,hasForbiddenKeys:()=>eCe,hasKeyRelationship:()=>pv,hasMaxLength:()=>Mde,hasMinLength:()=>Tde,hasMutuallyExclusiveKeys:()=>tCe,hasRequiredKeys:()=>$de,hasUniqueItems:()=>Ode,isArray:()=>xde,isAtLeast:()=>Hde,isAtMost:()=>Gde,isBase64:()=>Xde,isBoolean:()=>bde,isDate:()=>Sde,isDict:()=>Pde,isEnum:()=>Yi,isHexColor:()=>_de,isISO8601:()=>Vde,isInExclusiveRange:()=>Yde,isInInclusiveRange:()=>jde,isInstanceOf:()=>Rde,isInteger:()=>qde,isJSON:()=>Zde,isLiteral:()=>Bde,isLowerCase:()=>Jde,isNegative:()=>Kde,isNullable:()=>Lde,isNumber:()=>vde,isObject:()=>Dde,isOneOf:()=>Fde,isOptional:()=>Nde,isPositive:()=>Ude,isString:()=>gv,isTuple:()=>kde,isUUID4:()=>zde,isUnknown:()=>yU,isUpperCase:()=>Wde,iso8601RegExp:()=>uv,makeCoercionFn:()=>wl,makeSetter:()=>IU,makeTrait:()=>EU,makeValidator:()=>Ct,matchesRegExp:()=>hv,plural:()=>GE,pushError:()=>at,simpleKeyRegExp:()=>hU,uuid4RegExp:()=>mU});function Ct({test:t}){return EU(t)()}function Mr(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function rA(t,e){var r,i,n;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:hU.test(e)?`${(i=t==null?void 0:t.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=t==null?void 0:t.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function wl(t,e){return r=>{let i=t[e];return t[e]=r,wl(t,e).bind(null,i)}}function IU(t,e){return r=>{t[e]=r}}function GE(t,e,r){return t===1?e:r}function at({errors:t,p:e}={},r){return t==null||t.push(`${e!=null?e:"."}: ${r}`),!1}function Bde(t){return Ct({test:(e,r)=>e!==t?at(r,`Expected a literal (got ${Mr(t)})`):!0})}function Yi(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return Ct({test:(i,n)=>r.has(i)?!0:at(n,`Expected a valid enumeration value (got ${Mr(i)})`)})}var hU,pU,dU,CU,mU,uv,EU,yU,gv,Qde,bde,vde,Sde,xde,kde,Pde,Dde,Rde,Fde,fv,Nde,Lde,Tde,Mde,wU,Ode,Kde,Ude,Hde,Gde,jde,Yde,qde,hv,Jde,Wde,zde,Vde,_de,Xde,Zde,$de,eCe,tCe,Bl,rCe,pv,Ss=Yfe(()=>{hU=/^[a-zA-Z_][a-zA-Z0-9_]*$/,pU=/^#[0-9a-f]{6}$/i,dU=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,CU=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,mU=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,uv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,EU=t=>()=>t;yU=()=>Ct({test:(t,e)=>!0});gv=()=>Ct({test:(t,e)=>typeof t!="string"?at(e,`Expected a string (got ${Mr(t)})`):!0});Qde=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),bde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i=Qde.get(t);if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a boolean (got ${Mr(t)})`)}return!0}}),vde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch(s){}if(typeof n=="number")if(JSON.stringify(n)===t)i=n;else return at(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a number (got ${Mr(t)})`)}return!0}}),Sde=()=>Ct({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"&&uv.test(t))i=new Date(t);else{let n;if(typeof t=="string"){let s;try{s=JSON.parse(t)}catch(o){}typeof s=="number"&&(n=s)}else typeof t=="number"&&(n=t);if(typeof n!="undefined")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return at(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a date (got ${Mr(t)})`)}return!0}}),xde=(t,{delimiter:e}={})=>Ct({test:(r,i)=>{var n;if(typeof r=="string"&&typeof e!="undefined"&&typeof(i==null?void 0:i.coercions)!="undefined"){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");r=r.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,r)])}if(!Array.isArray(r))return at(i,`Expected an array (got ${Mr(r)})`);let s=!0;for(let o=0,a=r.length;o{let r=wU(t.length);return Ct({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e!="undefined"&&typeof(n==null?void 0:n.coercions)!="undefined"){if(typeof(n==null?void 0:n.coercion)=="undefined")return at(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return at(n,`Expected a tuple (got ${Mr(i)})`);let o=r(i,Object.assign({},n));for(let a=0,l=i.length;aCt({test:(r,i)=>{if(typeof r!="object"||r===null)return at(i,`Expected an object (got ${Mr(r)})`);let n=Object.keys(r),s=!0;for(let o=0,a=n.length;o{let r=Object.keys(t);return Ct({test:(i,n)=>{if(typeof i!="object"||i===null)return at(n,`Expected an object (got ${Mr(i)})`);let s=new Set([...r,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(t,l)?t[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c!="undefined"?a=c(u,Object.assign(Object.assign({},n),{p:rA(n,l),coercion:wl(i,l)}))&&a:e===null?a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),`Extraneous property (got ${Mr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:IU(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Rde=t=>Ct({test:(e,r)=>e instanceof t?!0:at(r,`Expected an instance of ${t.name} (got ${Mr(e)})`)}),Fde=(t,{exclusive:e=!1}={})=>Ct({test:(r,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)!="undefined"?[]:void 0;for(let c=0,u=t.length;c1?at(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),fv=(t,e)=>Ct({test:(r,i)=>{var n,s;let o={value:r},a=typeof(i==null?void 0:i.coercions)!="undefined"?wl(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)!="undefined"?[]:void 0;if(!t(r,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l!="undefined")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)!="undefined"){if(o.value!==r){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Nde=t=>Ct({test:(e,r)=>typeof e=="undefined"?!0:t(e,r)}),Lde=t=>Ct({test:(e,r)=>e===null?!0:t(e,r)}),Tde=t=>Ct({test:(e,r)=>e.length>=t?!0:at(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),Mde=t=>Ct({test:(e,r)=>e.length<=t?!0:at(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),wU=t=>Ct({test:(e,r)=>e.length!==t?at(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),Ode=({map:t}={})=>Ct({test:(e,r)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sCt({test:(t,e)=>t<=0?!0:at(e,`Expected to be negative (got ${t})`)}),Ude=()=>Ct({test:(t,e)=>t>=0?!0:at(e,`Expected to be positive (got ${t})`)}),Hde=t=>Ct({test:(e,r)=>e>=t?!0:at(r,`Expected to be at least ${t} (got ${e})`)}),Gde=t=>Ct({test:(e,r)=>e<=t?!0:at(r,`Expected to be at most ${t} (got ${e})`)}),jde=(t,e)=>Ct({test:(r,i)=>r>=t&&r<=e?!0:at(i,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),Yde=(t,e)=>Ct({test:(r,i)=>r>=t&&rCt({test:(e,r)=>e!==Math.round(e)?at(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:at(r,`Expected to be a safe integer (got ${e})`)}),hv=t=>Ct({test:(e,r)=>t.test(e)?!0:at(r,`Expected to match the pattern ${t.toString()} (got ${Mr(e)})`)}),Jde=()=>Ct({test:(t,e)=>t!==t.toLowerCase()?at(e,`Expected to be all-lowercase (got ${t})`):!0}),Wde=()=>Ct({test:(t,e)=>t!==t.toUpperCase()?at(e,`Expected to be all-uppercase (got ${t})`):!0}),zde=()=>Ct({test:(t,e)=>mU.test(t)?!0:at(e,`Expected to be a valid UUID v4 (got ${Mr(t)})`)}),Vde=()=>Ct({test:(t,e)=>uv.test(t)?!1:at(e,`Expected to be a valid ISO 8601 date string (got ${Mr(t)})`)}),_de=({alpha:t=!1})=>Ct({test:(e,r)=>(t?pU.test(e):dU.test(e))?!0:at(r,`Expected to be a valid hexadecimal color string (got ${Mr(e)})`)}),Xde=()=>Ct({test:(t,e)=>CU.test(t)?!0:at(e,`Expected to be a valid base 64 string (got ${Mr(t)})`)}),Zde=(t=yU())=>Ct({test:(e,r)=>{let i;try{i=JSON.parse(e)}catch(n){return at(r,`Expected to be a valid JSON string (got ${Mr(e)})`)}return t(i,r)}}),$de=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?at(i,`Missing required ${GE(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},eCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?at(i,`Forbidden ${GE(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?at(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Bl||(Bl={}));rCe={[Bl.Forbids]:{expect:!1,message:"forbids using"},[Bl.Requires]:{expect:!0,message:"requires using"}},pv=(t,e,r,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(r),o=rCe[e];return Ct({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(t)||n.has(a[t]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?at(l,`Property "${t}" ${o.message} ${GE(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var Sh=E(($et,OU)=>{var mCe="2.0.0",ECe=256,ICe=Number.MAX_SAFE_INTEGER||9007199254740991,yCe=16;OU.exports={SEMVER_SPEC_VERSION:mCe,MAX_LENGTH:ECe,MAX_SAFE_INTEGER:ICe,MAX_SAFE_COMPONENT_LENGTH:yCe}});var xh=E((ett,KU)=>{var wCe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};KU.exports=wCe});var Ql=E((iA,UU)=>{var{MAX_SAFE_COMPONENT_LENGTH:yv}=Sh(),BCe=xh();iA=UU.exports={};var QCe=iA.re=[],Je=iA.src=[],We=iA.t={},bCe=0,mt=(t,e,r)=>{let i=bCe++;BCe(i,e),We[t]=i,Je[i]=e,QCe[i]=new RegExp(e,r?"g":void 0)};mt("NUMERICIDENTIFIER","0|[1-9]\\d*");mt("NUMERICIDENTIFIERLOOSE","[0-9]+");mt("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");mt("MAINVERSION",`(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})`);mt("MAINVERSIONLOOSE",`(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})`);mt("PRERELEASEIDENTIFIER",`(?:${Je[We.NUMERICIDENTIFIER]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASEIDENTIFIERLOOSE",`(?:${Je[We.NUMERICIDENTIFIERLOOSE]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASE",`(?:-(${Je[We.PRERELEASEIDENTIFIER]}(?:\\.${Je[We.PRERELEASEIDENTIFIER]})*))`);mt("PRERELEASELOOSE",`(?:-?(${Je[We.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${Je[We.PRERELEASEIDENTIFIERLOOSE]})*))`);mt("BUILDIDENTIFIER","[0-9A-Za-z-]+");mt("BUILD",`(?:\\+(${Je[We.BUILDIDENTIFIER]}(?:\\.${Je[We.BUILDIDENTIFIER]})*))`);mt("FULLPLAIN",`v?${Je[We.MAINVERSION]}${Je[We.PRERELEASE]}?${Je[We.BUILD]}?`);mt("FULL",`^${Je[We.FULLPLAIN]}$`);mt("LOOSEPLAIN",`[v=\\s]*${Je[We.MAINVERSIONLOOSE]}${Je[We.PRERELEASELOOSE]}?${Je[We.BUILD]}?`);mt("LOOSE",`^${Je[We.LOOSEPLAIN]}$`);mt("GTLT","((?:<|>)?=?)");mt("XRANGEIDENTIFIERLOOSE",`${Je[We.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);mt("XRANGEIDENTIFIER",`${Je[We.NUMERICIDENTIFIER]}|x|X|\\*`);mt("XRANGEPLAIN",`[v=\\s]*(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:${Je[We.PRERELEASE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGEPLAINLOOSE",`[v=\\s]*(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:${Je[We.PRERELEASELOOSE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAIN]}$`);mt("XRANGELOOSE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAINLOOSE]}$`);mt("COERCE",`(^|[^\\d])(\\d{1,${yv}})(?:\\.(\\d{1,${yv}}))?(?:\\.(\\d{1,${yv}}))?(?:$|[^\\d])`);mt("COERCERTL",Je[We.COERCE],!0);mt("LONETILDE","(?:~>?)");mt("TILDETRIM",`(\\s*)${Je[We.LONETILDE]}\\s+`,!0);iA.tildeTrimReplace="$1~";mt("TILDE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAIN]}$`);mt("TILDELOOSE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("LONECARET","(?:\\^)");mt("CARETTRIM",`(\\s*)${Je[We.LONECARET]}\\s+`,!0);iA.caretTrimReplace="$1^";mt("CARET",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAIN]}$`);mt("CARETLOOSE",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("COMPARATORLOOSE",`^${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]})$|^$`);mt("COMPARATOR",`^${Je[We.GTLT]}\\s*(${Je[We.FULLPLAIN]})$|^$`);mt("COMPARATORTRIM",`(\\s*)${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]}|${Je[We.XRANGEPLAIN]})`,!0);iA.comparatorTrimReplace="$1$2$3";mt("HYPHENRANGE",`^\\s*(${Je[We.XRANGEPLAIN]})\\s+-\\s+(${Je[We.XRANGEPLAIN]})\\s*$`);mt("HYPHENRANGELOOSE",`^\\s*(${Je[We.XRANGEPLAINLOOSE]})\\s+-\\s+(${Je[We.XRANGEPLAINLOOSE]})\\s*$`);mt("STAR","(<|>)?=?\\s*\\*");mt("GTE0","^\\s*>=\\s*0.0.0\\s*$");mt("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var kh=E((ttt,HU)=>{var vCe=["includePrerelease","loose","rtl"],SCe=t=>t?typeof t!="object"?{loose:!0}:vCe.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};HU.exports=SCe});var zE=E((rtt,GU)=>{var jU=/^[0-9]+$/,YU=(t,e)=>{let r=jU.test(t),i=jU.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:tYU(e,t);GU.exports={compareIdentifiers:YU,rcompareIdentifiers:xCe}});var bi=E((itt,qU)=>{var VE=xh(),{MAX_LENGTH:JU,MAX_SAFE_INTEGER:_E}=Sh(),{re:WU,t:zU}=Ql(),kCe=kh(),{compareIdentifiers:Ph}=zE(),_n=class{constructor(e,r){if(r=kCe(r),e instanceof _n){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>JU)throw new TypeError(`version is longer than ${JU} characters`);VE("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?WU[zU.LOOSE]:WU[zU.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>_E||this.major<0)throw new TypeError("Invalid major version");if(this.minor>_E||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>_E||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s<_E)return s}return n}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(VE("SemVer.compare",this.version,this.options,e),!(e instanceof _n)){if(typeof e=="string"&&e===this.version)return 0;e=new _n(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof _n||(e=new _n(e,this.options)),Ph(this.major,e.major)||Ph(this.minor,e.minor)||Ph(this.patch,e.patch)}comparePre(e){if(e instanceof _n||(e=new _n(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let i=this.prerelease[r],n=e.prerelease[r];if(VE("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}compareBuild(e){e instanceof _n||(e=new _n(e,this.options));let r=0;do{let i=this.build[r],n=e.build[r];if(VE("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}inc(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r),this.inc("pre",r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};qU.exports=_n});var bl=E((ntt,VU)=>{var{MAX_LENGTH:PCe}=Sh(),{re:_U,t:XU}=Ql(),ZU=bi(),DCe=kh(),RCe=(t,e)=>{if(e=DCe(e),t instanceof ZU)return t;if(typeof t!="string"||t.length>PCe||!(e.loose?_U[XU.LOOSE]:_U[XU.FULL]).test(t))return null;try{return new ZU(t,e)}catch(i){return null}};VU.exports=RCe});var e2=E((stt,$U)=>{var FCe=bl(),NCe=(t,e)=>{let r=FCe(t,e);return r?r.version:null};$U.exports=NCe});var r2=E((ott,t2)=>{var LCe=bl(),TCe=(t,e)=>{let r=LCe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};t2.exports=TCe});var n2=E((att,i2)=>{var MCe=bi(),OCe=(t,e,r,i)=>{typeof r=="string"&&(i=r,r=void 0);try{return new MCe(t,r).inc(e,i).version}catch(n){return null}};i2.exports=OCe});var Xn=E((Att,s2)=>{var o2=bi(),KCe=(t,e,r)=>new o2(t,r).compare(new o2(e,r));s2.exports=KCe});var XE=E((ltt,a2)=>{var UCe=Xn(),HCe=(t,e,r)=>UCe(t,e,r)===0;a2.exports=HCe});var c2=E((ctt,A2)=>{var l2=bl(),GCe=XE(),jCe=(t,e)=>{if(GCe(t,e))return null;{let r=l2(t),i=l2(e),n=r.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==i[a])return s+a;return o}};A2.exports=jCe});var g2=E((utt,u2)=>{var YCe=bi(),qCe=(t,e)=>new YCe(t,e).major;u2.exports=qCe});var h2=E((gtt,f2)=>{var JCe=bi(),WCe=(t,e)=>new JCe(t,e).minor;f2.exports=WCe});var d2=E((ftt,p2)=>{var zCe=bi(),VCe=(t,e)=>new zCe(t,e).patch;p2.exports=VCe});var m2=E((htt,C2)=>{var _Ce=bl(),XCe=(t,e)=>{let r=_Ce(t,e);return r&&r.prerelease.length?r.prerelease:null};C2.exports=XCe});var I2=E((ptt,E2)=>{var ZCe=Xn(),$Ce=(t,e,r)=>ZCe(e,t,r);E2.exports=$Ce});var w2=E((dtt,y2)=>{var eme=Xn(),tme=(t,e)=>eme(t,e,!0);y2.exports=tme});var ZE=E((Ctt,B2)=>{var Q2=bi(),rme=(t,e,r)=>{let i=new Q2(t,r),n=new Q2(e,r);return i.compare(n)||i.compareBuild(n)};B2.exports=rme});var v2=E((mtt,b2)=>{var ime=ZE(),nme=(t,e)=>t.sort((r,i)=>ime(r,i,e));b2.exports=nme});var x2=E((Ett,S2)=>{var sme=ZE(),ome=(t,e)=>t.sort((r,i)=>sme(i,r,e));S2.exports=ome});var Dh=E((Itt,k2)=>{var ame=Xn(),Ame=(t,e,r)=>ame(t,e,r)>0;k2.exports=Ame});var $E=E((ytt,P2)=>{var lme=Xn(),cme=(t,e,r)=>lme(t,e,r)<0;P2.exports=cme});var wv=E((wtt,D2)=>{var ume=Xn(),gme=(t,e,r)=>ume(t,e,r)!==0;D2.exports=gme});var eI=E((Btt,R2)=>{var fme=Xn(),hme=(t,e,r)=>fme(t,e,r)>=0;R2.exports=hme});var tI=E((Qtt,F2)=>{var pme=Xn(),dme=(t,e,r)=>pme(t,e,r)<=0;F2.exports=dme});var Bv=E((btt,N2)=>{var Cme=XE(),mme=wv(),Eme=Dh(),Ime=eI(),yme=$E(),wme=tI(),Bme=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Cme(t,r,i);case"!=":return mme(t,r,i);case">":return Eme(t,r,i);case">=":return Ime(t,r,i);case"<":return yme(t,r,i);case"<=":return wme(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};N2.exports=Bme});var T2=E((vtt,L2)=>{var Qme=bi(),bme=bl(),{re:rI,t:iI}=Ql(),vme=(t,e)=>{if(t instanceof Qme)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(rI[iI.COERCE]);else{let i;for(;(i=rI[iI.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),rI[iI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;rI[iI.COERCERTL].lastIndex=-1}return r===null?null:bme(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};L2.exports=vme});var O2=E((Stt,M2)=>{"use strict";M2.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Rh=E((xtt,K2)=>{"use strict";K2.exports=Pt;Pt.Node=vl;Pt.create=Pt;function Pt(t){var e=this;if(e instanceof Pt||(e=new Pt),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};Pt.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};Pt.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Pt.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Pt.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Pt;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};Pt.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var Pme=Rh(),Sl=Symbol("max"),ra=Symbol("length"),uu=Symbol("lengthCalculator"),Fh=Symbol("allowStale"),xl=Symbol("maxAge"),ia=Symbol("dispose"),H2=Symbol("noDisposeOnSet"),si=Symbol("lruList"),ks=Symbol("cache"),G2=Symbol("updateAgeOnGet"),Qv=()=>1,j2=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Sl]=e.max||Infinity,i=e.length||Qv;if(this[uu]=typeof i!="function"?Qv:i,this[Fh]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[xl]=e.maxAge||0,this[ia]=e.dispose,this[H2]=e.noDisposeOnSet||!1,this[G2]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Sl]=e||Infinity,Nh(this)}get max(){return this[Sl]}set allowStale(e){this[Fh]=!!e}get allowStale(){return this[Fh]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[xl]=e,Nh(this)}get maxAge(){return this[xl]}set lengthCalculator(e){typeof e!="function"&&(e=Qv),e!==this[uu]&&(this[uu]=e,this[ra]=0,this[si].forEach(r=>{r.length=this[uu](r.value,r.key),this[ra]+=r.length})),Nh(this)}get lengthCalculator(){return this[uu]}get length(){return this[ra]}get itemCount(){return this[si].length}rforEach(e,r){r=r||this;for(let i=this[si].tail;i!==null;){let n=i.prev;q2(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[si].head;i!==null;){let n=i.next;q2(this,e,i,r),i=n}}keys(){return this[si].toArray().map(e=>e.key)}values(){return this[si].toArray().map(e=>e.value)}reset(){this[ia]&&this[si]&&this[si].length&&this[si].forEach(e=>this[ia](e.key,e.value)),this[ks]=new Map,this[si]=new Pme,this[ra]=0}dump(){return this[si].map(e=>nI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[si]}set(e,r,i){if(i=i||this[xl],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[uu](r,e);if(this[ks].has(e)){if(s>this[Sl])return gu(this,this[ks].get(e)),!1;let l=this[ks].get(e).value;return this[ia]&&(this[H2]||this[ia](e,l.value)),l.now=n,l.maxAge=i,l.value=r,this[ra]+=s-l.length,l.length=s,this.get(e),Nh(this),!0}let o=new Y2(e,r,s,n,i);return o.length>this[Sl]?(this[ia]&&this[ia](e,r),!1):(this[ra]+=o.length,this[si].unshift(o),this[ks].set(e,this[si].head),Nh(this),!0)}has(e){if(!this[ks].has(e))return!1;let r=this[ks].get(e).value;return!nI(this,r)}get(e){return bv(this,e,!0)}peek(e){return bv(this,e,!1)}pop(){let e=this[si].tail;return e?(gu(this,e),e.value):null}del(e){gu(this,this[ks].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[ks].forEach((e,r)=>bv(this,r,!1))}},bv=(t,e,r)=>{let i=t[ks].get(e);if(i){let n=i.value;if(nI(t,n)){if(gu(t,i),!t[Fh])return}else r&&(t[G2]&&(i.value.now=Date.now()),t[si].unshiftNode(i));return n.value}},nI=(t,e)=>{if(!e||!e.maxAge&&!t[xl])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[xl]&&r>t[xl]},Nh=t=>{if(t[ra]>t[Sl])for(let e=t[si].tail;t[ra]>t[Sl]&&e!==null;){let r=e.prev;gu(t,e),e=r}},gu=(t,e)=>{if(e){let r=e.value;t[ia]&&t[ia](r.key,r.value),t[ra]-=r.length,t[ks].delete(r.key),t[si].removeNode(e)}},Y2=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},q2=(t,e,r,i)=>{let n=r.value;nI(t,n)&&(gu(t,r),t[Fh]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};U2.exports=j2});var Zn=E((Ptt,W2)=>{var fu=class{constructor(e,r){if(r=Dme(r),e instanceof fu)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new fu(e.raw,r);if(e instanceof vv)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!V2(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&Tme(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=z2.get(i);if(n)return n;let s=this.options.loose,o=s?vi[di.HYPHENRANGELOOSE]:vi[di.HYPHENRANGE];e=e.replace(o,Kme(this.options.includePrerelease)),Rr("hyphen replace",e),e=e.replace(vi[di.COMPARATORTRIM],Fme),Rr("comparator trim",e,vi[di.COMPARATORTRIM]),e=e.replace(vi[di.TILDETRIM],Nme),e=e.replace(vi[di.CARETTRIM],Lme),e=e.split(/\s+/).join(" ");let a=s?vi[di.COMPARATORLOOSE]:vi[di.COMPARATOR],l=e.split(" ").map(f=>Mme(f,this.options)).join(" ").split(/\s+/).map(f=>Ome(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new vv(f,this.options)),c=l.length,u=new Map;for(let f of l){if(V2(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return z2.set(i,g),g}intersects(e,r){if(!(e instanceof fu))throw new TypeError("a Range is required");return this.set.some(i=>_2(i,r)&&e.set.some(n=>_2(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new Rme(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",Tme=t=>t.value==="",_2=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},Mme=(t,e)=>(Rr("comp",t,e),t=jme(t,e),Rr("caret",t),t=Gme(t,e),Rr("tildes",t),t=Yme(t,e),Rr("xrange",t),t=qme(t,e),Rr("stars",t),t),Ji=t=>!t||t.toLowerCase()==="x"||t==="*",Gme=(t,e)=>t.trim().split(/\s+/).map(r=>Jme(r,e)).join(" "),Jme=(t,e)=>{let r=e.loose?vi[di.TILDELOOSE]:vi[di.TILDE];return t.replace(r,(i,n,s,o,a)=>{Rr("tilde",t,i,n,s,o,a);let l;return Ji(n)?l="":Ji(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Ji(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Rr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Rr("tilde return",l),l})},jme=(t,e)=>t.trim().split(/\s+/).map(r=>Wme(r,e)).join(" "),Wme=(t,e)=>{Rr("caret",t,e);let r=e.loose?vi[di.CARETLOOSE]:vi[di.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,l)=>{Rr("caret",t,n,s,o,a,l);let c;return Ji(s)?c="":Ji(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Ji(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Rr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Rr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Rr("caret return",c),c})},Yme=(t,e)=>(Rr("replaceXRanges",t,e),t.split(/\s+/).map(r=>zme(r,e)).join(" ")),zme=(t,e)=>{t=t.trim();let r=e.loose?vi[di.XRANGELOOSE]:vi[di.XRANGE];return t.replace(r,(i,n,s,o,a,l)=>{Rr("xRange",t,i,n,s,o,a,l);let c=Ji(s),u=c||Ji(o),g=u||Ji(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Rr("xRange return",i),i})},qme=(t,e)=>(Rr("replaceStars",t,e),t.trim().replace(vi[di.STAR],"")),Ome=(t,e)=>(Rr("replaceGTE0",t,e),t.trim().replace(vi[e.includePrerelease?di.GTE0PRE:di.GTE0],"")),Kme=t=>(e,r,i,n,s,o,a,l,c,u,g,f,h)=>(Ji(i)?r="":Ji(n)?r=`>=${i}.0.0${t?"-0":""}`:Ji(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ji(c)?l="":Ji(u)?l=`<${+c+1}.0.0-0`:Ji(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:t?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),Ume=(t,e,r)=>{for(let i=0;i0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Lh=E((Dtt,X2)=>{var Th=Symbol("SemVer ANY"),Mh=class{static get ANY(){return Th}constructor(e,r){if(r=Vme(r),e instanceof Mh){if(e.loose===!!r.loose)return e;e=e.value}xv("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Th?this.value="":this.value=this.operator+this.semver.version,xv("comp",this)}parse(e){let r=this.options.loose?Z2[$2.COMPARATORLOOSE]:Z2[$2.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new eH(i[2],this.options.loose):this.semver=Th}toString(){return this.value}test(e){if(xv("Comparator.test",e,this.options.loose),this.semver===Th||e===Th)return!0;if(typeof e=="string")try{e=new eH(e,this.options)}catch(r){return!1}return Sv(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Mh))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new tH(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new tH(this.value,r).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Sv(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=Sv(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};X2.exports=Mh;var Vme=kh(),{re:Z2,t:$2}=Ql(),Sv=Bv(),xv=xh(),eH=bi(),tH=Zn()});var Oh=E((Rtt,rH)=>{var _me=Zn(),Xme=(t,e,r)=>{try{e=new _me(e,r)}catch(i){return!1}return e.test(t)};rH.exports=Xme});var nH=E((Ftt,iH)=>{var Zme=Zn(),$me=(t,e)=>new Zme(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));iH.exports=$me});var oH=E((Ntt,sH)=>{var eEe=bi(),tEe=Zn(),rEe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new tEe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new eEe(i,r))}),i};sH.exports=rEe});var AH=E((Ltt,aH)=>{var iEe=bi(),nEe=Zn(),sEe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new nEe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new iEe(i,r))}),i};aH.exports=sEe});var uH=E((Ttt,lH)=>{var kv=bi(),oEe=Zn(),cH=Dh(),aEe=(t,e)=>{t=new oEe(t,e);let r=new kv("0.0.0");if(t.test(r)||(r=new kv("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i{let a=new kv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||cH(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||cH(r,s))&&(r=s)}return r&&t.test(r)?r:null};lH.exports=aEe});var fH=E((Mtt,gH)=>{var AEe=Zn(),lEe=(t,e)=>{try{return new AEe(t,e).range||"*"}catch(r){return null}};gH.exports=lEe});var sI=E((Ott,hH)=>{var cEe=bi(),pH=Lh(),{ANY:uEe}=pH,gEe=Zn(),fEe=Oh(),dH=Dh(),CH=$E(),hEe=tI(),pEe=eI(),dEe=(t,e,r,i)=>{t=new cEe(t,i),e=new gEe(e,i);let n,s,o,a,l;switch(r){case">":n=dH,s=hEe,o=CH,a=">",l=">=";break;case"<":n=CH,s=pEe,o=dH,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fEe(t,e,i))return!1;for(let c=0;c{h.semver===uEe&&(h=new pH(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(t,f.semver))return!1;if(f.operator===l&&o(t,f.semver))return!1}return!0};hH.exports=dEe});var EH=E((Ktt,mH)=>{var CEe=sI(),mEe=(t,e,r)=>CEe(t,e,">",r);mH.exports=mEe});var yH=E((Utt,IH)=>{var EEe=sI(),IEe=(t,e,r)=>EEe(t,e,"<",r);IH.exports=IEe});var QH=E((Htt,wH)=>{var BH=Zn(),yEe=(t,e,r)=>(t=new BH(t,r),e=new BH(e,r),t.intersects(e));wH.exports=yEe});var vH=E((Gtt,bH)=>{var wEe=Oh(),BEe=Xn();bH.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((u,g)=>BEe(u,g,r));for(let u of o)wEe(u,e,r)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var xH=Zn(),oI=Lh(),{ANY:Pv}=oI,Kh=Oh(),Dv=Xn(),bEe=(t,e,r={})=>{if(t===e)return!0;t=new xH(t,r),e=new xH(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=QEe(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},QEe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Pv){if(e.length===1&&e[0].semver===Pv)return!0;r.includePrerelease?t=[new oI(">=0.0.0-0")]:t=[new oI(">=0.0.0")]}if(e.length===1&&e[0].semver===Pv){if(r.includePrerelease)return!0;e=[new oI(">=0.0.0")]}let i=new Set,n,s;for(let h of t)h.operator===">"||h.operator===">="?n=kH(n,h,r):h.operator==="<"||h.operator==="<="?s=PH(s,h,r):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=Dv(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!Kh(h,String(n),r)||s&&!Kh(h,String(s),r))return null;for(let p of e)if(!Kh(h,String(p),r))return!1;return!0}let a,l,c,u,g=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=kH(n,h,r),a===h&&a!==n)return!1}else if(n.operator===">="&&!Kh(n.semver,String(h),r))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=PH(s,h,r),l===h&&l!==s)return!1}else if(s.operator==="<="&&!Kh(s.semver,String(h),r))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},kH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},PH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};SH.exports=bEe});var Or=E((Ytt,RH)=>{var Rv=Ql();RH.exports={re:Rv.re,src:Rv.src,tokens:Rv.t,SEMVER_SPEC_VERSION:Sh().SEMVER_SPEC_VERSION,SemVer:bi(),compareIdentifiers:zE().compareIdentifiers,rcompareIdentifiers:zE().rcompareIdentifiers,parse:bl(),valid:e2(),clean:r2(),inc:n2(),diff:c2(),major:g2(),minor:h2(),patch:d2(),prerelease:m2(),compare:Xn(),rcompare:I2(),compareLoose:w2(),compareBuild:ZE(),sort:v2(),rsort:x2(),gt:Dh(),lt:$E(),eq:XE(),neq:wv(),gte:eI(),lte:tI(),cmp:Bv(),coerce:T2(),Comparator:Lh(),Range:Zn(),satisfies:Oh(),toComparators:nH(),maxSatisfying:oH(),minSatisfying:AH(),minVersion:uH(),validRange:fH(),outside:sI(),gtr:EH(),ltr:yH(),intersects:QH(),simplifyRange:vH(),subset:DH()}});var Uv=E(AI=>{"use strict";Object.defineProperty(AI,"__esModule",{value:!0});AI.VERSION=void 0;AI.VERSION="9.1.0"});var Dt=E((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(t,e,r){if(r||arguments.length===2)for(var i=0,n=e.length,s;i{(function(t,e){typeof define=="function"&&define.amd?define([],e):typeof lI=="object"&&lI.exports?lI.exports=e():t.regexpToAst=e()})(typeof self!="undefined"?self:YH,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},t.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var d=this.disjunction();this.consumeChar("/");for(var m={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(m,"global");break;case"i":o(m,"ignoreCase");break;case"m":o(m,"multiLine");break;case"u":o(m,"unicode");break;case"y":o(m,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:m,value:d,loc:this.loc(0)}},t.prototype.disjunction=function(){var p=[],d=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(d)}},t.prototype.alternative=function(){for(var p=[],d=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(d)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var d;switch(this.popChar()){case"=":d="Lookahead";break;case"!":d="NegativeLookahead";break}a(d);var m=this.disjunction();return this.consumeChar(")"),{type:d,value:m,loc:this.loc(p)}}l()},t.prototype.quantifier=function(p){var d,m=this.idx;switch(this.popChar()){case"*":d={atLeast:0,atMost:Infinity};break;case"+":d={atLeast:1,atMost:Infinity};break;case"?":d={atLeast:0,atMost:1};break;case"{":var I=this.integerIncludingZero();switch(this.popChar()){case"}":d={atLeast:I,atMost:I};break;case",":var B;this.isDigit()?(B=this.integerIncludingZero(),d={atLeast:I,atMost:B}):d={atLeast:I,atMost:Infinity},this.consumeChar("}");break}if(p===!0&&d===void 0)return;a(d);break}if(!(p===!0&&d===void 0))return a(d),this.peekChar(0)==="?"?(this.consumeChar("?"),d.greedy=!1):d.greedy=!0,d.type="Quantifier",d.loc=this.loc(m),d},t.prototype.atom=function(){var p,d=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(d),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` -`),n("\r"),n("\u2028"),n("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},t.prototype.characterClassEscape=function(){var p,d=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,d=!0;break;case"s":p=f;break;case"S":p=f,d=!0;break;case"w":p=g;break;case"W":p=g,d=!0;break}return a(p),{type:"Set",value:p,complement:d}},t.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` -`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var d=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:d}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},t.prototype.characterClass=function(){var p=[],d=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),d=!0);this.isClassAtom();){var m=this.classAtom(),I=m.type==="Character";if(I&&this.isRangeDash()){this.consumeChar("-");var B=this.classAtom(),b=B.type==="Character";if(b){if(B.value=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,d){p.length!==void 0?p.forEach(function(m){d.push(m)}):d.push(p)}function o(p,d){if(p[d]===!0)throw"duplicate flag "+d;p[d]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` -`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var d in p){var m=p[d];p.hasOwnProperty(d)&&(m.type!==void 0?this.visit(m):Array.isArray(m)&&m.forEach(function(I){this.visit(I)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:t,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var gI=E(Eu=>{"use strict";Object.defineProperty(Eu,"__esModule",{value:!0});Eu.clearRegExpParserCache=Eu.getRegExpAst=void 0;var FEe=cI(),uI={},NEe=new FEe.RegExpParser;function LEe(t){var e=t.toString();if(uI.hasOwnProperty(e))return uI[e];var r=NEe.pattern(e);return uI[e]=r,r}Eu.getRegExpAst=LEe;function TEe(){uI={}}Eu.clearRegExpParserCache=TEe});var VH=E(fn=>{"use strict";var MEe=fn&&fn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(fn,"__esModule",{value:!0});fn.canMatchCharCode=fn.firstCharOptimizedIndices=fn.getOptimizedStartCodesIndices=fn.failedOptimizationPrefixMsg=void 0;var qH=cI(),$n=Dt(),JH=gI(),sa=Hv(),WH="Complement Sets are not supported for first char optimization";fn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function OEe(t,e){e===void 0&&(e=!1);try{var r=(0,JH.getRegExpAst)(t),i=fI(r.value,{},r.flags.ignoreCase);return i}catch(s){if(s.message===WH)e&&(0,$n.PRINT_WARNING)(""+fn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+t.toString()+` > -`)+` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,$n.PRINT_ERROR)(fn.failedOptimizationPrefixMsg+` -`+(" Failed parsing: < "+t.toString()+` > -`)+(" Using the regexp-to-ast library version: "+qH.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}fn.getOptimizedStartCodesIndices=OEe;function fI(t,e,r){switch(t.type){case"Disjunction":for(var i=0;i=sa.minOptimizationVal)for(var f=u.from>=sa.minOptimizationVal?u.from:sa.minOptimizationVal,h=u.to,p=(0,sa.charCodeToOptimizedIndex)(f),d=(0,sa.charCodeToOptimizedIndex)(h),m=p;m<=d;m++)e[m]=m}}});break;case"Group":fI(o.value,e,r);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&Gv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,$n.values)(e)}fn.firstCharOptimizedIndices=fI;function hI(t,e,r){var i=(0,sa.charCodeToOptimizedIndex)(t);e[i]=i,r===!0&&KEe(t,e)}function KEe(t,e){var r=String.fromCharCode(t),i=r.toUpperCase();if(i!==r){var n=(0,sa.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=r.toLowerCase();if(s!==r){var n=(0,sa.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function zH(t,e){return(0,$n.find)(t.value,function(r){if(typeof r=="number")return(0,$n.contains)(e,r);var i=r;return(0,$n.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function Gv(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?(0,$n.isArray)(t.value)?(0,$n.every)(t.value,Gv):Gv(t.value):!1}var UEe=function(t){MEe(e,t);function e(r){var i=t.call(this)||this;return i.targetCharCodes=r,i.found=!1,i}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case"Lookahead":this.visitLookahead(r);return;case"NegativeLookahead":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){(0,$n.contains)(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?zH(r,this.targetCharCodes)===void 0&&(this.found=!0):zH(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(qH.BaseRegExpVisitor);function HEe(t,e){if(e instanceof RegExp){var r=(0,JH.getRegExpAst)(e),i=new UEe(t);return i.visit(r),i.found}else return(0,$n.find)(e,function(n){return(0,$n.contains)(t,n.charCodeAt(0))})!==void 0}fn.canMatchCharCode=HEe});var Hv=E(je=>{"use strict";var _H=je&&je.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(je,"__esModule",{value:!0});je.charCodeToOptimizedIndex=je.minOptimizationVal=je.buildLineBreakIssueMessage=je.LineTerminatorOptimizedTester=je.isShortPattern=je.isCustomPattern=je.cloneEmptyGroups=je.performWarningRuntimeChecks=je.performRuntimeChecks=je.addStickyFlag=je.addStartOfInput=je.findUnreachablePatterns=je.findModesThatDoNotExist=je.findInvalidGroupType=je.findDuplicatePatterns=je.findUnsupportedFlags=je.findStartOfInputAnchor=je.findEmptyMatchRegExps=je.findEndOfInputAnchor=je.findInvalidPatterns=je.findMissingPatterns=je.validatePatterns=je.analyzeTokenTypes=je.enableSticky=je.disableSticky=je.SUPPORT_STICKY=je.MODES=je.DEFAULT_MODE=void 0;var XH=cI(),zt=Gh(),Ie=Dt(),Iu=VH(),ZH=gI(),ao="PATTERN";je.DEFAULT_MODE="defaultMode";je.MODES="modes";je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function GEe(){je.SUPPORT_STICKY=!1}je.disableSticky=GEe;function jEe(){je.SUPPORT_STICKY=!0}je.enableSticky=jEe;function qEe(t,e){e=(0,Ie.defaults)(e,{useSticky:je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(B,b){return b()}});var r=e.tracer;r("initCharCodeToOptimizedIndexMap",function(){YEe()});var i;r("Reject Lexer.NA",function(){i=(0,Ie.reject)(t,function(B){return B[ao]===zt.Lexer.NA})});var n=!1,s;r("Transform Patterns",function(){n=!1,s=(0,Ie.map)(i,function(B){var b=B[ao];if((0,Ie.isRegExp)(b)){var R=b.source;return R.length===1&&R!=="^"&&R!=="$"&&R!=="."&&!b.ignoreCase?R:R.length===2&&R[0]==="\\"&&!(0,Ie.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],R[1])?R[1]:e.useSticky?Yv(b):jv(b)}else{if((0,Ie.isFunction)(b))return n=!0,{exec:b};if((0,Ie.has)(b,"exec"))return n=!0,b;if(typeof b=="string"){if(b.length===1)return b;var H=b.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),L=new RegExp(H);return e.useSticky?Yv(L):jv(L)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;r("misc mapping",function(){o=(0,Ie.map)(i,function(B){return B.tokenTypeIdx}),a=(0,Ie.map)(i,function(B){var b=B.GROUP;if(b!==zt.Lexer.SKIPPED){if((0,Ie.isString)(b))return b;if((0,Ie.isUndefined)(b))return!1;throw Error("non exhaustive match")}}),l=(0,Ie.map)(i,function(B){var b=B.LONGER_ALT;if(b){var R=(0,Ie.isArray)(b)?(0,Ie.map)(b,function(H){return(0,Ie.indexOf)(i,H)}):[(0,Ie.indexOf)(i,b)];return R}}),c=(0,Ie.map)(i,function(B){return B.PUSH_MODE}),u=(0,Ie.map)(i,function(B){return(0,Ie.has)(B,"POP_MODE")})});var g;r("Line Terminator Handling",function(){var B=tG(e.lineTerminatorCharacters);g=(0,Ie.map)(i,function(b){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Ie.map)(i,function(b){if((0,Ie.has)(b,"LINE_BREAKS"))return b.LINE_BREAKS;if(eG(b,B)===!1)return(0,Iu.canMatchCharCode)(B,b.PATTERN)}))});var f,h,p,d;r("Misc Mapping #2",function(){f=(0,Ie.map)(i,qv),h=(0,Ie.map)(s,$H),p=(0,Ie.reduce)(i,function(B,b){var R=b.GROUP;return(0,Ie.isString)(R)&&R!==zt.Lexer.SKIPPED&&(B[R]=[]),B},{}),d=(0,Ie.map)(s,function(B,b){return{pattern:s[b],longerAlt:l[b],canLineTerminator:g[b],isCustom:f[b],short:h[b],group:a[b],push:c[b],pop:u[b],tokenTypeIdx:o[b],tokenType:i[b]}})});var m=!0,I=[];return e.safeMode||r("First Char Optimization",function(){I=(0,Ie.reduce)(i,function(B,b,R){if(typeof b.PATTERN=="string"){var H=b.PATTERN.charCodeAt(0),L=Wv(H);Jv(B,L,d[R])}else if((0,Ie.isArray)(b.START_CHARS_HINT)){var K;(0,Ie.forEach)(b.START_CHARS_HINT,function(ne){var q=typeof ne=="string"?ne.charCodeAt(0):ne,A=Wv(q);K!==A&&(K=A,Jv(B,A,d[R]))})}else if((0,Ie.isRegExp)(b.PATTERN))if(b.PATTERN.unicode)m=!1,e.ensureOptimizations&&(0,Ie.PRINT_ERROR)(""+Iu.failedOptimizationPrefixMsg+(" Unable to analyze < "+b.PATTERN.toString()+` > pattern. -`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var J=(0,Iu.getOptimizedStartCodesIndices)(b.PATTERN,e.ensureOptimizations);(0,Ie.isEmpty)(J)&&(m=!1),(0,Ie.forEach)(J,function(ne){Jv(B,ne,d[R])})}else e.ensureOptimizations&&(0,Ie.PRINT_ERROR)(""+Iu.failedOptimizationPrefixMsg+(" TokenType: <"+b.name+`> is using a custom token pattern without providing parameter. -`)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),m=!1;return B},[])}),r("ArrayPacking",function(){I=(0,Ie.packArray)(I)}),{emptyGroups:p,patternIdxToConfig:d,charCodeToPatternIdxToConfig:I,hasCustom:n,canBeOptimized:m}}je.analyzeTokenTypes=qEe;function WEe(t,e){var r=[],i=rG(t);r=r.concat(i.errors);var n=iG(i.valid),s=n.valid;return r=r.concat(n.errors),r=r.concat(JEe(s)),r=r.concat(nG(s)),r=r.concat(sG(s,e)),r=r.concat(oG(s)),r}je.validatePatterns=WEe;function JEe(t){var e=[],r=(0,Ie.filter)(t,function(i){return(0,Ie.isRegExp)(i[ao])});return e=e.concat(aG(r)),e=e.concat(lG(r)),e=e.concat(cG(r)),e=e.concat(uG(r)),e=e.concat(AG(r)),e}function rG(t){var e=(0,Ie.filter)(t,function(n){return!(0,Ie.has)(n,ao)}),r=(0,Ie.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:zt.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Ie.difference)(t,e);return{errors:r,valid:i}}je.findMissingPatterns=rG;function iG(t){var e=(0,Ie.filter)(t,function(n){var s=n[ao];return!(0,Ie.isRegExp)(s)&&!(0,Ie.isFunction)(s)&&!(0,Ie.has)(s,"exec")&&!(0,Ie.isString)(s)}),r=(0,Ie.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:zt.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Ie.difference)(t,e);return{errors:r,valid:i}}je.findInvalidPatterns=iG;var zEe=/[^\\][\$]/;function aG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ie.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return zEe.test(s.source)}}),i=(0,Ie.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findEndOfInputAnchor=aG;function AG(t){var e=(0,Ie.filter)(t,function(i){var n=i[ao];return n.test("")}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:zt.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return r}je.findEmptyMatchRegExps=AG;var VEe=/[^\\[][\^]|^\^/;function lG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ie.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return VEe.test(s.source)}}),i=(0,Ie.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findStartOfInputAnchor=lG;function cG(t){var e=(0,Ie.filter)(t,function(i){var n=i[ao];return n instanceof RegExp&&(n.multiline||n.global)}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:zt.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return r}je.findUnsupportedFlags=cG;function uG(t){var e=[],r=(0,Ie.map)(t,function(s){return(0,Ie.reduce)(t,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Ie.contains)(e,a)&&a.PATTERN!==zt.Lexer.NA&&(e.push(a),o.push(a)),o},[])});r=(0,Ie.compact)(r);var i=(0,Ie.filter)(r,function(s){return s.length>1}),n=(0,Ie.map)(i,function(s){var o=(0,Ie.map)(s,function(l){return l.name}),a=(0,Ie.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:zt.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}je.findDuplicatePatterns=uG;function nG(t){var e=(0,Ie.filter)(t,function(i){if(!(0,Ie.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==zt.Lexer.SKIPPED&&n!==zt.Lexer.NA&&!(0,Ie.isString)(n)}),r=(0,Ie.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:zt.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return r}je.findInvalidGroupType=nG;function sG(t,e){var r=(0,Ie.filter)(t,function(n){return n.PUSH_MODE!==void 0&&!(0,Ie.contains)(e,n.PUSH_MODE)}),i=(0,Ie.map)(r,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:zt.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}je.findModesThatDoNotExist=sG;function oG(t){var e=[],r=(0,Ie.reduce)(t,function(i,n,s){var o=n.PATTERN;return o===zt.Lexer.NA||((0,Ie.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Ie.isRegExp)(o)&&XEe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Ie.forEach)(t,function(i,n){(0,Ie.forEach)(r,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:zt.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}je.findUnreachablePatterns=oG;function _Ee(t,e){if((0,Ie.isRegExp)(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if((0,Ie.isFunction)(e))return e(t,0,[],{});if((0,Ie.has)(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function XEe(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Ie.find)(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function jv(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}je.addStartOfInput=jv;function Yv(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}je.addStickyFlag=Yv;function ZEe(t,e,r){var i=[];return(0,Ie.has)(t,je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.DEFAULT_MODE+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Ie.has)(t,je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.MODES+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Ie.has)(t,je.MODES)&&(0,Ie.has)(t,je.DEFAULT_MODE)&&!(0,Ie.has)(t.modes,t.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+je.DEFAULT_MODE+": <"+t.defaultMode+`>which does not exist -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Ie.has)(t,je.MODES)&&(0,Ie.forEach)(t.modes,function(n,s){(0,Ie.forEach)(n,function(o,a){(0,Ie.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> -`),type:zt.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}je.performRuntimeChecks=ZEe;function $Ee(t,e,r){var i=[],n=!1,s=(0,Ie.compact)((0,Ie.flatten)((0,Ie.mapValues)(t.modes,function(l){return l}))),o=(0,Ie.reject)(s,function(l){return l[ao]===zt.Lexer.NA}),a=tG(r);return e&&(0,Ie.forEach)(o,function(l){var c=eG(l,a);if(c!==!1){var u=gG(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Ie.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Iu.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:zt.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}je.performWarningRuntimeChecks=$Ee;function eIe(t){var e={},r=(0,Ie.keys)(t);return(0,Ie.forEach)(r,function(i){var n=t[i];if((0,Ie.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}je.cloneEmptyGroups=eIe;function qv(t){var e=t.PATTERN;if((0,Ie.isRegExp)(e))return!1;if((0,Ie.isFunction)(e))return!0;if((0,Ie.has)(e,"exec"))return!0;if((0,Ie.isString)(e))return!1;throw Error("non exhaustive match")}je.isCustomPattern=qv;function $H(t){return(0,Ie.isString)(t)&&t.length===1?t.charCodeAt(0):!1}je.isShortPattern=$H;je.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r Token Type -`)+(" Root cause: "+e.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===zt.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+t.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}je.buildLineBreakIssueMessage=gG;function tG(t){var e=(0,Ie.map)(t,function(r){return(0,Ie.isString)(r)&&r.length>0?r.charCodeAt(0):r});return e}function Jv(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}je.minOptimizationVal=256;var pI=[];function Wv(t){return t255?255+~~(t/255):t}}});var yu=E(Bt=>{"use strict";Object.defineProperty(Bt,"__esModule",{value:!0});Bt.isTokenType=Bt.hasExtendingTokensTypesMapProperty=Bt.hasExtendingTokensTypesProperty=Bt.hasCategoriesProperty=Bt.hasShortKeyProperty=Bt.singleAssignCategoriesToksMap=Bt.assignCategoriesMapProp=Bt.assignCategoriesTokensProp=Bt.assignTokenDefaultProps=Bt.expandCategories=Bt.augmentTokenTypes=Bt.tokenIdxToClass=Bt.tokenShortNameIdx=Bt.tokenStructuredMatcherNoCategories=Bt.tokenStructuredMatcher=void 0;var Kr=Dt();function tIe(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}Bt.tokenStructuredMatcher=tIe;function rIe(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}Bt.tokenStructuredMatcherNoCategories=rIe;Bt.tokenShortNameIdx=1;Bt.tokenIdxToClass={};function iIe(t){var e=fG(t);hG(e),dG(e),pG(e),(0,Kr.forEach)(e,function(r){r.isParent=r.categoryMatches.length>0})}Bt.augmentTokenTypes=iIe;function fG(t){for(var e=(0,Kr.cloneArr)(t),r=t,i=!0;i;){r=(0,Kr.compact)((0,Kr.flatten)((0,Kr.map)(r,function(s){return s.CATEGORIES})));var n=(0,Kr.difference)(r,e);e=e.concat(n),(0,Kr.isEmpty)(n)?i=!1:r=n}return e}Bt.expandCategories=fG;function hG(t){(0,Kr.forEach)(t,function(e){CG(e)||(Bt.tokenIdxToClass[Bt.tokenShortNameIdx]=e,e.tokenTypeIdx=Bt.tokenShortNameIdx++),zv(e)&&!(0,Kr.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),zv(e)||(e.CATEGORIES=[]),mG(e)||(e.categoryMatches=[]),EG(e)||(e.categoryMatchesMap={})})}Bt.assignTokenDefaultProps=hG;function pG(t){(0,Kr.forEach)(t,function(e){e.categoryMatches=[],(0,Kr.forEach)(e.categoryMatchesMap,function(r,i){e.categoryMatches.push(Bt.tokenIdxToClass[i].tokenTypeIdx)})})}Bt.assignCategoriesTokensProp=pG;function dG(t){(0,Kr.forEach)(t,function(e){Vv([],e)})}Bt.assignCategoriesMapProp=dG;function Vv(t,e){(0,Kr.forEach)(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),(0,Kr.forEach)(e.CATEGORIES,function(r){var i=t.concat(e);(0,Kr.contains)(i,r)||Vv(i,r)})}Bt.singleAssignCategoriesToksMap=Vv;function CG(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.hasShortKeyProperty=CG;function zv(t){return(0,Kr.has)(t,"CATEGORIES")}Bt.hasCategoriesProperty=zv;function mG(t){return(0,Kr.has)(t,"categoryMatches")}Bt.hasExtendingTokensTypesProperty=mG;function EG(t){return(0,Kr.has)(t,"categoryMatchesMap")}Bt.hasExtendingTokensTypesMapProperty=EG;function nIe(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.isTokenType=nIe});var _v=E(dI=>{"use strict";Object.defineProperty(dI,"__esModule",{value:!0});dI.defaultLexerErrorProvider=void 0;dI.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,r,i,n){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+r+" characters.")}}});var Gh=E(Rl=>{"use strict";Object.defineProperty(Rl,"__esModule",{value:!0});Rl.Lexer=Rl.LexerDefinitionErrorType=void 0;var Ps=Hv(),Vt=Dt(),sIe=yu(),oIe=_v(),aIe=gI(),AIe;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(AIe=Rl.LexerDefinitionErrorType||(Rl.LexerDefinitionErrorType={}));var jh={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:oIe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(jh);var lIe=function(){function t(e,r){var i=this;if(r===void 0&&(r=jh),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=(0,Vt.merge)(jh,r);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===jh.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Ps.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===jh.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,Vt.isArray)(e)?(s={modes:{}},s.modes[Ps.DEFAULT_MODE]=(0,Vt.cloneArr)(e),s[Ps.DEFAULT_MODE]=Ps.DEFAULT_MODE):(o=!1,s=(0,Vt.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Ps.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,Vt.forEach)(s.modes,function(u,g){s.modes[g]=(0,Vt.reject)(u,function(f){return(0,Vt.isUndefined)(f)})});var a=(0,Vt.keys)(s.modes);if((0,Vt.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.validatePatterns)(u,a))}),(0,Vt.isEmpty)(i.lexerDefinitionErrors)){(0,sIe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Ps.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,Vt.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,Vt.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,Vt.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+c)}(0,Vt.forEach)(i.lexerDefinitionWarning,function(u){(0,Vt.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Ps.SUPPORT_STICKY?(i.chopInput=Vt.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=Vt.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=Vt.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=Vt.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=Vt.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,Vt.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(r.ensureOptimizations&&!(0,Vt.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,aIe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,Vt.toFastProperties)(i)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!(0,Vt.isEmpty)(this.lexerDefinitionErrors)){var i=(0,Vt.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+n)}var s=this.tokenizeInternal(e,r);return s},t.prototype.tokenizeInternal=function(e,r){var i=this,n,s,o,a,l,c,u,g,f,h,p,d,m,I,B,b,R=e,H=R.length,L=0,K=0,J=this.hasCustom?0:Math.floor(e.length/10),ne=new Array(J),q=[],A=this.trackStartLines?1:void 0,V=this.trackStartLines?1:void 0,W=(0,Ps.cloneEmptyGroups)(this.emptyGroups),X=this.trackStartLines,F=this.config.lineTerminatorsPattern,D=0,he=[],pe=[],Ne=[],Pe=[];Object.freeze(Pe);var qe=void 0;function re(){return he}function se(wr){var Ui=(0,Ps.charCodeToOptimizedIndex)(wr),ws=pe[Ui];return ws===void 0?Pe:ws}var be=function(wr){if(Ne.length===1&&wr.tokenType.PUSH_MODE===void 0){var Ui=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(wr);q.push({offset:wr.startOffset,line:wr.startLine!==void 0?wr.startLine:void 0,column:wr.startColumn!==void 0?wr.startColumn:void 0,length:wr.image.length,message:Ui})}else{Ne.pop();var ws=(0,Vt.last)(Ne);he=i.patternIdxToConfig[ws],pe=i.charCodeToPatternIdxToConfig[ws],D=he.length;var Tf=i.canModeBeOptimized[ws]&&i.config.safeMode===!1;pe&&Tf?qe=se:qe=re}};function ae(wr){Ne.push(wr),pe=this.charCodeToPatternIdxToConfig[wr],he=this.patternIdxToConfig[wr],D=he.length,D=he.length;var Ui=this.canModeBeOptimized[wr]&&this.config.safeMode===!1;pe&&Ui?qe=se:qe=re}ae.call(this,r);for(var Ae;Lc.length){c=a,u=g,Ae=Oe;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,d=this.createTokenInstance(c,L,p,Ae.tokenType,A,V,f),this.handlePayload(d,u),h===!1?K=this.addToken(ne,K,d):W[h].push(d)),e=this.chopInput(e,f),L=L+f,V=this.computeNewColumn(V,f),X===!0&&Ae.canLineTerminator===!0){var dt=0,ri=void 0,ii=void 0;F.lastIndex=0;do ri=F.test(c),ri===!0&&(ii=F.lastIndex-1,dt++);while(ri===!0);dt!==0&&(A=A+dt,V=f-ii,this.updateTokenEndLineColumnLocation(d,h,ii,dt,A,V,f))}this.handleModes(Ae,be,ae,d)}else{for(var an=L,yr=A,Ki=V,Qi=!1;!Qi&&L <"+e+">");var n=(0,Vt.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();Rl.Lexer=lIe});var nA=E(Ci=>{"use strict";Object.defineProperty(Ci,"__esModule",{value:!0});Ci.tokenMatcher=Ci.createTokenInstance=Ci.EOF=Ci.createToken=Ci.hasTokenLabel=Ci.tokenName=Ci.tokenLabel=void 0;var Ds=Dt(),cIe=Gh(),Xv=yu();function uIe(t){return IG(t)?t.LABEL:t.name}Ci.tokenLabel=uIe;function gIe(t){return t.name}Ci.tokenName=gIe;function IG(t){return(0,Ds.isString)(t.LABEL)&&t.LABEL!==""}Ci.hasTokenLabel=IG;var fIe="parent",yG="categories",wG="label",BG="group",QG="push_mode",bG="pop_mode",vG="longer_alt",SG="line_breaks",xG="start_chars_hint";function kG(t){return hIe(t)}Ci.createToken=kG;function hIe(t){var e=t.pattern,r={};if(r.name=t.name,(0,Ds.isUndefined)(e)||(r.PATTERN=e),(0,Ds.has)(t,fIe))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Ds.has)(t,yG)&&(r.CATEGORIES=t[yG]),(0,Xv.augmentTokenTypes)([r]),(0,Ds.has)(t,wG)&&(r.LABEL=t[wG]),(0,Ds.has)(t,BG)&&(r.GROUP=t[BG]),(0,Ds.has)(t,bG)&&(r.POP_MODE=t[bG]),(0,Ds.has)(t,QG)&&(r.PUSH_MODE=t[QG]),(0,Ds.has)(t,vG)&&(r.LONGER_ALT=t[vG]),(0,Ds.has)(t,SG)&&(r.LINE_BREAKS=t[SG]),(0,Ds.has)(t,xG)&&(r.START_CHARS_HINT=t[xG]),r}Ci.EOF=kG({name:"EOF",pattern:cIe.Lexer.NA});(0,Xv.augmentTokenTypes)([Ci.EOF]);function pIe(t,e,r,i,n,s,o,a){return{image:e,startOffset:r,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}Ci.createTokenInstance=pIe;function dIe(t,e){return(0,Xv.tokenStructuredMatcher)(t,e)}Ci.tokenMatcher=dIe});var hn=E(Tt=>{"use strict";var oa=Tt&&Tt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Tt,"__esModule",{value:!0});Tt.serializeProduction=Tt.serializeGrammar=Tt.Terminal=Tt.Alternation=Tt.RepetitionWithSeparator=Tt.Repetition=Tt.RepetitionMandatoryWithSeparator=Tt.RepetitionMandatory=Tt.Option=Tt.Alternative=Tt.Rule=Tt.NonTerminal=Tt.AbstractProduction=void 0;var $t=Dt(),CIe=nA(),Ao=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),(0,$t.forEach)(this.definition,function(r){r.accept(e)})},t}();Tt.AbstractProduction=Ao;var PG=function(t){oa(e,t);function e(r){var i=t.call(this,[])||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(Ao);Tt.NonTerminal=PG;var DG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.orgText="",(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Rule=DG;var RG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.ignoreAmbiguities=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Alternative=RG;var FG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Option=FG;var NG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatory=NG;var LG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatoryWithSeparator=LG;var TG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Repetition=TG;var MG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionWithSeparator=MG;var OG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(Ao);Tt.Alternation=OG;var CI=function(){function t(e){this.idx=1,(0,$t.assign)(this,(0,$t.pick)(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();Tt.Terminal=CI;function mIe(t){return(0,$t.map)(t,Yh)}Tt.serializeGrammar=mIe;function Yh(t){function e(s){return(0,$t.map)(s,Yh)}if(t instanceof PG){var r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return(0,$t.isString)(t.label)&&(r.label=t.label),r}else{if(t instanceof RG)return{type:"Alternative",definition:e(t.definition)};if(t instanceof FG)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof NG)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof LG)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Yh(new CI({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof MG)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Yh(new CI({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof TG)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof OG)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof CI){var i={type:"Terminal",name:t.terminalType.name,label:(0,CIe.tokenLabel)(t.terminalType),idx:t.idx};(0,$t.isString)(t.label)&&(i.terminalLabel=t.label);var n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(i.pattern=(0,$t.isRegExp)(n)?n.source:n),i}else{if(t instanceof DG)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}Tt.serializeProduction=Yh});var EI=E(mI=>{"use strict";Object.defineProperty(mI,"__esModule",{value:!0});mI.RestWalker=void 0;var Zv=Dt(),pn=hn(),EIe=function(){function t(){}return t.prototype.walk=function(e,r){var i=this;r===void 0&&(r=[]),(0,Zv.forEach)(e.definition,function(n,s){var o=(0,Zv.drop)(e.definition,s+1);if(n instanceof pn.NonTerminal)i.walkProdRef(n,o,r);else if(n instanceof pn.Terminal)i.walkTerminal(n,o,r);else if(n instanceof pn.Alternative)i.walkFlat(n,o,r);else if(n instanceof pn.Option)i.walkOption(n,o,r);else if(n instanceof pn.RepetitionMandatory)i.walkAtLeastOne(n,o,r);else if(n instanceof pn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,r);else if(n instanceof pn.RepetitionWithSeparator)i.walkManySep(n,o,r);else if(n instanceof pn.Repetition)i.walkMany(n,o,r);else if(n instanceof pn.Alternation)i.walkOr(n,o,r);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,r,i){},t.prototype.walkProdRef=function(e,r,i){},t.prototype.walkFlat=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkOption=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkAtLeastOne=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkAtLeastOneSep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkMany=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkManySep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkOr=function(e,r,i){var n=this,s=r.concat(i);(0,Zv.forEach)(e.definition,function(o){var a=new pn.Alternative({definition:[o]});n.walk(a,s)})},t}();mI.RestWalker=EIe;function KG(t,e,r){var i=[new pn.Option({definition:[new pn.Terminal({terminalType:t.separator})].concat(t.definition)})],n=i.concat(e,r);return n}});var wu=E(II=>{"use strict";Object.defineProperty(II,"__esModule",{value:!0});II.GAstVisitor=void 0;var lo=hn(),IIe=function(){function t(){}return t.prototype.visit=function(e){var r=e;switch(r.constructor){case lo.NonTerminal:return this.visitNonTerminal(r);case lo.Alternative:return this.visitAlternative(r);case lo.Option:return this.visitOption(r);case lo.RepetitionMandatory:return this.visitRepetitionMandatory(r);case lo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(r);case lo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(r);case lo.Repetition:return this.visitRepetition(r);case lo.Alternation:return this.visitAlternation(r);case lo.Terminal:return this.visitTerminal(r);case lo.Rule:return this.visitRule(r);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();II.GAstVisitor=IIe});var Jh=E(Si=>{"use strict";var yIe=Si&&Si.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Si,"__esModule",{value:!0});Si.collectMethods=Si.DslMethodsCollectorVisitor=Si.getProductionDslName=Si.isBranchingProd=Si.isOptionalProd=Si.isSequenceProd=void 0;var qh=Dt(),dr=hn(),wIe=wu();function BIe(t){return t instanceof dr.Alternative||t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionMandatory||t instanceof dr.RepetitionMandatoryWithSeparator||t instanceof dr.RepetitionWithSeparator||t instanceof dr.Terminal||t instanceof dr.Rule}Si.isSequenceProd=BIe;function $v(t,e){e===void 0&&(e=[]);var r=t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionWithSeparator;return r?!0:t instanceof dr.Alternation?(0,qh.some)(t.definition,function(i){return $v(i,e)}):t instanceof dr.NonTerminal&&(0,qh.contains)(e,t)?!1:t instanceof dr.AbstractProduction?(t instanceof dr.NonTerminal&&e.push(t),(0,qh.every)(t.definition,function(i){return $v(i,e)})):!1}Si.isOptionalProd=$v;function QIe(t){return t instanceof dr.Alternation}Si.isBranchingProd=QIe;function bIe(t){if(t instanceof dr.NonTerminal)return"SUBRULE";if(t instanceof dr.Option)return"OPTION";if(t instanceof dr.Alternation)return"OR";if(t instanceof dr.RepetitionMandatory)return"AT_LEAST_ONE";if(t instanceof dr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(t instanceof dr.RepetitionWithSeparator)return"MANY_SEP";if(t instanceof dr.Repetition)return"MANY";if(t instanceof dr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Si.getProductionDslName=bIe;var UG=function(t){yIe(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.separator="-",r.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},r}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(r){var i=r.terminalType.name+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitNonTerminal=function(r){var i=r.nonTerminalName+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitOption=function(r){this.dslMethods.option.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.dslMethods.repetitionWithSeparator.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.dslMethods.repetitionMandatory.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.dslMethods.repetitionMandatoryWithSeparator.push(r)},e.prototype.visitRepetition=function(r){this.dslMethods.repetition.push(r)},e.prototype.visitAlternation=function(r){this.dslMethods.alternation.push(r)},e}(wIe.GAstVisitor);Si.DslMethodsCollectorVisitor=UG;var yI=new UG;function vIe(t){yI.reset(),t.accept(yI);var e=yI.dslMethods;return yI.reset(),e}Si.collectMethods=vIe});var tS=E(co=>{"use strict";Object.defineProperty(co,"__esModule",{value:!0});co.firstForTerminal=co.firstForBranching=co.firstForSequence=co.first=void 0;var wI=Dt(),HG=hn(),eS=Jh();function BI(t){if(t instanceof HG.NonTerminal)return BI(t.referencedRule);if(t instanceof HG.Terminal)return YG(t);if((0,eS.isSequenceProd)(t))return GG(t);if((0,eS.isBranchingProd)(t))return jG(t);throw Error("non exhaustive match")}co.first=BI;function GG(t){for(var e=[],r=t.definition,i=0,n=r.length>i,s,o=!0;n&&o;)s=r[i],o=(0,eS.isOptionalProd)(s),e=e.concat(BI(s)),i=i+1,n=r.length>i;return(0,wI.uniq)(e)}co.firstForSequence=GG;function jG(t){var e=(0,wI.map)(t.definition,function(r){return BI(r)});return(0,wI.uniq)((0,wI.flatten)(e))}co.firstForBranching=jG;function YG(t){return[t.terminalType]}co.firstForTerminal=YG});var rS=E(QI=>{"use strict";Object.defineProperty(QI,"__esModule",{value:!0});QI.IN=void 0;QI.IN="_~IN~_"});var VG=E(es=>{"use strict";var SIe=es&&es.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(es,"__esModule",{value:!0});es.buildInProdFollowPrefix=es.buildBetweenProdsFollowPrefix=es.computeAllProdsFollows=es.ResyncFollowsWalker=void 0;var xIe=EI(),kIe=tS(),qG=Dt(),JG=rS(),PIe=hn(),zG=function(t){SIe(e,t);function e(r){var i=t.call(this)||this;return i.topProd=r,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,i,n){},e.prototype.walkProdRef=function(r,i,n){var s=WG(r.referencedRule,r.idx)+this.topProd.name,o=i.concat(n),a=new PIe.Alternative({definition:o}),l=(0,kIe.first)(a);this.follows[s]=l},e}(xIe.RestWalker);es.ResyncFollowsWalker=zG;function DIe(t){var e={};return(0,qG.forEach)(t,function(r){var i=new zG(r).startWalking();(0,qG.assign)(e,i)}),e}es.computeAllProdsFollows=DIe;function WG(t,e){return t.name+e+JG.IN}es.buildBetweenProdsFollowPrefix=WG;function RIe(t){var e=t.terminalType.name;return e+t.idx+JG.IN}es.buildInProdFollowPrefix=RIe});var Wh=E(aa=>{"use strict";Object.defineProperty(aa,"__esModule",{value:!0});aa.defaultGrammarValidatorErrorProvider=aa.defaultGrammarResolverErrorProvider=aa.defaultParserErrorProvider=void 0;var Bu=nA(),FIe=Dt(),Rs=Dt(),iS=hn(),_G=Jh();aa.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,i=t.previous,n=t.ruleName,s=(0,Bu.hasTokenLabel)(e),o=s?"--> "+(0,Bu.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+r.image+"' <--";return a},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,i=t.previous,n=t.customUserDescription,s=t.ruleName,o="Expecting: ",a=(0,Rs.first)(r).image,l=` -but found: '`+a+"'";if(n)return o+n+l;var c=(0,Rs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Rs.map)(c,function(h){return"["+(0,Rs.map)(h,function(p){return(0,Bu.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Rs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: -`+g.join(` -`);return o+f+l},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,i=t.customUserDescription,n=t.ruleName,s="Expecting: ",o=(0,Rs.first)(r).image,a=` -but found: '`+o+"'";if(i)return s+i+a;var l=(0,Rs.map)(e,function(u){return"["+(0,Rs.map)(u,function(g){return(0,Bu.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(aa.defaultParserErrorProvider);aa.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-";return r}};aa.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(u){return u instanceof iS.Terminal?u.terminalType.name:u instanceof iS.NonTerminal?u.nonTerminalName:""}var i=t.name,n=(0,Rs.first)(e),s=n.idx,o=(0,_G.getProductionDslName)(n),a=r(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` - appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` -`),c},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. -`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. -`)+`To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix -`+("in inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return i},buildAlternationAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,i},buildEmptyRepetitionError:function(t){var e=(0,_G.getProductionDslName)(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. -This could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. -`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: -`+(" inside <"+t.topLevelRule.name+`> Rule. - has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=FIe.map(t.leftRecursionPath,function(s){return s.name}),i=e+" --> "+r.concat([e]).join(" --> "),n=`Left Recursion found in grammar. -`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) -`)+(`without consuming any Tokens. The grammar path that causes this is: - `+i+` -`)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof iS.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return r}}});var $G=E(sA=>{"use strict";var NIe=sA&&sA.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(sA,"__esModule",{value:!0});sA.GastRefResolverVisitor=sA.resolveGrammar=void 0;var LIe=Tn(),XG=Dt(),TIe=wu();function MIe(t,e){var r=new ZG(t,e);return r.resolveRefs(),r.errors}sA.resolveGrammar=MIe;var ZG=function(t){NIe(e,t);function e(r,i){var n=t.call(this)||this;return n.nameToTopRule=r,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var r=this;(0,XG.forEach)((0,XG.values)(this.nameToTopRule),function(i){r.currTopLevel=i,i.accept(r)})},e.prototype.visitNonTerminal=function(r){var i=this.nameToTopRule[r.nonTerminalName];if(i)r.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,r);this.errors.push({message:n,type:LIe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:r.nonTerminalName})}},e}(TIe.GAstVisitor);sA.GastRefResolverVisitor=ZG});var Vh=E(Br=>{"use strict";var Fl=Br&&Br.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Br,"__esModule",{value:!0});Br.nextPossibleTokensAfter=Br.possiblePathsFrom=Br.NextTerminalAfterAtLeastOneSepWalker=Br.NextTerminalAfterAtLeastOneWalker=Br.NextTerminalAfterManySepWalker=Br.NextTerminalAfterManyWalker=Br.AbstractNextTerminalAfterProductionWalker=Br.NextAfterTokenWalker=Br.AbstractNextPossibleTokensWalker=void 0;var ej=EI(),xt=Dt(),OIe=tS(),It=hn(),tj=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topProd=r,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,xt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,xt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,i){i===void 0&&(i=[]),this.found||t.prototype.walk.call(this,r,i)},e.prototype.walkProdRef=function(r,i,n){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(r.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,xt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(ej.RestWalker);Br.AbstractNextPossibleTokensWalker=tj;var KIe=function(t){Fl(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(r,i,n){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new It.Alternative({definition:s});this.possibleTokTypes=(0,OIe.first)(o),this.found=!0}},e}(tj);Br.NextAfterTokenWalker=KIe;var zh=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topRule=r,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(ej.RestWalker);Br.AbstractNextTerminalAfterProductionWalker=zh;var UIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkMany.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManyWalker=UIe;var HIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkManySep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManySepWalker=HIe;var GIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOne.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneWalker=GIe;var jIe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof It.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneSepWalker=jIe;function rj(t,e,r){r===void 0&&(r=[]),r=(0,xt.cloneArr)(r);var i=[],n=0;function s(c){return c.concat((0,xt.drop)(t,n+1))}function o(c){var u=rj(s(c),e,r);return i.concat(u)}for(;r.length=0;W--){var X=I.definition[W],F={idx:p,def:X.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m};g.push(F),g.push(o)}else if(I instanceof It.Alternative)g.push({idx:p,def:I.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m});else if(I instanceof It.Rule)g.push(YIe(I,p,d,m));else throw Error("non exhaustive match")}}return u}Br.nextPossibleTokensAfter=qIe;function YIe(t,e,r,i){var n=(0,xt.cloneArr)(r);n.push(t.name);var s=(0,xt.cloneArr)(i);return s.push(1),{idx:e,def:t.definition,ruleStack:n,occurrenceStack:s}}});var _h=E(Gt=>{"use strict";var ij=Gt&&Gt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Gt,"__esModule",{value:!0});Gt.areTokenCategoriesNotUsed=Gt.isStrictPrefixOfPath=Gt.containsPath=Gt.getLookaheadPathsForOptionalProd=Gt.getLookaheadPathsForOr=Gt.lookAheadSequenceFromAlternatives=Gt.buildSingleAlternativeLookaheadFunction=Gt.buildAlternativesLookAheadFunc=Gt.buildLookaheadFuncForOptionalProd=Gt.buildLookaheadFuncForOr=Gt.getProdType=Gt.PROD_TYPE=void 0;var _t=Dt(),nj=Vh(),JIe=EI(),bI=yu(),oA=hn(),WIe=wu(),zr;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(zr=Gt.PROD_TYPE||(Gt.PROD_TYPE={}));function zIe(t){if(t instanceof oA.Option)return zr.OPTION;if(t instanceof oA.Repetition)return zr.REPETITION;if(t instanceof oA.RepetitionMandatory)return zr.REPETITION_MANDATORY;if(t instanceof oA.RepetitionMandatoryWithSeparator)return zr.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof oA.RepetitionWithSeparator)return zr.REPETITION_WITH_SEPARATOR;if(t instanceof oA.Alternation)return zr.ALTERNATION;throw Error("non exhaustive match")}Gt.getProdType=zIe;function VIe(t,e,r,i,n,s){var o=sj(t,e,r),a=nS(o)?bI.tokenStructuredMatcherNoCategories:bI.tokenStructuredMatcher;return s(o,i,a,n)}Gt.buildLookaheadFuncForOr=VIe;function _Ie(t,e,r,i,n,s){var o=oj(t,e,n,r),a=nS(o)?bI.tokenStructuredMatcherNoCategories:bI.tokenStructuredMatcher;return s(o[0],a,i)}Gt.buildLookaheadFuncForOptionalProd=_Ie;function XIe(t,e,r,i){var n=t.length,s=(0,_t.every)(t,function(l){return(0,_t.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,_t.map)(l,function(b){return b.GATE}),u=0;u{"use strict";var aS=Mt&&Mt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Mt,"__esModule",{value:!0});Mt.checkPrefixAlternativesAmbiguities=Mt.validateSomeNonEmptyLookaheadPath=Mt.validateTooManyAlts=Mt.RepetionCollector=Mt.validateAmbiguousAlternationAlternatives=Mt.validateEmptyOrAlternative=Mt.getFirstNoneTerminal=Mt.validateNoLeftRecursion=Mt.validateRuleIsOverridden=Mt.validateRuleDoesNotAlreadyExist=Mt.OccurrenceValidationCollector=Mt.identifyProductionForDuplicates=Mt.validateGrammar=void 0;var jt=Dt(),Cr=Dt(),uo=Tn(),AS=Jh(),Qu=_h(),rye=Vh(),Fs=hn(),lS=wu();function sye(t,e,r,i,n){var s=jt.map(t,function(h){return iye(h,i)}),o=jt.map(t,function(h){return cS(h,h,i)}),a=[],l=[],c=[];(0,Cr.every)(o,Cr.isEmpty)&&(a=(0,Cr.map)(t,function(h){return uj(h,i)}),l=(0,Cr.map)(t,function(h){return gj(h,e,i)}),c=hj(t,e,i));var u=nye(t,r,i),g=(0,Cr.map)(t,function(h){return fj(h,i)}),f=(0,Cr.map)(t,function(h){return cj(h,t,n,i)});return jt.flatten(s.concat(c,o,a,l,u,g,f))}Mt.validateGrammar=sye;function iye(t,e){var r=new Cj;t.accept(r);var i=r.allProductions,n=jt.groupBy(i,pj),s=jt.pick(n,function(a){return a.length>1}),o=jt.map(jt.values(s),function(a){var l=jt.first(a),c=e.buildDuplicateFoundError(t,a),u=(0,AS.getProductionDslName)(l),g={message:c,type:uo.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:u,occurrence:l.idx},f=dj(l);return f&&(g.parameter=f),g});return o}function pj(t){return(0,AS.getProductionDslName)(t)+"_#_"+t.idx+"_#_"+dj(t)}Mt.identifyProductionForDuplicates=pj;function dj(t){return t instanceof Fs.Terminal?t.terminalType.name:t instanceof Fs.NonTerminal?t.nonTerminalName:""}var Cj=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitNonTerminal=function(r){this.allProductions.push(r)},e.prototype.visitOption=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e.prototype.visitAlternation=function(r){this.allProductions.push(r)},e.prototype.visitTerminal=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.OccurrenceValidationCollector=Cj;function cj(t,e,r,i){var n=[],s=(0,Cr.reduce)(e,function(a,l){return l.name===t.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});n.push({message:o,type:uo.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return n}Mt.validateRuleDoesNotAlreadyExist=cj;function oye(t,e,r){var i=[],n;return jt.contains(e,t)||(n="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+r+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:uo.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),i}Mt.validateRuleIsOverridden=oye;function cS(t,e,r,i){i===void 0&&(i=[]);var n=[],s=Xh(e.definition);if(jt.isEmpty(s))return[];var o=t.name,a=jt.contains(s,t);a&&n.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:i}),type:uo.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=jt.difference(s,i.concat([t])),c=jt.map(l,function(u){var g=jt.cloneArr(i);return g.push(u),cS(t,u,r,g)});return n.concat(jt.flatten(c))}Mt.validateNoLeftRecursion=cS;function Xh(t){var e=[];if(jt.isEmpty(t))return e;var r=jt.first(t);if(r instanceof Fs.NonTerminal)e.push(r.referencedRule);else if(r instanceof Fs.Alternative||r instanceof Fs.Option||r instanceof Fs.RepetitionMandatory||r instanceof Fs.RepetitionMandatoryWithSeparator||r instanceof Fs.RepetitionWithSeparator||r instanceof Fs.Repetition)e=e.concat(Xh(r.definition));else if(r instanceof Fs.Alternation)e=jt.flatten(jt.map(r.definition,function(o){return Xh(o.definition)}));else if(!(r instanceof Fs.Terminal))throw Error("non exhaustive match");var i=(0,AS.isOptionalProd)(r),n=t.length>1;if(i&&n){var s=jt.drop(t);return e.concat(Xh(s))}else return e}Mt.getFirstNoneTerminal=Xh;var uS=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(lS.GAstVisitor);function uj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){var a=jt.dropRight(o.definition),l=jt.map(a,function(c,u){var g=(0,rye.nextPossibleTokensAfter)([c],[],null,1);return jt.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:u}),type:uo.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(jt.compact(l))},[]);return n}Mt.validateEmptyOrAlternative=uj;function gj(t,e,r){var i=new uS;t.accept(i);var n=i.alternations;n=(0,Cr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=jt.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,Qu.getLookaheadPathsForOr)(l,t,c,a),g=aye(u,a,t,r),f=mj(u,a,t,r);return o.concat(g,f)},[]);return s}Mt.validateAmbiguousAlternationAlternatives=gj;var Ej=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.RepetionCollector=Ej;function fj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:uo.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),s},[]);return n}Mt.validateTooManyAlts=fj;function hj(t,e,r){var i=[];return(0,Cr.forEach)(t,function(n){var s=new Ej;n.accept(s);var o=s.allProductions;(0,Cr.forEach)(o,function(a){var l=(0,Qu.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,Qu.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,Cr.isEmpty)((0,Cr.flatten)(f))){var h=r.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:uo.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}Mt.validateSomeNonEmptyLookaheadPath=hj;function aye(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,Cr.forEach)(l,function(u){var g=[c];(0,Cr.forEach)(t,function(f,h){c!==h&&(0,Qu.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,Qu.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=jt.map(s,function(a){var l=(0,Cr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:uo.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function mj(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(o,a,l){var c=(0,Cr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,Cr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,Cr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.validateGrammar=bu.resolveGrammar=void 0;var fS=Dt(),Aye=$G(),lye=gS(),Ij=Wh();function cye(t){t=(0,fS.defaults)(t,{errMsgProvider:Ij.defaultGrammarResolverErrorProvider});var e={};return(0,fS.forEach)(t.rules,function(r){e[r.name]=r}),(0,Aye.resolveGrammar)(e,t.errMsgProvider)}bu.resolveGrammar=cye;function uye(t){return t=(0,fS.defaults)(t,{errMsgProvider:Ij.defaultGrammarValidatorErrorProvider}),(0,lye.validateGrammar)(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}bu.validateGrammar=uye});var vu=E(dn=>{"use strict";var Zh=dn&&dn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.EarlyExitException=dn.NotAllInputParsedException=dn.NoViableAltException=dn.MismatchedTokenException=dn.isRecognitionException=void 0;var gye=Dt(),wj="MismatchedTokenException",Bj="NoViableAltException",Qj="EarlyExitException",bj="NotAllInputParsedException",vj=[wj,Bj,Qj,bj];Object.freeze(vj);function fye(t){return(0,gye.contains)(vj,t.name)}dn.isRecognitionException=fye;var vI=function(t){Zh(e,t);function e(r,i){var n=this.constructor,s=t.call(this,r)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),hye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=wj,s}return e}(vI);dn.MismatchedTokenException=hye;var pye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Bj,s}return e}(vI);dn.NoViableAltException=pye;var dye=function(t){Zh(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.name=bj,n}return e}(vI);dn.NotAllInputParsedException=dye;var Cye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Qj,s}return e}(vI);dn.EarlyExitException=Cye});var pS=E(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.attemptInRepetitionRecovery=xi.Recoverable=xi.InRuleRecoveryException=xi.IN_RULE_RECOVERY_EXCEPTION=xi.EOF_FOLLOW_KEY=void 0;var SI=nA(),ts=Dt(),mye=vu(),Eye=rS(),Iye=Tn();xi.EOF_FOLLOW_KEY={};xi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function hS(t){this.name=xi.IN_RULE_RECOVERY_EXCEPTION,this.message=t}xi.InRuleRecoveryException=hS;hS.prototype=Error.prototype;var yye=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ts.has)(e,"recoveryEnabled")?e.recoveryEnabled:Iye.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Sj)},t.prototype.getTokenToInsert=function(e){var r=(0,SI.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),d=new mye.MismatchedTokenException(p,u,s.LA(0));d.resyncedTokens=(0,ts.dropRight)(l),s.SAVE_ERROR(d)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,r);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,i){return!(i===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var i=this.getCurrentGrammarPath(e,r),n=this.getNextPossibleTokenTypes(i);return n},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new hS("sad sad panda")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ts.isEmpty)(r))return!1;var n=this.LA(1),s=(0,ts.find)(r,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(r);return(0,ts.contains)(i,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),i=2;;){var n=r.tokenType;if((0,ts.contains)(e,n))return n;r=this.LA(i),i++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return xi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(i)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ts.map)(r,function(n,s){return s===0?xi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(r[s-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=(0,ts.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ts.flatten)(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===xi.EOF_FOLLOW_KEY)return[SI.EOF];var r=e.ruleName+e.idxInCallingRule+Eye.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,SI.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,r);return(0,ts.dropRight)(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,i,n,s,o,a){},t.prototype.getCurrentGrammarPath=function(e,r){var i=this.getHumanReadableRuleStack(),n=(0,ts.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:r};return s},t.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ts.map)(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();xi.Recoverable=yye;function Sj(t,e,r,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=SI.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(t,e,r,f)}xi.attemptInRepetitionRecovery=Sj});var xI=E(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.getKeyForAutomaticLookahead=Nt.AT_LEAST_ONE_SEP_IDX=Nt.MANY_SEP_IDX=Nt.AT_LEAST_ONE_IDX=Nt.MANY_IDX=Nt.OPTION_IDX=Nt.OR_IDX=Nt.BITS_FOR_ALT_IDX=Nt.BITS_FOR_RULE_IDX=Nt.BITS_FOR_OCCURRENCE_IDX=Nt.BITS_FOR_METHOD_TYPE=void 0;Nt.BITS_FOR_METHOD_TYPE=4;Nt.BITS_FOR_OCCURRENCE_IDX=8;Nt.BITS_FOR_RULE_IDX=12;Nt.BITS_FOR_ALT_IDX=8;Nt.OR_IDX=1<{"use strict";Object.defineProperty(kI,"__esModule",{value:!0});kI.LooksAhead=void 0;var Aa=_h(),Ns=Dt(),xj=Tn(),la=xI(),Nl=Jh(),Bye=function(){function t(){}return t.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Ns.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:xj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Ns.has)(e,"maxLookahead")?e.maxLookahead:xj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Ns.isES2015MapSupported)()?new Map:[],(0,Ns.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;(0,Ns.forEach)(e,function(i){r.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Nl.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Ns.forEach)(s,function(g){var f=g.idx===0?"":g.idx;r.TRACE_INIT(""+(0,Nl.getProductionDslName)(g)+f,function(){var h=(0,Aa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||r.maxLookahead,g.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),p=(0,la.getKeyForAutomaticLookahead)(r.fullRuleNameToShort[i.name],la.OR_IDX,g.idx);r.setLaFuncCache(p,h)})}),(0,Ns.forEach)(o,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_IDX,Aa.PROD_TYPE.REPETITION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(a,function(g){r.computeLookaheadFunc(i,g.idx,la.OPTION_IDX,Aa.PROD_TYPE.OPTION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(l,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(c,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_SEP_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(u,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_SEP_IDX,Aa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))})})})},t.prototype.computeLookaheadFunc=function(e,r,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(r===0?"":r),function(){var l=(0,Aa.buildLookaheadFuncForOptionalProd)(r,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,la.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,r);a.setLaFuncCache(c,l)})},t.prototype.lookAheadBuilderForOptional=function(e,r,i){return(0,Aa.buildSingleAlternativeLookaheadFunction)(e,r,i)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,i,n){return(0,Aa.buildAlternativesLookAheadFunc)(e,r,i,n)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var i=this.getLastExplicitRuleShortName();return(0,la.getKeyForAutomaticLookahead)(i,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();kI.LooksAhead=Bye});var Pj=E(go=>{"use strict";Object.defineProperty(go,"__esModule",{value:!0});go.addNoneTerminalToCst=go.addTerminalToCst=go.setNodeLocationFull=go.setNodeLocationOnlyOffset=void 0;function Qye(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";Object.defineProperty(aA,"__esModule",{value:!0});aA.defineNameProp=aA.functionName=aA.classNameFromInstance=void 0;var xye=Dt();function kye(t){return Dj(t.constructor)}aA.classNameFromInstance=kye;var Rj="name";function Dj(t){var e=t.name;return e||"anonymous"}aA.functionName=Dj;function Pye(t,e){var r=Object.getOwnPropertyDescriptor(t,Rj);return(0,xye.isUndefined)(r)||r.configurable?(Object.defineProperty(t,Rj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}aA.defineNameProp=Pye});var Mj=E(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.validateRedundantMethods=mi.validateMissingCstMethods=mi.validateVisitor=mi.CstVisitorDefinitionError=mi.createBaseVisitorConstructorWithDefaults=mi.createBaseSemanticVisitorConstructor=mi.defaultVisit=void 0;var rs=Dt(),$h=dS();function Fj(t,e){for(var r=(0,rs.keys)(t),i=r.length,n=0;n: - `+(""+s.join(` - -`).replace(/\n/g,` - `)))}}};return r.prototype=i,r.prototype.constructor=r,r._RULE_NAMES=e,r}mi.createBaseSemanticVisitorConstructor=Dye;function Rye(t,e,r){var i=function(){};(0,$h.defineNameProp)(i,t+"BaseSemanticsWithDefaults");var n=Object.create(r.prototype);return(0,rs.forEach)(e,function(s){n[s]=Fj}),i.prototype=n,i.prototype.constructor=i,i}mi.createBaseVisitorConstructorWithDefaults=Rye;var CS;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(CS=mi.CstVisitorDefinitionError||(mi.CstVisitorDefinitionError={}));function Nj(t,e){var r=Lj(t,e),i=Tj(t,e);return r.concat(i)}mi.validateVisitor=Nj;function Lj(t,e){var r=(0,rs.map)(e,function(i){if(!(0,rs.isFunction)(t[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+" CST Visitor.",type:CS.MISSING_METHOD,methodName:i}});return(0,rs.compact)(r)}mi.validateMissingCstMethods=Lj;var Fye=["constructor","visit","validateVisitor"];function Tj(t,e){var r=[];for(var i in t)(0,rs.isFunction)(t[i])&&!(0,rs.contains)(Fye,i)&&!(0,rs.contains)(e,i)&&r.push({msg:"Redundant visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`,type:CS.REDUNDANT_METHOD,methodName:i});return r}mi.validateRedundantMethods=Tj});var Kj=E(PI=>{"use strict";Object.defineProperty(PI,"__esModule",{value:!0});PI.TreeBuilder=void 0;var Su=Pj(),Ur=Dt(),Oj=Mj(),Nye=Tn(),Lye=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Ur.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:Nye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Ur.NOOP,this.cstFinallyStateUpdate=Ur.NOOP,this.cstPostTerminal=Ur.NOOP,this.cstPostNonTerminal=Ur.NOOP,this.cstPostRule=Ur.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationFull,this.setNodeLocationFromNode=Su.setNodeLocationFull,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=Su.setNodeLocationOnlyOffset,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=Ur.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,r){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?(i.endOffset=r.endOffset,i.endLine=r.endLine,i.endColumn=r.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?i.endOffset=r.endOffset:i.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addTerminalToCst)(i,r,e),this.setNodeLocationFromToken(i.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addNoneTerminalToCst)(i,r,e),this.setNodeLocationFromNode(i.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if((0,Ur.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,Oj.createBaseSemanticVisitorConstructor)(this.className,(0,Ur.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Ur.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,Oj.createBaseVisitorConstructorWithDefaults)(this.className,(0,Ur.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();PI.TreeBuilder=Lye});var Hj=E(DI=>{"use strict";Object.defineProperty(DI,"__esModule",{value:!0});DI.LexerAdapter=void 0;var Uj=Tn(),Tye=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Uj.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?Uj.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();DI.LexerAdapter=Tye});var jj=E(RI=>{"use strict";Object.defineProperty(RI,"__esModule",{value:!0});RI.RecognizerApi=void 0;var Gj=Dt(),Mye=vu(),mS=Tn(),Oye=Wh(),Kye=gS(),Uye=hn(),Hye=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,i){return this.consumeInternal(r,e,i)},t.prototype.subrule=function(e,r,i){return this.subruleInternal(r,e,i)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,i){if(i===void 0&&(i=mS.DEFAULT_RULE_CONFIG),(0,Gj.contains)(this.definedRulesNames,e)){var n=Oye.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:mS.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,i);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,i){i===void 0&&(i=mS.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,Kye.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,r,i);return this[e]=s,s},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,r),!0}catch(n){if((0,Mye.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return(0,Uye.serializeGrammar)((0,Gj.values)(this.gastProductionsCache))},t}();RI.RecognizerApi=Hye});var Wj=E(FI=>{"use strict";Object.defineProperty(FI,"__esModule",{value:!0});FI.RecognizerEngine=void 0;var Er=Dt(),Mn=xI(),NI=vu(),Yj=_h(),xu=Vh(),qj=Tn(),Gye=pS(),Jj=nA(),ep=yu(),jye=dS(),Yye=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,r){if(this.className=(0,jye.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=ep.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Er.has)(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if((0,Er.isArray)(e)){if((0,Er.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if((0,Er.isArray)(e))this.tokensMap=(0,Er.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Er.has)(e,"modes")&&(0,Er.every)((0,Er.flatten)((0,Er.values)(e.modes)),ep.isTokenType)){var i=(0,Er.flatten)((0,Er.values)(e.modes)),n=(0,Er.uniq)(i);this.tokensMap=(0,Er.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Er.isObject)(e))this.tokensMap=(0,Er.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Jj.EOF;var s=(0,Er.every)((0,Er.values)(e),function(o){return(0,Er.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?ep.tokenStructuredMatcherNoCategories:ep.tokenStructuredMatcher,(0,ep.augmentTokenTypes)((0,Er.values)(this.tokensMap))},t.prototype.defineRule=function(e,r,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Er.has)(i,"resyncEnabled")?i.resyncEnabled:qj.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Er.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:qj.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<r},t.prototype.orInternal=function(e,r){var i=this.getKeyForAutomaticLookahead(Mn.OR_IDX,r),n=(0,Er.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new NI.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,r,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,i){throw(0,NI.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:i),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},t.prototype.consumeInternalError=function(e,r,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new NI.MismatchedTokenException(n,r,s))},t.prototype.consumeInternalRecovery=function(e,r,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===Gye.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},t.prototype.saveRecogState=function(){var e=this.errors,r=(0,Er.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),Jj.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();FI.RecognizerEngine=Yye});var Vj=E(LI=>{"use strict";Object.defineProperty(LI,"__esModule",{value:!0});LI.ErrorHandler=void 0;var ES=vu(),IS=Dt(),zj=_h(),qye=Tn(),Jye=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,IS.has)(e,"errorMessageProvider")?e.errorMessageProvider:qye.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if((0,ES.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,IS.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return(0,IS.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,zj.getLookaheadPathsForOptionalProd)(e,s,r,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new ES.EarlyExitException(u,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,zj.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new ES.NoViableAltException(c,this.LA(1),l))},t}();LI.ErrorHandler=Jye});var Zj=E(TI=>{"use strict";Object.defineProperty(TI,"__esModule",{value:!0});TI.ContentAssist=void 0;var _j=Vh(),Xj=Dt(),Wye=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var i=this.gastProductionsCache[e];if((0,Xj.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,_j.nextPossibleTokensAfter)([i],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=(0,Xj.first)(e.ruleStack),i=this.getGAstProductions(),n=i[r],s=new _j.NextAfterTokenWalker(n,e).startWalking();return s},t}();TI.ContentAssist=Wye});var oY=E(MI=>{"use strict";Object.defineProperty(MI,"__esModule",{value:!0});MI.GastRecorder=void 0;var Cn=Dt(),fo=hn(),zye=Gh(),$j=yu(),eY=nA(),Vye=Tn(),_ye=xI(),OI={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(OI);var tY=!0,rY=Math.pow(2,_ye.BITS_FOR_OCCURRENCE_IDX)-1,iY=(0,eY.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:zye.Lexer.NA});(0,$j.augmentTokenTypes)([iY]);var nY=(0,eY.createTokenInstance)(iY,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(nY);var Xye={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},$ye=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var r=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)r(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var r=0;r<10;r++){var i=r>0?r:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return Vye.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var i=new fo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),r.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(s){throw n}throw n}},t.prototype.optionInternalRecord=function(e,r){return tp.call(this,fo.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatoryWithSeparator,r,e,tY)},t.prototype.manyInternalRecord=function(e,r){tp.call(this,fo.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionWithSeparator,r,e,tY)},t.prototype.orInternalRecord=function(e,r){return Zye.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,i){if(KI(r),!e||(0,Cn.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=e.ruleName,a=new fo.NonTerminal({idx:r,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?Xye:OI},t.prototype.consumeInternalRecord=function(e,r,i){if(KI(r),!(0,$j.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=new fo.Terminal({idx:r,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),nY},t}();MI.GastRecorder=$ye;function tp(t,e,r,i){i===void 0&&(i=!1),KI(r);var n=(0,Cn.peek)(this.recordingProdStack),s=(0,Cn.isFunction)(e)?e:e.DEF,o=new t({definition:[],idx:r});return i&&(o.separator=e.SEP),(0,Cn.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),OI}function Zye(t,e){var r=this;KI(e);var i=(0,Cn.peek)(this.recordingProdStack),n=(0,Cn.isArray)(t)===!1,s=n===!1?t:t.DEF,o=new fo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});(0,Cn.has)(t,"MAX_LOOKAHEAD")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var a=(0,Cn.some)(s,function(l){return(0,Cn.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,Cn.forEach)(s,function(l){var c=new fo.Alternative({definition:[]});o.definition.push(c),(0,Cn.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,Cn.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),r.recordingProdStack.push(c),l.ALT.call(r),r.recordingProdStack.pop()}),OI}function sY(t){return t===0?"":""+t}function KI(t){if(t<0||t>rY){var e=new Error("Invalid DSL Method idx value: <"+t+`> - `+("Idx value must be a none negative value smaller than "+(rY+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var AY=E(UI=>{"use strict";Object.defineProperty(UI,"__esModule",{value:!0});UI.PerformanceTracer=void 0;var aY=Dt(),ewe=Tn(),twe=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if((0,aY.has)(e,"traceInitPerf")){var r=e.traceInitPerf,i=typeof r=="number";this.traceInitMaxIdent=i?r:Infinity,this.traceInitPerf=i?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ewe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,aY.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t}();UI.PerformanceTracer=twe});var lY=E(HI=>{"use strict";Object.defineProperty(HI,"__esModule",{value:!0});HI.applyMixins=void 0;function rwe(t,e){e.forEach(function(r){var i=r.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(t.prototype,n,s):t.prototype[n]=r.prototype[n]}})})}HI.applyMixins=rwe});var Tn=E(or=>{"use strict";var cY=or&&or.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(or,"__esModule",{value:!0});or.EmbeddedActionsParser=or.CstParser=or.Parser=or.EMPTY_ALT=or.ParserDefinitionErrorType=or.DEFAULT_RULE_CONFIG=or.DEFAULT_PARSER_CONFIG=or.END_OF_FILE=void 0;var Wi=Dt(),iwe=VG(),uY=nA(),gY=Wh(),fY=yj(),nwe=pS(),swe=kj(),owe=Kj(),awe=Hj(),Awe=jj(),lwe=Wj(),cwe=Vj(),uwe=Zj(),gwe=oY(),fwe=AY(),hwe=lY();or.END_OF_FILE=(0,uY.createTokenInstance)(uY.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(or.END_OF_FILE);or.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:gY.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});or.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var pwe;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(pwe=or.ParserDefinitionErrorType||(or.ParserDefinitionErrorType={}));function dwe(t){return t===void 0&&(t=void 0),function(){return t}}or.EMPTY_ALT=dwe;var GI=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(r),i.initLexerAdapter(),i.initLooksAhead(r),i.initRecognizerEngine(e,r),i.initRecoverable(r),i.initTreeBuilder(r),i.initContentAssist(),i.initGastRecorder(r),i.initPerformanceTracer(r),(0,Wi.has)(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=(0,Wi.has)(r,"skipValidations")?r.skipValidations:or.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var r;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Wi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Wi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,fY.resolveGrammar)({rules:(0,Wi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Wi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,fY.validateGrammar)({rules:(0,Wi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Wi.values)(e.tokensMap),errMsgProvider:gY.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Wi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,iwe.computeAllProdsFollows)((0,Wi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Wi.values)(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Wi.isEmpty)(e.definitionErrors))throw r=(0,Wi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: - `+r.join(` -------------------------------- -`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();or.Parser=GI;(0,hwe.applyMixins)(GI,[nwe.Recoverable,swe.LooksAhead,owe.TreeBuilder,awe.LexerAdapter,lwe.RecognizerEngine,Awe.RecognizerApi,cwe.ErrorHandler,uwe.ContentAssist,gwe.GastRecorder,fwe.PerformanceTracer]);var Cwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!0,n=t.call(this,r,s)||this,n}return e}(GI);or.CstParser=Cwe;var mwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!1,n=t.call(this,r,s)||this,n}return e}(GI);or.EmbeddedActionsParser=mwe});var pY=E(jI=>{"use strict";Object.defineProperty(jI,"__esModule",{value:!0});jI.createSyntaxDiagramsCode=void 0;var hY=Uv();function Ewe(t,e){var r=e===void 0?{}:e,i=r.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/":i,s=r.css,o=s===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/diagrams.css":s,a=` - - - - - -`,l=` - -`,c=` - - - - -`,u=` -
                      -`,g=` - -`,f=` - -`;return a+l+c+u+g+f}jI.createSyntaxDiagramsCode=Ewe});var mY=E(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.Parser=He.createSyntaxDiagramsCode=He.clearCache=He.GAstVisitor=He.serializeProduction=He.serializeGrammar=He.Terminal=He.Rule=He.RepetitionWithSeparator=He.RepetitionMandatoryWithSeparator=He.RepetitionMandatory=He.Repetition=He.Option=He.NonTerminal=He.Alternative=He.Alternation=He.defaultLexerErrorProvider=He.NoViableAltException=He.NotAllInputParsedException=He.MismatchedTokenException=He.isRecognitionException=He.EarlyExitException=He.defaultParserErrorProvider=He.tokenName=He.tokenMatcher=He.tokenLabel=He.EOF=He.createTokenInstance=He.createToken=He.LexerDefinitionErrorType=He.Lexer=He.EMPTY_ALT=He.ParserDefinitionErrorType=He.EmbeddedActionsParser=He.CstParser=He.VERSION=void 0;var Iwe=Uv();Object.defineProperty(He,"VERSION",{enumerable:!0,get:function(){return Iwe.VERSION}});var YI=Tn();Object.defineProperty(He,"CstParser",{enumerable:!0,get:function(){return YI.CstParser}});Object.defineProperty(He,"EmbeddedActionsParser",{enumerable:!0,get:function(){return YI.EmbeddedActionsParser}});Object.defineProperty(He,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return YI.ParserDefinitionErrorType}});Object.defineProperty(He,"EMPTY_ALT",{enumerable:!0,get:function(){return YI.EMPTY_ALT}});var dY=Gh();Object.defineProperty(He,"Lexer",{enumerable:!0,get:function(){return dY.Lexer}});Object.defineProperty(He,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return dY.LexerDefinitionErrorType}});var ku=nA();Object.defineProperty(He,"createToken",{enumerable:!0,get:function(){return ku.createToken}});Object.defineProperty(He,"createTokenInstance",{enumerable:!0,get:function(){return ku.createTokenInstance}});Object.defineProperty(He,"EOF",{enumerable:!0,get:function(){return ku.EOF}});Object.defineProperty(He,"tokenLabel",{enumerable:!0,get:function(){return ku.tokenLabel}});Object.defineProperty(He,"tokenMatcher",{enumerable:!0,get:function(){return ku.tokenMatcher}});Object.defineProperty(He,"tokenName",{enumerable:!0,get:function(){return ku.tokenName}});var ywe=Wh();Object.defineProperty(He,"defaultParserErrorProvider",{enumerable:!0,get:function(){return ywe.defaultParserErrorProvider}});var rp=vu();Object.defineProperty(He,"EarlyExitException",{enumerable:!0,get:function(){return rp.EarlyExitException}});Object.defineProperty(He,"isRecognitionException",{enumerable:!0,get:function(){return rp.isRecognitionException}});Object.defineProperty(He,"MismatchedTokenException",{enumerable:!0,get:function(){return rp.MismatchedTokenException}});Object.defineProperty(He,"NotAllInputParsedException",{enumerable:!0,get:function(){return rp.NotAllInputParsedException}});Object.defineProperty(He,"NoViableAltException",{enumerable:!0,get:function(){return rp.NoViableAltException}});var wwe=_v();Object.defineProperty(He,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return wwe.defaultLexerErrorProvider}});var ho=hn();Object.defineProperty(He,"Alternation",{enumerable:!0,get:function(){return ho.Alternation}});Object.defineProperty(He,"Alternative",{enumerable:!0,get:function(){return ho.Alternative}});Object.defineProperty(He,"NonTerminal",{enumerable:!0,get:function(){return ho.NonTerminal}});Object.defineProperty(He,"Option",{enumerable:!0,get:function(){return ho.Option}});Object.defineProperty(He,"Repetition",{enumerable:!0,get:function(){return ho.Repetition}});Object.defineProperty(He,"RepetitionMandatory",{enumerable:!0,get:function(){return ho.RepetitionMandatory}});Object.defineProperty(He,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionMandatoryWithSeparator}});Object.defineProperty(He,"RepetitionWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionWithSeparator}});Object.defineProperty(He,"Rule",{enumerable:!0,get:function(){return ho.Rule}});Object.defineProperty(He,"Terminal",{enumerable:!0,get:function(){return ho.Terminal}});var CY=hn();Object.defineProperty(He,"serializeGrammar",{enumerable:!0,get:function(){return CY.serializeGrammar}});Object.defineProperty(He,"serializeProduction",{enumerable:!0,get:function(){return CY.serializeProduction}});var Bwe=wu();Object.defineProperty(He,"GAstVisitor",{enumerable:!0,get:function(){return Bwe.GAstVisitor}});function Qwe(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. - It performs no action other than printing this message. - Please avoid using it as it will be completely removed in the future`)}He.clearCache=Qwe;var bwe=pY();Object.defineProperty(He,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return bwe.createSyntaxDiagramsCode}});var vwe=function(){function t(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. -See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return t}();He.Parser=vwe});var yY=E((Trt,EY)=>{var qI=mY(),ca=qI.createToken,IY=qI.tokenMatcher,yS=qI.Lexer,Swe=qI.EmbeddedActionsParser;EY.exports=t=>{let e=ca({name:"LogicalOperator",pattern:yS.NA}),r=ca({name:"Or",pattern:/\|/,categories:e}),i=ca({name:"Xor",pattern:/\^/,categories:e}),n=ca({name:"And",pattern:/&/,categories:e}),s=ca({name:"Not",pattern:/!/}),o=ca({name:"LParen",pattern:/\(/}),a=ca({name:"RParen",pattern:/\)/}),l=ca({name:"Query",pattern:t}),u=[ca({name:"WhiteSpace",pattern:/\s+/,group:yS.SKIPPED}),r,i,n,o,a,s,e,l],g=new yS(u);class f extends Swe{constructor(p){super(u);this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let m=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let I=m,B=this.CONSUME(e),b=this.SUBRULE2(this.atomicExpression);IY(B,r)?m=R=>I(R)||b(R):IY(B,i)?m=R=>!!(I(R)^b(R)):m=R=>I(R)&&b(R)}),m}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:d}=this.CONSUME(l);return m=>m(d)}},{ALT:()=>{this.CONSUME(s);let d=this.SUBRULE(this.atomicExpression);return m=>!d(m)}}])),this.RULE("parenthesisExpression",()=>{let d;return this.CONSUME(o),d=this.SUBRULE(this.expression),this.CONSUME(a),d}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var wY=E(JI=>{var xwe=yY();JI.makeParser=(t=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:r}=xwe(t),i=new r;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};JI.parse=JI.makeParser()});var QY=E((Ort,BY)=>{"use strict";BY.exports=(...t)=>[...new Set([].concat(...t))]});var wS=E((Krt,bY)=>{"use strict";var kwe=require("stream"),vY=kwe.PassThrough,Pwe=Array.prototype.slice;bY.exports=Dwe;function Dwe(){let t=[],e=!1,r=Pwe.call(arguments),i=r[r.length-1];i&&!Array.isArray(i)&&i.pipe==null?r.pop():i={};let n=i.end!==!1;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let s=vY(i);function o(){for(let c=0,u=arguments.length;c0||(e=!1,a())}function f(h){function p(){h.removeListener("merge2UnpipeEnd",p),h.removeListener("end",p),g()}if(h._readableState.endEmitted)return g();h.on("merge2UnpipeEnd",p),h.on("end",p),h.pipe(s,{end:!1}),h.resume()}for(let h=0;h{"use strict";Object.defineProperty(WI,"__esModule",{value:!0});function Rwe(t){return t.reduce((e,r)=>[].concat(e,r),[])}WI.flatten=Rwe;function Fwe(t,e){let r=[[]],i=0;for(let n of t)e(n)?(i++,r[i]=[]):r[i].push(n);return r}WI.splitWhen=Fwe});var kY=E(BS=>{"use strict";Object.defineProperty(BS,"__esModule",{value:!0});function Nwe(t){return t.code==="ENOENT"}BS.isEnoentCodeError=Nwe});var DY=E(QS=>{"use strict";Object.defineProperty(QS,"__esModule",{value:!0});var PY=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Lwe(t,e){return new PY(t,e)}QS.createDirentFromStats=Lwe});var RY=E(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});var Twe=require("path"),Mwe=2,Owe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function Kwe(t){return t.replace(/\\/g,"/")}Pu.unixify=Kwe;function Uwe(t,e){return Twe.resolve(t,e)}Pu.makeAbsolute=Uwe;function Hwe(t){return t.replace(Owe,"\\$2")}Pu.escape=Hwe;function Gwe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(Mwe)}return t}Pu.removeLeadingDotSegment=Gwe});var NY=E((Yrt,FY)=>{FY.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var TY=E((qrt,LY)=>{var jwe=NY(),Ywe={"{":"}","(":")","[":"]"},qwe=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,Jwe=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;LY.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(jwe(e))return!0;var i=qwe,n;for(r&&r.strict===!1&&(i=Jwe);n=i.exec(e);){if(n[2])return!0;var s=n.index+n[0].length,o=n[1],a=o?Ywe[o]:null;if(o&&a){var l=e.indexOf(a,s);l!==-1&&(s=l+1)}e=e.slice(s)}return!1}});var OY=E((Jrt,MY)=>{"use strict";var Wwe=TY(),zwe=require("path").posix.dirname,Vwe=require("os").platform()==="win32",bS="/",_we=/\\/g,Xwe=/[\{\[].*[\}\]]$/,Zwe=/(^|[^\\])([\{\[]|\([^\)]+$)/,$we=/\\([\!\*\?\|\[\]\(\)\{\}])/g;MY.exports=function(e,r){var i=Object.assign({flipBackslashes:!0},r);i.flipBackslashes&&Vwe&&e.indexOf(bS)<0&&(e=e.replace(_we,bS)),Xwe.test(e)&&(e+=bS),e+="a";do e=zwe(e);while(Wwe(e)||Zwe.test(e));return e.replace($we,"$1")}});var WY=E(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});var eBe=require("path"),tBe=OY(),KY=Nn(),rBe=iv(),UY="**",iBe="\\",nBe=/[*?]|^!/,sBe=/\[.*]/,oBe=/(?:^|[^!*+?@])\(.*\|.*\)/,aBe=/[!*+?@]\(.*\)/,ABe=/{.*(?:,|\.\.).*}/;function GY(t,e={}){return!HY(t,e)}Hr.isStaticPattern=GY;function HY(t,e={}){return!!(e.caseSensitiveMatch===!1||t.includes(iBe)||nBe.test(t)||sBe.test(t)||oBe.test(t)||e.extglob!==!1&&aBe.test(t)||e.braceExpansion!==!1&&ABe.test(t))}Hr.isDynamicPattern=HY;function lBe(t){return zI(t)?t.slice(1):t}Hr.convertToPositivePattern=lBe;function cBe(t){return"!"+t}Hr.convertToNegativePattern=cBe;function zI(t){return t.startsWith("!")&&t[1]!=="("}Hr.isNegativePattern=zI;function jY(t){return!zI(t)}Hr.isPositivePattern=jY;function uBe(t){return t.filter(zI)}Hr.getNegativePatterns=uBe;function gBe(t){return t.filter(jY)}Hr.getPositivePatterns=gBe;function fBe(t){return tBe(t,{flipBackslashes:!1})}Hr.getBaseDirectory=fBe;function hBe(t){return t.includes(UY)}Hr.hasGlobStar=hBe;function YY(t){return t.endsWith("/"+UY)}Hr.endsWithSlashGlobStar=YY;function pBe(t){let e=eBe.basename(t);return YY(t)||GY(e)}Hr.isAffectDepthOfReadingPattern=pBe;function dBe(t){return t.reduce((e,r)=>e.concat(qY(r)),[])}Hr.expandPatternsWithBraceExpansion=dBe;function qY(t){return KY.braces(t,{expand:!0,nodupes:!0})}Hr.expandBraceExpansion=qY;function CBe(t,e){let r=rBe.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.parts.length===0?[t]:r.parts}Hr.getPatternParts=CBe;function JY(t,e){return KY.makeRe(t,e)}Hr.makeRe=JY;function mBe(t,e){return t.map(r=>JY(r,e))}Hr.convertPatternsToRe=mBe;function EBe(t,e){return e.some(r=>r.test(t))}Hr.matchAny=EBe});var VY=E(vS=>{"use strict";Object.defineProperty(vS,"__esModule",{value:!0});var IBe=wS();function yBe(t){let e=IBe(t);return t.forEach(r=>{r.once("error",i=>e.emit("error",i))}),e.once("close",()=>zY(t)),e.once("end",()=>zY(t)),e}vS.merge=yBe;function zY(t){t.forEach(e=>e.emit("close"))}});var _Y=E(VI=>{"use strict";Object.defineProperty(VI,"__esModule",{value:!0});function wBe(t){return typeof t=="string"}VI.isString=wBe;function BBe(t){return t===""}VI.isEmpty=BBe});var ga=E(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});var QBe=xY();ua.array=QBe;var bBe=kY();ua.errno=bBe;var vBe=DY();ua.fs=vBe;var SBe=RY();ua.path=SBe;var xBe=WY();ua.pattern=xBe;var kBe=VY();ua.stream=kBe;var PBe=_Y();ua.string=PBe});var tq=E(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});var Ll=ga();function DBe(t,e){let r=XY(t),i=ZY(t,e.ignore),n=r.filter(l=>Ll.pattern.isStaticPattern(l,e)),s=r.filter(l=>Ll.pattern.isDynamicPattern(l,e)),o=SS(n,i,!1),a=SS(s,i,!0);return o.concat(a)}fa.generate=DBe;function SS(t,e,r){let i=$Y(t);return"."in i?[xS(".",t,e,r)]:eq(i,e,r)}fa.convertPatternsToTasks=SS;function XY(t){return Ll.pattern.getPositivePatterns(t)}fa.getPositivePatterns=XY;function ZY(t,e){return Ll.pattern.getNegativePatterns(t).concat(e).map(Ll.pattern.convertToPositivePattern)}fa.getNegativePatternsAsPositive=ZY;function $Y(t){let e={};return t.reduce((r,i)=>{let n=Ll.pattern.getBaseDirectory(i);return n in r?r[n].push(i):r[n]=[i],r},e)}fa.groupPatternsByBaseDirectory=$Y;function eq(t,e,r){return Object.keys(t).map(i=>xS(i,t[i],e,r))}fa.convertPatternGroupsToTasks=eq;function xS(t,e,r,i){return{dynamic:i,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Ll.pattern.convertToNegativePattern))}}fa.convertPatternGroupToTask=xS});var iq=E(_I=>{"use strict";Object.defineProperty(_I,"__esModule",{value:!0});_I.read=void 0;function RBe(t,e,r){e.fs.lstat(t,(i,n)=>{if(i!==null){rq(r,i);return}if(!n.isSymbolicLink()||!e.followSymbolicLink){kS(r,n);return}e.fs.stat(t,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){rq(r,s);return}kS(r,n);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),kS(r,o)})})}_I.read=RBe;function rq(t,e){t(e)}function kS(t,e){t(null,e)}});var nq=E(XI=>{"use strict";Object.defineProperty(XI,"__esModule",{value:!0});XI.read=void 0;function FBe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let i=e.fs.statSync(t);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw i}}XI.read=FBe});var sq=E(AA=>{"use strict";Object.defineProperty(AA,"__esModule",{value:!0});AA.createFileSystemAdapter=AA.FILE_SYSTEM_ADAPTER=void 0;var ZI=require("fs");AA.FILE_SYSTEM_ADAPTER={lstat:ZI.lstat,stat:ZI.stat,lstatSync:ZI.lstatSync,statSync:ZI.statSync};function NBe(t){return t===void 0?AA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},AA.FILE_SYSTEM_ADAPTER),t)}AA.createFileSystemAdapter=NBe});var aq=E(PS=>{"use strict";Object.defineProperty(PS,"__esModule",{value:!0});var LBe=sq(),oq=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=LBe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e!=null?e:r}};PS.default=oq});var Tl=E(lA=>{"use strict";Object.defineProperty(lA,"__esModule",{value:!0});lA.statSync=lA.stat=lA.Settings=void 0;var Aq=iq(),TBe=nq(),DS=aq();lA.Settings=DS.default;function MBe(t,e,r){if(typeof e=="function"){Aq.read(t,RS(),e);return}Aq.read(t,RS(e),r)}lA.stat=MBe;function OBe(t,e){let r=RS(e);return TBe.read(t,r)}lA.statSync=OBe;function RS(t={}){return t instanceof DS.default?t:new DS.default(t)}});var cq=E((iit,lq)=>{lq.exports=KBe;function KBe(t,e){var r,i,n,s=!0;Array.isArray(t)?(r=[],i=t.length):(n=Object.keys(t),r={},i=n.length);function o(l){function c(){e&&e(l,r),e=null}s?process.nextTick(c):c()}function a(l,c,u){r[l]=u,(--i==0||c)&&o(c)}i?n?n.forEach(function(l){t[l](function(c,u){a(l,c,u)})}):t.forEach(function(l,c){l(function(u,g){a(c,u,g)})}):o(null),s=!1}});var FS=E($I=>{"use strict";Object.defineProperty($I,"__esModule",{value:!0});$I.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var ey=process.versions.node.split(".");if(ey[0]===void 0||ey[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var uq=Number.parseInt(ey[0],10),UBe=Number.parseInt(ey[1],10),gq=10,HBe=10,GBe=uq>gq,jBe=uq===gq&&UBe>=HBe;$I.IS_SUPPORT_READDIR_WITH_FILE_TYPES=GBe||jBe});var hq=E(ty=>{"use strict";Object.defineProperty(ty,"__esModule",{value:!0});ty.createDirentFromStats=void 0;var fq=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function YBe(t,e){return new fq(t,e)}ty.createDirentFromStats=YBe});var NS=E(ry=>{"use strict";Object.defineProperty(ry,"__esModule",{value:!0});ry.fs=void 0;var qBe=hq();ry.fs=qBe});var LS=E(iy=>{"use strict";Object.defineProperty(iy,"__esModule",{value:!0});iy.joinPathSegments=void 0;function JBe(t,e,r){return t.endsWith(r)?t+e:t+r+e}iy.joinPathSegments=JBe});var Iq=E(cA=>{"use strict";Object.defineProperty(cA,"__esModule",{value:!0});cA.readdir=cA.readdirWithFileTypes=cA.read=void 0;var WBe=Tl(),pq=cq(),zBe=FS(),dq=NS(),Cq=LS();function VBe(t,e,r){if(!e.stats&&zBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){mq(t,e,r);return}Eq(t,e,r)}cA.read=VBe;function mq(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(a=>({dirent:a,name:a.name,path:Cq.joinPathSegments(t,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){TS(r,s);return}let o=s.map(a=>_Be(a,e));pq(o,(a,l)=>{if(a!==null){ny(r,a);return}TS(r,l)})})}cA.readdirWithFileTypes=mq;function _Be(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(i,n)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){r(i);return}r(null,t);return}t.dirent=dq.fs.createDirentFromStats(t.name,n),r(null,t)})}}function Eq(t,e,r){e.fs.readdir(t,(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(o=>{let a=Cq.joinPathSegments(t,o,e.pathSegmentSeparator);return l=>{WBe.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let g={name:o,path:a,dirent:dq.fs.createDirentFromStats(o,u)};e.stats&&(g.stats=u),l(null,g)})}});pq(s,(o,a)=>{if(o!==null){ny(r,o);return}TS(r,a)})})}cA.readdir=Eq;function ny(t,e){t(e)}function TS(t,e){t(null,e)}});var bq=E(uA=>{"use strict";Object.defineProperty(uA,"__esModule",{value:!0});uA.readdir=uA.readdirWithFileTypes=uA.read=void 0;var XBe=Tl(),ZBe=FS(),yq=NS(),wq=LS();function $Be(t,e){return!e.stats&&ZBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Bq(t,e):Qq(t,e)}uA.read=$Be;function Bq(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(i=>{let n={dirent:i,name:i.name,path:wq.joinPathSegments(t,i.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(n.path);n.dirent=yq.fs.createDirentFromStats(n.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return n})}uA.readdirWithFileTypes=Bq;function Qq(t,e){return e.fs.readdirSync(t).map(i=>{let n=wq.joinPathSegments(t,i,e.pathSegmentSeparator),s=XBe.statSync(n,e.fsStatSettings),o={name:i,path:n,dirent:yq.fs.createDirentFromStats(i,s)};return e.stats&&(o.stats=s),o})}uA.readdir=Qq});var vq=E(gA=>{"use strict";Object.defineProperty(gA,"__esModule",{value:!0});gA.createFileSystemAdapter=gA.FILE_SYSTEM_ADAPTER=void 0;var Du=require("fs");gA.FILE_SYSTEM_ADAPTER={lstat:Du.lstat,stat:Du.stat,lstatSync:Du.lstatSync,statSync:Du.statSync,readdir:Du.readdir,readdirSync:Du.readdirSync};function e0e(t){return t===void 0?gA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},gA.FILE_SYSTEM_ADAPTER),t)}gA.createFileSystemAdapter=e0e});var xq=E(MS=>{"use strict";Object.defineProperty(MS,"__esModule",{value:!0});var t0e=require("path"),r0e=Tl(),i0e=vq(),Sq=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=i0e.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,t0e.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new r0e.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};MS.default=Sq});var sy=E(fA=>{"use strict";Object.defineProperty(fA,"__esModule",{value:!0});fA.Settings=fA.scandirSync=fA.scandir=void 0;var kq=Iq(),n0e=bq(),OS=xq();fA.Settings=OS.default;function s0e(t,e,r){if(typeof e=="function"){kq.read(t,KS(),e);return}kq.read(t,KS(e),r)}fA.scandir=s0e;function o0e(t,e){let r=KS(e);return n0e.read(t,r)}fA.scandirSync=o0e;function KS(t={}){return t instanceof OS.default?t:new OS.default(t)}});var Dq=E((fit,Pq)=>{"use strict";function a0e(t){var e=new t,r=e;function i(){var s=e;return s.next?e=s.next:(e=new t,r=e),s.next=null,s}function n(s){r.next=s,r=s}return{get:i,release:n}}Pq.exports=a0e});var Fq=E((hit,US)=>{"use strict";var A0e=Dq();function Rq(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var i=A0e(l0e),n=null,s=null,o=0,a=null,l={push:d,drain:po,saturated:po,pause:u,paused:!1,concurrency:r,running:c,resume:h,idle:p,length:g,getQueue:f,unshift:m,empty:po,kill:B,killAndDrain:b,error:R};return l;function c(){return o}function u(){l.paused=!0}function g(){for(var H=n,L=0;H;)H=H.next,L++;return L}function f(){for(var H=n,L=[];H;)L.push(H.value),H=H.next;return L}function h(){if(!!l.paused){l.paused=!1;for(var H=0;H{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});Co.joinPathSegments=Co.replacePathSegmentSeparator=Co.isAppliedFilter=Co.isFatalError=void 0;function u0e(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Co.isFatalError=u0e;function g0e(t,e){return t===null||t(e)}Co.isAppliedFilter=g0e;function f0e(t,e){return t.split(/[/\\]/).join(e)}Co.replacePathSegmentSeparator=f0e;function h0e(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Co.joinPathSegments=h0e});var GS=E(HS=>{"use strict";Object.defineProperty(HS,"__esModule",{value:!0});var p0e=oy(),Nq=class{constructor(e,r){this._root=e,this._settings=r,this._root=p0e.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};HS.default=Nq});var YS=E(jS=>{"use strict";Object.defineProperty(jS,"__esModule",{value:!0});var d0e=require("events"),C0e=sy(),m0e=Fq(),ay=oy(),E0e=GS(),Lq=class extends E0e.default{constructor(e,r){super(e,r);this._settings=r,this._scandir=C0e.scandir,this._emitter=new d0e.EventEmitter,this._queue=m0e(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let i={directory:e,base:r};this._queue.push(i,n=>{n!==null&&this._handleError(n)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(i,n)=>{if(i!==null){r(i,void 0);return}for(let s of n)this._handleEntry(s,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!ay.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let i=e.path;r!==void 0&&(e.path=ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),ay.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};jS.default=Lq});var Mq=E(qS=>{"use strict";Object.defineProperty(qS,"__esModule",{value:!0});var I0e=YS(),Tq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new I0e.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{y0e(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{w0e(e,[...this._storage])}),this._reader.read()}};qS.default=Tq;function y0e(t,e){t(e)}function w0e(t,e){t(null,e)}});var Kq=E(JS=>{"use strict";Object.defineProperty(JS,"__esModule",{value:!0});var B0e=require("stream"),Q0e=YS(),Oq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Q0e.default(this._root,this._settings),this._stream=new B0e.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};JS.default=Oq});var Hq=E(WS=>{"use strict";Object.defineProperty(WS,"__esModule",{value:!0});var b0e=sy(),Ay=oy(),v0e=GS(),Uq=class extends v0e.default{constructor(){super(...arguments);this._scandir=b0e.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let n of i)this._handleEntry(n,r)}catch(i){this._handleError(i)}}_handleError(e){if(!!Ay.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let i=e.path;r!==void 0&&(e.path=Ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),Ay.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&Ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_pushToStorage(e){this._storage.add(e)}};WS.default=Uq});var jq=E(zS=>{"use strict";Object.defineProperty(zS,"__esModule",{value:!0});var S0e=Hq(),Gq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new S0e.default(this._root,this._settings)}read(){return this._reader.read()}};zS.default=Gq});var qq=E(VS=>{"use strict";Object.defineProperty(VS,"__esModule",{value:!0});var x0e=require("path"),k0e=sy(),Yq=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,x0e.sep),this.fsScandirSettings=new k0e.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};VS.default=Yq});var XS=E(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});mo.Settings=mo.walkStream=mo.walkSync=mo.walk=void 0;var Jq=Mq(),P0e=Kq(),D0e=jq(),_S=qq();mo.Settings=_S.default;function R0e(t,e,r){if(typeof e=="function"){new Jq.default(t,ly()).read(e);return}new Jq.default(t,ly(e)).read(r)}mo.walk=R0e;function F0e(t,e){let r=ly(e);return new D0e.default(t,r).read()}mo.walkSync=F0e;function N0e(t,e){let r=ly(e);return new P0e.default(t,r).read()}mo.walkStream=N0e;function ly(t={}){return t instanceof _S.default?t:new _S.default(t)}});var $S=E(ZS=>{"use strict";Object.defineProperty(ZS,"__esModule",{value:!0});var L0e=require("path"),T0e=Tl(),Wq=ga(),zq=class{constructor(e){this._settings=e,this._fsStatSettings=new T0e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return L0e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let i={name:r,path:r,dirent:Wq.fs.createDirentFromStats(r,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!Wq.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};ZS.default=zq});var tx=E(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var M0e=require("stream"),O0e=Tl(),K0e=XS(),U0e=$S(),Vq=class extends U0e.default{constructor(){super(...arguments);this._walkStream=K0e.walkStream,this._stat=O0e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let i=e.map(this._getFullEntryPath,this),n=new M0e.PassThrough({objectMode:!0});n._write=(s,o,a)=>this._getEntry(i[s],e[s],r).then(l=>{l!==null&&r.entryFilter(l)&&n.push(l),s===i.length-1&&n.end(),a()}).catch(a);for(let s=0;sthis._makeEntry(n,r)).catch(n=>{if(i.errorFilter(n))return null;throw n})}_getStat(e){return new Promise((r,i)=>{this._stat(e,this._fsStatSettings,(n,s)=>n===null?r(s):i(n))})}};ex.default=Vq});var Xq=E(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var Ru=ga(),_q=class{constructor(e,r,i){this._patterns=e,this._settings=r,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){let e=Ru.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let i=this._getPatternSegments(r),n=this._splitSegmentsIntoSections(i);this._storage.push({complete:n.length<=1,pattern:r,segments:i,sections:n})}}_getPatternSegments(e){return Ru.pattern.getPatternParts(e,this._micromatchOptions).map(i=>Ru.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:Ru.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return Ru.array.splitWhen(e,r=>r.dynamic&&Ru.pattern.hasGlobStar(r.pattern))}};rx.default=_q});var $q=E(ix=>{"use strict";Object.defineProperty(ix,"__esModule",{value:!0});var H0e=Xq(),Zq=class extends H0e.default{match(e){let r=e.split("/"),i=r.length,n=this._storage.filter(s=>!s.complete||s.segments.length>i);for(let s of n){let o=s.sections[0];if(!s.complete&&i>o.length||r.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};ix.default=Zq});var tJ=E(nx=>{"use strict";Object.defineProperty(nx,"__esModule",{value:!0});var cy=ga(),G0e=$q(),eJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,i){let n=this._getMatcher(r),s=this._getNegativePatternsRe(i);return o=>this._filter(e,o,n,s)}_getMatcher(e){return new G0e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(cy.pattern.isAffectDepthOfReadingPattern);return cy.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,i,n){let s=this._getEntryLevel(e,r.path);if(this._isSkippedByDeep(s)||this._isSkippedSymbolicLink(r))return!1;let o=cy.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(o,i)?!1:this._isSkippedByNegativePatterns(o,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,r){let i=e.split("/").length;return r.split("/").length-(e===""?0:i)}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!cy.pattern.matchAny(e,r)}};nx.default=eJ});var iJ=E(sx=>{"use strict";Object.defineProperty(sx,"__esModule",{value:!0});var ip=ga(),rJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let i=ip.pattern.convertPatternsToRe(e,this._micromatchOptions),n=ip.pattern.convertPatternsToRe(r,this._micromatchOptions);return s=>this._filter(s,i,n)}_filter(e,r,i){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,i))return!1;let n=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(n,r)&&!this._isMatchToPatterns(e.path,i)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let i=ip.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(i,r)}_isMatchToPatterns(e,r){let i=ip.path.removeLeadingDotSegment(e);return ip.pattern.matchAny(i,r)}};sx.default=rJ});var sJ=E(ox=>{"use strict";Object.defineProperty(ox,"__esModule",{value:!0});var j0e=ga(),nJ=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return j0e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};ox.default=nJ});var AJ=E(ax=>{"use strict";Object.defineProperty(ax,"__esModule",{value:!0});var oJ=ga(),aJ=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=oJ.path.makeAbsolute(this._settings.cwd,r),r=oJ.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};ax.default=aJ});var uy=E(Ax=>{"use strict";Object.defineProperty(Ax,"__esModule",{value:!0});var Y0e=require("path"),q0e=tJ(),J0e=iJ(),W0e=sJ(),z0e=AJ(),lJ=class{constructor(e){this._settings=e,this.errorFilter=new W0e.default(this._settings),this.entryFilter=new J0e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new q0e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new z0e.default(this._settings)}_getRootDirectory(e){return Y0e.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};Ax.default=lJ});var uJ=E(lx=>{"use strict";Object.defineProperty(lx,"__esModule",{value:!0});var V0e=tx(),_0e=uy(),cJ=class extends _0e.default{constructor(){super(...arguments);this._reader=new V0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=[];return new Promise((s,o)=>{let a=this.api(r,e,i);a.once("error",o),a.on("data",l=>n.push(i.transform(l))),a.once("end",()=>s(n))})}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};lx.default=cJ});var fJ=E(cx=>{"use strict";Object.defineProperty(cx,"__esModule",{value:!0});var X0e=require("stream"),Z0e=tx(),$0e=uy(),gJ=class extends $0e.default{constructor(){super(...arguments);this._reader=new Z0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=this.api(r,e,i),s=new X0e.Readable({objectMode:!0,read:()=>{}});return n.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",i.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>n.destroy()),s}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};cx.default=gJ});var pJ=E(ux=>{"use strict";Object.defineProperty(ux,"__esModule",{value:!0});var eQe=Tl(),tQe=XS(),rQe=$S(),hJ=class extends rQe.default{constructor(){super(...arguments);this._walkSync=tQe.walkSync,this._statSync=eQe.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let i=[];for(let n of e){let s=this._getFullEntryPath(n),o=this._getEntry(s,n,r);o===null||!r.entryFilter(o)||i.push(o)}return i}_getEntry(e,r,i){try{let n=this._getStat(e);return this._makeEntry(n,r)}catch(n){if(i.errorFilter(n))return null;throw n}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};ux.default=hJ});var CJ=E(gx=>{"use strict";Object.defineProperty(gx,"__esModule",{value:!0});var iQe=pJ(),nQe=uy(),dJ=class extends nQe.default{constructor(){super(...arguments);this._reader=new iQe.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(r,e,i).map(i.transform)}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};gx.default=dJ});var EJ=E(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});var Fu=require("fs"),sQe=require("os"),oQe=sQe.cpus().length;np.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Fu.lstat,lstatSync:Fu.lstatSync,stat:Fu.stat,statSync:Fu.statSync,readdir:Fu.readdir,readdirSync:Fu.readdirSync};var mJ=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,oQe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,Infinity),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},np.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};np.default=mJ});var gy=E((Oit,IJ)=>{"use strict";var yJ=tq(),aQe=uJ(),AQe=fJ(),lQe=CJ(),fx=EJ(),Ml=ga();async function px(t,e){Nu(t);let r=hx(t,aQe.default,e),i=await Promise.all(r);return Ml.array.flatten(i)}(function(t){function e(o,a){Nu(o);let l=hx(o,lQe.default,a);return Ml.array.flatten(l)}t.sync=e;function r(o,a){Nu(o);let l=hx(o,AQe.default,a);return Ml.stream.merge(l)}t.stream=r;function i(o,a){Nu(o);let l=[].concat(o),c=new fx.default(a);return yJ.generate(l,c)}t.generateTasks=i;function n(o,a){Nu(o);let l=new fx.default(a);return Ml.pattern.isDynamicPattern(o,l)}t.isDynamicPattern=n;function s(o){return Nu(o),Ml.path.escape(o)}t.escapePath=s})(px||(px={}));function hx(t,e,r){let i=[].concat(t),n=new fx.default(r),s=yJ.generate(i,n),o=new e(n);return s.map(o.read,o)}function Nu(t){if(![].concat(t).every(i=>Ml.string.isString(i)&&!Ml.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}IJ.exports=px});var BJ=E(Ol=>{"use strict";var{promisify:cQe}=require("util"),wJ=require("fs");async function dx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await cQe(wJ[t])(r))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function Cx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return wJ[t](r)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}Ol.isFile=dx.bind(null,"stat","isFile");Ol.isDirectory=dx.bind(null,"stat","isDirectory");Ol.isSymlink=dx.bind(null,"lstat","isSymbolicLink");Ol.isFileSync=Cx.bind(null,"statSync","isFile");Ol.isDirectorySync=Cx.bind(null,"statSync","isDirectory");Ol.isSymlinkSync=Cx.bind(null,"lstatSync","isSymbolicLink")});var xJ=E((Uit,mx)=>{"use strict";var Kl=require("path"),QJ=BJ(),bJ=t=>t.length>1?`{${t.join(",")}}`:t[0],vJ=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Kl.isAbsolute(r)?r:Kl.join(e,r)},uQe=(t,e)=>Kl.extname(t)?`**/${t}`:`**/${t}.${bJ(e)}`,SJ=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Kl.posix.join(t,uQe(r,e.extensions))):e.files?e.files.map(r=>Kl.posix.join(t,`**/${r}`)):e.extensions?[Kl.posix.join(t,`**/*.${bJ(e.extensions)}`)]:[Kl.posix.join(t,"**")]};mx.exports=async(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async i=>await QJ.isDirectory(vJ(i,e.cwd))?SJ(i,e):i));return[].concat.apply([],r)};mx.exports.sync=(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(i=>QJ.isDirectorySync(vJ(i,e.cwd))?SJ(i,e):i);return[].concat.apply([],r)}});var TJ=E((Hit,kJ)=>{function PJ(t){return Array.isArray(t)?t:[t]}var gQe=/^\s+$/,fQe=/^\\!/,hQe=/^\\#/,pQe=/\r?\n/g,dQe=/^\.*\/|^\.+$/,Ex="/",DJ=typeof Symbol!="undefined"?Symbol.for("node-ignore"):"node-ignore",CQe=(t,e,r)=>Object.defineProperty(t,e,{value:r}),mQe=/([0-z])-([0-z])/g,EQe=t=>t.replace(mQe,(e,r,i)=>r.charCodeAt(0)<=i.charCodeAt(0)?e:""),IQe=[[/\\?\s+$/,t=>t.indexOf("\\")===0?" ":""],[/\\\s/g,()=>" "],[/[\\^$.|*+(){]/g,t=>`\\${t}`],[/\[([^\]/]*)($|\])/g,(t,e,r)=>r==="]"?`[${EQe(e)}]`:`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6`${e}[^\\/]*`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`],[/\\\\\\/g,()=>"\\"]],RJ=Object.create(null),yQe=(t,e,r)=>{let i=RJ[t];if(i)return i;let n=IQe.reduce((s,o)=>s.replace(o[0],o[1].bind(t)),t);return RJ[t]=r?new RegExp(n,"i"):new RegExp(n)},Ix=t=>typeof t=="string",wQe=t=>t&&Ix(t)&&!gQe.test(t)&&t.indexOf("#")!==0,BQe=t=>t.split(pQe),FJ=class{constructor(e,r,i,n){this.origin=e,this.pattern=r,this.negative=i,this.regex=n}},QQe=(t,e)=>{let r=t,i=!1;t.indexOf("!")===0&&(i=!0,t=t.substr(1)),t=t.replace(fQe,"!").replace(hQe,"#");let n=yQe(t,i,e);return new FJ(r,t,i,n)},bQe=(t,e)=>{throw new e(t)},ha=(t,e,r)=>Ix(t)?t?ha.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),NJ=t=>dQe.test(t);ha.isNotRelative=NJ;ha.convert=t=>t;var LJ=class{constructor({ignorecase:e=!0}={}){this._rules=[],this._ignorecase=e,CQe(this,DJ,!0),this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[DJ]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(wQe(e)){let r=QQe(e,this._ignorecase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,PJ(Ix(e)?BQe(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:o}=s;if(n===o&&i!==n||o&&!i&&!n&&!r)return;s.regex.test(e)&&(i=!o,n=o)}),{ignored:i,unignored:n}}_test(e,r,i,n){let s=e&&ha.convert(e);return ha(s,e,bQe),this._t(s,r,i,n)}_t(e,r,i,n){if(e in r)return r[e];if(n||(n=e.split(Ex)),n.pop(),!n.length)return r[e]=this._testOne(e,i);let s=this._t(n.join(Ex)+Ex,r,i,n);return r[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return PJ(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},fy=t=>new LJ(t),vQe=()=>!1,SQe=t=>ha(t&&ha.convert(t),t,vQe);fy.isPathValid=SQe;fy.default=fy;kJ.exports=fy;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");ha.convert=t;let e=/^[a-z]:\//i;ha.isNotRelative=r=>e.test(r)||NJ(r)}});var OJ=E((Git,MJ)=>{"use strict";MJ.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var qJ=E((jit,yx)=>{"use strict";var{promisify:xQe}=require("util"),KJ=require("fs"),pa=require("path"),UJ=gy(),kQe=TJ(),sp=OJ(),HJ=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],PQe=xQe(KJ.readFile),DQe=t=>e=>e.startsWith("!")?"!"+pa.posix.join(t,e.slice(1)):pa.posix.join(t,e),RQe=(t,e)=>{let r=sp(pa.relative(e.cwd,pa.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(i=>!i.startsWith("#")).map(DQe(r))},GJ=t=>{let e=kQe();for(let r of t)e.add(RQe(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},FQe=(t,e)=>{if(t=sp(t),pa.isAbsolute(e)){if(sp(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return pa.join(t,e)},jJ=(t,e)=>r=>t.ignores(sp(pa.relative(e,FQe(e,r.path||r)))),NQe=async(t,e)=>{let r=pa.join(e,t),i=await PQe(r,"utf8");return{cwd:e,filePath:r,content:i}},LQe=(t,e)=>{let r=pa.join(e,t),i=KJ.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:i}},YJ=({ignore:t=[],cwd:e=sp(process.cwd())}={})=>({ignore:t,cwd:e});yx.exports=async t=>{t=YJ(t);let e=await UJ("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(n=>NQe(n,t.cwd))),i=GJ(r);return jJ(i,t.cwd)};yx.exports.sync=t=>{t=YJ(t);let r=UJ.sync("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}).map(n=>LQe(n,t.cwd)),i=GJ(r);return jJ(i,t.cwd)}});var VJ=E((Yit,JJ)=>{"use strict";var{Transform:TQe}=require("stream"),wx=class extends TQe{constructor(){super({objectMode:!0})}},WJ=class extends wx{constructor(e){super();this._filter=e}_transform(e,r,i){this._filter(e)&&this.push(e),i()}},zJ=class extends wx{constructor(){super();this._pushed=new Set}_transform(e,r,i){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),i()}};JJ.exports={FilterStream:WJ,UniqueStream:zJ}});var vx=E((qit,Ul)=>{"use strict";var _J=require("fs"),hy=QY(),MQe=wS(),py=gy(),dy=xJ(),Bx=qJ(),{FilterStream:OQe,UniqueStream:KQe}=VJ(),XJ=()=>!1,ZJ=t=>t[0]==="!",UQe=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},HQe=(t={})=>{if(!t.cwd)return;let e;try{e=_J.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},GQe=t=>t.stats instanceof _J.Stats?t.path:t,Cy=(t,e)=>{t=hy([].concat(t)),UQe(t),HQe(e);let r=[];e=P({ignore:[],expandDirectories:!0},e);for(let[i,n]of t.entries()){if(ZJ(n))continue;let s=t.slice(i).filter(a=>ZJ(a)).map(a=>a.slice(1)),o=_(P({},e),{ignore:e.ignore.concat(s)});r.push({pattern:n,options:o})}return r},jQe=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r=_(P({},r),{files:t.options.expandDirectories}):typeof t.options.expandDirectories=="object"&&(r=P(P({},r),t.options.expandDirectories)),e(t.pattern,r)},Qx=(t,e)=>t.options.expandDirectories?jQe(t,e):[t.pattern],$J=t=>t&&t.gitignore?Bx.sync({cwd:t.cwd,ignore:t.ignore}):XJ,bx=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=dy.sync(r.ignore)),{pattern:e,options:r}};Ul.exports=async(t,e)=>{let r=Cy(t,e),i=async()=>e&&e.gitignore?Bx({cwd:e.cwd,ignore:e.ignore}):XJ,n=async()=>{let l=await Promise.all(r.map(async c=>{let u=await Qx(c,dy);return Promise.all(u.map(bx(c)))}));return hy(...l)},[s,o]=await Promise.all([i(),n()]),a=await Promise.all(o.map(l=>py(l.pattern,l.options)));return hy(...a).filter(l=>!s(GQe(l)))};Ul.exports.sync=(t,e)=>{let r=Cy(t,e),i=[];for(let o of r){let a=Qx(o,dy.sync).map(bx(o));i.push(...a)}let n=$J(e),s=[];for(let o of i)s=hy(s,py.sync(o.pattern,o.options));return s.filter(o=>!n(o))};Ul.exports.stream=(t,e)=>{let r=Cy(t,e),i=[];for(let a of r){let l=Qx(a,dy.sync).map(bx(a));i.push(...l)}let n=$J(e),s=new OQe(a=>!n(a)),o=new KQe;return MQe(i.map(a=>py.stream(a.pattern,a.options))).pipe(s).pipe(o)};Ul.exports.generateGlobTasks=Cy;Ul.exports.hasMagic=(t,e)=>[].concat(t).some(r=>py.isDynamicPattern(r,e));Ul.exports.gitignore=Bx});var Ca=E((da,Dy)=>{"use strict";Object.defineProperty(da,"__esModule",{value:!0});var A3=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function ibe(t){return A3.includes(t)}var nbe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...A3];function sbe(t){return nbe.includes(t)}var obe=["null","undefined","string","number","bigint","boolean","symbol"];function abe(t){return obe.includes(t)}function Hu(t){return e=>typeof e===t}var{toString:l3}=Object.prototype,mp=t=>{let e=l3.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&j.domElement(t))return"HTMLElement";if(sbe(e))return e},er=t=>e=>mp(e)===t;function j(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(j.observable(t))return"Observable";if(j.array(t))return"Array";if(j.buffer(t))return"Buffer";let e=mp(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}j.undefined=Hu("undefined");j.string=Hu("string");var Abe=Hu("number");j.number=t=>Abe(t)&&!j.nan(t);j.bigint=Hu("bigint");j.function_=Hu("function");j.null_=t=>t===null;j.class_=t=>j.function_(t)&&t.toString().startsWith("class ");j.boolean=t=>t===!0||t===!1;j.symbol=Hu("symbol");j.numericString=t=>j.string(t)&&!j.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));j.array=(t,e)=>Array.isArray(t)?j.function_(e)?t.every(e):!0:!1;j.buffer=t=>{var e,r,i,n;return(n=(i=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||i===void 0?void 0:i.call(r,t))!==null&&n!==void 0?n:!1};j.nullOrUndefined=t=>j.null_(t)||j.undefined(t);j.object=t=>!j.null_(t)&&(typeof t=="object"||j.function_(t));j.iterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};j.asyncIterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};j.generator=t=>j.iterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.asyncGenerator=t=>j.asyncIterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.nativePromise=t=>er("Promise")(t);var lbe=t=>{var e,r;return j.function_((e=t)===null||e===void 0?void 0:e.then)&&j.function_((r=t)===null||r===void 0?void 0:r.catch)};j.promise=t=>j.nativePromise(t)||lbe(t);j.generatorFunction=er("GeneratorFunction");j.asyncGeneratorFunction=t=>mp(t)==="AsyncGeneratorFunction";j.asyncFunction=t=>mp(t)==="AsyncFunction";j.boundFunction=t=>j.function_(t)&&!t.hasOwnProperty("prototype");j.regExp=er("RegExp");j.date=er("Date");j.error=er("Error");j.map=t=>er("Map")(t);j.set=t=>er("Set")(t);j.weakMap=t=>er("WeakMap")(t);j.weakSet=t=>er("WeakSet")(t);j.int8Array=er("Int8Array");j.uint8Array=er("Uint8Array");j.uint8ClampedArray=er("Uint8ClampedArray");j.int16Array=er("Int16Array");j.uint16Array=er("Uint16Array");j.int32Array=er("Int32Array");j.uint32Array=er("Uint32Array");j.float32Array=er("Float32Array");j.float64Array=er("Float64Array");j.bigInt64Array=er("BigInt64Array");j.bigUint64Array=er("BigUint64Array");j.arrayBuffer=er("ArrayBuffer");j.sharedArrayBuffer=er("SharedArrayBuffer");j.dataView=er("DataView");j.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;j.urlInstance=t=>er("URL")(t);j.urlString=t=>{if(!j.string(t))return!1;try{return new URL(t),!0}catch(e){return!1}};j.truthy=t=>Boolean(t);j.falsy=t=>!t;j.nan=t=>Number.isNaN(t);j.primitive=t=>j.null_(t)||abe(typeof t);j.integer=t=>Number.isInteger(t);j.safeInteger=t=>Number.isSafeInteger(t);j.plainObject=t=>{if(l3.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};j.typedArray=t=>ibe(mp(t));var cbe=t=>j.safeInteger(t)&&t>=0;j.arrayLike=t=>!j.nullOrUndefined(t)&&!j.function_(t)&&cbe(t.length);j.inRange=(t,e)=>{if(j.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(j.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var ube=1,gbe=["innerHTML","ownerDocument","style","attributes","nodeValue"];j.domElement=t=>j.object(t)&&t.nodeType===ube&&j.string(t.nodeName)&&!j.plainObject(t)&&gbe.every(e=>e in t);j.observable=t=>{var e,r,i,n;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((n=(i=t)["@@observable"])===null||n===void 0?void 0:n.call(i)):!1};j.nodeStream=t=>j.object(t)&&j.function_(t.pipe)&&!j.observable(t);j.infinite=t=>t===Infinity||t===-Infinity;var c3=t=>e=>j.integer(e)&&Math.abs(e%2)===t;j.evenInteger=c3(0);j.oddInteger=c3(1);j.emptyArray=t=>j.array(t)&&t.length===0;j.nonEmptyArray=t=>j.array(t)&&t.length>0;j.emptyString=t=>j.string(t)&&t.length===0;j.nonEmptyString=t=>j.string(t)&&t.length>0;var fbe=t=>j.string(t)&&!/\S/.test(t);j.emptyStringOrWhitespace=t=>j.emptyString(t)||fbe(t);j.emptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length===0;j.nonEmptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length>0;j.emptySet=t=>j.set(t)&&t.size===0;j.nonEmptySet=t=>j.set(t)&&t.size>0;j.emptyMap=t=>j.map(t)&&t.size===0;j.nonEmptyMap=t=>j.map(t)&&t.size>0;j.propertyKey=t=>j.any([j.string,j.number,j.symbol],t);j.formData=t=>er("FormData")(t);j.urlSearchParams=t=>er("URLSearchParams")(t);var u3=(t,e,r)=>{if(!j.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};j.any=(t,...e)=>(j.array(t)?t:[t]).some(i=>u3(Array.prototype.some,i,e));j.all=(t,...e)=>u3(Array.prototype.every,t,e);var Te=(t,e,r,i={})=>{if(!t){let{multipleValues:n}=i,s=n?`received values of types ${[...new Set(r.map(o=>`\`${j(o)}\``))].join(", ")}`:`received value of type \`${j(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${s}.`)}};da.assert={undefined:t=>Te(j.undefined(t),"undefined",t),string:t=>Te(j.string(t),"string",t),number:t=>Te(j.number(t),"number",t),bigint:t=>Te(j.bigint(t),"bigint",t),function_:t=>Te(j.function_(t),"Function",t),null_:t=>Te(j.null_(t),"null",t),class_:t=>Te(j.class_(t),"Class",t),boolean:t=>Te(j.boolean(t),"boolean",t),symbol:t=>Te(j.symbol(t),"symbol",t),numericString:t=>Te(j.numericString(t),"string with a number",t),array:(t,e)=>{Te(j.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Te(j.buffer(t),"Buffer",t),nullOrUndefined:t=>Te(j.nullOrUndefined(t),"null or undefined",t),object:t=>Te(j.object(t),"Object",t),iterable:t=>Te(j.iterable(t),"Iterable",t),asyncIterable:t=>Te(j.asyncIterable(t),"AsyncIterable",t),generator:t=>Te(j.generator(t),"Generator",t),asyncGenerator:t=>Te(j.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Te(j.nativePromise(t),"native Promise",t),promise:t=>Te(j.promise(t),"Promise",t),generatorFunction:t=>Te(j.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Te(j.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Te(j.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Te(j.boundFunction(t),"Function",t),regExp:t=>Te(j.regExp(t),"RegExp",t),date:t=>Te(j.date(t),"Date",t),error:t=>Te(j.error(t),"Error",t),map:t=>Te(j.map(t),"Map",t),set:t=>Te(j.set(t),"Set",t),weakMap:t=>Te(j.weakMap(t),"WeakMap",t),weakSet:t=>Te(j.weakSet(t),"WeakSet",t),int8Array:t=>Te(j.int8Array(t),"Int8Array",t),uint8Array:t=>Te(j.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Te(j.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Te(j.int16Array(t),"Int16Array",t),uint16Array:t=>Te(j.uint16Array(t),"Uint16Array",t),int32Array:t=>Te(j.int32Array(t),"Int32Array",t),uint32Array:t=>Te(j.uint32Array(t),"Uint32Array",t),float32Array:t=>Te(j.float32Array(t),"Float32Array",t),float64Array:t=>Te(j.float64Array(t),"Float64Array",t),bigInt64Array:t=>Te(j.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Te(j.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Te(j.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Te(j.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Te(j.dataView(t),"DataView",t),urlInstance:t=>Te(j.urlInstance(t),"URL",t),urlString:t=>Te(j.urlString(t),"string with a URL",t),truthy:t=>Te(j.truthy(t),"truthy",t),falsy:t=>Te(j.falsy(t),"falsy",t),nan:t=>Te(j.nan(t),"NaN",t),primitive:t=>Te(j.primitive(t),"primitive",t),integer:t=>Te(j.integer(t),"integer",t),safeInteger:t=>Te(j.safeInteger(t),"integer",t),plainObject:t=>Te(j.plainObject(t),"plain object",t),typedArray:t=>Te(j.typedArray(t),"TypedArray",t),arrayLike:t=>Te(j.arrayLike(t),"array-like",t),domElement:t=>Te(j.domElement(t),"HTMLElement",t),observable:t=>Te(j.observable(t),"Observable",t),nodeStream:t=>Te(j.nodeStream(t),"Node.js Stream",t),infinite:t=>Te(j.infinite(t),"infinite number",t),emptyArray:t=>Te(j.emptyArray(t),"empty array",t),nonEmptyArray:t=>Te(j.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Te(j.emptyString(t),"empty string",t),nonEmptyString:t=>Te(j.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Te(j.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Te(j.emptyObject(t),"empty object",t),nonEmptyObject:t=>Te(j.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Te(j.emptySet(t),"empty set",t),nonEmptySet:t=>Te(j.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Te(j.emptyMap(t),"empty map",t),nonEmptyMap:t=>Te(j.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Te(j.propertyKey(t),"PropertyKey",t),formData:t=>Te(j.formData(t),"FormData",t),urlSearchParams:t=>Te(j.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Te(j.evenInteger(t),"even integer",t),oddInteger:t=>Te(j.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Te(j.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Te(j.inRange(t,e),"in range",t),any:(t,...e)=>Te(j.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Te(j.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(j,{class:{value:j.class_},function:{value:j.function_},null:{value:j.null_}});Object.defineProperties(da.assert,{class:{value:da.assert.class_},function:{value:da.assert.function_},null:{value:da.assert.null_}});da.default=j;Dy.exports=j;Dy.exports.default=j;Dy.exports.assert=da.assert});var g3=E((gnt,Ux)=>{"use strict";var Hx=class extends Error{constructor(e){super(e||"Promise was canceled");this.name="CancelError"}get isCanceled(){return!0}},Ep=class{static fn(e){return(...r)=>new Ep((i,n,s)=>{r.push(s),e(...r).then(i,n)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,i)=>{this._reject=i;let n=a=>{this._isPending=!1,r(a)},s=a=>{this._isPending=!1,i(a)},o=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(o,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(n,s,o)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new Hx(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Ep.prototype,Promise.prototype);Ux.exports=Ep;Ux.exports.CancelError=Hx});var f3=E((Gx,jx)=>{"use strict";Object.defineProperty(Gx,"__esModule",{value:!0});var hbe=require("tls"),Yx=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let i=typeof r.connect=="function",n=typeof r.secureConnect=="function",s=typeof r.close=="function",o=()=>{i&&r.connect(),t instanceof hbe.TLSSocket&&n&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),s&&t.once("close",r.close)};t.writable&&!t.connecting?o():t.connecting?t.once("connect",o):t.destroyed&&s&&r.close(t._hadError)};Gx.default=Yx;jx.exports=Yx;jx.exports.default=Yx});var h3=E((qx,Jx)=>{"use strict";Object.defineProperty(qx,"__esModule",{value:!0});var pbe=f3(),dbe=Number(process.versions.node.split(".")[0]),Wx=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=o=>{let a=o.emit.bind(o);o.emit=(l,...c)=>(l==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,o.emit=a),a(l,...c))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||dbe>=13)&&(e.phases.total=Date.now()-e.start)});let i=o=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let a=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};o.prependOnceListener("lookup",a),pbe.default(o,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(o.removeListener("lookup",a),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?i(t.socket):t.prependOnceListener("socket",i);let n=()=>{var o;e.upload=Date.now(),e.phases.request=e.upload-(o=e.secureConnect,o!=null?o:e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?n():t.prependOnceListener("finish",n),t.prependOnceListener("response",o=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,o.timings=e,r(o),o.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};qx.default=Wx;Jx.exports=Wx;Jx.exports.default=Wx});var y3=E((fnt,zx)=>{"use strict";var{V4MAPPED:Cbe,ADDRCONFIG:mbe,ALL:p3,promises:{Resolver:d3},lookup:Ebe}=require("dns"),{promisify:Vx}=require("util"),Ibe=require("os"),Gu=Symbol("cacheableLookupCreateConnection"),_x=Symbol("cacheableLookupInstance"),C3=Symbol("expires"),ybe=typeof p3=="number",m3=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},wbe=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},E3=()=>{let t=!1,e=!1;for(let r of Object.values(Ibe.networkInterfaces()))for(let i of r)if(!i.internal&&(i.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Bbe=t=>Symbol.iterator in t,I3={ttl:!0},Qbe={all:!0},Xx=class{constructor({cache:e=new Map,maxTtl:r=Infinity,fallbackDuration:i=3600,errorTtl:n=.15,resolver:s=new d3,lookup:o=Ebe}={}){if(this.maxTtl=r,this.errorTtl=n,this._cache=e,this._resolver=s,this._dnsLookup=Vx(o),this._resolver instanceof d3?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=Vx(this._resolver.resolve4.bind(this._resolver)),this._resolve6=Vx(this._resolver.resolve6.bind(this._resolver))),this._iface=E3(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,i<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},i*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,i){if(typeof r=="function"?(i=r,r={}):typeof r=="number"&&(r={family:r}),!i)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(n=>{r.all?i(null,n):i(null,n.address,n.family,n.expires,n.ttl)},i)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let i=await this.query(e);if(r.family===6){let n=i.filter(s=>s.family===6);r.hints&Cbe&&(ybe&&r.hints&p3||n.length===0)?wbe(i):i=n}else r.family===4&&(i=i.filter(n=>n.family===4));if(r.hints&mbe){let{_iface:n}=this;i=i.filter(s=>s.family===6?n.has6:n.has4)}if(i.length===0){let n=new Error(`cacheableLookup ENOTFOUND ${e}`);throw n.code="ENOTFOUND",n.hostname=e,n}return r.all?i:i[0]}async query(e){let r=await this._cache.get(e);if(!r){let i=this._pending[e];if(i)r=await i;else{let n=this.queryAndCache(e);this._pending[e]=n,r=await n}}return r=r.map(i=>P({},i)),r}async _resolve(e){let r=async c=>{try{return await c}catch(u){if(u.code==="ENODATA"||u.code==="ENOTFOUND")return[];throw u}},[i,n]=await Promise.all([this._resolve4(e,I3),this._resolve6(e,I3)].map(c=>r(c))),s=0,o=0,a=0,l=Date.now();for(let c of i)c.family=4,c.expires=l+c.ttl*1e3,s=Math.max(s,c.ttl);for(let c of n)c.family=6,c.expires=l+c.ttl*1e3,o=Math.max(o,c.ttl);return i.length>0?n.length>0?a=Math.min(s,o):a=s:a=o,{entries:[...i,...n],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch(r){return{entries:[],cacheTtl:0}}}async _set(e,r,i){if(this.maxTtl>0&&i>0){i=Math.min(i,this.maxTtl)*1e3,r[C3]=Date.now()+i;try{await this._cache.set(e,r,i)}catch(n){this.lookupAsync=async()=>{let s=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw s.cause=n,s}}Bbe(this._cache)&&this._tick(i)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Qbe);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let i=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,i),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let i=Infinity,n=Date.now();for(let[s,o]of this._cache){let a=o[C3];n>=a?this._cache.delete(s):a("lookup"in r||(r.lookup=this.lookup),e[Gu](r,i))}uninstall(e){if(m3(e),e[Gu]){if(e[_x]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[Gu],delete e[Gu],delete e[_x]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=E3(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};zx.exports=Xx;zx.exports.default=Xx});var Q3=E((hnt,Zx)=>{"use strict";var bbe=typeof URL=="undefined"?require("url").URL:URL,vbe="text/plain",Sbe="us-ascii",w3=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),xbe=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let i=r[1].split(";"),n=r[2],s=e?"":r[3],o=!1;i[i.length-1]==="base64"&&(i.pop(),o=!0);let a=(i.shift()||"").toLowerCase(),c=[...i.map(u=>{let[g,f=""]=u.split("=").map(h=>h.trim());return g==="charset"&&(f=f.toLowerCase(),f===Sbe)?"":`${g}${f?`=${f}`:""}`}).filter(Boolean)];return o&&c.push("base64"),(c.length!==0||a&&a!==vbe)&&c.unshift(a),`data:${c.join(";")},${o?n.trim():n}${s?`#${s}`:""}`},B3=(t,e)=>{if(e=P({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return xbe(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new bbe(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?!:).|^)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];w3(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])w3(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,"")),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};Zx.exports=B3;Zx.exports.default=B3});var S3=E((pnt,b3)=>{b3.exports=v3;function v3(t,e){if(t&&e)return v3(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(i){r[i]=t[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var x3=S3();$x.exports=x3(Ry);$x.exports.strict=x3(k3);Ry.proto=Ry(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Ry(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return k3(this)},configurable:!0})});function Ry(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function k3(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var tk=E((Cnt,P3)=>{var kbe=ek(),Pbe=function(){},Dbe=function(t){return t.setHeader&&typeof t.abort=="function"},Rbe=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},D3=function(t,e,r){if(typeof e=="function")return D3(t,null,e);e||(e={}),r=kbe(r||Pbe);var i=t._writableState,n=t._readableState,s=e.readable||e.readable!==!1&&t.readable,o=e.writable||e.writable!==!1&&t.writable,a=function(){t.writable||l()},l=function(){o=!1,s||r.call(t)},c=function(){s=!1,o||r.call(t)},u=function(p){r.call(t,p?new Error("exited with error code: "+p):null)},g=function(p){r.call(t,p)},f=function(){if(s&&!(n&&n.ended))return r.call(t,new Error("premature close"));if(o&&!(i&&i.ended))return r.call(t,new Error("premature close"))},h=function(){t.req.on("finish",l)};return Dbe(t)?(t.on("complete",l),t.on("abort",f),t.req?h():t.on("request",h)):o&&!i&&(t.on("end",a),t.on("close",a)),Rbe(t)&&t.on("exit",u),t.on("end",c),t.on("finish",l),e.error!==!1&&t.on("error",g),t.on("close",f),function(){t.removeListener("complete",l),t.removeListener("abort",f),t.removeListener("request",h),t.req&&t.req.removeListener("finish",l),t.removeListener("end",a),t.removeListener("close",a),t.removeListener("finish",l),t.removeListener("exit",u),t.removeListener("end",c),t.removeListener("error",g),t.removeListener("close",f)}};P3.exports=D3});var N3=E((mnt,R3)=>{var Fbe=ek(),Nbe=tk(),rk=require("fs"),Ip=function(){},Lbe=/^v?\.0/.test(process.version),Fy=function(t){return typeof t=="function"},Tbe=function(t){return!Lbe||!rk?!1:(t instanceof(rk.ReadStream||Ip)||t instanceof(rk.WriteStream||Ip))&&Fy(t.close)},Mbe=function(t){return t.setHeader&&Fy(t.abort)},Obe=function(t,e,r,i){i=Fbe(i);var n=!1;t.on("close",function(){n=!0}),Nbe(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,Tbe(t))return t.close(Ip);if(Mbe(t))return t.abort();if(Fy(t.destroy))return t.destroy();i(o||new Error("stream was destroyed"))}}},F3=function(t){t()},Kbe=function(t,e){return t.pipe(e)},Ube=function(){var t=Array.prototype.slice.call(arguments),e=Fy(t[t.length-1]||Ip)&&t.pop()||Ip;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,i=t.map(function(n,s){var o=s0;return Obe(n,o,a,function(l){r||(r=l),l&&i.forEach(F3),!o&&(i.forEach(F3),e(r))})});return t.reduce(Kbe)};R3.exports=Ube});var T3=E((Ent,L3)=>{"use strict";var{PassThrough:Hbe}=require("stream");L3.exports=t=>{t=P({},t);let{array:e}=t,{encoding:r}=t,i=r==="buffer",n=!1;e?n=!(r||i):r=r||"utf8",i&&(r=null);let s=new Hbe({objectMode:n});r&&s.setEncoding(r);let o=0,a=[];return s.on("data",l=>{a.push(l),n?o=a.length:o+=l.length}),s.getBufferedValue=()=>e?a:i?Buffer.concat(a,o):a.join(""),s.getBufferedLength=()=>o,s}});var M3=E((Int,ju)=>{"use strict";var Gbe=N3(),jbe=T3(),ik=class extends Error{constructor(){super("maxBuffer exceeded");this.name="MaxBufferError"}};async function Ny(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e=P({maxBuffer:Infinity},e);let{maxBuffer:r}=e,i;return await new Promise((n,s)=>{let o=a=>{a&&(a.bufferedData=i.getBufferedValue()),s(a)};i=Gbe(t,jbe(e),a=>{if(a){o(a);return}n()}),i.on("data",()=>{i.getBufferedLength()>r&&o(new ik)})}),i.getBufferedValue()}ju.exports=Ny;ju.exports.default=Ny;ju.exports.buffer=(t,e)=>Ny(t,_(P({},e),{encoding:"buffer"}));ju.exports.array=(t,e)=>Ny(t,_(P({},e),{array:!0}));ju.exports.MaxBufferError=ik});var K3=E((wnt,O3)=>{"use strict";var Ybe=[200,203,204,206,300,301,404,405,410,414,501],qbe=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],Jbe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},Wbe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function nk(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let i of r){let[n,s]=i.split(/\s*=\s*/,2);e[n]=s===void 0?!0:s.replace(/^"|"$/g,"")}return e}function zbe(t){let e=[];for(let r in t){let i=t[r];e.push(i===!0?r:r+"="+i)}if(!!e.length)return e.join(", ")}O3.exports=class{constructor(e,r,{shared:i,cacheHeuristic:n,immutableMinTimeToLive:s,ignoreCargoCult:o,trustServerDate:a,_fromObject:l}={}){if(l){this._fromObject(l);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=i!==!1,this._trustServerDate=a!==void 0?a:!0,this._cacheHeuristic=n!==void 0?n:.1,this._immutableMinTtl=s!==void 0?s:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=nk(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=nk(e.headers["cache-control"]),o&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":zbe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!r.headers["cache-control"]&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&qbe.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||Ybe.indexOf(this._status)!==-1))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=nk(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let i of r)if(e.headers[i]!==this._reqHeaders[i])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let i in e)Jbe[i]||(r[i]=e[i]);if(e.connection){let i=e.connection.trim().split(/\s*,\s*/);for(let n of i)delete r[n]}if(r.warning){let i=r.warning.split(/,/).filter(n=>!/^\s*1[0-9][0-9]/.test(n));i.length?r.warning=i.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){return this._trustServerDate?this._serverDate():this._responseTime}_serverDate(){let e=Date.parse(this._resHeaders.date);if(isFinite(e)){let r=8*3600*1e3;if(Math.abs(this._responseTime-e)e&&(e=i)}let r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){let e=parseInt(this._resHeaders.age);return isFinite(e)?e:0}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this._serverDate();if(this._resHeaders.expires){let i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ii)return Math.max(e,(r-i)/1e3*this._cacheHeuristic)}return e}timeToLive(){return Math.max(0,this.maxAge()-this.age())*1e3}stale(){return this.maxAge()<=this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let n=r["if-none-match"].split(/,/).filter(s=>!/^\s*W\//.test(s));n.length?r["if-none-match"]=n.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),!r||!r.headers)throw Error("Response headers missing");let i=!1;if(r.status!==void 0&&r.status!=304?i=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let n={};for(let o in this._resHeaders)n[o]=o in r.headers&&!Wbe[o]?r.headers[o]:this._resHeaders[o];let s=Object.assign({},r,{status:this._status,method:this._method,headers:n});return{policy:new this.constructor(e,s,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl,trustServerDate:this._trustServerDate}),modified:!1,matches:!0}}}});var Ly=E((Bnt,U3)=>{"use strict";U3.exports=t=>{let e={};for(let[r,i]of Object.entries(t))e[r.toLowerCase()]=i;return e}});var j3=E((Qnt,H3)=>{"use strict";var Vbe=require("stream").Readable,_be=Ly(),G3=class extends Vbe{constructor(e,r,i,n){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(i instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof n!="string")throw new TypeError("Argument `url` should be a string");super();this.statusCode=e,this.headers=_be(r),this.body=i,this.url=n}_read(){this.push(this.body),this.push(null)}};H3.exports=G3});var q3=E((bnt,Y3)=>{"use strict";var Xbe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Y3.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Xbe));for(let i of r)i in e||(e[i]=typeof t[i]=="function"?t[i].bind(t):t[i])}});var W3=E((vnt,J3)=>{"use strict";var Zbe=require("stream").PassThrough,$be=q3(),eve=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Zbe;return $be(t,e),t.pipe(e)};J3.exports=eve});var z3=E(sk=>{sk.stringify=function t(e){if(typeof e=="undefined")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",i=Array.isArray(e);r=i?"[":"{";var n=!0;for(var s in e){var o=typeof e[s]=="function"||!i&&typeof e[s]=="undefined";Object.hasOwnProperty.call(e,s)&&!o&&(n||(r+=","),n=!1,i?e[s]==null?r+="null":r+=t(e[s]):e[s]!==void 0&&(r+=t(s)+":"+t(e[s])))}return r+=i?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e=="undefined"?"null":JSON.stringify(e)};sk.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Z3=E((xnt,V3)=>{"use strict";var tve=require("events"),_3=z3(),rve=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(require(e[r]))(t)}return new Map},X3=class extends tve{constructor(e,r){super();if(this.opts=Object.assign({namespace:"keyv",serialize:_3.stringify,deserialize:_3.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let i=Object.assign({},this.opts);this.opts.store=rve(i)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",i=>this.emit("error",i)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:i}=this.opts;return Promise.resolve().then(()=>i.get(e)).then(n=>typeof n=="string"?this.opts.deserialize(n):n).then(n=>{if(n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(e);return}return r&&r.raw?n:n.value}})}set(e,r,i){e=this._getKeyPrefix(e),typeof i=="undefined"&&(i=this.opts.ttl),i===0&&(i=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof i=="number"?Date.now()+i:null;return r={value:r,expires:s},this.opts.serialize(r)}).then(s=>n.set(e,s,i)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};V3.exports=X3});var tW=E((knt,$3)=>{"use strict";var ive=require("events"),Ty=require("url"),nve=Q3(),sve=M3(),ok=K3(),eW=j3(),ove=Ly(),ave=W3(),Ave=Z3(),yo=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Ave({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,i)=>{let n;if(typeof r=="string")n=ak(Ty.parse(r)),r={};else if(r instanceof Ty.URL)n=ak(Ty.parse(r.toString())),r={};else{let[g,...f]=(r.path||"").split("?"),h=f.length>0?`?${f.join("?")}`:"";n=ak(_(P({},r),{pathname:g,search:h}))}r=P(P({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},r),lve(n)),r.headers=ove(r.headers);let s=new ive,o=nve(Ty.format(n),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${r.method}:${o}`,l=!1,c=!1,u=g=>{c=!0;let f=!1,h,p=new Promise(m=>{h=()=>{f||(f=!0,m())}}),d=m=>{if(l&&!g.forceRefresh){m.status=m.statusCode;let B=ok.fromObject(l.cachePolicy).revalidatedPolicy(g,m);if(!B.modified){let b=B.policy.responseHeaders();m=new eW(l.statusCode,b,l.body,l.url),m.cachePolicy=B.policy,m.fromCache=!0}}m.fromCache||(m.cachePolicy=new ok(g,m,g),m.fromCache=!1);let I;g.cache&&m.cachePolicy.storable()?(I=ave(m),(async()=>{try{let B=sve.buffer(m);if(await Promise.race([p,new Promise(L=>m.once("end",L))]),f)return;let b=await B,R={cachePolicy:m.cachePolicy.toObject(),url:m.url,statusCode:m.fromCache?l.statusCode:m.statusCode,body:b},H=g.strictTtl?m.cachePolicy.timeToLive():void 0;g.maxTtl&&(H=H?Math.min(H,g.maxTtl):g.maxTtl),await this.cache.set(a,R,H)}catch(B){s.emit("error",new yo.CacheError(B))}})()):g.cache&&l&&(async()=>{try{await this.cache.delete(a)}catch(B){s.emit("error",new yo.CacheError(B))}})(),s.emit("response",I||m),typeof i=="function"&&i(I||m)};try{let m=e(g,d);m.once("error",h),m.once("abort",h),s.emit("request",m)}catch(m){s.emit("error",new yo.RequestError(m))}};return(async()=>{let g=async h=>{await Promise.resolve();let p=h.cache?await this.cache.get(a):void 0;if(typeof p=="undefined")return u(h);let d=ok.fromObject(p.cachePolicy);if(d.satisfiesWithoutRevalidation(h)&&!h.forceRefresh){let m=d.responseHeaders(),I=new eW(p.statusCode,m,p.body,p.url);I.cachePolicy=d,I.fromCache=!0,s.emit("response",I),typeof i=="function"&&i(I)}else l=p,h.headers=d.revalidationHeaders(h),u(h)},f=h=>s.emit("error",new yo.CacheError(h));this.cache.once("error",f),s.on("response",()=>this.cache.removeListener("error",f));try{await g(r)}catch(h){r.automaticFailover&&!c&&u(r),s.emit("error",new yo.CacheError(h))}})(),s}}};function lve(t){let e=P({},t);return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function ak(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}yo.RequestError=class extends Error{constructor(t){super(t.message);this.name="RequestError",Object.assign(this,t)}};yo.CacheError=class extends Error{constructor(t){super(t.message);this.name="CacheError",Object.assign(this,t)}};$3.exports=yo});var iW=E((Pnt,rW)=>{"use strict";var cve=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];rW.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(cve)),i={};for(let n of r)n in e||(i[n]={get(){let s=t[n];return typeof s=="function"?s.bind(t):s},set(s){t[n]=s},enumerable:!0,configurable:!1});return Object.defineProperties(e,i),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var sW=E((Dnt,nW)=>{"use strict";var{Transform:uve,PassThrough:gve}=require("stream"),Ak=require("zlib"),fve=iW();nW.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof Ak.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let i=!0,n=new uve({transform(a,l,c){i=!1,c(null,a)},flush(a){a()}}),s=new gve({autoDestroy:!1,destroy(a,l){t.destroy(),l(a)}}),o=r?Ak.createBrotliDecompress():Ak.createUnzip();return o.once("error",a=>{if(i&&!t.readable){s.end();return}s.destroy(a)}),fve(t,s),t.pipe(n).pipe(o).pipe(s),s}});var lk=E((Rnt,oW)=>{"use strict";var aW=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[i,n]of this.oldCache.entries())this.onEviction(i,n);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};oW.exports=aW});var uk=E((Fnt,AW)=>{"use strict";var hve=require("events"),pve=require("tls"),dve=require("http2"),Cve=lk(),_i=Symbol("currentStreamsCount"),lW=Symbol("request"),ns=Symbol("cachedOriginSet"),Yu=Symbol("gracefullyClosing"),mve=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],Eve=(t,e,r)=>{let i=0,n=t.length;for(;i>>1;r(t[s],e)?i=s+1:n=s}return i},Ive=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,ck=(t,e)=>{for(let r of t)r[ns].lengthe[ns].includes(i))&&r[_i]+e[_i]<=e.remoteSettings.maxConcurrentStreams&&cW(r)},yve=(t,e)=>{for(let r of t)e[ns].lengthr[ns].includes(i))&&e[_i]+r[_i]<=r.remoteSettings.maxConcurrentStreams&&cW(e)},uW=({agent:t,isFree:e})=>{let r={};for(let i in t.sessions){let s=t.sessions[i].filter(o=>{let a=o[ma.kCurrentStreamsCount]{t[Yu]=!0,t[_i]===0&&t.close()},ma=class extends hve{constructor({timeout:e=6e4,maxSessions:r=Infinity,maxFreeSessions:i=10,maxCachedTlsSessions:n=100}={}){super();this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=i,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Cve({maxSize:n})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let i of mve)e[i]&&(r+=`:${e[i]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let i=this.queue[e][r];this._sessionsCount{Array.isArray(i)?(i=[...i],n()):i=[{resolve:n,reject:s}];let o=this.normalizeOptions(r),a=ma.normalizeOrigin(e,r&&r.servername);if(a===void 0){for(let{reject:u}of i)u(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(o in this.sessions){let u=this.sessions[o],g=-1,f=-1,h;for(let p of u){let d=p.remoteSettings.maxConcurrentStreams;if(d=d||p[Yu]||p.destroyed)continue;h||(g=d),m>f&&(h=p,f=m)}}if(h){if(i.length!==1){for(let{reject:p}of i){let d=new Error(`Expected the length of listeners to be 1, got ${i.length}. -Please report this to https://github.com/szmarczak/http2-wrapper/`);p(d)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=dve.connect(e,P({createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u)},r));f[_i]=0,f[Yu]=!1;let h=()=>f[_i]{this.tlsSessionCache.set(u,m)}),f.once("error",m=>{for(let{reject:I}of i)I(m);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let m=this.sessions[o];m.splice(m.indexOf(f),1),m.length===0&&delete this.sessions[o]}else{let m=new Error("Session closed without receiving a SETTINGS frame");m.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:I}of i)I(m);l()}this._tryToCreateNewSession(o,a)});let d=()=>{if(!(!(o in this.queue)||!h())){for(let m of f[ns])if(m in this.queue[o]){let{listeners:I}=this.queue[o][m];for(;I.length!==0&&h();)I.shift().resolve(f);let B=this.queue[o];if(B[m].listeners.length===0&&(delete B[m],Object.keys(B).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[ns]=f.originSet,!!h()&&(d(),ck(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let m=new Error("Agent has been destroyed");for(let I of i)I.reject(m);f.destroy();return}f[ns]=f.originSet;{let m=this.sessions;if(o in m){let I=m[o];I.splice(Eve(I,f,Ive),0,f)}else m[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),d(),l(),f[_i]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,r,i),i.length=0),f.on("remoteSettings",()=>{d(),ck(this.sessions[o],f)})}),f[lW]=f.request,f.request=(m,I)=>{if(f[Yu])throw new Error("The session is gracefully closing. No new streams are allowed.");let B=f[lW](m,I);return f.ref(),++f[_i],f[_i]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,B.once("close",()=>{if(p=h(),--f[_i],!f.destroyed&&!f.closed&&(yve(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let b=f[_i]===0;b&&f.unref(),b&&(this._freeSessionsCount>this.maxFreeSessions||f[Yu])?f.close():(ck(this.sessions[o],f),d())}}),B}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,r,i,n){return new Promise((s,o)=>{this.getSession(e,r,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,r){return ma.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof r.servername=="undefined"&&(r.servername=n),pve.connect(i,n,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[_i]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let i of r)i.destroy(e);for(let r of Object.values(this.queue))for(let i of Object.values(r))i.destroyed=!0;this.queue={}}get freeSessions(){return uW({agent:this,isFree:!0})}get busySessions(){return uW({agent:this,isFree:!1})}};ma.kCurrentStreamsCount=_i;ma.kGracefullyClosing=Yu;AW.exports={Agent:ma,globalAgent:new ma}});var gk=E((Nnt,gW)=>{"use strict";var{Readable:wve}=require("stream"),fW=class extends wve{constructor(e,r){super({highWaterMark:r,autoDestroy:!1});this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};gW.exports=fW});var fk=E((Lnt,hW)=>{"use strict";hW.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var dW=E((Tnt,pW)=>{"use strict";pW.exports=(t,e,r)=>{for(let i of r)t.on(i,(...n)=>e.emit(i,...n))}});var mW=E((Mnt,CW)=>{"use strict";CW.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var IW=E((Knt,EW)=>{"use strict";var qu=(t,e,r)=>{EW.exports[e]=class extends t{constructor(...n){super(typeof r=="string"?r:r(n));this.name=`${super.name} [${e}]`,this.code=e}}};qu(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],i=Array.isArray(r);return i&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${i?"one of":"of"} type ${r}. Received ${typeof t[2]}`});qu(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);qu(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);qu(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);qu(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);qu(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var Ck=E((Unt,yW)=>{"use strict";var Bve=require("http2"),{Writable:Qve}=require("stream"),{Agent:wW,globalAgent:bve}=uk(),vve=gk(),Sve=fk(),xve=dW(),kve=mW(),{ERR_INVALID_ARG_TYPE:hk,ERR_INVALID_PROTOCOL:Pve,ERR_HTTP_HEADERS_SENT:BW,ERR_INVALID_HTTP_TOKEN:Dve,ERR_HTTP_INVALID_HEADER_VALUE:Rve,ERR_INVALID_CHAR:Fve}=IW(),{HTTP2_HEADER_STATUS:QW,HTTP2_HEADER_METHOD:bW,HTTP2_HEADER_PATH:vW,HTTP2_METHOD_CONNECT:Nve}=Bve.constants,Pi=Symbol("headers"),pk=Symbol("origin"),dk=Symbol("session"),SW=Symbol("options"),My=Symbol("flushedHeaders"),yp=Symbol("jobs"),Lve=/^[\^`\-\w!#$%&*+.|~]+$/,Tve=/[^\t\u0020-\u007E\u0080-\u00FF]/,xW=class extends Qve{constructor(e,r,i){super({autoDestroy:!1});let n=typeof e=="string"||e instanceof URL;if(n&&(e=Sve(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(i=r,r=n?e:P({},e)):r=P(P({},e),r),r.h2session)this[dk]=r.h2session;else if(r.agent===!1)this.agent=new wW({maxFreeSessions:0});else if(typeof r.agent=="undefined"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new wW({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=bve;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new hk("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Pve(r.protocol,"https:");let s=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,o=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:a}=r;if(r.timeout=void 0,this[Pi]=Object.create(null),this[yp]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[l,c]of Object.entries(r.headers))this.setHeader(l,c);r.auth&&!("authorization"in this[Pi])&&(this[Pi].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[SW]=r,s===443?(this[pk]=`https://${o}`,":authority"in this[Pi]||(this[Pi][":authority"]=o)):(this[pk]=`https://${o}:${s}`,":authority"in this[Pi]||(this[Pi][":authority"]=`${o}:${s}`)),a&&this.setTimeout(a),i&&this.once("response",i),this[My]=!1}get method(){return this[Pi][bW]}set method(e){e&&(this[Pi][bW]=e.toUpperCase())}get path(){return this[Pi][vW]}set path(e){e&&(this[Pi][vW]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,i){if(this._mustNotHaveABody){i(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let n=()=>this._request.write(e,r,i);this._request?n():this[yp].push(n)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[yp].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[My]||this.destroyed)return;this[My]=!0;let e=this.method===Nve,r=i=>{if(this._request=i,this.destroyed){i.destroy();return}e||xve(i,this,["timeout","continue","close","error"]);let n=o=>(...a)=>{!this.writable&&!this.destroyed?o(...a):this.once("finish",()=>{o(...a)})};i.once("response",n((o,a,l)=>{let c=new vve(this.socket,i.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=o[QW],c.headers=o,c.rawHeaders=l,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,i,Buffer.alloc(0))?this.emit("close"):i.destroy()):(i.on("data",u=>{!c._dumped&&!c.push(u)&&i.pause()}),i.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),i.once("headers",n(o=>this.emit("information",{statusCode:o[QW]}))),i.once("trailers",n((o,a,l)=>{let{res:c}=this;c.trailers=o,c.rawTrailers=l}));let{socket:s}=i.session;this.socket=s,this.connection=s;for(let o of this[yp])o();this.emit("socket",this.socket)};if(this[dk])try{r(this[dk].request(this[Pi]))}catch(i){this.emit("error",i)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[pk],this[SW],this[Pi]))}catch(i){this.emit("error",i)}}}getHeader(e){if(typeof e!="string")throw new hk("name","string",e);return this[Pi][e.toLowerCase()]}get headersSent(){return this[My]}removeHeader(e){if(typeof e!="string")throw new hk("name","string",e);if(this.headersSent)throw new BW("remove");delete this[Pi][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new BW("set");if(typeof e!="string"||!Lve.test(e)&&!kve(e))throw new Dve("Header name",e);if(typeof r=="undefined")throw new Rve(r,e);if(Tve.test(r))throw new Fve("header content",e);this[Pi][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let i=()=>this._request.setTimeout(e,r);return this._request?i():this[yp].push(i),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};yW.exports=xW});var PW=E((Hnt,kW)=>{"use strict";var Mve=require("tls");kW.exports=(t={})=>new Promise((e,r)=>{let i=Mve.connect(t,()=>{t.resolveSocket?(i.off("error",r),e({alpnProtocol:i.alpnProtocol,socket:i})):(i.destroy(),e({alpnProtocol:i.alpnProtocol}))});i.on("error",r)})});var RW=E((Gnt,DW)=>{"use strict";var Ove=require("net");DW.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Ove.isIP(e)?"":e}});var LW=E((jnt,mk)=>{"use strict";var FW=require("http"),Ek=require("https"),Kve=PW(),Uve=lk(),Hve=Ck(),Gve=RW(),jve=fk(),Oy=new Uve({maxSize:100}),wp=new Map,NW=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let i=()=>{t.emit("free",e,r)};e.on("free",i);let n=()=>{t.removeSocket(e,r)};e.on("close",n);let s=()=>{t.removeSocket(e,r),e.off("close",n),e.off("free",i),e.off("agentRemove",s)};e.on("agentRemove",s),t.emit("free",e,r)},Yve=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!Oy.has(e)){if(wp.has(e))return(await wp.get(e)).alpnProtocol;let{path:r,agent:i}=t;t.path=t.socketPath;let n=Kve(t);wp.set(e,n);try{let{socket:s,alpnProtocol:o}=await n;if(Oy.set(e,o),t.path=r,o==="h2")s.destroy();else{let{globalAgent:a}=Ek,l=Ek.Agent.prototype.createConnection;i?i.createConnection===l?NW(i,s,t):s.destroy():a.createConnection===l?NW(a,s,t):s.destroy()}return wp.delete(e),o}catch(s){throw wp.delete(e),s}}return Oy.get(e)};mk.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=jve(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e=_(P(P({ALPNProtocols:["h2","http/1.1"]},t),e),{resolveSocket:!0}),!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let i=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Gve(e),e.port=e.port||(i?443:80),e._defaultAgent=i?Ek.globalAgent:FW.globalAgent;let n=e.agent;if(n){if(n.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=n[i?"https":"http"]}return i&&await Yve(e)==="h2"?(n&&(e.agent=n.http2),new Hve(e,r)):FW.request(e,r)};mk.exports.protocolCache=Oy});var MW=E((Ynt,TW)=>{"use strict";var qve=require("http2"),Jve=uk(),Ik=Ck(),Wve=gk(),zve=LW(),Vve=(t,e,r)=>new Ik(t,e,r),_ve=(t,e,r)=>{let i=new Ik(t,e,r);return i.end(),i};TW.exports=_(P(_(P({},qve),{ClientRequest:Ik,IncomingMessage:Wve}),Jve),{request:Vve,get:_ve,auto:zve})});var wk=E(yk=>{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});var OW=Ca();yk.default=t=>OW.default.nodeStream(t)&&OW.default.function_(t.getBoundary)});var GW=E(Bk=>{"use strict";Object.defineProperty(Bk,"__esModule",{value:!0});var KW=require("fs"),UW=require("util"),HW=Ca(),Xve=wk(),Zve=UW.promisify(KW.stat);Bk.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(HW.default.string(t))return Buffer.byteLength(t);if(HW.default.buffer(t))return t.length;if(Xve.default(t))return UW.promisify(t.getLength.bind(t))();if(t instanceof KW.ReadStream){let{size:r}=await Zve(t.path);return r===0?void 0:r}}});var bk=E(Qk=>{"use strict";Object.defineProperty(Qk,"__esModule",{value:!0});function $ve(t,e,r){let i={};for(let n of r)i[n]=(...s)=>{e.emit(n,...s)},t.on(n,i[n]);return()=>{for(let n of r)t.off(n,i[n])}}Qk.default=$ve});var jW=E(vk=>{"use strict";Object.defineProperty(vk,"__esModule",{value:!0});vk.default=()=>{let t=[];return{once(e,r,i){e.once(r,i),t.push({origin:e,event:r,fn:i})},unhandleAll(){for(let e of t){let{origin:r,event:i,fn:n}=e;r.removeListener(i,n)}t.length=0}}}});var qW=E(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});Bp.TimeoutError=void 0;var eSe=require("net"),tSe=jW(),YW=Symbol("reentry"),rSe=()=>{},Sk=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`);this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};Bp.TimeoutError=Sk;Bp.default=(t,e,r)=>{if(YW in t)return rSe;t[YW]=!0;let i=[],{once:n,unhandleAll:s}=tSe.default(),o=(g,f,h)=>{var p;let d=setTimeout(f,g,g,h);(p=d.unref)===null||p===void 0||p.call(d);let m=()=>{clearTimeout(d)};return i.push(m),m},{host:a,hostname:l}=r,c=(g,f)=>{t.destroy(new Sk(g,f))},u=()=>{for(let g of i)g();s()};if(t.once("error",g=>{if(u(),t.listenerCount("error")===0)throw g}),t.once("close",u),n(t,"response",g=>{n(g,"end",u)}),typeof e.request!="undefined"&&o(e.request,c,"request"),typeof e.socket!="undefined"){let g=()=>{c(e.socket,"socket")};t.setTimeout(e.socket,g),i.push(()=>{t.removeListener("timeout",g)})}return n(t,"socket",g=>{var f;let{socketPath:h}=t;if(g.connecting){let p=Boolean(h!=null?h:eSe.isIP((f=l!=null?l:a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup!="undefined"&&!p&&typeof g.address().address=="undefined"){let d=o(e.lookup,c,"lookup");n(g,"lookup",d)}if(typeof e.connect!="undefined"){let d=()=>o(e.connect,c,"connect");p?n(g,"connect",d()):n(g,"lookup",m=>{m===null&&n(g,"connect",d())})}typeof e.secureConnect!="undefined"&&r.protocol==="https:"&&n(g,"connect",()=>{let d=o(e.secureConnect,c,"secureConnect");n(g,"secureConnect",d)})}if(typeof e.send!="undefined"){let p=()=>o(e.send,c,"send");g.connecting?n(g,"connect",()=>{n(t,"upload-complete",p())}):n(t,"upload-complete",p())}}),typeof e.response!="undefined"&&n(t,"upload-complete",()=>{let g=o(e.response,c,"response");n(t,"response",g)}),u}});var WW=E(xk=>{"use strict";Object.defineProperty(xk,"__esModule",{value:!0});var JW=Ca();xk.default=t=>{t=t;let e={protocol:t.protocol,hostname:JW.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return JW.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var zW=E(kk=>{"use strict";Object.defineProperty(kk,"__esModule",{value:!0});var iSe=require("url"),nSe=["protocol","host","hostname","port","pathname","search"];kk.default=(t,e)=>{var r,i;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(i=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&i!==void 0?i:""}`}let n=new iSe.URL(t);if(e.path){let s=e.path.indexOf("?");s===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,s),e.search=e.path.slice(s+1)),delete e.path}for(let s of nSe)e[s]&&(n[s]=e[s].toString());return n}});var _W=E(Pk=>{"use strict";Object.defineProperty(Pk,"__esModule",{value:!0});var VW=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};Pk.default=VW});var Rk=E(Dk=>{"use strict";Object.defineProperty(Dk,"__esModule",{value:!0});var sSe=async t=>{let e=[],r=0;for await(let i of t)e.push(i),r+=Buffer.byteLength(i);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};Dk.default=sSe});var ZW=E(ql=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});ql.dnsLookupIpVersionToFamily=ql.isDnsLookupIpVersion=void 0;var XW={auto:0,ipv4:4,ipv6:6};ql.isDnsLookupIpVersion=t=>t in XW;ql.dnsLookupIpVersionToFamily=t=>{if(ql.isDnsLookupIpVersion(t))return XW[t];throw new Error("Invalid DNS lookup IP version")}});var Fk=E(Ky=>{"use strict";Object.defineProperty(Ky,"__esModule",{value:!0});Ky.isResponseOk=void 0;Ky.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var e8=E(Nk=>{"use strict";Object.defineProperty(Nk,"__esModule",{value:!0});var $W=new Set;Nk.default=t=>{$W.has(t)||($W.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var t8=E(Lk=>{"use strict";Object.defineProperty(Lk,"__esModule",{value:!0});var ar=Ca(),oSe=(t,e)=>{if(ar.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");ar.assert.any([ar.default.string,ar.default.undefined],t.encoding),ar.assert.any([ar.default.boolean,ar.default.undefined],t.resolveBodyOnly),ar.assert.any([ar.default.boolean,ar.default.undefined],t.methodRewriting),ar.assert.any([ar.default.boolean,ar.default.undefined],t.isStream),ar.assert.any([ar.default.string,ar.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry=P({},e.retry):t.retry={calculateDelay:i=>i.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},ar.default.object(r)?(t.retry=P(P({},t.retry),r),t.retry.methods=[...new Set(t.retry.methods.map(i=>i.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):ar.default.number(r)&&(t.retry.limit=r),ar.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(ar.default.number))),ar.default.object(t.pagination)){e&&(t.pagination=P(P({},e.pagination),t.pagination));let{pagination:i}=t;if(!ar.default.function_(i.transform))throw new Error("`options.pagination.transform` must be implemented");if(!ar.default.function_(i.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!ar.default.function_(i.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!ar.default.function_(i.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};Lk.default=oSe});var r8=E(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.retryAfterStatusCodes=void 0;Qp.retryAfterStatusCodes=new Set([413,429,503]);var aSe=({attemptCount:t,retryOptions:e,error:r,retryAfter:i})=>{if(t>e.limit)return 0;let n=e.methods.includes(r.options.method),s=e.errorCodes.includes(r.code),o=r.response&&e.statusCodes.includes(r.response.statusCode);if(!n||!s&&!o)return 0;if(r.response){if(i)return e.maxRetryAfter===void 0||i>e.maxRetryAfter?0:i;if(r.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(t-1)*1e3+a};Qp.default=aSe});var vp=E(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.UnsupportedProtocolError=Rt.ReadError=Rt.TimeoutError=Rt.UploadError=Rt.CacheError=Rt.HTTPError=Rt.MaxRedirectsError=Rt.RequestError=Rt.setNonEnumerableProperties=Rt.knownHookEvents=Rt.withoutBody=Rt.kIsNormalizedAlready=void 0;var i8=require("util"),n8=require("stream"),ASe=require("fs"),dA=require("url"),s8=require("http"),Tk=require("http"),lSe=require("https"),cSe=h3(),uSe=y3(),o8=tW(),gSe=sW(),fSe=MW(),hSe=Ly(),ce=Ca(),pSe=GW(),a8=wk(),dSe=bk(),A8=qW(),CSe=WW(),l8=zW(),mSe=_W(),ESe=Rk(),c8=ZW(),ISe=Fk(),CA=e8(),ySe=t8(),wSe=r8(),Mk,Ei=Symbol("request"),Uy=Symbol("response"),Ju=Symbol("responseSize"),Wu=Symbol("downloadedSize"),zu=Symbol("bodySize"),Vu=Symbol("uploadedSize"),Hy=Symbol("serverResponsesPiped"),u8=Symbol("unproxyEvents"),g8=Symbol("isFromCache"),Ok=Symbol("cancelTimeouts"),f8=Symbol("startedReading"),_u=Symbol("stopReading"),Gy=Symbol("triggerRead"),mA=Symbol("body"),bp=Symbol("jobs"),h8=Symbol("originalResponse"),p8=Symbol("retryTimeout");Rt.kIsNormalizedAlready=Symbol("isNormalizedAlready");var BSe=ce.default.string(process.versions.brotli);Rt.withoutBody=new Set(["GET","HEAD"]);Rt.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function QSe(t){for(let e in t){let r=t[e];if(!ce.default.string(r)&&!ce.default.number(r)&&!ce.default.boolean(r)&&!ce.default.null_(r)&&!ce.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function bSe(t){return ce.default.object(t)&&!("statusCode"in t)}var Kk=new mSe.default,vSe=async t=>new Promise((e,r)=>{let i=n=>{r(n)};t.pending||e(),t.once("error",i),t.once("ready",()=>{t.off("error",i),e()})}),SSe=new Set([300,301,302,303,304,307,308]),xSe=["context","body","json","form"];Rt.setNonEnumerableProperties=(t,e)=>{let r={};for(let i of t)if(!!i)for(let n of xSe)n in i&&(r[n]={writable:!0,configurable:!0,enumerable:!1,value:i[n]});Object.defineProperties(e,r)};var _r=class extends Error{constructor(e,r,i){var n;super(e);if(Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,i instanceof Uk?(Object.defineProperty(this,"request",{enumerable:!1,value:i}),Object.defineProperty(this,"response",{enumerable:!1,value:i[Uy]}),Object.defineProperty(this,"options",{enumerable:!1,value:i.options})):Object.defineProperty(this,"options",{enumerable:!1,value:i}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,ce.default.string(r.stack)&&ce.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,o=this.stack.slice(s).split(` -`).reverse(),a=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` -`).reverse();for(;a.length!==0&&a[0]===o[0];)o.shift();this.stack=`${this.stack.slice(0,s)}${o.reverse().join(` -`)}${a.reverse().join(` -`)}`}}};Rt.RequestError=_r;var Hk=class extends _r{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e);this.name="MaxRedirectsError"}};Rt.MaxRedirectsError=Hk;var Gk=class extends _r{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request);this.name="HTTPError"}};Rt.HTTPError=Gk;var jk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="CacheError"}};Rt.CacheError=jk;var Yk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="UploadError"}};Rt.UploadError=Yk;var qk=class extends _r{constructor(e,r,i){super(e.message,e,i);this.name="TimeoutError",this.event=e.event,this.timings=r}};Rt.TimeoutError=qk;var jy=class extends _r{constructor(e,r){super(e.message,e,r);this.name="ReadError"}};Rt.ReadError=jy;var Jk=class extends _r{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e);this.name="UnsupportedProtocolError"}};Rt.UnsupportedProtocolError=Jk;var kSe=["socket","connect","continue","information","upgrade","timeout"],Uk=class extends n8.Duplex{constructor(e,r={},i){super({autoDestroy:!1,highWaterMark:0});this[Wu]=0,this[Vu]=0,this.requestInitialized=!1,this[Hy]=new Set,this.redirects=[],this[_u]=!1,this[Gy]=!1,this[bp]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof Tk.IncomingMessage&&(this.options.headers=P(P({},c.headers),this.options.headers))});let{json:o,body:a,form:l}=r;if((o||a||l)&&this._lockWrite(),Rt.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,i)}catch(c){ce.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof ASe.ReadStream&&await vSe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[Ei])===null||c===void 0||c.destroy();return}for(let g of this[bp])g();this[bp].length=0,this.requestInitialized=!0}catch(u){if(u instanceof _r){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,r,i){var n,s,o,a,l;let c=r;if(ce.default.object(e)&&!ce.default.urlInstance(e))r=P(P(P({},i),e),r);else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r=P(P({},i),r),e!==void 0&&(r.url=e),ce.default.urlInstance(r.url)&&(r.url=new dA.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),ce.assert.any([ce.default.string,ce.default.undefined],r.method),ce.assert.any([ce.default.object,ce.default.undefined],r.headers),ce.assert.any([ce.default.string,ce.default.urlInstance,ce.default.undefined],r.prefixUrl),ce.assert.any([ce.default.object,ce.default.undefined],r.cookieJar),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.searchParams),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.cache),ce.assert.any([ce.default.object,ce.default.number,ce.default.undefined],r.timeout),ce.assert.any([ce.default.object,ce.default.undefined],r.context),ce.assert.any([ce.default.object,ce.default.undefined],r.hooks),ce.assert.any([ce.default.boolean,ce.default.undefined],r.decompress),ce.assert.any([ce.default.boolean,ce.default.undefined],r.ignoreInvalidCookies),ce.assert.any([ce.default.boolean,ce.default.undefined],r.followRedirect),ce.assert.any([ce.default.number,ce.default.undefined],r.maxRedirects),ce.assert.any([ce.default.boolean,ce.default.undefined],r.throwHttpErrors),ce.assert.any([ce.default.boolean,ce.default.undefined],r.http2),ce.assert.any([ce.default.boolean,ce.default.undefined],r.allowGetBody),ce.assert.any([ce.default.string,ce.default.undefined],r.localAddress),ce.assert.any([c8.isDnsLookupIpVersion,ce.default.undefined],r.dnsLookupIpVersion),ce.assert.any([ce.default.object,ce.default.undefined],r.https),ce.assert.any([ce.default.boolean,ce.default.undefined],r.rejectUnauthorized),r.https&&(ce.assert.any([ce.default.boolean,ce.default.undefined],r.https.rejectUnauthorized),ce.assert.any([ce.default.function_,ce.default.undefined],r.https.checkServerIdentity),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificateAuthority),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.key),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificate),ce.assert.any([ce.default.string,ce.default.undefined],r.https.passphrase),ce.assert.any([ce.default.string,ce.default.buffer,ce.default.array,ce.default.undefined],r.https.pfx)),ce.assert.any([ce.default.object,ce.default.undefined],r.cacheOptions),ce.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(i==null?void 0:i.headers)?r.headers=P({},r.headers):r.headers=hSe(P(P({},i==null?void 0:i.headers),r.headers)),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(i==null?void 0:i.searchParams)){let h;if(ce.default.string(r.searchParams)||r.searchParams instanceof dA.URLSearchParams)h=new dA.URLSearchParams(r.searchParams);else{QSe(r.searchParams),h=new dA.URLSearchParams;for(let p in r.searchParams){let d=r.searchParams[p];d===null?h.append(p,""):d!==void 0&&h.append(p,d)}}(n=i==null?void 0:i.searchParams)===null||n===void 0||n.forEach((p,d)=>{h.has(d)||h.append(d,p)}),r.searchParams=h}if(r.username=(s=r.username)!==null&&s!==void 0?s:"",r.password=(o=r.password)!==null&&o!==void 0?o:"",ce.default.undefined(r.prefixUrl)?r.prefixUrl=(a=i==null?void 0:i.prefixUrl)!==null&&a!==void 0?a:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),ce.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=l8.default(r.prefixUrl+r.url,r)}else(ce.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=l8.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:h}=r;Object.defineProperty(r,"prefixUrl",{set:d=>{let m=r.url;if(!m.href.startsWith(d))throw new Error(`Cannot change \`prefixUrl\` from ${h} to ${d}: ${m.href}`);r.url=new dA.URL(d+m.href.slice(h.length)),h=d},get:()=>h});let{protocol:p}=r.url;if(p==="unix:"&&(p="http:",r.url=new dA.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),p!=="http:"&&p!=="https:")throw new Jk(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:u}=r;if(u){let{setCookie:h,getCookieString:p}=u;ce.assert.function_(h),ce.assert.function_(p),h.length===4&&p.length===0&&(h=i8.promisify(h.bind(r.cookieJar)),p=i8.promisify(p.bind(r.cookieJar)),r.cookieJar={setCookie:h,getCookieString:p})}let{cache:g}=r;if(g&&(Kk.has(g)||Kk.set(g,new o8((h,p)=>{let d=h[Ei](h,p);return ce.default.promise(d)&&(d.once=(m,I)=>{if(m==="error")d.catch(I);else if(m==="abort")(async()=>{try{(await d).once("abort",I)}catch(B){}})();else throw new Error(`Unknown HTTP2 promise event: ${m}`);return d}),d},g))),r.cacheOptions=P({},r.cacheOptions),r.dnsCache===!0)Mk||(Mk=new uSe.default),r.dnsCache=Mk;else if(!ce.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${ce.default(r.dnsCache)}`);ce.default.number(r.timeout)?r.timeout={request:r.timeout}:i&&r.timeout!==i.timeout?r.timeout=P(P({},i.timeout),r.timeout):r.timeout=P({},r.timeout),r.context||(r.context={});let f=r.hooks===(i==null?void 0:i.hooks);r.hooks=P({},r.hooks);for(let h of Rt.knownHookEvents)if(h in r.hooks)if(ce.default.array(r.hooks[h]))r.hooks[h]=[...r.hooks[h]];else throw new TypeError(`Parameter \`${h}\` must be an Array, got ${ce.default(r.hooks[h])}`);else r.hooks[h]=[];if(i&&!f)for(let h of Rt.knownHookEvents)i.hooks[h].length>0&&(r.hooks[h]=[...i.hooks[h],...r.hooks[h]]);if("family"in r&&CA.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),(i==null?void 0:i.https)&&(r.https=P(P({},i.https),r.https)),"rejectUnauthorized"in r&&CA.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&CA.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&CA.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&CA.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&CA.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&CA.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&CA.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let h in r.agent)if(h!=="http"&&h!=="https"&&h!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${h}\``)}return r.maxRedirects=(l=r.maxRedirects)!==null&&l!==void 0?l:0,Rt.setNonEnumerableProperties([i,c],r),ySe.default(r,i)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,i=!ce.default.undefined(e.form),n=!ce.default.undefined(e.json),s=!ce.default.undefined(e.body),o=i||n||s,a=Rt.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,o){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,i,n].filter(l=>l).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof n8.Readable)&&!ce.default.string(e.body)&&!ce.default.buffer(e.body)&&!a8.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(i&&!ce.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let l=!ce.default.string(r["content-type"]);s?(a8.default(e.body)&&l&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[mA]=e.body):i?(l&&(r["content-type"]="application/x-www-form-urlencoded"),this[mA]=new dA.URLSearchParams(e.form).toString()):(l&&(r["content-type"]="application/json"),this[mA]=e.stringifyJson(e.json));let c=await pSe.default(this[mA],e.headers);ce.default.undefined(r["content-length"])&&ce.default.undefined(r["transfer-encoding"])&&!a&&!ce.default.undefined(c)&&(r["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[zu]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:i}=r;this[h8]=e,r.decompress&&(e=gSe(e));let n=e.statusCode,s=e;s.statusMessage=s.statusMessage?s.statusMessage:s8.STATUS_CODES[n],s.url=r.url.toString(),s.requestUrl=this.requestUrl,s.redirectUrls=this.redirects,s.request=this,s.isFromCache=e.fromCache||!1,s.ip=this.ip,s.retryCount=this.retryCount,this[g8]=s.isFromCache,this[Ju]=Number(e.headers["content-length"])||void 0,this[Uy]=e,e.once("end",()=>{this[Ju]=this[Wu],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new jy(a,this))}),e.once("aborted",()=>{this._beforeError(new jy({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let o=e.headers["set-cookie"];if(ce.default.object(r.cookieJar)&&o){let a=o.map(async l=>r.cookieJar.setCookie(l,i.toString()));r.ignoreInvalidCookies&&(a=a.map(async l=>l.catch(()=>{})));try{await Promise.all(a)}catch(l){this._beforeError(l);return}}if(r.followRedirect&&e.headers.location&&SSe.has(n)){if(e.resume(),this[Ei]&&(this[Ok](),delete this[Ei],this[u8]()),(n===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[mA]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new Hk(this));return}try{let l=Buffer.from(e.headers.location,"binary").toString(),c=new dA.URL(l,i),u=c.toString();decodeURI(u),c.hostname!==i.hostname||c.port!==i.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(c.username=r.username,c.password=r.password),this.redirects.push(u),r.url=c;for(let g of r.hooks.beforeRedirect)await g(r,s);this.emit("redirect",s,r),await this._makeRequest()}catch(l){this._beforeError(l);return}return}if(r.isStream&&r.throwHttpErrors&&!ISe.isResponseOk(s)){this._beforeError(new Gk(s));return}e.on("readable",()=>{this[Gy]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[Hy])if(!a.headersSent){for(let l in e.headers){let c=r.decompress?l!=="content-encoding":!0,u=e.headers[l];c&&a.setHeader(l,u)}a.statusCode=n}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:i,url:n}=r;cSe.default(e),this[Ok]=A8.default(e,i,n);let s=r.cache?"cacheableResponse":"response";e.once(s,l=>{this._onResponse(l)}),e.once("error",l=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),l=l instanceof A8.TimeoutError?new qk(l,this.timings,this):new _r(l.message,l,this),this._beforeError(l)}),this[u8]=dSe.default(e,this,kSe),this[Ei]=e,this.emit("uploadProgress",this.uploadProgress);let o=this[mA],a=this.redirects.length===0?this:e;ce.default.nodeStream(o)?(o.pipe(a),o.once("error",l=>{this._beforeError(new Yk(l,this))})):(this._unlockWrite(),ce.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((i,n)=>{Object.assign(r,CSe.default(e)),delete r.url;let s,o=Kk.get(r.cache)(r,async a=>{a._readableState.autoDestroy=!1,s&&(await s).emit("cacheableResponse",a),i(a)});r.url=e,o.once("error",n),o.once("request",async a=>{s=a,i(s)})})}async _makeRequest(){var e,r,i,n,s;let{options:o}=this,{headers:a}=o;for(let I in a)if(ce.default.undefined(a[I]))delete a[I];else if(ce.default.null_(a[I]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${I}\` header`);if(o.decompress&&ce.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=BSe?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){let I=await o.cookieJar.getCookieString(o.url.toString());ce.default.nonEmptyString(I)&&(o.headers.cookie=I)}for(let I of o.hooks.beforeRequest){let B=await I(o);if(!ce.default.undefined(B)){o.request=()=>B;break}}o.body&&this[mA]!==o.body&&(this[mA]=o.body);let{agent:l,request:c,timeout:u,url:g}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),g.hostname==="unix"){let I=/(?.+?):(?.+)/.exec(`${g.pathname}${g.search}`);if(I==null?void 0:I.groups){let{socketPath:B,path:b}=I.groups;Object.assign(o,{socketPath:B,path:b,host:""})}}let f=g.protocol==="https:",h;o.http2?h=fSe.auto:h=f?lSe.request:s8.request;let p=(e=o.request)!==null&&e!==void 0?e:h,d=o.cache?this._createCacheableRequest:p;l&&!o.http2&&(o.agent=l[f?"https":"http"]),o[Ei]=p,delete o.request,delete o.timeout;let m=o;if(m.shared=(r=o.cacheOptions)===null||r===void 0?void 0:r.shared,m.cacheHeuristic=(i=o.cacheOptions)===null||i===void 0?void 0:i.cacheHeuristic,m.immutableMinTimeToLive=(n=o.cacheOptions)===null||n===void 0?void 0:n.immutableMinTimeToLive,m.ignoreCargoCult=(s=o.cacheOptions)===null||s===void 0?void 0:s.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{m.family=c8.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch(I){throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(m.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(m.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(m.ca=o.https.certificateAuthority),o.https.certificate&&(m.cert=o.https.certificate),o.https.key&&(m.key=o.https.key),o.https.passphrase&&(m.passphrase=o.https.passphrase),o.https.pfx&&(m.pfx=o.https.pfx));try{let I=await d(g,m);ce.default.undefined(I)&&(I=h(g,m)),o.request=c,o.timeout=u,o.agent=l,o.https&&("rejectUnauthorized"in o.https&&delete m.rejectUnauthorized,o.https.checkServerIdentity&&delete m.checkServerIdentity,o.https.certificateAuthority&&delete m.ca,o.https.certificate&&delete m.cert,o.https.key&&delete m.key,o.https.passphrase&&delete m.passphrase,o.https.pfx&&delete m.pfx),bSe(I)?this._onRequest(I):this.writable?(this.once("finish",()=>{this._onResponse(I)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(I)}catch(I){throw I instanceof o8.CacheError?new jk(I,this):new _r(I.message,I,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new _r(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[_u])return;let{options:r}=this,i=this.retryCount+1;this[_u]=!0,e instanceof _r||(e=new _r(e.message,e,this));let n=e,{response:s}=n;(async()=>{if(s&&!s.body){s.setEncoding(this._readableState.encoding);try{s.rawBody=await ESe.default(s),s.body=s.rawBody.toString()}catch(o){}}if(this.listenerCount("retry")!==0){let o;try{let a;s&&"retry-after"in s.headers&&(a=Number(s.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(s.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),o=await r.retry.calculateDelay({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:wSe.default({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:0})})}catch(a){this._error(new _r(a.message,a,this));return}if(o){let a=async()=>{try{for(let l of this.options.hooks.beforeRetry)await l(this.options,n,i)}catch(l){this._error(new _r(l.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",i,e))};this[p8]=setTimeout(a,o);return}}this._error(n)})()}_read(){this[Gy]=!0;let e=this[Uy];if(e&&!this[_u]){e.readableLength&&(this[Gy]=!1);let r;for(;(r=e.read())!==null;){this[Wu]+=r.length,this[f8]=!0;let i=this.downloadProgress;i.percent<1&&this.emit("downloadProgress",i),this.push(r)}}}_write(e,r,i){let n=()=>{this._writeRequest(e,r,i)};this.requestInitialized?n():this[bp].push(n)}_writeRequest(e,r,i){this[Ei].destroyed||(this._progressCallbacks.push(()=>{this[Vu]+=Buffer.byteLength(e,r);let n=this.uploadProgress;n.percent<1&&this.emit("uploadProgress",n)}),this[Ei].write(e,r,n=>{!n&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),i(n)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Ei in this)){e();return}if(this[Ei].destroyed){e();return}this[Ei].end(i=>{i||(this[zu]=this[Vu],this.emit("uploadProgress",this.uploadProgress),this[Ei].emit("upload-complete")),e(i)})};this.requestInitialized?r():this[bp].push(r)}_destroy(e,r){var i;this[_u]=!0,clearTimeout(this[p8]),Ei in this&&(this[Ok](),((i=this[Uy])===null||i===void 0?void 0:i.complete)||this[Ei].destroy()),e!==null&&!ce.default.undefined(e)&&!(e instanceof _r)&&(e=new _r(e.message,e,this)),r(e)}get _isAboutToError(){return this[_u]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,i;return((r=(e=this[Ei])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!((i=this[h8])===null||i===void 0?void 0:i.complete)}get socket(){var e,r;return(r=(e=this[Ei])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[Ju]?e=this[Wu]/this[Ju]:this[Ju]===this[Wu]?e=1:e=0,{percent:e,transferred:this[Wu],total:this[Ju]}}get uploadProgress(){let e;return this[zu]?e=this[Vu]/this[zu]:this[zu]===this[Vu]?e=1:e=0,{percent:e,transferred:this[Vu],total:this[zu]}}get timings(){var e;return(e=this[Ei])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[g8]}pipe(e,r){if(this[f8])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof Tk.ServerResponse&&this[Hy].add(e),super.pipe(e,r)}unpipe(e){return e instanceof Tk.ServerResponse&&this[Hy].delete(e),super.unpipe(e),this}};Rt.default=Uk});var Sp=E(Ms=>{"use strict";var PSe=Ms&&Ms.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),DSe=Ms&&Ms.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&PSe(e,t,r)};Object.defineProperty(Ms,"__esModule",{value:!0});Ms.CancelError=Ms.ParseError=void 0;var d8=vp(),C8=class extends d8.RequestError{constructor(e,r){let{options:i}=r.request;super(`${e.message} in "${i.url.toString()}"`,e,r.request);this.name="ParseError"}};Ms.ParseError=C8;var m8=class extends d8.RequestError{constructor(e){super("Promise was canceled",{},e);this.name="CancelError"}get isCanceled(){return!0}};Ms.CancelError=m8;DSe(vp(),Ms)});var I8=E(Wk=>{"use strict";Object.defineProperty(Wk,"__esModule",{value:!0});var E8=Sp(),RSe=(t,e,r,i)=>{let{rawBody:n}=t;try{if(e==="text")return n.toString(i);if(e==="json")return n.length===0?"":r(n.toString());if(e==="buffer")return n;throw new E8.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(s){throw new E8.ParseError(s,t)}};Wk.default=RSe});var zk=E(EA=>{"use strict";var FSe=EA&&EA.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),NSe=EA&&EA.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&FSe(e,t,r)};Object.defineProperty(EA,"__esModule",{value:!0});var LSe=require("events"),TSe=Ca(),MSe=g3(),Yy=Sp(),y8=I8(),w8=vp(),OSe=bk(),KSe=Rk(),B8=Fk(),USe=["request","response","redirect","uploadProgress","downloadProgress"];function Q8(t){let e,r,i=new LSe.EventEmitter,n=new MSe((o,a,l)=>{let c=u=>{let g=new w8.default(void 0,t);g.retryCount=u,g._noPipe=!0,l(()=>g.destroy()),l.shouldReject=!1,l(()=>a(new Yy.CancelError(g))),e=g,g.once("response",async p=>{var d;if(p.retryCount=u,p.request.aborted)return;let m;try{m=await KSe.default(g),p.rawBody=m}catch(R){return}if(g._isAboutToError)return;let I=((d=p.headers["content-encoding"])!==null&&d!==void 0?d:"").toLowerCase(),B=["gzip","deflate","br"].includes(I),{options:b}=g;if(B&&!b.decompress)p.body=m;else try{p.body=y8.default(p,b.responseType,b.parseJson,b.encoding)}catch(R){if(p.body=m.toString(),B8.isResponseOk(p)){g._beforeError(R);return}}try{for(let[R,H]of b.hooks.afterResponse.entries())p=await H(p,async L=>{let K=w8.default.normalizeArguments(void 0,_(P({},L),{retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1}),b);K.hooks.afterResponse=K.hooks.afterResponse.slice(0,R);for(let ne of K.hooks.beforeRetry)await ne(K);let J=Q8(K);return l(()=>{J.catch(()=>{}),J.cancel()}),J})}catch(R){g._beforeError(new Yy.RequestError(R.message,R,g));return}if(!B8.isResponseOk(p)){g._beforeError(new Yy.HTTPError(p));return}r=p,o(g.options.resolveBodyOnly?p.body:p)});let f=p=>{if(n.isCanceled)return;let{options:d}=g;if(p instanceof Yy.HTTPError&&!d.throwHttpErrors){let{response:m}=p;o(g.options.resolveBodyOnly?m.body:m);return}a(p)};g.once("error",f);let h=g.options.body;g.once("retry",(p,d)=>{var m,I;if(h===((m=d.request)===null||m===void 0?void 0:m.options.body)&&TSe.default.nodeStream((I=d.request)===null||I===void 0?void 0:I.options.body)){f(d);return}c(p)}),OSe.default(g,i,USe)};c(0)});n.on=(o,a)=>(i.on(o,a),n);let s=o=>{let a=(async()=>{await n;let{options:l}=r.request;return y8.default(r,o,l.parseJson,l.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(n)),a};return n.json=()=>{let{headers:o}=e.options;return!e.writableFinished&&o.accept===void 0&&(o.accept="application/json"),s("json")},n.buffer=()=>s("buffer"),n.text=()=>s("text"),n}EA.default=Q8;NSe(Sp(),EA)});var b8=E(Vk=>{"use strict";Object.defineProperty(Vk,"__esModule",{value:!0});var HSe=Sp();function GSe(t,...e){let r=(async()=>{if(t instanceof HSe.RequestError)try{for(let n of e)if(n)for(let s of n)t=await s(t)}catch(n){t=n}throw t})(),i=()=>r;return r.json=i,r.text=i,r.buffer=i,r.on=i,r}Vk.default=GSe});var x8=E(_k=>{"use strict";Object.defineProperty(_k,"__esModule",{value:!0});var v8=Ca();function S8(t){for(let e of Object.values(t))(v8.default.plainObject(e)||v8.default.array(e))&&S8(e);return Object.freeze(t)}_k.default=S8});var P8=E(k8=>{"use strict";Object.defineProperty(k8,"__esModule",{value:!0})});var Xk=E(ss=>{"use strict";var jSe=ss&&ss.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),YSe=ss&&ss.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&jSe(e,t,r)};Object.defineProperty(ss,"__esModule",{value:!0});ss.defaultHandler=void 0;var D8=Ca(),os=zk(),qSe=b8(),qy=vp(),JSe=x8(),WSe={RequestError:os.RequestError,CacheError:os.CacheError,ReadError:os.ReadError,HTTPError:os.HTTPError,MaxRedirectsError:os.MaxRedirectsError,TimeoutError:os.TimeoutError,ParseError:os.ParseError,CancelError:os.CancelError,UnsupportedProtocolError:os.UnsupportedProtocolError,UploadError:os.UploadError},zSe=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:Jy}=qy.default,R8=(...t)=>{let e;for(let r of t)e=Jy(void 0,r,e);return e},VSe=t=>t.isStream?new qy.default(void 0,t):os.default(t),_Se=t=>"defaults"in t&&"options"in t.defaults,XSe=["get","post","put","patch","head","delete"];ss.defaultHandler=(t,e)=>e(t);var F8=(t,e)=>{if(t)for(let r of t)r(e)},N8=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(i=>(n,s)=>{let o,a=i(n,l=>(o=s(l),o));if(a!==o&&!n.isStream&&o){let l=a,{then:c,catch:u,finally:g}=l;Object.setPrototypeOf(l,Object.getPrototypeOf(o)),Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)),l.then=c,l.catch=u,l.finally=g}return a});let e=(i,n={},s)=>{var o,a;let l=0,c=u=>t.handlers[l++](u,l===t.handlers.length?VSe:c);if(D8.default.plainObject(i)){let u=P(P({},i),n);qy.setNonEnumerableProperties([i,n],u),n=u,i=void 0}try{let u;try{F8(t.options.hooks.init,n),F8((o=n.hooks)===null||o===void 0?void 0:o.init,n)}catch(f){u=f}let g=Jy(i,n,s!=null?s:t.options);if(g[qy.kIsNormalizedAlready]=!0,u)throw new os.RequestError(u.message,u,g);return c(g)}catch(u){if(n.isStream)throw u;return qSe.default(u,t.options.hooks.beforeError,(a=n.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...i)=>{let n=[t.options],s=[...t._rawHandlers],o;for(let a of i)_Se(a)?(n.push(a.defaults.options),s.push(...a.defaults._rawHandlers),o=a.defaults.mutableDefaults):(n.push(a),"handlers"in a&&s.push(...a.handlers),o=a.mutableDefaults);return s=s.filter(a=>a!==ss.defaultHandler),s.length===0&&s.push(ss.defaultHandler),N8({options:R8(...n),handlers:s,mutableDefaults:Boolean(o)})};let r=async function*(i,n){let s=Jy(i,n,t.options);s.resolveBodyOnly=!1;let o=s.pagination;if(!D8.default.object(o))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:l}=o,c=0;for(;c{let s=[];for await(let o of r(i,n))s.push(o);return s},e.paginate.each=r,e.stream=(i,n)=>e(i,_(P({},n),{isStream:!0}));for(let i of XSe)e[i]=(n,s)=>e(n,_(P({},s),{method:i})),e.stream[i]=(n,s)=>e(n,_(P({},s),{method:i,isStream:!0}));return Object.assign(e,WSe),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:JSe.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=R8,e};ss.default=N8;YSe(P8(),ss)});var zy=E((Ea,Wy)=>{"use strict";var ZSe=Ea&&Ea.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),L8=Ea&&Ea.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&ZSe(e,t,r)};Object.defineProperty(Ea,"__esModule",{value:!0});var $Se=require("url"),T8=Xk(),exe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let i of e){let n=i.split(";");if(n[1].includes("next")){r=n[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new $Se.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:Infinity,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[T8.defaultHandler],mutableDefaults:!1},Zk=T8.default(exe);Ea.default=Zk;Wy.exports=Zk;Wy.exports.default=Zk;Wy.exports.__esModule=!0;L8(Xk(),Ea);L8(zk(),Ea)});var U8=E(Xu=>{"use strict";var fst=require("net"),txe=require("tls"),$k=require("http"),M8=require("https"),rxe=require("events"),hst=require("assert"),ixe=require("util");Xu.httpOverHttp=nxe;Xu.httpsOverHttp=sxe;Xu.httpOverHttps=oxe;Xu.httpsOverHttps=axe;function nxe(t){var e=new Ia(t);return e.request=$k.request,e}function sxe(t){var e=new Ia(t);return e.request=$k.request,e.createSocket=O8,e.defaultPort=443,e}function oxe(t){var e=new Ia(t);return e.request=M8.request,e}function axe(t){var e=new Ia(t);return e.request=M8.request,e.createSocket=O8,e.defaultPort=443,e}function Ia(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||$k.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(i,n,s,o){for(var a=K8(n,s,o),l=0,c=e.requests.length;l=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",l),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function l(){s.emit("free",a,o)}function c(u){s.removeSocket(a),a.removeListener("free",l),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Ia.prototype.createSocket=function(e,r){var i=this,n={};i.sockets.push(n);var s=eP({},i.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),IA("making CONNECT request");var o=i.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",l),o.once("connect",c),o.once("error",u),o.end();function a(g){g.upgrade=!0}function l(g,f,h){process.nextTick(function(){c(g,f,h)})}function c(g,f,h){if(o.removeAllListeners(),f.removeAllListeners(),g.statusCode!==200){IA("tunneling socket could not be established, statusCode=%d",g.statusCode),f.destroy();var p=new Error("tunneling socket could not be established, statusCode="+g.statusCode);p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}if(h.length>0){IA("got illegal response body from proxy"),f.destroy();var p=new Error("got illegal response body from proxy");p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}return IA("tunneling connection has established"),i.sockets[i.sockets.indexOf(n)]=f,r(f)}function u(g){o.removeAllListeners(),IA(`tunneling socket could not be established, cause=%s -`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};Ia.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function O8(t,e){var r=this;Ia.prototype.createSocket.call(r,t,function(i){var n=t.request.getHeader("host"),s=eP({},r.options,{socket:i,servername:n?n.replace(/:.*$/,""):t.host}),o=txe.connect(0,s);r.sockets[r.sockets.indexOf(i)]=o,e(o)})}function K8(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function eP(t){for(var e=1,r=arguments.length;e{H8.exports=U8()});var b4=E((xot,sP)=>{var e4=Object.assign({},require("fs")),oe=typeof oe!="undefined"?oe:{},kp={},wA;for(wA in oe)oe.hasOwnProperty(wA)&&(kp[wA]=oe[wA]);var oP=[],t4="./this.program",r4=function(t,e){throw e},i4=!1,Wl=!0,Pp="";function dxe(t){return oe.locateFile?oe.locateFile(t,Pp):Pp+t}var Xy,aP,Zy,AP;Wl&&(i4?Pp=require("path").dirname(Pp)+"/":Pp=__dirname+"/",Xy=function(e,r){var i=s4(e);return i?r?i:i.toString():(Zy||(Zy=e4),AP||(AP=require("path")),e=AP.normalize(e),Zy.readFileSync(e,r?null:"utf8"))},aP=function(e){var r=Xy(e,!0);return r.buffer||(r=new Uint8Array(r)),n4(r.buffer),r},process.argv.length>1&&(t4=process.argv[1].replace(/\\/g,"/")),oP=process.argv.slice(2),typeof sP!="undefined"&&(sP.exports=oe),r4=function(t){process.exit(t)},oe.inspect=function(){return"[Emscripten Module object]"});var $y=oe.print||console.log.bind(console),Di=oe.printErr||console.warn.bind(console);for(wA in kp)kp.hasOwnProperty(wA)&&(oe[wA]=kp[wA]);kp=null;oe.arguments&&(oP=oe.arguments);oe.thisProgram&&(t4=oe.thisProgram);oe.quit&&(r4=oe.quit);var Cxe=16;function mxe(t,e){return e||(e=Cxe),Math.ceil(t/e)*e}var Exe=0,Ixe=function(t){Exe=t},lP;oe.wasmBinary&&(lP=oe.wasmBinary);var Pst=oe.noExitRuntime||!0;typeof WebAssembly!="object"&&Gr("no native wasm support detected");function yxe(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return Zi[t>>0];case"i8":return Zi[t>>0];case"i16":return cP[t>>1];case"i32":return _e[t>>2];case"i64":return _e[t>>2];case"float":return o4[t>>2];case"double":return a4[t>>3];default:Gr("invalid type for getValue: "+e)}return null}var ew,A4=!1,wxe;function n4(t,e){t||Gr("Assertion failed: "+e)}function l4(t){var e=oe["_"+t];return n4(e,"Cannot call unknown function "+t+", make sure it is exported"),e}function vxe(t,e,r,i,n){var s={string:function(h){var p=0;if(h!=null&&h!==0){var d=(h.length<<2)+1;p=g4(d),u4(h,p,d)}return p},array:function(h){var p=g4(h.length);return Bxe(h,p),p}};function o(h){return e==="string"?c4(h):e==="boolean"?Boolean(h):h}var a=l4(t),l=[],c=0;if(i)for(var u=0;u=i);)++n;if(n-e>16&&t.subarray&&f4)return f4.decode(t.subarray(e,n));for(var s="";e>10,56320|c&1023)}}return s}function c4(t,e){return t?Zu($u,t,e):""}function tw(t,e,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343){var l=t.charCodeAt(++o);a=65536+((a&1023)<<10)|l&1023}if(a<=127){if(r>=s)break;e[r++]=a}else if(a<=2047){if(r+1>=s)break;e[r++]=192|a>>6,e[r++]=128|a&63}else if(a<=65535){if(r+2>=s)break;e[r++]=224|a>>12,e[r++]=128|a>>6&63,e[r++]=128|a&63}else{if(r+3>=s)break;e[r++]=240|a>>18,e[r++]=128|a>>12&63,e[r++]=128|a>>6&63,e[r++]=128|a&63}}return e[r]=0,r-n}function u4(t,e,r){return tw(t,$u,e,r)}function rw(t){for(var e=0,r=0;r=55296&&i<=57343&&(i=65536+((i&1023)<<10)|t.charCodeAt(++r)&1023),i<=127?++e:i<=2047?e+=2:i<=65535?e+=3:e+=4}return e}function uP(t){var e=rw(t)+1,r=h4(e);return r&&tw(t,Zi,r,e),r}function Bxe(t,e){Zi.set(t,e)}function xxe(t,e){return t%e>0&&(t+=e-t%e),t}var gP,Zi,$u,cP,kxe,_e,Pxe,o4,a4;function p4(t){gP=t,oe.HEAP8=Zi=new Int8Array(t),oe.HEAP16=cP=new Int16Array(t),oe.HEAP32=_e=new Int32Array(t),oe.HEAPU8=$u=new Uint8Array(t),oe.HEAPU16=kxe=new Uint16Array(t),oe.HEAPU32=Pxe=new Uint32Array(t),oe.HEAPF32=o4=new Float32Array(t),oe.HEAPF64=a4=new Float64Array(t)}var Dst=oe.INITIAL_MEMORY||16777216,fP,d4=[],C4=[],m4=[],Dxe=!1;function Fxe(){if(oe.preRun)for(typeof oe.preRun=="function"&&(oe.preRun=[oe.preRun]);oe.preRun.length;)Rxe(oe.preRun.shift());hP(d4)}function Nxe(){Dxe=!0,!oe.noFSInit&&!y.init.initialized&&y.init(),BA.init(),hP(C4)}function Txe(){if(oe.postRun)for(typeof oe.postRun=="function"&&(oe.postRun=[oe.postRun]);oe.postRun.length;)Lxe(oe.postRun.shift());hP(m4)}function Rxe(t){d4.unshift(t)}function Mxe(t){C4.unshift(t)}function Lxe(t){m4.unshift(t)}var zl=0,pP=null,Dp=null;function Oxe(t){return t}function E4(t){zl++,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl)}function dP(t){if(zl--,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl),zl==0&&(pP!==null&&(clearInterval(pP),pP=null),Dp)){var e=Dp;Dp=null,e()}}oe.preloadedImages={};oe.preloadedAudios={};function Gr(t){oe.onAbort&&oe.onAbort(t),t+="",Di(t),A4=!0,wxe=1,t="abort("+t+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(t);throw e}var I4="data:application/octet-stream;base64,";function y4(t){return t.startsWith(I4)}var Rp="data:application/octet-stream;base64,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AkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALIANB/wFxRQRAIAIgAGsPCwNAIAItAAEhAyACQQFqIgEhAiADDQALCyABIABrC2EBAX8jAEEQayICIAA2AgggAiABNwMAAkAgAikDACACKAIIKQMIVgRAIAIoAghBADoAACACQX82AgwMAQsgAigCCEEBOgAAIAIoAgggAikDADcDECACQQA2AgwLIAIoAgwL7wEBAX8jAEEgayICJAAgAiAANgIYIAIgATcDECACIAIoAhhCCBAeNgIMAkAgAigCDEUEQCACQX82AhwMAQsgAigCDCACKQMQQv8BgzwAACACKAIMIAIpAxBCCIhC/wGDPAABIAIoAgwgAikDEEIQiEL/AYM8AAIgAigCDCACKQMQQhiIQv8BgzwAAyACKAIMIAIpAxBCIIhC/wGDPAAEIAIoAgwgAikDEEIoiEL/AYM8AAUgAigCDCACKQMQQjCIQv8BgzwABiACKAIMIAIpAxBCOIhC/wGDPAAHIAJBADYCHAsgAigCHBogAkEgaiQAC4cDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEUNACADKQMYQv///////////wBWDQAgAykDGFANASADKAIgDQELIAMoAiRBDGpBEkEAEBQgA0J/NwMoDAELIAMoAiQtADVBAXEEQCADQn83AygMAQsCfyMAQRBrIgAgAygCJDYCDCAAKAIMLQA0QQFxCwRAIANCADcDKAwBCyADKQMYUARAIANCADcDKAwBCyADQgA3AxADQCADKQMQIAMpAxhUBEAgAyADKAIkIAMoAiAgAykDEKdqIAMpAxggAykDEH1BARAhIgI3AwggAkIAUwRAIAMoAiRBAToANSADKQMQUARAIANCfzcDKAwECyADIAMpAxA3AygMAwsgAykDCFAEQCADKAIkQQE6ADQFIAMgAykDCCADKQMQfDcDEAwCCwsLIAMgAykDEDcDKAsgAykDKCECIANBMGokACACCzYBAX8jAEEQayIBIAA2AgwCfiABKAIMLQAAQQFxBEAgASgCDCkDCCABKAIMKQMQfQwBC0IACwuyAQIBfwF+IwBBEGsiASQAIAEgADYCBCABIAEoAgRC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AkEBNgIQIAJBADYCCANAAkAgAigCCCACKAIYLwEETw0AAkAgAigCDCACKAIIai0AAEEfSwRAIAIoAgwgAigCCGotAABBgAFJDQELIAIoAgwgAigCCGotAABBDUYNACACKAIMIAIoAghqLQAAQQpGDQAgAigCDCACKAIIai0AAEEJRgRADAELIAJBAzYCEAJAIAIoAgwgAigCCGotAABB4AFxQcABRgRAIAJBATYCAAwBCwJAIAIoAgwgAigCCGotAABB8AFxQeABRgRAIAJBAjYCAAwBCwJAIAIoAgwgAigCCGotAABB+AFxQfABRgRAIAJBAzYCAAwBCyACQQQ2AhAMBAsLCyACKAIYLwEEIAIoAgggAigCAGpNBEAgAkEENgIQDAILIAJBATYCBANAIAIoAgQgAigCAE0EQCACKAIMIAIoAgggAigCBGpqLQAAQcABcUGAAUcEQCACQQQ2AhAMBgUgAiACKAIEQQFqNgIEDAILAAsLIAIgAigCACACKAIIajYCCAsgAiACKAIIQQFqNgIIDAELCwsgAigCGCACKAIQNgIIIAIoAhQEQAJAIAIoAhRBAkcNACACKAIQQQNHDQAgAkECNgIQIAIoAhhBAjYCCAsCQCACKAIUIAIoAhBGDQAgAigCEEEBRg0AIAJBBTYCHAwCCwsgAiACKAIQNgIcCyACKAIcC2oBAX8jAEEQayIBIAA2AgwgASgCDEIANwMAIAEoAgxBADYCCCABKAIMQn83AxAgASgCDEEANgIsIAEoAgxBfzYCKCABKAIMQgA3AxggASgCDEIANwMgIAEoAgxBADsBMCABKAIMQQA7ATILUgECf0GQlwEoAgAiASAAQQNqQXxxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABATRQ0BC0GQlwEgADYCACABDwtBtJsBQTA2AgBBfwuNBQEDfyMAQRBrIgEkACABIAA2AgwgASgCDARAIAEoAgwoAgAEQCABKAIMKAIAEDEaIAEoAgwoAgAQGwsgASgCDCgCHBAVIAEoAgwoAiAQJSABKAIMKAIkECUgASgCDCgCUCECIwBBEGsiACQAIAAgAjYCDCAAKAIMBEAgACgCDCgCEARAIABBADYCCANAIAAoAgggACgCDCgCAEkEQCAAKAIMKAIQIAAoAghBAnRqKAIABEAgACgCDCgC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A3EQHwsgAygCpAEoAhQgA0GeAWogA0GcAWoQgQEgAygCTCADLwGeARAfIAMoAkwgAy8BnAEQHwJAAkAgAy0AhQFBAXFFDQAgAygCpAEpAyhCFFoNACADKAJMQQAQIAwBCyADKAJMIAMoAqQBKAIYECALAkACQCADKAKgAUGAAnFBgAJHDQAgAygCpAEpAyBC/////w9UBEAgAygCpAEpAyhC/////w9UDQELIAMoAkxBfxAgIAMoAkxBfxAgDAELAkAgAygCpAEpAyBC/////w9UBEAgAygCTCADKAKkASkDIKcQIAwBCyADKAJMQX8QIAsCQCADKAKkASkDKEL/////D1QEQCADKAJMIAMoAqQBKQMopxAgDAELIAMoAkxBfxAgCwsgAygCTCADKAKkASgCMBBTQf//A3EQHyADIAMoAqQBKAI0IAMoAqABEIYBQf//A3EgAygCkAFBgAYQhgFB//8DcWo2AogBIAMoAkwgAygCiAFB//8DcRAfIAMoAqABQYACcUUEQCADKAJMIAMoAqQBKAI4EFNB//8DcRAfIAMoAkwgAygCpAEoAjxB//8DcRAfIAMoAkwgAygCpAEvAUAQHyADKAJMIAMoAqQBKAJEECACQCADKAKkASkDSEL/////D1QEQCADKAJMIAMoAqQBKQNIpxAgDAELIAMoAkxBfxAgCwsCfyMAQRBrIgAgAygCTDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAJMEBYgAygCkAEQIyADQX82AqwBDAELIAMoAqgBIANB0ABqAn4jAEEQayIAIAMoAkw2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IACwsQNUEASARAIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCTBAWIAMoAqQBKAIwBEAgAygCqAEgAygCpAEoAjAQigFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABBEAgAygCqAEgAygCkAFBgAYQhQFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABECMgAygCpAEoAjQEQCADKAKoASADKAKkASgCNCADKAKgARCFAUEASARAIANBfzYCrAEMAgsLIAMoAqABQYACcUUEQCADKAKkASgCOARAIAMoAqgBIAMoAqQBKAI4EIoB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HCAAIAAoAhRBAWo2AhQMAQsLIAAoAggQR0EBcUUEQCAAKAIgQRRBABAUIAAoAggQFiAAQX82AiwMAQsgACgCCBAWIAAgACgCHDYCLAsgACgCLCECIABBMGokACADIAIiADYCBCAAQQBIBEAgA0IANwMoDAELIAMpAwggAygCBK18Qv///////////wBWBEAgAygCFEEEQRYQFCADQgA3AygMAQsgAyADKQMIIAMoAgStfDcDKAsgAykDKCEBIANBMGokACABC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQoAhAgBCgCDCAEKAIYQQhqEJIBNgIcCyAEKAIcIQAgBEEgaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwCQAJAIAEoAgwoAiRBAUYNACABKAIMKAIkQQJGDQAMAQsgASgCDEEAQgBBChAhGiABKAIMQQA2AiQLIAFBEGokAAumAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCCC0AKEEBcQRAIAJBfzYCDAwBCyACKAIIKAIABEAgAigCCCgCACACKAIEEGhBAEgEQCACKAIIQQxqIAIoAggoAgAQFyACQX82AgwMAgsLIAIoAgggAkEEakIEQRMQIUIAUwRAIAJBfzYCDAwBCyACQQA2AgwLIAIoAgwhACACQRBqJAAgAAuNCAIBfwF+IwBBkAFrIgMkACADIAA2AoQBIAMgATYCgAEgAyACNgJ8IAMQTwJAIAMoAoABKQMIQgBSBEAgAyADKAKAASgCACgCACkDSDcDYCADIAMoAoABKAIAKAIAKQNINwNoDAELIANCADcDYCADQgA3A2gLIANCADcDcAJAA0AgAykDcCADKAKAASkDCFQEQCADKAKAASgCACADKQNwp0EEdGooAgApA0ggAykDaFQEQCADIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSDcDaAsgAykDaCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAyADKAKAASgCACADKQNwp0EEdGooAgApA0ggAygCgAEoAgAgAykDcKdBBHRqKAIAKQMgfCADKAKAASgCACADKQNwp0EEdGooAgAoAjAQU0H//wNxrXxC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DEECdGooAgBBAnRqLwEASA0AAkAgAygCGCADKAIQQQJ0ai8BACADKAIYIAMoAhxB3BZqIAMoAgxBAnRqKAIAQQJ0ai8BAEcNACADKAIQIAMoAhxB2Chqai0AACADKAIcQdwWaiADKAIMQQJ0aigCACADKAIcQdgoamotAABKDQAMAQsgAygCHEHcFmogAygCFEECdGogAygCHEHcFmogAygCDEECdGooAgA2AgAgAyADKAIMNgIUIAMgAygCDEEBdDYCDAwBCwsgAygCHEHcFmogAygCFEECdGogAygCEDYCAAvXEwEDfyMAQTBrIgIkACACIAA2AiwgAiABNgIoIAIgAigCKCgCADYCJCACIAIoAigoAggoAgA2AiAgAiACKAIoKAIIKAIMNgIcIAJBfzYCECACKAIsQQA2AtAoIAIoAixBvQQ2AtQoIAJBADYCGANAIAIoAhggAigCHEgEQAJAIAIoAiQgAigCGEECdGovAQAEQCACIAIoAhgiATYCECACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohACAEIAA2AtAoIABBAnQgA2ogATYCACACKAIYIAIoAixB2ChqakEAOgAADAELIAIoAiQgAigCGEECdGpBADsBAgsgAiACKAIYQQFqNgIYDAELCwNAIAIoAiwoAtAoQQJIBEACQCACKAIQQQJIBEAgAiACKAIQQQFqIgA2AhAMAQtBACEACyACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohASAEIAE2AtAoIAFBAnQgA2ogADYCACACIAA2AgwgAigCJCACKAIMQQJ0akEBOwEAIAIoAgwgAigCLEHYKGpqQQA6AAAgAigCLCIAIAAoAqgtQQFrNgKoLSACKAIgBEAgAigCLCIAIAAoAqwtIAIoAiAgAigCDEECdGovAQJrNgKsLQsMAQsLIAIoAiggAigCEDYCBCACIAIoAiwoAtAoQQJtNgIYA0AgAigCGEEBTgRAIAIoAiwgAigCJCACKAIYEHogAiACKAIYQQFrNgIYDAELCyACIAIoAhw2AgwDQCACIAIoAiwoAuAWNgIYIAIoAixB3BZqIQEgAigCLCIDKALQKCEAIAMgAEEBazYC0CggAigCLCAAQQJ0IAFqKAIANgLgFiACKAIsIAIoAiRBARB6IAIgAigCLCgC4BY2AhQgAigCGCEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAhQhASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIkIAIoAgxBAnRqIAIoAiQgAigCGEECdGovAQAgAigCJCACKAIUQQJ0ai8BAGo7AQAgAigCDCACKAIsQdgoamoCfyACKAIYIAIoAixB2Chqai0AACACKAIUIAIoAixB2Chqai0AAE4EQCACKAIYIAIoAixB2Chqai0AAAwBCyACKAIUIAIoAixB2Chqai0AAAtBAWo6AAAgAigCJCACKAIUQQJ0aiACKAIMIgA7AQIgAigCJCACKAIYQQJ0aiAAOwECIAIgAigCDCIAQQFqNgIMIAIoAiwgADYC4BYgAigCLCACKAIkQQEQeiACKAIsKALQKEECTg0ACyACKAIsKALgFiEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAighASMAQUBqIgAgAigCLDYCPCAAIAE2AjggACAAKAI4KAIANgI0IAAgACgCOCgCBDYCMCAAIAAoAjgoAggoAgA2AiwgACAAKAI4KAIIKAIENgIoIAAgACgCOCgCCCgCCDYCJCAAIAAoAjgoAggoAhA2AiAgAEEANgIEIABBADYCEANAIAAoAhBBD0wEQCAAKAI8QbwWaiAAKAIQQQF0akEAOwEAIAAgACgCEEEBajYCEAwBCwsgACgCNCAAKAI8QdwWaiAAKAI8KALUKEECdGooAgBBAnRqQQA7AQIgACAAKAI8KALUKEEBajYCHANAIAAoAhxBvQRIBEAgACAAKAI8QdwWaiAAKAIcQQJ0aigCADYCGCAAIAAoAjQgACgCNCAAKAIYQQJ0ai8BAkECdGovAQJBAWo2AhAgACgCECAAKAIgSgRAIAAgACgCIDYCECAAIAAoAgRBAWo2AgQLIAAoAjQgACgCGEECdGogACgCEDsBAiAAKAIYIAAoAjBMBEAgACgCPCAAKAIQQQF0akG8FmoiASABLwEAQQFqOwEAIABBADYCDCAAKAIYIAAoAiROBEAgACAAKAIoIAAoAhggACgCJGtBAnRqKAIANgIMCyAAIAAoAjQgACgCGEECdGovAQA7AQogACgCPCIBIAEoAqgtIAAvAQogACgCECAAKAIMamxqNgKoLSAAKAIsBEAgACgCPCIBIAEoAqwtIAAvAQogACgCLCAAKAIYQQJ0ai8BAiAAKAIMamxqNgKsLQsLIAAgACgCHEEBajYCHAwBCwsCQCAAKAIERQ0AA0AgACAAKAIgQQFrNgIQA0AgACgCPEG8FmogACgCEEEBdGovAQBFBEAgACAAKAIQQQFrNgIQDAELCyAAKAI8IAAoAhBBAXRqQbwWaiIBIAEvAQBBAWs7AQAgACgCPCAAKAIQQQF0akG+FmoiASABLwEAQQJqOwEAIAAoAjwgACgCIEEBdGpBvBZqIgEgAS8BAEEBazsBACAAIAAoAgRBAms2AgQgACgCBEEASg0ACyAAIAAoAiA2AhADQCAAKAIQRQ0BIAAgACgCPEG8FmogACgCEEEBdGovAQA2AhgDQCAAKAIYBEAgACgCPEHcFmohASAAIAAoAhxBAWsiAzYCHCAAIANBAnQgAWooAgA2AhQgACgCFCAAKAIwSg0BIAAoAjQgACgCFEECdGovAQIgACgCEEcEQCAAKAI8IgEgASgCqC0gACgCNCAAKAIUQQJ0ai8BACAAKAIQIAAoAjQgACgCFEECdGovAQJrbGo2AqgtIAAoAjQgACgCFEECdGogACgCEDsBAgsgACAAKAIYQQFrNgIYDAELCyAAIAAoAhBBAWs2AhAMAAsACyACKAIkIQEgAigCECEDIAIoAixBvBZqIQQjAEFAaiIAJAAgACABNgI8IAAgAzYCOCAAIAQ2AjQgAEEANgIMIABBATYCCANAIAAoAghBD0wEQCAAIAAoAgwgACgCNCAAKAIIQQFrQQF0ai8BAGpBAXQ2AgwgAEEQaiAAKAIIQQF0aiAAKAIMOwEAIAAgACgCCEEBajYCCAwBCwsgAEEANgIEA0AgACgCBCAAKAI4TARAIAAgACgCPCAAKAIEQQJ0ai8BAjYCACAAKAIABEAgAEEQaiAAKAIAQQF0aiIBLwEAIQMgASADQQFqOwEAIAAoAgAhBCMAQRBrIgEgAzYCDCABIAQ2AgggAUEANgIEA0AgASABKAIEIAEoAgxBAXFyNgIEIAEgASgCDEEBdjYCDCABIAEoAgRBAXQ2AgQgASABKAIIQQFrIgM2AgggA0EASg0ACyABKAIEQQF2IQEgACgCPCAAKAIEQQJ0aiABOwEACyAAIAAoAgRBAWo2AgQMAQsLIABBQGskACACQTBqJAALTgEBfyMAQRBrIgIgADsBCiACIAE2AgQCQCACLwEKQQFGBEAgAigCBEEBRgRAIAJBADYCDAwCCyACQQQ2AgwMAQsgAkEANgIMCyACKAIMC84CAQF/IwBBMGsiBSQAIAUgADYCLCAFIAE2AiggBSACNgIkIAUgAzcDGCAFIAQ2AhQgBUIANwMIA0AgBSkDCCAFKQMYVARAIAUgBSgCJCAFKQMIp2otAAA6AAcgBSgCFEUEQCAFIAUoAiwoAhRBAnI7ARIgBSAFLwESIAUvARJBAXNsQQh2OwESIAUgBS0AByAFLwESQf8BcXM6AAcLIAUoAigEQCAFKAIoIAUpAwinaiAFLQAHOgAACyAFKAIsKAIMQX9zIAVBB2pBARAaQX9zIQAgBSgCLCAANgIMIAUoAiwgBSgCLCgCECAFKAIsKAIMQf8BcWpBhYiiwABsQQFqNgIQIAUgBSgCLCgCEEEYdjoAByAFKAIsKAIUQX9zIAVBB2pBARAaQX9zIQAgBSgCLCAANgIUIAUgBSkDCEIBfDcDCAwBCwsgBUEwaiQAC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI3AwggBCADNgIEAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQpAwggBCgCBCAEKAIYQQhqEMMBNgIcCyAEKAIcIQAgBEEgaiQAIAALpwMBAX8jAEEgayIEJAAgBCAANgIYIAQgATcDECAEIAI2AgwgBCADNgIIIAQgBCgCGCAEKQMQIAQoAgxBABBFIgA2AgACQCAARQRAIARBfzYCHAwBCyAEIAQoAhggBCkDECAEKAIMEMQBIgA2AgQgAEUEQCAEQX82AhwMAQsCQAJAIAQoAgxBCHENACAEKAIYKAJAIAQpAxCnQQR0aigCCEUNACAEKAIYKAJAIAQpAxCnQQR0aigCCCAEKAIIEDhBAEgEQCAEKAIYQQhqQQ9BABAUIARBfzYCHAwDCwwBCyAEKAIIEDsgBCgCCCAEKAIAKAIYNgIsIAQoAgggBCgCACkDKDcDGCAEKAIIIAQoAgAoAhQ2AiggBCgCCCAEKAIAKQMgNwMgIAQoAgggBCgCACgCEDsBMCAEKAIIIAQoAgAvAVI7ATIgBCgCCEEgQQAgBCgCAC0ABkEBcRtB3AFyrTcDAAsgBCgCCCAEKQMQNwMQIAQoAgggBCgCBDYCCCAEKAIIIgAgACkDAEIDhDcDACAEQQA2AhwLIAQoAhwhACAEQSBqJAAgAAsDAAELzQEBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAyADQQxqQaifARALNgIAAkAgAygCAEUEQCADKAIEQSE7AQAgAygCCEEAOwEADAELIAMoAgAoAhRB0ABIBEAgAygCAEHQADYCFAsgAygCBCADKAIAKAIMIAMoAgAoAhRBCXQgAygCACgCEEEFdGpB4L8Ca2o7AQAgAygCCCADKAIAKAIIQQt0IAMoAgAoAgRBBXRqIAMoAgAoAgBBAXVqOwEACyADQRBqJAALgwMBAX8jAEEgayIDJAAgAyAAOwEaIAMgATYCFCADIAI2AhAgAyADKAIUIANBCGpBwABBABBGIgA2AgwCQCAARQRAIANBADYCHAwBCyADKAIIQQVqQf//A0sEQCADKAIQQRJBABAUIANBADYCHAwBCyADQQAgAygCCEEFaq0QKSIANgIEIABFBEAgAygCEEEOQQAQFCADQQA2AhwMAQsgAygCBEEBEI4BIAMoAgQgAygCFBCMARAgIAMoAgQgAygCDCADKAIIEEACfyMAQRBrIgAgAygCBDYCDCAAKAIMLQAAQQFxRQsEQCADKAIQQRRBABAUIAMoAgQQFiADQQA2AhwMAQsgAyADLwEaAn8jAEEQayIAIAMoAgQ2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IAC6dB//8DcQsCfyMAQRBrIgAgAygCBDYCDCAAKAIMKAIEC0GABhBRNgIAIAMoAgQQFiADIAMoAgA2AhwLIAMoAhwhACADQSBqJAAgAAu0AgEBfyMAQTBrIgMkACADIAA2AiggAyABNwMgIAMgAjYCHAJAIAMpAyBQBEAgA0EBOgAvDAELIAMgAygCKCkDECADKQMgfDcDCAJAIAMpAwggAykDIFoEQCADKQMIQv////8AWA0BCyADKAIcQQ5BABAUIANBADoALwwBCyADIAMoAigoAgAgAykDCKdBBHQQSCIANgIEIABFBEAgAygCHEEOQQAQFCADQQA6AC8MAQsgAygCKCADKAIENgIAIAMgAygCKCkDCDcDEANAIAMpAxAgAykDCFpFBEAgAygCKCgCACADKQMQp0EEdGoQkAEgAyADKQMQQgF8NwMQDAELCyADKAIoIAMpAwgiATcDECADKAIoIAE3AwggA0EBOgAvCyADLQAvQQFxIQAgA0EwaiQAIAALzAEBAX8jAEEgayICJAAgAiAANwMQIAIgATYCDCACQTAQGCIBNgIIAkAgAUUEQCACKAIMQQ5BABAUIAJBADYCHAwBCyACKAIIQQA2AgAgAigCCEIANwMQIAIoAghCADcDCCACKAIIQgA3AyAgAigCCEIANwMYIAIoAghBADYCKCACKAIIQQA6ACwgAigCCCACKQMQIAIoAgwQgwFBAXFFBEAgAigCCBAkIAJBADYCHAwBCyACIAIoAgg2AhwLIAIoAhwhASACQSBqJAAgAQvWAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCECADIANBDGpCBBApNgIIAkAgAygCCEUEQCADQX82AhwMAQsDQCADKAIUBEAgAygCFCgCBCADKAIQcUGABnEEQCADKAIIQgAQLBogAygCCCADKAIULwEIEB8gAygCCCADKAIULwEKEB8CfyMAQRBrIgAgAygCCDYCDCAAKAIMLQAAQQFxRQsEQCADKAIYQQhqQRRBABAUIAMoAggQFiADQX82AhwMBAsgAygCGCADQQxqQgQQNUEASARAIAMoAggQFiADQX82AhwMBAsgAygCFC8BCgRAIAMoAhggAygCFCgCDCADKAIULwEKrRA1QQBIBEAgAygCCBAWIANBfzYCHAwFCwsLIAMgAygCFCgCADYCFAwBCwsgAygCCBAWIANBADYCHAsgAygCHCEAIANBIGokACAAC2gBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADsBBgNAIAIoAgwEQCACKAIMKAIEIAIoAghxQYAGcQRAIAIgAigCDC8BCiACLwEGQQRqajsBBgsgAiACKAIMKAIANgIMDAELCyACLwEGC/ABAQF/IwBBEGsiASQAIAEgADYCDCABIAEoAgw2AgggAUEANgIEA0AgASgCDARAAkACQCABKAIMLwEIQfXGAUYNACABKAIMLwEIQfXgAUYNACABKAIMLwEIQYGyAkYNACABKAIMLwEIQQFHDQELIAEgASgCDCgCADYCACABKAIIIAEoAgxGBEAg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IAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCEASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQL0IWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJIQgQQHhogASgCSBAqBEAgASgCOEEBQQAQFCABQQA2AkwMAQsgASABKAJIEB1B//8Dca03AyggASABKAJIEB1B//8Dca03AyAgASkDICABKQMoUgRAIAEoAjhBE0EAEBQgAUEANgJMDAELIAEgASgCSBAqrTcDGCABIAEoAkgQKq03AxAgASkDECABKQMQIAEpAxh8VgRAIAEoAjhBBEEWEBQgAUEANgJMDAELIAEpAxAgASkDGHwgASkDQCABKQMIfFYEQCABKAI4QRVBABAUIAFBADYCTAwBCwJAIAEoAjxBBHFFDQAgASkDECABKQMYfCABKQNAIAEpAwh8UQ0AIAEoAjhBFUEAEBQgAUEANgJMDAELIAEgASkDICABKAI4EIQBIgU2AjQgBUUEQCABQQA2AkwMAQsgASgCNEEAOgAsIAEoAjQgASkDGDcDGCABKAI0IAEpAxA3AyAgASABKAI0NgJMCyABKAJMIQUgAUHQAGokACAAIAU2AlALIAAoAlBFBEAgAEEANgJsDAELIAAoAmQgACkDMEIUfBAsGiAAIAAoAmQQHTsBTiAAKAJQKQMgIAAoAlApAxh8IAApA1ggACkDMHxWBEAg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IAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEFwgAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQeBogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2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mwFCADcDAEGYmwFCADcDAEGQmwFCADcDAEGImwFCADcDAEGAmwFCADcDAEH4mgFCADcDAEHwmgFCADcDAEHwmgEL1QQBBX8jAEGwAWsiASQAIAEgADYCqAEgASgCqAEQNwJAAkAgASgCqAEoAgBBAE4EQCABKAKoASgCAEGAFCgCAEgNAQsgASABKAKoASgCADYCECABQSBqQY8SIAFBEGoQcCABQQA2AqQBIAEgAUEgajYCoAEMAQsgASABKAKoASgCAEECdEGAE2ooAgA2AqQBAkACQAJAAkAgASgCqAEoAgBBAnRBkBRqKAIAQQFrDgIAAQILIAEoAqgBKAIEIQJBkJkBKAIAIQRBACEAAkACQANAIAIgAEGgiAFqLQAARwRAQdcAIQMgAEEBaiIAQdcARw0BDAILCyAAIgMNAEGAiQEhAgwBC0GAiQEhAANAIAAtAAAhBSAAQQFqIgIhACAFDQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQKwJ/IAEoAqQBBEAgASgCpAEQK0ECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEHAgASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMIQgSGIAgpAwAiA0I8iIQhAiAIKQMQIAgpAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIAhBIGokACACIAZCgICAgICAgICAf4OEvws5AwALrRcDEn8CfgF8IwBBsARrIgkkACAJQQA2AiwCQCABvSIYQn9XBEBBASESQa4IIRMgAZoiAb0hGAwBCyAEQYAQcQRAQQEhEkGxCCETDAELQbQIQa8IIARBAXEiEhshEyASRSEXCwJAIBhCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiASQQNqIg0gBEH//3txECYgACATIBIQIiAAQeQLQbUSIAVBIHEiAxtBjw1BuRIgAxsgASABYhtBAxAiDAELIAlBEGohEAJAAn8CQCABIAlBLGoQqQEiASABoCIBRAAAAAAAAAAAYgRAIAkgCSgCLCIGQQFrNgIsIAVBIHIiFEHhAEcNAQwDCyAFQSByIhRB4QBGDQIgCSgCLCELQQYgAyADQQBIGwwBCyAJIAZBHWsiCzYCLCABRAAAAAAAALBBoiEBQQYgAyADQQBIGwshCiAJQTBqIAlB0AJqIAtBAEgbIg4hBwNAIAcCfyABRAAAAAAAAPBBYyABRAAAAAAAAAAAZnEEQCABqwwBC0EACyIDNgIAIAdBBGohByABIAO4oUQA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HCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCGCABKAIUSQtBAXENAAsgASgCKEGCAiABKAIUIAEoAhhrazYCYCABKAIoKAJgIAEoAigoAnRLBEAgASgCKCABKAIoKAJ0NgJgCwsLAkAgASgCKCgCYEEDTwRAIAEgASgCKCgCYEEDazoAEyABQQE7ARAgASgCKCICKAKkLSACKAKgLUEBdGogAS8BEDsBACABLQATIQMgASgCKCICKAKYLSEEIAIgAigCoC0iAkEBajYCoC0gAiAEaiADOgAAIAEgAS8BEEEBazsBECABKAIoIAEtABNB0N0Aai0AAEECdGpBmAlqIgIgAi8BAEEBajsBACABKAIoQYgTagJ/IAEvARBBgAJJBEAgAS8BEC0A0FkMAQsgAS8BEEEHdkGAAmotANBZC0ECdGoiAiACLwEAQQFqOwEAIAEgASgCKCgCoC0gASgCKCgCnC1BAWtGNgIgIAEoAigiAiACKAJ0IAEoAigoAmBrNgJ0IAEoAigiAiABKAIoKAJgIAIoAmxqNgJsIAEoAihBADYCYAwBCyABIAEoAigiAigCOCACKAJsai0AADoADyABKAIoIgIoAqQtIAIoAqAtQQF0akEAOwEAIAEtAA8hAyABKAIoIgIoApgtIQQgAiACKAKgLSICQQFqNgKgLSACIARqIAM6AAAgASgCKCABLQAPQQJ0aiICIAIvAZQBQQFqOwGUASABIAEoAigoAqAtIAEoAigoApwtQQFrRjYCICABKAIoIgIgAigCdEEBazYCdCABKAIoIgIgAigCbEEBajYCbAsgASgCIARAIAEoAigCfyABKAIoKAJcQQBOBEAgASgCKCgCOCABKAIoKAJcagwBC0EACyABKAIoKAJsIAEoAigoAlxrQQAQKCABKAIoIAEoAigoAmw2AlwgASgCKCgCABAcIAEoAigo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QCABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiQgASgCLCABKAIccUECdGooAQA2ARACQAJAA0AgASABLQARNgIMIAEgASgCLCABKAIMdjYCLCABIAEoAiggASgCDGs2AiggASABLQAQNgIMIAEoAgxFBEAgAS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgi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ZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AbmFuAC9kZXYvdXJhbmRvbQBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAaW5mAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAcmIAcitiAHJ3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CADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";y4(Rp)||(Rp=dxe(Rp));function Kxe(t){try{if(t==Rp&&lP)return new Uint8Array(lP);var e=s4(t);if(e)return e;if(aP)return aP(t);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(r){Gr(r)}}function Uxe(t,e){var r,i,n;try{n=Kxe(t),i=new WebAssembly.Module(n),r=new WebAssembly.Instance(i,e)}catch(o){var s=o.toString();throw Di("failed to compile wasm module: "+s),(s.includes("imported Memory")||s.includes("memory import"))&&Di("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),o}return[r,i]}function Gxe(){var t={a:Hxe};function e(n,s){var o=n.exports;oe.asm=o,ew=oe.asm.u,p4(ew.buffer),fP=oe.asm.za,Mxe(oe.asm.v),dP("wasm-instantiate")}if(E4("wasm-instantiate"),oe.instantiateWasm)try{var r=oe.instantiateWasm(t,e);return r}catch(n){return Di("Module.instantiateWasm callback failed with error: "+n),!1}var i=Uxe(Rp,t);return e(i[0]),oe.asm}var ai,ya;function hP(t){for(;t.length>0;){var e=t.shift();if(typeof e=="function"){e(oe);continue}var r=e.func;typeof r=="number"?e.arg===void 0?fP.get(r)():fP.get(r)(e.arg):r(e.arg===void 0?null:e.arg)}}function iw(t,e){var r=new Date(_e[t>>2]*1e3);_e[e>>2]=r.getUTCSeconds(),_e[e+4>>2]=r.getUTCMinutes(),_e[e+8>>2]=r.getUTCHours(),_e[e+12>>2]=r.getUTCDate(),_e[e+16>>2]=r.getUTCMonth(),_e[e+20>>2]=r.getUTCFullYear()-1900,_e[e+24>>2]=r.getUTCDay(),_e[e+36>>2]=0,_e[e+32>>2]=0;var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[e+28>>2]=n,iw.GMTString||(iw.GMTString=uP("GMT")),_e[e+40>>2]=iw.GMTString,e}function jxe(t,e){return iw(t,e)}var yt={splitPath:function(t){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return e.exec(t).slice(1)},normalizeArray:function(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];n==="."?t.splice(i,1):n===".."?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r;r--)t.unshift("..");return t},normalize:function(t){var e=t.charAt(0)==="/",r=t.substr(-1)==="/";return t=yt.normalizeArray(t.split("/").filter(function(i){return!!i}),!e).join("/"),!t&&!e&&(t="."),t&&r&&(t+="/"),(e?"/":"")+t},dirname:function(t){var e=yt.splitPath(t),r=e[0],i=e[1];return!r&&!i?".":(i&&(i=i.substr(0,i.length-1)),r+i)},basename:function(t){if(t==="/")return"/";t=yt.normalize(t),t=t.replace(/\/$/,"");var e=t.lastIndexOf("/");return e===-1?t:t.substr(e+1)},extname:function(t){return yt.splitPath(t)[3]},join:function(){var t=Array.prototype.slice.call(arguments,0);return yt.normalize(t.join("/"))},join2:function(t,e){return yt.normalize(t+"/"+e)}};function Yxe(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var t=new Uint8Array(1);return function(){return crypto.getRandomValues(t),t[0]}}else if(Wl)try{var e=require("crypto");return function(){return e.randomBytes(1)[0]}}catch(r){}return function(){Gr("randomDevice")}}var wa={resolve:function(){for(var t="",e=!1,r=arguments.length-1;r>=-1&&!e;r--){var i=r>=0?arguments[r]:y.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";t=i+"/"+t,e=i.charAt(0)==="/"}return t=yt.normalizeArray(t.split("/").filter(function(n){return!!n}),!e).join("/"),(e?"/":"")+t||"."},relative:function(t,e){t=wa.resolve(t).substr(1),e=wa.resolve(e).substr(1);function r(c){for(var u=0;u=0&&c[g]==="";g--);return u>g?[]:c.slice(u,g-u+1)}for(var i=r(t.split("/")),n=r(e.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?e=i.slice(0,n).toString("utf-8"):e=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(e=window.prompt("Input: "),e!==null&&(e+=` -`)):typeof readline=="function"&&(e=readline(),e!==null&&(e+=` -`));if(!e)return null;t.input=CP(e,!0)}return t.input.shift()},put_char:function(t,e){e===null||e===10?($y(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&($y(Zu(t.output,0)),t.output=[])}},default_tty1_ops:{put_char:function(t,e){e===null||e===10?(Di(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&(Di(Zu(t.output,0)),t.output=[])}}};function mP(t){for(var e=mxe(t,65536),r=h4(e);t=e)){var i=1024*1024;e=Math.max(e,r*(r>>0),r!=0&&(e=Math.max(e,256));var n=t.contents;t.contents=new Uint8Array(e),t.usedBytes>0&&t.contents.set(n.subarray(0,t.usedBytes),0)}},resizeFileStorage:function(t,e){if(t.usedBytes!=e)if(e==0)t.contents=null,t.usedBytes=0;else{var r=t.contents;t.contents=new Uint8Array(e),r&&t.contents.set(r.subarray(0,Math.min(e,t.usedBytes))),t.usedBytes=e}},node_ops:{getattr:function(t){var e={};return e.dev=y.isChrdev(t.mode)?t.id:1,e.ino=t.id,e.mode=t.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=t.rdev,y.isDir(t.mode)?e.size=4096:y.isFile(t.mode)?e.size=t.usedBytes:y.isLink(t.mode)?e.size=t.link.length:e.size=0,e.atime=new Date(t.timestamp),e.mtime=new Date(t.timestamp),e.ctime=new Date(t.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr:function(t,e){e.mode!==void 0&&(t.mode=e.mode),e.timestamp!==void 0&&(t.timestamp=e.timestamp),e.size!==void 0&&pt.resizeFileStorage(t,e.size)},lookup:function(t,e){throw y.genericErrors[44]},mknod:function(t,e,r,i){return pt.createNode(t,e,r,i)},rename:function(t,e,r){if(y.isDir(t.mode)){var i;try{i=y.lookupNode(e,r)}catch(s){}if(i)for(var n in i.contents)throw new y.ErrnoError(55)}delete t.parent.contents[t.name],t.parent.timestamp=Date.now(),t.name=r,e.contents[r]=t,e.timestamp=t.parent.timestamp,t.parent=e},unlink:function(t,e){delete t.contents[e],t.timestamp=Date.now()},rmdir:function(t,e){var r=y.lookupNode(t,e);for(var i in r.contents)throw new y.ErrnoError(55);delete t.contents[e],t.timestamp=Date.now()},readdir:function(t){var e=[".",".."];for(var r in t.contents)!t.contents.hasOwnProperty(r)||e.push(r);return e},symlink:function(t,e,r){var i=pt.createNode(t,e,511|40960,0);return i.link=r,i},readlink:function(t){if(!y.isLink(t.mode))throw new y.ErrnoError(28);return t.link}},stream_ops:{read:function(t,e,r,i,n){var s=t.node.contents;if(n>=t.node.usedBytes)return 0;var o=Math.min(t.node.usedBytes-n,i);if(o>8&&s.subarray)e.set(s.subarray(n,n+o),r);else for(var a=0;a0||i+r>2)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}return e.mode},realPath:function(t){for(var e=[];t.parent!==t;)e.push(t.name),t=t.parent;return e.push(t.mount.opts.root),e.reverse(),yt.join.apply(null,e)},flagsForNode:function(t){t&=~2097152,t&=~2048,t&=~32768,t&=~524288;var e=0;for(var r in tt.flagsForNodeMap)t&r&&(e|=tt.flagsForNodeMap[r],t^=r);if(t)throw new y.ErrnoError(28);return e},node_ops:{getattr:function(t){var e=tt.realPath(t),r;try{r=ft.lstatSync(e)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}return tt.isWindows&&!r.blksize&&(r.blksize=4096),tt.isWindows&&!r.blocks&&(r.blocks=(r.size+r.blksize-1)/r.blksize|0),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr:function(t,e){var r=tt.realPath(t);try{if(e.mode!==void 0&&(ft.chmodSync(r,e.mode),t.mode=e.mode),e.timestamp!==void 0){var i=new Date(e.timestamp);ft.utimesSync(r,i,i)}e.size!==void 0&&ft.truncateSync(r,e.size)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},lookup:function(t,e){var r=yt.join2(tt.realPath(t),e),i=tt.getMode(r);return tt.createNode(t,e,i)},mknod:function(t,e,r,i){var n=tt.createNode(t,e,r,i),s=tt.realPath(n);try{y.isDir(n.mode)?ft.mkdirSync(s,n.mode):ft.writeFileSync(s,"",{mode:n.mode})}catch(o){throw o.code?new y.ErrnoError(tt.convertNodeCode(o)):o}return n},rename:function(t,e,r){var i=tt.realPath(t),n=yt.join2(tt.realPath(e),r);try{ft.renameSync(i,n)}catch(s){throw s.code?new y.ErrnoError(tt.convertNodeCode(s)):s}t.name=r},unlink:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.unlinkSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},rmdir:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.rmdirSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},readdir:function(t){var e=tt.realPath(t);try{return ft.readdirSync(e)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},symlink:function(t,e,r){var i=yt.join2(tt.realPath(t),e);try{ft.symlinkSync(r,i)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},readlink:function(t){var e=tt.realPath(t);try{return e=ft.readlinkSync(e),e=EP.relative(EP.resolve(t.mount.opts.root),e),e}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}}},stream_ops:{open:function(t){var e=tt.realPath(t.node);try{y.isFile(t.node.mode)&&(t.nfd=ft.openSync(e,tt.flagsForNode(t.flags)))}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},close:function(t){try{y.isFile(t.node.mode)&&t.nfd&&ft.closeSync(t.nfd)}catch(e){throw e.code?new y.ErrnoError(tt.convertNodeCode(e)):e}},read:function(t,e,r,i,n){if(i===0)return 0;try{return ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},write:function(t,e,r,i,n){try{return ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},llseek:function(t,e,r){var i=e;if(r===1)i+=t.position;else if(r===2&&y.isFile(t.node.mode))try{var n=ft.fstatSync(t.nfd);i+=n.size}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}if(i<0)throw new y.ErrnoError(28);return i},mmap:function(t,e,r,i,n,s){if(e!==0)throw new y.ErrnoError(28);if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);var o=mP(r);return tt.stream_ops.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);if(n&2)return 0;var s=tt.stream_ops.write(t,e,0,i,r,!1);return 0}}},w4={lookupPath:function(t){return{path:t,node:{mode:tt.getMode(t)}}},createStandardStreams:function(){y.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var t=1;t<3;t++)y.streams[t]={fd:t,nfd:t,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(t,e){y.isDir(t)?ft.mkdirSync(t,e):ft.writeFileSync(t,"",{mode:e})},mkdir:function(){ft.mkdirSync.apply(void 0,arguments)},symlink:function(){ft.symlinkSync.apply(void 0,arguments)},rename:function(){ft.renameSync.apply(void 0,arguments)},rmdir:function(){ft.rmdirSync.apply(void 0,arguments)},readdir:function(){ft.readdirSync.apply(void 0,arguments)},unlink:function(){ft.unlinkSync.apply(void 0,arguments)},readlink:function(){return ft.readlinkSync.apply(void 0,arguments)},stat:function(){return ft.statSync.apply(void 0,arguments)},lstat:function(){return ft.lstatSync.apply(void 0,arguments)},chmod:function(){ft.chmodSync.apply(void 0,arguments)},fchmod:function(){ft.fchmodSync.apply(void 0,arguments)},chown:function(){ft.chownSync.apply(void 0,arguments)},fchown:function(){ft.fchownSync.apply(void 0,arguments)},truncate:function(){ft.truncateSync.apply(void 0,arguments)},ftruncate:function(t,e){if(e<0)throw new y.ErrnoError(28);ft.ftruncateSync.apply(void 0,arguments)},utime:function(){ft.utimesSync.apply(void 0,arguments)},open:function(t,e,r,i){typeof e=="string"&&(e=Vl.modeStringToFlags(e));var n=ft.openSync(t,tt.flagsForNode(e),r),s=i!=null?i:y.nextfd(n),o={fd:s,nfd:n,position:0,path:t,flags:e,seekable:!0};return y.streams[s]=o,o},close:function(t){t.stream_ops||ft.closeSync(t.nfd),y.closeStream(t.fd)},llseek:function(t,e,r){if(t.stream_ops)return Vl.llseek(t,e,r);var i=e;if(r===1)i+=t.position;else if(r===2)i+=ft.fstatSync(t.nfd).size;else if(r!==0)throw new y.ErrnoError(eg.EINVAL);if(i<0)throw new y.ErrnoError(eg.EINVAL);return t.position=i,i},read:function(t,e,r,i,n){if(t.stream_ops)return Vl.read(t,e,r,i,n);var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},write:function(t,e,r,i,n){if(t.stream_ops)return Vl.write(t,e,r,i,n);t.flags&+"1024"&&y.llseek(t,0,+"2");var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},allocate:function(){throw new y.ErrnoError(eg.EOPNOTSUPP)},mmap:function(t,e,r,i,n,s){if(t.stream_ops)return Vl.mmap(t,e,r,i,n,s);if(e!==0)throw new y.ErrnoError(28);var o=mP(r);return y.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){return t.stream_ops?Vl.msync(t,e,r,i,n):(n&2||y.write(t,e,0,i,r),0)},munmap:function(){return 0},ioctl:function(){throw new y.ErrnoError(eg.ENOTTY)}},y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(t,e){if(t=wa.resolve(y.cwd(),t),e=e||{},!t)return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var i in r)e[i]===void 0&&(e[i]=r[i]);if(e.recurse_count>8)throw new y.ErrnoError(32);for(var n=yt.normalizeArray(t.split("/").filter(function(f){return!!f}),!1),s=y.root,o="/",a=0;a40)throw new y.ErrnoError(32)}}return{path:o,node:s}},getPath:function(t){for(var e;;){if(y.isRoot(t)){var r=t.mount.mountpoint;return e?r[r.length-1]!=="/"?r+"/"+e:r+e:r}e=e?t.name+"/"+e:t.name,t=t.parent}},hashName:function(t,e){for(var r=0,i=0;i>>0)%y.nameTable.length},hashAddNode:function(t){var e=y.hashName(t.parent.id,t.name);t.name_next=y.nameTable[e],y.nameTable[e]=t},hashRemoveNode:function(t){var e=y.hashName(t.parent.id,t.name);if(y.nameTable[e]===t)y.nameTable[e]=t.name_next;else for(var r=y.nameTable[e];r;){if(r.name_next===t){r.name_next=t.name_next;break}r=r.name_next}},lookupNode:function(t,e){var r=y.mayLookup(t);if(r)throw new y.ErrnoError(r,t);for(var i=y.hashName(t.id,e),n=y.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===t.id&&s===e)return n}return y.lookup(t,e)},createNode:function(t,e,r,i){var n=new y.FSNode(t,e,r,i);return y.hashAddNode(n),n},destroyNode:function(t){y.hashRemoveNode(t)},isRoot:function(t){return t===t.parent},isMountpoint:function(t){return!!t.mounted},isFile:function(t){return(t&61440)==32768},isDir:function(t){return(t&61440)==16384},isLink:function(t){return(t&61440)==40960},isChrdev:function(t){return(t&61440)==8192},isBlkdev:function(t){return(t&61440)==24576},isFIFO:function(t){return(t&61440)==4096},isSocket:function(t){return(t&49152)==49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(t){var e=y.flagModes[t];if(typeof e=="undefined")throw new Error("Unknown file open mode: "+t);return e},flagsToPermissionString:function(t){var e=["r","w","rw"][t&3];return t&512&&(e+="w"),e},nodePermissions:function(t,e){return y.ignorePermissions?0:e.includes("r")&&!(t.mode&292)||e.includes("w")&&!(t.mode&146)||e.includes("x")&&!(t.mode&73)?2:0},mayLookup:function(t){var e=y.nodePermissions(t,"x");return e||(t.node_ops.lookup?0:2)},mayCreate:function(t,e){try{var r=y.lookupNode(t,e);return 20}catch(i){}return y.nodePermissions(t,"wx")},mayDelete:function(t,e,r){var i;try{i=y.lookupNode(t,e)}catch(s){return s.errno}var n=y.nodePermissions(t,"wx");if(n)return n;if(r){if(!y.isDir(i.mode))return 54;if(y.isRoot(i)||y.getPath(i)===y.cwd())return 10}else if(y.isDir(i.mode))return 31;return 0},mayOpen:function(t,e){return t?y.isLink(t.mode)?32:y.isDir(t.mode)&&(y.flagsToPermissionString(e)!=="r"||e&512)?31:y.nodePermissions(t,y.flagsToPermissionString(e)):44},MAX_OPEN_FDS:4096,nextfd:function(t,e){t=t||0,e=e||y.MAX_OPEN_FDS;for(var r=t;r<=e;r++)if(!y.streams[r])return r;throw new y.ErrnoError(33)},getStream:function(t){return y.streams[t]},createStream:function(t,e,r){y.FSStream||(y.FSStream=function(){},y.FSStream.prototype={object:{get:function(){return this.node},set:function(o){this.node=o}},isRead:{get:function(){return(this.flags&2097155)!=1}},isWrite:{get:function(){return(this.flags&2097155)!=0}},isAppend:{get:function(){return this.flags&1024}}});var i=new y.FSStream;for(var n in t)i[n]=t[n];t=i;var s=y.nextfd(e,r);return t.fd=s,y.streams[s]=t,t},closeStream:function(t){y.streams[t]=null},chrdev_stream_ops:{open:function(t){var e=y.getDevice(t.node.rdev);t.stream_ops=e.stream_ops,t.stream_ops.open&&t.stream_ops.open(t)},llseek:function(){throw new y.ErrnoError(70)}},major:function(t){return t>>8},minor:function(t){return t&255},makedev:function(t,e){return t<<8|e},registerDevice:function(t,e){y.devices[t]={stream_ops:e}},getDevice:function(t){return y.devices[t]},getMounts:function(t){for(var e=[],r=[t];r.length;){var i=r.pop();e.push(i),r.push.apply(r,i.mounts)}return e},syncfs:function(t,e){typeof t=="function"&&(e=t,t=!1),y.syncFSRequests++,y.syncFSRequests>1&&Di("warning: "+y.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=y.getMounts(y.root.mount),i=0;function n(o){return y.syncFSRequests--,e(o)}function s(o){if(o)return s.errored?void 0:(s.errored=!0,n(o));++i>=r.length&&n(null)}r.forEach(function(o){if(!o.type.syncfs)return s(null);o.type.syncfs(o,t,s)})},mount:function(t,e,r){var i=r==="/",n=!r,s;if(i&&y.root)throw new y.ErrnoError(10);if(!i&&!n){var o=y.lookupPath(r,{follow_mount:!1});if(r=o.path,s=o.node,y.isMountpoint(s))throw new y.ErrnoError(10);if(!y.isDir(s.mode))throw new y.ErrnoError(54)}var a={type:t,opts:e,mountpoint:r,mounts:[]},l=t.mount(a);return l.mount=a,a.root=l,i?y.root=l:s&&(s.mounted=a,s.mount&&s.mount.mounts.push(a)),l},unmount:function(t){var e=y.lookupPath(t,{follow_mount:!1});if(!y.isMountpoint(e.node))throw new y.ErrnoError(28);var r=e.node,i=r.mounted,n=y.getMounts(i);Object.keys(y.nameTable).forEach(function(o){for(var a=y.nameTable[o];a;){var l=a.name_next;n.includes(a.mount)&&y.destroyNode(a),a=l}}),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:function(t,e){return t.node_ops.lookup(t,e)},mknod:function(t,e,r){var i=y.lookupPath(t,{parent:!0}),n=i.node,s=yt.basename(t);if(!s||s==="."||s==="..")throw new y.ErrnoError(28);var o=y.mayCreate(n,s);if(o)throw new y.ErrnoError(o);if(!n.node_ops.mknod)throw new y.ErrnoError(63);return n.node_ops.mknod(n,s,e,r)},create:function(t,e){return e=e!==void 0?e:438,e&=4095,e|=32768,y.mknod(t,e,0)},mkdir:function(t,e){return e=e!==void 0?e:511,e&=511|512,e|=16384,y.mknod(t,e,0)},mkdirTree:function(t,e){for(var r=t.split("/"),i="",n=0;nthis.length-1||f<0)){var h=f%this.chunkSize,p=f/this.chunkSize|0;return this.getter(p)[h]}},s.prototype.setDataGetter=function(f){this.getter=f},s.prototype.cacheLength=function(){var f=new XMLHttpRequest;if(f.open("HEAD",r,!1),f.send(null),!(f.status>=200&&f.status<300||f.status===304))throw new Error("Couldn't load "+r+". Status: "+f.status);var h=Number(f.getResponseHeader("Content-length")),p,d=(p=f.getResponseHeader("Accept-Ranges"))&&p==="bytes",m=(p=f.getResponseHeader("Content-Encoding"))&&p==="gzip",I=1024*1024;d||(I=h);var B=function(R,H){if(R>H)throw new Error("invalid range ("+R+", "+H+") or no bytes requested!");if(H>h-1)throw new Error("only "+h+" bytes available! programmer error!");var L=new XMLHttpRequest;if(L.open("GET",r,!1),h!==I&&L.setRequestHeader("Range","bytes="+R+"-"+H),typeof Uint8Array!="undefined"&&(L.responseType="arraybuffer"),L.overrideMimeType&&L.overrideMimeType("text/plain; charset=x-user-defined"),L.send(null),!(L.status>=200&&L.status<300||L.status===304))throw new Error("Couldn't load "+r+". Status: "+L.status);return L.response!==void 0?new Uint8Array(L.response||[]):CP(L.responseText||"",!0)},b=this;b.setDataGetter(function(R){var H=R*I,L=(R+1)*I-1;if(L=Math.min(L,h-1),typeof b.chunks[R]=="undefined"&&(b.chunks[R]=B(H,L)),typeof b.chunks[R]=="undefined")throw new Error("doXHR failed!");return b.chunks[R]}),(m||!h)&&(I=h=1,h=this.getter(0).length,I=h,$y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=h,this._chunkSize=I,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!i4)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else var a={isDevice:!1,url:r};var l=y.createFile(t,e,a,i,n);a.contents?l.contents=a.contents:a.url&&(l.contents=null,l.url=a.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var c={},u=Object.keys(l.stream_ops);return u.forEach(function(g){var f=l.stream_ops[g];c[g]=function(){return y.forceLoadFile(l),f.apply(null,arguments)}}),c.read=function(f,h,p,d,m){y.forceLoadFile(l);var I=f.node.contents;if(m>=I.length)return 0;var B=Math.min(I.length-m,d);if(I.slice)for(var b=0;b>2]=i.dev,_e[r+4>>2]=0,_e[r+8>>2]=i.ino,_e[r+12>>2]=i.mode,_e[r+16>>2]=i.nlink,_e[r+20>>2]=i.uid,_e[r+24>>2]=i.gid,_e[r+28>>2]=i.rdev,_e[r+32>>2]=0,ya=[i.size>>>0,(ai=i.size,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+40>>2]=ya[0],_e[r+44>>2]=ya[1],_e[r+48>>2]=4096,_e[r+52>>2]=i.blocks,_e[r+56>>2]=i.atime.getTime()/1e3|0,_e[r+60>>2]=0,_e[r+64>>2]=i.mtime.getTime()/1e3|0,_e[r+68>>2]=0,_e[r+72>>2]=i.ctime.getTime()/1e3|0,_e[r+76>>2]=0,ya=[i.ino>>>0,(ai=i.ino,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+80>>2]=ya[0],_e[r+84>>2]=ya[1],0},doMsync:function(t,e,r,i,n){var s=$u.slice(t,t+r);y.msync(e,s,n,r,i)},doMkdir:function(t,e){return t=yt.normalize(t),t[t.length-1]==="/"&&(t=t.substr(0,t.length-1)),y.mkdir(t,e,0),0},doMknod:function(t,e,r){switch(e&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return y.mknod(t,e,r),0},doReadlink:function(t,e,r){if(r<=0)return-28;var i=y.readlink(t),n=Math.min(r,rw(i)),s=Zi[e+n];return u4(i,e,r+1),Zi[e+n]=s,n},doAccess:function(t,e){if(e&~7)return-28;var r,i=y.lookupPath(t,{follow:!0});if(r=i.node,!r)return-44;var n="";return e&4&&(n+="r"),e&2&&(n+="w"),e&1&&(n+="x"),n&&y.nodePermissions(r,n)?-2:0},doDup:function(t,e,r){var i=y.getStream(r);return i&&y.close(i),y.open(t,e,0,r,r).fd},doReadv:function(t,e,r,i){for(var n=0,s=0;s>2],a=_e[e+(s*8+4)>>2],l=y.read(t,Zi,o,a,i);if(l<0)return-1;if(n+=l,l>2],a=_e[e+(s*8+4)>>2],l=y.write(t,Zi,o,a,i);if(l<0)return-1;n+=l}return n},varargs:void 0,get:function(){Ot.varargs+=4;var t=_e[Ot.varargs-4>>2];return t},getStr:function(t){var e=c4(t);return e},getStreamFromFD:function(t){var e=y.getStream(t);if(!e)throw new y.ErrnoError(8);return e},get64:function(t,e){return t}};function qxe(t,e){try{return t=Ot.getStr(t),y.chmod(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function Wxe(t){return _e[Jxe()>>2]=t,t}function zxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 0:{var n=Ot.get();if(n<0)return-28;var s;return s=y.open(i.path,i.flags,0,n),s.fd}case 1:case 2:return 0;case 3:return i.flags;case 4:{var n=Ot.get();return i.flags|=n,0}case 12:{var n=Ot.get(),o=0;return cP[n+o>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Wxe(28),-1;default:return-28}}catch(a){return(typeof y=="undefined"||!(a instanceof y.ErrnoError))&&Gr(a),-a.errno}}function Vxe(t,e){try{var r=Ot.getStreamFromFD(t);return Ot.doStat(y.stat,r.path,e)}catch(i){return(typeof y=="undefined"||!(i instanceof y.ErrnoError))&&Gr(i),-i.errno}}function _xe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 21509:case 21505:return i.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return i.tty?0:-59;case 21519:{if(!i.tty)return-59;var n=Ot.get();return _e[n>>2]=0,0}case 21520:return i.tty?-28:-59;case 21531:{var n=Ot.get();return y.ioctl(i,e,n)}case 21523:return i.tty?0:-59;case 21524:return i.tty?0:-59;default:Gr("bad ioctl syscall "+e)}}catch(s){return(typeof y=="undefined"||!(s instanceof y.ErrnoError))&&Gr(s),-s.errno}}function Xxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStr(t),n=r?Ot.get():0,s=y.open(i,e,n);return s.fd}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),-o.errno}}function Zxe(t,e){try{return t=Ot.getStr(t),e=Ot.getStr(e),y.rename(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function $xe(t){try{return t=Ot.getStr(t),y.rmdir(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function eke(t,e){try{return t=Ot.getStr(t),Ot.doStat(y.stat,t,e)}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function tke(t){try{return t=Ot.getStr(t),y.unlink(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function rke(t,e,r){$u.copyWithin(t,e,e+r)}function ike(t){try{return ew.grow(t-gP.byteLength+65535>>>16),p4(ew.buffer),1}catch(e){}}function nke(t){var e=$u.length;t=t>>>0;var r=2147483648;if(t>r)return!1;for(var i=1;i<=4;i*=2){var n=e*(1+.2/i);n=Math.min(n,t+100663296);var s=Math.min(r,xxe(Math.max(t,n),65536)),o=ike(s);if(o)return!0}return!1}function ske(t){try{var e=Ot.getStreamFromFD(t);return y.close(e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),r.errno}}function oke(t,e){try{var r=Ot.getStreamFromFD(t),i=r.tty?2:y.isDir(r.mode)?3:y.isLink(r.mode)?7:4;return Zi[e>>0]=i,0}catch(n){return(typeof y=="undefined"||!(n instanceof y.ErrnoError))&&Gr(n),n.errno}}function ake(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doReadv(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function Ake(t,e,r,i,n){try{var s=Ot.getStreamFromFD(t),o=4294967296,a=r*o+(e>>>0),l=9007199254740992;return a<=-l||a>=l?-61:(y.llseek(s,a,i),ya=[s.position>>>0,(ai=s.position,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[n>>2]=ya[0],_e[n+4>>2]=ya[1],s.getdents&&a===0&&i===0&&(s.getdents=null),0)}catch(c){return(typeof y=="undefined"||!(c instanceof y.ErrnoError))&&Gr(c),c.errno}}function lke(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doWritev(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function cke(t){Ixe(t)}function uke(t){var e=Date.now()/1e3|0;return t&&(_e[t>>2]=e),e}function IP(){if(IP.called)return;IP.called=!0;var t=new Date().getFullYear(),e=new Date(t,0,1),r=new Date(t,6,1),i=e.getTimezoneOffset(),n=r.getTimezoneOffset(),s=Math.max(i,n);_e[fke()>>2]=s*60,_e[gke()>>2]=Number(i!=n);function o(g){var f=g.toTimeString().match(/\(([A-Za-z ]+)\)$/);return f?f[1]:"GMT"}var a=o(e),l=o(r),c=uP(a),u=uP(l);n>2]=c,_e[nw()+4>>2]=u):(_e[nw()>>2]=u,_e[nw()+4>>2]=c)}function hke(t){IP();var e=Date.UTC(_e[t+20>>2]+1900,_e[t+16>>2],_e[t+12>>2],_e[t+8>>2],_e[t+4>>2],_e[t>>2],0),r=new Date(e);_e[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[t+28>>2]=n,r.getTime()/1e3|0}var B4=function(t,e,r,i){t||(t=this),this.parent=t,this.mount=t.mount,this.mounted=null,this.id=y.nextInode++,this.name=e,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},sw=292|73,ow=146;Object.defineProperties(B4.prototype,{read:{get:function(){return(this.mode&sw)===sw},set:function(t){t?this.mode|=sw:this.mode&=~sw}},write:{get:function(){return(this.mode&ow)===ow},set:function(t){t?this.mode|=ow:this.mode&=~ow}},isFolder:{get:function(){return y.isDir(this.mode)}},isDevice:{get:function(){return y.isChrdev(this.mode)}}});y.FSNode=B4;y.staticInit();Wl&&(ft=e4,EP=require("path"),tt.staticInit());var ft,EP;if(Wl){Q4=function(t){return function(){try{return t.apply(this,arguments)}catch(e){throw e.code?new y.ErrnoError(eg[e.code]):e}}},Vl=Object.assign({},y);for(yP in w4)y[yP]=Q4(w4[yP])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");var Q4,Vl,yP;function CP(t,e,r){var i=r>0?r:rw(t)+1,n=new Array(i),s=tw(t,n,0,n.length);return e&&(n.length=s),n}var pke=typeof atob=="function"?atob:function(t){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="",i,n,s,o,a,l,c,u=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");do o=e.indexOf(t.charAt(u++)),a=e.indexOf(t.charAt(u++)),l=e.indexOf(t.charAt(u++)),c=e.indexOf(t.charAt(u++)),i=o<<2|a>>4,n=(a&15)<<4|l>>2,s=(l&3)<<6|c,r=r+String.fromCharCode(i),l!==64&&(r=r+String.fromCharCode(n)),c!==64&&(r=r+String.fromCharCode(s));while(u0||(Fxe(),zl>0))return;function e(){aw||(aw=!0,oe.calledRun=!0,!A4&&(Nxe(),oe.onRuntimeInitialized&&oe.onRuntimeInitialized(),Txe()))}oe.setStatus?(oe.setStatus("Running..."),setTimeout(function(){setTimeout(function(){oe.setStatus("")},1),e()},1)):e()}oe.run=wP;if(oe.preInit)for(typeof oe.preInit=="function"&&(oe.preInit=[oe.preInit]);oe.preInit.length>0;)oe.preInit.pop()();wP()});var x4=E((Dot,S4)=>{"use strict";function Cke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function _l(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,_l)}Cke(_l,Error);_l.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ee=At(">>",!1),Ue=">&",Oe=At(">&",!1),vt=">",dt=At(">",!1),ri="<<<",ii=At("<<<",!1),an="<&",yr=At("<&",!1),Ki="<",Qi=At("<",!1),Go=function(C){return{type:"argument",segments:[].concat(...C)}},wr=function(C){return C},Ui="'",ws=At("'",!1),Tf=function(C){return[{type:"text",text:C}]},Mf='"',Rm=At('"',!1),Fm=function(C){return C},Nm=function(C){return{type:"arithmetic",arithmetic:C,quoted:!0}},DQ=function(C){return{type:"shell",shell:C,quoted:!0}},RQ=function(C){return _(P({type:"variable"},C),{quoted:!0})},Of=function(C){return{type:"text",text:C}},FQ=function(C){return{type:"arithmetic",arithmetic:C,quoted:!1}},NQ=function(C){return{type:"shell",shell:C,quoted:!1}},Lm=function(C){return _(P({type:"variable"},C),{quoted:!1})},LQ=function(C){return{type:"glob",pattern:C}},Va="\\",jo=At("\\",!1),Tm=/^[\\']/,Mm=Qs(["\\","'"],!1,!1),te=function(C){return C},Om=/^[^']/,Km=Qs(["'"],!0,!1),il=function(C){return C.join("")},Um=/^[\\$"]/,Hm=Qs(["\\","$",'"'],!1,!1),Kf=/^[^$"]/,Gm=Qs(["$",'"'],!0,!1),jm="\\0",TQ=At("\\0",!1),MQ=function(){return"\0"},Ym="\\a",qm=At("\\a",!1),Jm=function(){return"a"},Wm="\\b",zm=At("\\b",!1),Vm=function(){return"\b"},Uf="\\e",OQ=At("\\e",!1),KQ=function(){return""},_m="\\f",UQ=At("\\f",!1),HQ=function(){return"\f"},O="\\n",ht=At("\\n",!1),Vc=function(){return` -`},xn="\\r",Hf=At("\\r",!1),Ye=function(){return"\r"},nl="\\t",Xm=At("\\t",!1),MM=function(){return" "},GQ="\\v",OM=At("\\v",!1),fr=function(){return"\v"},Bs="\\x",jQ=At("\\x",!1),Zm=function(C){return String.fromCharCode(parseInt(C,16))},Yo="\\u",$m=At("\\u",!1),_a="\\U",et=At("\\U",!1),YQ=function(C){return String.fromCodePoint(parseInt(C,16))},eE=/^[0-9a-fA-f]/,tE=Qs([["0","9"],["a","f"],["A","f"]],!1,!1),Xa=Cfe(),sl="-",ol=At("-",!1),al="+",qo=At("+",!1),Al=".",qQ=At(".",!1),rE=function(C,Q,k){return{type:"number",value:(C==="-"?-1:1)*parseFloat(Q.join("")+"."+k.join(""))}},iE=function(C,Q){return{type:"number",value:(C==="-"?-1:1)*parseInt(Q.join(""))}},JQ=function(C){return P({type:"variable"},C)},ll=function(C){return{type:"variable",name:C}},WQ=function(C){return C},nE="*",Gf=At("*",!1),_c="/",jf=At("/",!1),sE=function(C,Q,k){return{type:Q==="*"?"multiplication":"division",right:k}},cl=function(C,Q){return Q.reduce((k,N)=>P({left:k},N),C)},oE=function(C,Q,k){return{type:Q==="+"?"addition":"subtraction",right:k}},Yf="$((",Xc=At("$((",!1),xr="))",KM=At("))",!1),Jo=function(C){return C},Zs="$(",aE=At("$(",!1),Zc=function(C){return C},x="${",U=At("${",!1),le=":-",xe=At(":-",!1),Qe=function(C,Q){return{name:C,defaultValue:Q}},Ge=":-}",ct=At(":-}",!1),sr=function(C){return{name:C,defaultValue:[]}},Wo=function(C){return{name:C}},Afe="$",lfe=At("$",!1),cfe=function(C){return e.isGlobPattern(C)},ufe=function(C){return C},UM=/^[a-zA-Z0-9_]/,HM=Qs([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),GM=function(){return dfe()},jM=/^[$@*?#a-zA-Z0-9_\-]/,YM=Qs(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),gfe=/^[(){}<>$|&; \t"']/,ffe=Qs(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),hfe=/^[<>&; \t"']/,pfe=Qs(["<",">","&",";"," "," ",'"',"'"],!1,!1),qM=/^[ \t]/,JM=Qs([" "," "],!1,!1),w=0,Re=0,AE=[{line:1,column:1}],$s=0,zQ=[],we=0,lE;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function dfe(){return t.substring(Re,w)}function P_e(){return qf(Re,w)}function D_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),zM([Efe(C)],t.substring(Re,w),Q)}function R_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),Ife(C,Q)}function At(C,Q){return{type:"literal",text:C,ignoreCase:Q}}function Qs(C,Q,k){return{type:"class",parts:C,inverted:Q,ignoreCase:k}}function Cfe(){return{type:"any"}}function mfe(){return{type:"end"}}function Efe(C){return{type:"other",description:C}}function WM(C){var Q=AE[C],k;if(Q)return Q;for(k=C-1;!AE[k];)k--;for(Q=AE[k],Q={line:Q.line,column:Q.column};k$s&&($s=w,zQ=[]),zQ.push(C))}function Ife(C,Q){return new _l(C,null,null,Q)}function zM(C,Q,k){return new _l(_l.buildMessage(C,Q),C,Q,k)}function VM(){var C,Q;return C=w,Q=Jf(),Q===r&&(Q=null),Q!==r&&(Re=C,Q=s(Q)),C=Q,C}function Jf(){var C,Q,k,N,Z;if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N!==r?(Z=yfe(),Z===r&&(Z=null),Z!==r?(Re=C,Q=o(Q,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;if(C===r)if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N===r&&(N=null),N!==r?(Re=C,Q=a(Q,N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function yfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Jf(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=l(k),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function _M(){var C;return t.charCodeAt(w)===59?(C=c,w++):(C=r,we===0&&ve(u)),C===r&&(t.charCodeAt(w)===38?(C=g,w++):(C=r,we===0&&ve(f))),C}function VQ(){var C,Q,k;return C=w,Q=XM(),Q!==r?(k=wfe(),k===r&&(k=null),k!==r?(Re=C,Q=h(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function wfe(){var C,Q,k,N,Z,Ee,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=VQ(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=p(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function Bfe(){var C;return t.substr(w,2)===d?(C=d,w+=2):(C=r,we===0&&ve(m)),C===r&&(t.substr(w,2)===I?(C=I,w+=2):(C=r,we===0&&ve(B))),C}function XM(){var C,Q,k;return C=w,Q=vfe(),Q!==r?(k=Qfe(),k===r&&(k=null),k!==r?(Re=C,Q=b(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function Qfe(){var C,Q,k,N,Z,Ee,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=XM(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=R(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function bfe(){var C;return t.substr(w,2)===H?(C=H,w+=2):(C=r,we===0&&ve(L)),C===r&&(t.charCodeAt(w)===124?(C=K,w++):(C=r,we===0&&ve(J))),C}function cE(){var C,Q,k,N,Z,Ee;if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r)if(N=$M(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(Re=C,Q=A(Q,N),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;else w=C,C=r;if(C===r)if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=V(Q),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function vfe(){var C,Q,k,N,Z,Ee,ot,ut,Tr,ni,Yn;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===40?(k=W,w++):(k=r,we===0&&ve(X)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();if(Ee!==r)if(t.charCodeAt(w)===41?(ot=F,w++):(ot=r,we===0&&ve(D)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=he(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===123?(k=pe,w++):(k=r,we===0&&ve(Ne)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();if(Ee!==r)if(t.charCodeAt(w)===125?(ot=Pe,w++):(ot=r,we===0&&ve(qe)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=re(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){for(k=[],N=cE();N!==r;)k.push(N),N=cE();if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r){if(Z=[],Ee=ZM(),Ee!==r)for(;Ee!==r;)Z.push(Ee),Ee=ZM();else Z=r;if(Z!==r){for(Ee=[],ot=ke();ot!==r;)Ee.push(ot),ot=ke();Ee!==r?(Re=C,Q=se(k,Z),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r}else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=cE(),N!==r)for(;N!==r;)k.push(N),N=cE();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=be(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}}}return C}function Sfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=uE(),N!==r)for(;N!==r;)k.push(N),N=uE();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=ae(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r;return C}function ZM(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r?(k=Wf(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();Q!==r?(k=uE(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r)}return C}function Wf(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(De.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve($)),k===r&&(k=null),k!==r?(N=xfe(),N!==r?(Z=uE(),Z!==r?(Re=C,Q=G(k,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function xfe(){var C;return t.substr(w,2)===Ce?(C=Ce,w+=2):(C=r,we===0&&ve(ee)),C===r&&(t.substr(w,2)===Ue?(C=Ue,w+=2):(C=r,we===0&&ve(Oe)),C===r&&(t.charCodeAt(w)===62?(C=vt,w++):(C=r,we===0&&ve(dt)),C===r&&(t.substr(w,3)===ri?(C=ri,w+=3):(C=r,we===0&&ve(ii)),C===r&&(t.substr(w,2)===an?(C=an,w+=2):(C=r,we===0&&ve(yr)),C===r&&(t.charCodeAt(w)===60?(C=Ki,w++):(C=r,we===0&&ve(Qi))))))),C}function uE(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(k=$M(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C}function $M(){var C,Q,k;if(C=w,Q=[],k=eO(),k!==r)for(;k!==r;)Q.push(k),k=eO();else Q=r;return Q!==r&&(Re=C,Q=Go(Q)),C=Q,C}function eO(){var C,Q;return C=w,Q=kfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Pfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Dfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q)),C}function kfe(){var C,Q,k,N;return C=w,t.charCodeAt(w)===39?(Q=Ui,w++):(Q=r,we===0&&ve(ws)),Q!==r?(k=Rfe(),k!==r?(t.charCodeAt(w)===39?(N=Ui,w++):(N=r,we===0&&ve(ws)),N!==r?(Re=C,Q=Tf(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function Pfe(){var C,Q,k,N;if(C=w,t.charCodeAt(w)===34?(Q=Mf,w++):(Q=r,we===0&&ve(Rm)),Q!==r){for(k=[],N=tO();N!==r;)k.push(N),N=tO();k!==r?(t.charCodeAt(w)===34?(N=Mf,w++):(N=r,we===0&&ve(Rm)),N!==r?(Re=C,Q=Fm(k),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function Dfe(){var C,Q,k;if(C=w,Q=[],k=rO(),k!==r)for(;k!==r;)Q.push(k),k=rO();else Q=r;return Q!==r&&(Re=C,Q=Fm(Q)),C=Q,C}function tO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=Nm(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=DQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=RQ(Q)),C=Q,C===r&&(C=w,Q=Ffe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q))),C}function rO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=FQ(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=NQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=Lm(Q)),C=Q,C===r&&(C=w,Q=Lfe(),Q!==r&&(Re=C,Q=LQ(Q)),C=Q,C===r&&(C=w,Q=Nfe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q)))),C}function Rfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));k!==r;)Q.push(k),k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function Ffe(){var C,Q,k,N,Z;if(C=w,Q=[],k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm))))),k!==r)for(;k!==r;)Q.push(k),k=gE(),k===r&&(k=fE(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm)))));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function gE(){var C,Q;return C=w,t.substr(w,2)===jm?(Q=jm,w+=2):(Q=r,we===0&&ve(TQ)),Q!==r&&(Re=C,Q=MQ()),C=Q,C===r&&(C=w,t.substr(w,2)===Ym?(Q=Ym,w+=2):(Q=r,we===0&&ve(qm)),Q!==r&&(Re=C,Q=Jm()),C=Q,C===r&&(C=w,t.substr(w,2)===Wm?(Q=Wm,w+=2):(Q=r,we===0&&ve(zm)),Q!==r&&(Re=C,Q=Vm()),C=Q,C===r&&(C=w,t.substr(w,2)===Uf?(Q=Uf,w+=2):(Q=r,we===0&&ve(OQ)),Q!==r&&(Re=C,Q=KQ()),C=Q,C===r&&(C=w,t.substr(w,2)===_m?(Q=_m,w+=2):(Q=r,we===0&&ve(UQ)),Q!==r&&(Re=C,Q=HQ()),C=Q,C===r&&(C=w,t.substr(w,2)===O?(Q=O,w+=2):(Q=r,we===0&&ve(ht)),Q!==r&&(Re=C,Q=Vc()),C=Q,C===r&&(C=w,t.substr(w,2)===xn?(Q=xn,w+=2):(Q=r,we===0&&ve(Hf)),Q!==r&&(Re=C,Q=Ye()),C=Q,C===r&&(C=w,t.substr(w,2)===nl?(Q=nl,w+=2):(Q=r,we===0&&ve(Xm)),Q!==r&&(Re=C,Q=MM()),C=Q,C===r&&(C=w,t.substr(w,2)===GQ?(Q=GQ,w+=2):(Q=r,we===0&&ve(OM)),Q!==r&&(Re=C,Q=fr()),C=Q)))))))),C}function fE(){var C,Q,k,N,Z,Ee,ot,ut,Tr,ni,Yn,$Q;return C=w,t.substr(w,2)===Bs?(Q=Bs,w+=2):(Q=r,we===0&&ve(jQ)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(Z=[Z,Ee],N=Z):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===Yo?(Q=Yo,w+=2):(Q=r,we===0&&ve($m)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Z=[Z,Ee,ot,ut],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===_a?(Q=_a,w+=2):(Q=r,we===0&&ve(et)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ee=An(),Ee!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Tr=An(),Tr!==r?(ni=An(),ni!==r?(Yn=An(),Yn!==r?($Q=An(),$Q!==r?(Z=[Z,Ee,ot,ut,Tr,ni,Yn,$Q],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=YQ(k),C=Q):(w=C,C=r)):(w=C,C=r))),C}function An(){var C;return eE.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(tE)),C}function Nfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r)),k!==r)for(;k!==r;)Q.push(k),k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function _Q(){var C,Q,k,N,Z,Ee;if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;if(k!==r)if(t.charCodeAt(w)===46?(N=Al,w++):(N=r,we===0&&ve(qQ)),N!==r){if(Z=[],De.test(t.charAt(w))?(Ee=t.charAt(w),w++):(Ee=r,we===0&&ve($)),Ee!==r)for(;Ee!==r;)Z.push(Ee),De.test(t.charAt(w))?(Ee=t.charAt(w),w++):(Ee=r,we===0&&ve($));else Z=r;Z!==r?(Re=C,Q=rE(Q,k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;if(C===r){if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;k!==r?(Re=C,Q=iE(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;if(C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=JQ(Q)),C=Q,C===r&&(C=w,Q=zf(),Q!==r&&(Re=C,Q=ll(Q)),C=Q,C===r)))if(C=w,t.charCodeAt(w)===40?(Q=W,w++):(Q=r,we===0&&ve(X)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(t.charCodeAt(w)===41?(Ee=F,w++):(Ee=r,we===0&&ve(D)),Ee!==r?(Re=C,Q=WQ(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r}return C}function XQ(){var C,Q,k,N,Z,Ee,ot,ut;if(C=w,Q=_Q(),Q!==r){for(k=[],N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ee=nE,w++):(Ee=r,we===0&&ve(Gf)),Ee===r&&(t.charCodeAt(w)===47?(Ee=_c,w++):(Ee=r,we===0&&ve(jf))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ee=nE,w++):(Ee=r,we===0&&ve(Gf)),Ee===r&&(t.charCodeAt(w)===47?(Ee=_c,w++):(Ee=r,we===0&&ve(jf))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function iO(){var C,Q,k,N,Z,Ee,ot,ut;if(C=w,Q=XQ(),Q!==r){for(k=[],N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ee=al,w++):(Ee=r,we===0&&ve(qo)),Ee===r&&(t.charCodeAt(w)===45?(Ee=sl,w++):(Ee=r,we===0&&ve(ol))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ee=al,w++):(Ee=r,we===0&&ve(qo)),Ee===r&&(t.charCodeAt(w)===45?(Ee=sl,w++):(Ee=r,we===0&&ve(ol))),Ee!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oE(Q,Ee,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function nO(){var C,Q,k,N,Z,Ee;if(C=w,t.substr(w,3)===Yf?(Q=Yf,w+=3):(Q=r,we===0&&ve(Xc)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ee=ke();Ee!==r;)Z.push(Ee),Ee=ke();Z!==r?(t.substr(w,2)===xr?(Ee=xr,w+=2):(Ee=r,we===0&&ve(KM)),Ee!==r?(Re=C,Q=Jo(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;return C}function sO(){var C,Q,k,N;return C=w,t.substr(w,2)===Zs?(Q=Zs,w+=2):(Q=r,we===0&&ve(aE)),Q!==r?(k=Jf(),k!==r?(t.charCodeAt(w)===41?(N=F,w++):(N=r,we===0&&ve(D)),N!==r?(Re=C,Q=Zc(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function ZQ(){var C,Q,k,N,Z,Ee;return C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,2)===le?(N=le,w+=2):(N=r,we===0&&ve(xe)),N!==r?(Z=Sfe(),Z!==r?(t.charCodeAt(w)===125?(Ee=Pe,w++):(Ee=r,we===0&&ve(qe)),Ee!==r?(Re=C,Q=Qe(k,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,3)===Ge?(N=Ge,w+=3):(N=r,we===0&&ve(ct)),N!==r?(Re=C,Q=sr(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.charCodeAt(w)===125?(N=Pe,w++):(N=r,we===0&&ve(qe)),N!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.charCodeAt(w)===36?(Q=Afe,w++):(Q=r,we===0&&ve(lfe)),Q!==r?(k=zf(),k!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)))),C}function Lfe(){var C,Q,k;return C=w,Q=Tfe(),Q!==r?(Re=w,k=cfe(Q),k?k=void 0:k=r,k!==r?(Re=C,Q=ufe(Q),C=Q):(w=C,C=r)):(w=C,C=r),C}function Tfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k!==r)for(;k!==r;)Q.push(k),k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r);else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function oO(){var C,Q,k;if(C=w,Q=[],UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM)),k!==r)for(;k!==r;)Q.push(k),UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function zf(){var C,Q,k;if(C=w,Q=[],jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM)),k!==r)for(;k!==r;)Q.push(k),jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function aO(){var C;return gfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(ffe)),C}function AO(){var C;return hfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(pfe)),C}function ke(){var C,Q;if(C=[],qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM)),Q!==r)for(;Q!==r;)C.push(Q),qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM));else C=r;return C}if(lE=n(),lE!==r&&w===t.length)return lE;throw lE!==r&&w{"use strict";function Eke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Xl(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Xl)}Eke(Xl,Error);Xl.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=B,L=[]),L.push($))}function qe($,G){return new Xl($,null,null,G)}function re($,G,Ce){return new Xl(Xl.buildMessage($,G),$,G,Ce)}function se(){var $,G,Ce,ee;return $=B,G=be(),G!==r?(t.charCodeAt(B)===47?(Ce=s,B++):(Ce=r,K===0&&Pe(o)),Ce!==r?(ee=be(),ee!==r?(b=$,G=a(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=be(),G!==r&&(b=$,G=l(G)),$=G),$}function be(){var $,G,Ce,ee;return $=B,G=ae(),G!==r?(t.charCodeAt(B)===64?(Ce=c,B++):(Ce=r,K===0&&Pe(u)),Ce!==r?(ee=De(),ee!==r?(b=$,G=g(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=ae(),G!==r&&(b=$,G=f(G)),$=G),$}function ae(){var $,G,Ce,ee,Ue;return $=B,t.charCodeAt(B)===64?(G=c,B++):(G=r,K===0&&Pe(u)),G!==r?(Ce=Ae(),Ce!==r?(t.charCodeAt(B)===47?(ee=s,B++):(ee=r,K===0&&Pe(o)),ee!==r?(Ue=Ae(),Ue!==r?(b=$,G=h(),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=Ae(),G!==r&&(b=$,G=h()),$=G),$}function Ae(){var $,G,Ce;if($=B,G=[],p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d)),Ce!==r)for(;Ce!==r;)G.push(Ce),p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d));else G=r;return G!==r&&(b=$,G=h()),$=G,$}function De(){var $,G,Ce;if($=B,G=[],m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(I)),Ce!==r)for(;Ce!==r;)G.push(Ce),m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(I));else G=r;return G!==r&&(b=$,G=h()),$=G,$}if(J=n(),J!==r&&B===t.length)return J;throw J!==r&&B{"use strict";function F4(t){return typeof t=="undefined"||t===null}function yke(t){return typeof t=="object"&&t!==null}function wke(t){return Array.isArray(t)?t:F4(t)?[]:[t]}function Bke(t,e){var r,i,n,s;if(e)for(s=Object.keys(e),r=0,i=s.length;r{"use strict";function Lp(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Lp.prototype=Object.create(Error.prototype);Lp.prototype.constructor=Lp;Lp.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};N4.exports=Lp});var M4=E((Vot,L4)=>{"use strict";var T4=$l();function kP(t,e,r,i,n){this.name=t,this.buffer=e,this.position=r,this.line=i,this.column=n}kP.prototype.getSnippet=function(e,r){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,r=r||75,i="",n=this.position;n>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>r/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;or/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),T4.repeat(" ",e)+i+a+s+` -`+T4.repeat(" ",e+this.position-n+i.length)+"^"};kP.prototype.toString=function(e){var r,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(i+=`: -`+r)),i};L4.exports=kP});var Xr=E((_ot,O4)=>{"use strict";var K4=ng(),vke=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Ske=["scalar","sequence","mapping"];function xke(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(i){e[String(i)]=r})}),e}function kke(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(vke.indexOf(r)===-1)throw new K4('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=xke(e.styleAliases||null),Ske.indexOf(this.kind)===-1)throw new K4('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}O4.exports=kke});var ec=E((Xot,U4)=>{"use strict";var H4=$l(),hw=ng(),Pke=Xr();function PP(t,e,r){var i=[];return t.include.forEach(function(n){r=PP(n,e,r)}),t[e].forEach(function(n){r.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),r.push(n)}),r.filter(function(n,s){return i.indexOf(s)===-1})}function Dke(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function i(n){t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,r=arguments.length;e{"use strict";var Rke=Xr();G4.exports=new Rke("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var q4=E(($ot,Y4)=>{"use strict";var Fke=Xr();Y4.exports=new Fke("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var W4=E((eat,J4)=>{"use strict";var Nke=Xr();J4.exports=new Nke("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var pw=E((tat,z4)=>{"use strict";var Lke=ec();z4.exports=new Lke({explicit:[j4(),q4(),W4()]})});var _4=E((rat,V4)=>{"use strict";var Tke=Xr();function Mke(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function Oke(){return null}function Kke(t){return t===null}V4.exports=new Tke("tag:yaml.org,2002:null",{kind:"scalar",resolve:Mke,construct:Oke,predicate:Kke,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var Z4=E((iat,X4)=>{"use strict";var Uke=Xr();function Hke(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function Gke(t){return t==="true"||t==="True"||t==="TRUE"}function jke(t){return Object.prototype.toString.call(t)==="[object Boolean]"}X4.exports=new Uke("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Hke,construct:Gke,predicate:jke,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var ez=E((nat,$4)=>{"use strict";var Yke=$l(),qke=Xr();function Jke(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function Wke(t){return 48<=t&&t<=55}function zke(t){return 48<=t&&t<=57}function Vke(t){if(t===null)return!1;var e=t.length,r=0,i=!1,n;if(!e)return!1;if(n=t[r],(n==="-"||n==="+")&&(n=t[++r]),n==="0"){if(r+1===e)return!0;if(n=t[++r],n==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var iz=E((sat,tz)=>{"use strict";var rz=$l(),Zke=Xr(),$ke=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ePe(t){return!(t===null||!$ke.test(t)||t[t.length-1]==="_")}function tPe(t){var e,r,i,n;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),r*e):r*parseFloat(e,10)}var rPe=/^[-+]?[0-9]+e/;function iPe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(rz.isNegativeZero(t))return"-0.0";return r=t.toString(10),rPe.test(r)?r.replace("e",".e"):r}function nPe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!=0||rz.isNegativeZero(t))}tz.exports=new Zke("tag:yaml.org,2002:float",{kind:"scalar",resolve:ePe,construct:tPe,predicate:nPe,represent:iPe,defaultStyle:"lowercase"})});var DP=E((oat,nz)=>{"use strict";var sPe=ec();nz.exports=new sPe({include:[pw()],implicit:[_4(),Z4(),ez(),iz()]})});var RP=E((aat,sz)=>{"use strict";var oPe=ec();sz.exports=new oPe({include:[DP()]})});var lz=E((Aat,oz)=>{"use strict";var aPe=Xr(),az=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Az=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function APe(t){return t===null?!1:az.exec(t)!==null||Az.exec(t)!==null}function lPe(t){var e,r,i,n,s,o,a,l=0,c=null,u,g,f;if(e=az.exec(t),e===null&&(e=Az.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(r,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function cPe(t){return t.toISOString()}oz.exports=new aPe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:APe,construct:lPe,instanceOf:Date,represent:cPe})});var uz=E((lat,cz)=>{"use strict";var uPe=Xr();function gPe(t){return t==="<<"||t===null}cz.exports=new uPe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:gPe})});var hz=E((cat,gz)=>{"use strict";var tc;try{fz=require,tc=fz("buffer").Buffer}catch(t){}var fz,fPe=Xr(),FP=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function hPe(t){if(t===null)return!1;var e,r,i=0,n=t.length,s=FP;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function pPe(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,s=FP,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return r=n%4*6,r===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):r===18?(a.push(o>>10&255),a.push(o>>2&255)):r===12&&a.push(o>>4&255),tc?tc.from?tc.from(a):new tc(a):a}function dPe(t){var e="",r=0,i,n,s=t.length,o=FP;for(i=0;i>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]),r=(r<<8)+t[i];return n=s%3,n===0?(e+=o[r>>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]):n===2?(e+=o[r>>10&63],e+=o[r>>4&63],e+=o[r<<2&63],e+=o[64]):n===1&&(e+=o[r>>2&63],e+=o[r<<4&63],e+=o[64],e+=o[64]),e}function CPe(t){return tc&&tc.isBuffer(t)}gz.exports=new fPe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:hPe,construct:pPe,predicate:CPe,represent:dPe})});var dz=E((uat,pz)=>{"use strict";var mPe=Xr(),EPe=Object.prototype.hasOwnProperty,IPe=Object.prototype.toString;function yPe(t){if(t===null)return!0;var e=[],r,i,n,s,o,a=t;for(r=0,i=a.length;r{"use strict";var BPe=Xr(),QPe=Object.prototype.toString;function bPe(t){if(t===null)return!0;var e,r,i,n,s,o=t;for(s=new Array(o.length),e=0,r=o.length;e{"use strict";var SPe=Xr(),xPe=Object.prototype.hasOwnProperty;function kPe(t){if(t===null)return!0;var e,r=t;for(e in r)if(xPe.call(r,e)&&r[e]!==null)return!1;return!0}function PPe(t){return t!==null?t:{}}Ez.exports=new SPe("tag:yaml.org,2002:set",{kind:"mapping",resolve:kPe,construct:PPe})});var og=E((hat,yz)=>{"use strict";var DPe=ec();yz.exports=new DPe({include:[RP()],implicit:[lz(),uz()],explicit:[hz(),dz(),mz(),Iz()]})});var Bz=E((pat,wz)=>{"use strict";var RPe=Xr();function FPe(){return!0}function NPe(){}function LPe(){return""}function TPe(t){return typeof t=="undefined"}wz.exports=new RPe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:FPe,construct:NPe,predicate:TPe,represent:LPe})});var bz=E((dat,Qz)=>{"use strict";var MPe=Xr();function OPe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),i="";return!(e[0]==="/"&&(r&&(i=r[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function KPe(t){var e=t,r=/\/([gim]*)$/.exec(t),i="";return e[0]==="/"&&(r&&(i=r[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function UPe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function HPe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}Qz.exports=new MPe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:OPe,construct:KPe,predicate:HPe,represent:UPe})});var xz=E((Cat,vz)=>{"use strict";var dw;try{Sz=require,dw=Sz("esprima")}catch(t){typeof window!="undefined"&&(dw=window.esprima)}var Sz,GPe=Xr();function jPe(t){if(t===null)return!1;try{var e="("+t+")",r=dw.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch(i){return!1}}function YPe(t){var e="("+t+")",r=dw.parse(e,{range:!0}),i=[],n;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function qPe(t){return t.toString()}function JPe(t){return Object.prototype.toString.call(t)==="[object Function]"}vz.exports=new GPe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:jPe,construct:YPe,predicate:JPe,represent:qPe})});var Tp=E((mat,kz)=>{"use strict";var Pz=ec();kz.exports=Pz.DEFAULT=new Pz({include:[og()],explicit:[Bz(),bz(),xz()]})});var Vz=E((Eat,Mp)=>{"use strict";var Ba=$l(),Dz=ng(),WPe=M4(),Rz=og(),zPe=Tp(),QA=Object.prototype.hasOwnProperty,Cw=1,Fz=2,Nz=3,mw=4,NP=1,VPe=2,Lz=3,_Pe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,XPe=/[\x85\u2028\u2029]/,ZPe=/[,\[\]\{\}]/,Tz=/^(?:!|!!|![a-z\-]+!)$/i,Mz=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Oz(t){return Object.prototype.toString.call(t)}function wo(t){return t===10||t===13}function rc(t){return t===9||t===32}function yn(t){return t===9||t===32||t===10||t===13}function ag(t){return t===44||t===91||t===93||t===123||t===125}function $Pe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function eDe(t){return t===120?2:t===117?4:t===85?8:0}function tDe(t){return 48<=t&&t<=57?t-48:-1}function Kz(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` -`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function rDe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var Uz=new Array(256),Hz=new Array(256);for(var Ag=0;Ag<256;Ag++)Uz[Ag]=Kz(Ag)?1:0,Hz[Ag]=Kz(Ag);function iDe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||zPe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function Gz(t,e){return new Dz(e,new WPe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function st(t,e){throw Gz(t,e)}function Ew(t,e){t.onWarning&&t.onWarning.call(null,Gz(t,e))}var jz={YAML:function(e,r,i){var n,s,o;e.version!==null&&st(e,"duplication of %YAML directive"),i.length!==1&&st(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&st(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&st(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&Ew(e,"unsupported YAML version of the document")},TAG:function(e,r,i){var n,s;i.length!==2&&st(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],Tz.test(n)||st(e,"ill-formed tag handle (first argument) of the TAG directive"),QA.call(e.tagMap,n)&&st(e,'there is a previously declared suffix for "'+n+'" tag handle'),Mz.test(s)||st(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function bA(t,e,r,i){var n,s,o,a;if(e1&&(t.result+=Ba.repeat(` -`,e-1))}function nDe(t,e,r){var i,n,s,o,a,l,c,u,g=t.kind,f=t.result,h;if(h=t.input.charCodeAt(t.position),yn(h)||ag(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n)))return!1;for(t.kind="scalar",t.result="",s=o=t.position,a=!1;h!==0;){if(h===58){if(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n))break}else if(h===35){if(i=t.input.charCodeAt(t.position-1),yn(i))break}else{if(t.position===t.lineStart&&Iw(t)||r&&ag(h))break;if(wo(h))if(l=t.line,c=t.lineStart,u=t.lineIndent,jr(t,!1,-1),t.lineIndent>=e){a=!0,h=t.input.charCodeAt(t.position);continue}else{t.position=o,t.line=l,t.lineStart=c,t.lineIndent=u;break}}a&&(bA(t,s,o,!1),TP(t,t.line-l),s=o=t.position,a=!1),rc(h)||(o=t.position+1),h=t.input.charCodeAt(++t.position)}return bA(t,s,o,!1),t.result?!0:(t.kind=g,t.result=f,!1)}function sDe(t,e){var r,i,n;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(bA(t,i,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)i=t.position,t.position++,n=t.position;else return!0;else wo(r)?(bA(t,i,n,!0),TP(t,jr(t,!1,e)),i=n=t.position):t.position===t.lineStart&&Iw(t)?st(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);st(t,"unexpected end of the stream within a single quoted scalar")}function oDe(t,e){var r,i,n,s,o,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return bA(t,r,t.position,!0),t.position++,!0;if(a===92){if(bA(t,r,t.position,!0),a=t.input.charCodeAt(++t.position),wo(a))jr(t,!1,e);else if(a<256&&Uz[a])t.result+=Hz[a],t.position++;else if((o=eDe(a))>0){for(n=o,s=0;n>0;n--)a=t.input.charCodeAt(++t.position),(o=$Pe(a))>=0?s=(s<<4)+o:st(t,"expected hexadecimal character");t.result+=rDe(s),t.position++}else st(t,"unknown escape sequence");r=i=t.position}else wo(a)?(bA(t,r,i,!0),TP(t,jr(t,!1,e)),r=i=t.position):t.position===t.lineStart&&Iw(t)?st(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}st(t,"unexpected end of the stream within a double quoted scalar")}function aDe(t,e){var r=!0,i,n=t.tag,s,o=t.anchor,a,l,c,u,g,f={},h,p,d,m;if(m=t.input.charCodeAt(t.position),m===91)l=93,g=!1,s=[];else if(m===123)l=125,g=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),m=t.input.charCodeAt(++t.position);m!==0;){if(jr(t,!0,e),m=t.input.charCodeAt(t.position),m===l)return t.position++,t.tag=n,t.anchor=o,t.kind=g?"mapping":"sequence",t.result=s,!0;r||st(t,"missed comma between flow collection entries"),p=h=d=null,c=u=!1,m===63&&(a=t.input.charCodeAt(t.position+1),yn(a)&&(c=u=!0,t.position++,jr(t,!0,e))),i=t.line,cg(t,e,Cw,!1,!0),p=t.tag,h=t.result,jr(t,!0,e),m=t.input.charCodeAt(t.position),(u||t.line===i)&&m===58&&(c=!0,m=t.input.charCodeAt(++t.position),jr(t,!0,e),cg(t,e,Cw,!1,!0),d=t.result),g?lg(t,s,f,p,h,d):c?s.push(lg(t,null,f,p,h,d)):s.push(h),jr(t,!0,e),m=t.input.charCodeAt(t.position),m===44?(r=!0,m=t.input.charCodeAt(++t.position)):r=!1}st(t,"unexpected end of the stream within a flow collection")}function ADe(t,e){var r,i,n=NP,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=t.input.charCodeAt(t.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(t.kind="scalar",t.result="";g!==0;)if(g=t.input.charCodeAt(++t.position),g===43||g===45)NP===n?n=g===43?Lz:VPe:st(t,"repeat of a chomping mode identifier");else if((u=tDe(g))>=0)u===0?st(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?st(t,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(rc(g)){do g=t.input.charCodeAt(++t.position);while(rc(g));if(g===35)do g=t.input.charCodeAt(++t.position);while(!wo(g)&&g!==0)}for(;g!==0;){for(LP(t),t.lineIndent=0,g=t.input.charCodeAt(t.position);(!o||t.lineIndenta&&(a=t.lineIndent),wo(g)){l++;continue}if(t.lineIndente)&&l!==0)st(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(cg(t,e,mw,!0,n)&&(p?f=t.result:h=t.result),p||(lg(t,c,u,g,f,h,s,o),g=f=h=null),jr(t,!0,-1),m=t.input.charCodeAt(t.position)),t.lineIndent>e&&m!==0)st(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),g=0,f=t.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result)?(t.result=h.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):st(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):st(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function fDe(t){var e=t.position,r,i,n,s=!1,o;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(o=t.input.charCodeAt(t.position))!==0&&(jr(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||o!==37));){for(s=!0,o=t.input.charCodeAt(++t.position),r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);for(i=t.input.slice(r,t.position),n=[],i.length<1&&st(t,"directive name must not be less than one character in length");o!==0;){for(;rc(o);)o=t.input.charCodeAt(++t.position);if(o===35){do o=t.input.charCodeAt(++t.position);while(o!==0&&!wo(o));break}if(wo(o))break;for(r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(r,t.position))}o!==0&&LP(t),QA.call(jz,i)?jz[i](t,i,n):Ew(t,'unknown document directive "'+i+'"')}if(jr(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,jr(t,!0,-1)):s&&st(t,"directives end mark is expected"),cg(t,t.lineIndent-1,mw,!1,!0),jr(t,!0,-1),t.checkLineBreaks&&XPe.test(t.input.slice(e,t.position))&&Ew(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Iw(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,jr(t,!0,-1));return}if(t.position{"use strict";var Op=$l(),Kp=ng(),dDe=Tp(),CDe=og(),_z=Object.prototype.toString,Xz=Object.prototype.hasOwnProperty,mDe=9,Up=10,EDe=13,IDe=32,yDe=33,wDe=34,Zz=35,BDe=37,QDe=38,bDe=39,vDe=42,$z=44,SDe=45,e5=58,xDe=61,kDe=62,PDe=63,DDe=64,t5=91,r5=93,RDe=96,i5=123,FDe=124,n5=125,Ri={};Ri[0]="\\0";Ri[7]="\\a";Ri[8]="\\b";Ri[9]="\\t";Ri[10]="\\n";Ri[11]="\\v";Ri[12]="\\f";Ri[13]="\\r";Ri[27]="\\e";Ri[34]='\\"';Ri[92]="\\\\";Ri[133]="\\N";Ri[160]="\\_";Ri[8232]="\\L";Ri[8233]="\\P";var NDe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function LDe(t,e){var r,i,n,s,o,a,l;if(e===null)return{};for(r={},i=Object.keys(e),n=0,s=i.length;n0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}else{for(s=0;si&&t[g+1]!==" ",g=s);else if(!ug(o))return yw;a=s>0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}c=c||u&&s-g-1>i&&t[g+1]!==" "}return!l&&!c?f&&!n(t)?l5:c5:r>9&&A5(t)?yw:c?g5:u5}function jDe(t,e,r,i){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&NDe.indexOf(e)!==-1)return"'"+e+"'";var n=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-n),o=i||t.flowLevel>-1&&r>=t.flowLevel;function a(l){return MDe(t,l)}switch(UDe(e,o,t.indent,s,a)){case l5:return e;case c5:return"'"+e.replace(/'/g,"''")+"'";case u5:return"|"+f5(e,t.indent)+h5(o5(e,n));case g5:return">"+f5(e,t.indent)+h5(o5(HDe(e,s),n));case yw:return'"'+GDe(e,s)+'"';default:throw new Kp("impossible error: invalid scalar style")}}()}function f5(t,e){var r=A5(t)?String(e):"",i=t[t.length-1]===` -`,n=i&&(t[t.length-2]===` -`||t===` -`),s=n?"+":i?"":"-";return r+s+` -`}function h5(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function HDe(t,e){for(var r=/(\n+)([^\n]*)/g,i=function(){var c=t.indexOf(` -`);return c=c!==-1?c:t.length,r.lastIndex=c,p5(t.slice(0,c),e)}(),n=t[0]===` -`||t[0]===" ",s,o;o=r.exec(t);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` -`:"")+p5(l,e),n=s}return i}function p5(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=r.exec(t);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` -`+t.slice(n,s),n=s+1),o=a;return l+=` -`,t.length-n>e&&o>n?l+=t.slice(n,o)+` -`+t.slice(o+1):l+=t.slice(n),l.slice(1)}function GDe(t){for(var e="",r,i,n,s=0;s=55296&&r<=56319&&(i=t.charCodeAt(s+1),i>=56320&&i<=57343)){e+=s5((r-55296)*1024+i-56320+65536),s++;continue}n=Ri[r],e+=!n&&ug(r)?t[s]:n||s5(r)}return e}function YDe(t,e,r){var i="",n=t.tag,s,o;for(s=0,o=r.length;s1024&&(u+="? "),u+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),!!ic(t,e,c,!1,!1)&&(u+=t.dump,i+=u));t.tag=n,t.dump="{"+i+"}"}function WDe(t,e,r,i){var n="",s=t.tag,o=Object.keys(r),a,l,c,u,g,f;if(t.sortKeys===!0)o.sort();else if(typeof t.sortKeys=="function")o.sort(t.sortKeys);else if(t.sortKeys)throw new Kp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(t.dump&&Up===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,g&&(f+=OP(t,e)),!!ic(t,e+1,u,!0,g)&&(t.dump&&Up===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,n+=f));t.tag=s,t.dump=n||"{}"}function d5(t,e,r){var i,n,s,o,a,l;for(n=r?t.explicitTypes:t.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');t.dump=i}return!0}return!1}function ic(t,e,r,i,n,s){t.tag=null,t.dump=r,d5(t,r,!1)||d5(t,r,!0);var o=_z.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=t.duplicates.indexOf(r),c=l!==-1),(t.tag!==null&&t.tag!=="?"||c||t.indent!==2&&e>0)&&(n=!1),c&&t.usedDuplicates[l])t.dump="*ref_"+l;else{if(a&&c&&!t.usedDuplicates[l]&&(t.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(t.dump).length!==0?(WDe(t,e,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(JDe(t,e,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump));else if(o==="[object Array]"){var u=t.noArrayIndent&&e>0?e-1:e;i&&t.dump.length!==0?(qDe(t,u,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(YDe(t,u,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump))}else if(o==="[object String]")t.tag!=="?"&&jDe(t,t.dump,e,s);else{if(t.skipInvalid)return!1;throw new Kp("unacceptable kind of an object to dump "+o)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function zDe(t,e){var r=[],i=[],n,s;for(UP(t,r,i),n=0,s=i.length;n{"use strict";var ww=Vz(),E5=m5();function Bw(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Qr.exports.Type=Xr();Qr.exports.Schema=ec();Qr.exports.FAILSAFE_SCHEMA=pw();Qr.exports.JSON_SCHEMA=DP();Qr.exports.CORE_SCHEMA=RP();Qr.exports.DEFAULT_SAFE_SCHEMA=og();Qr.exports.DEFAULT_FULL_SCHEMA=Tp();Qr.exports.load=ww.load;Qr.exports.loadAll=ww.loadAll;Qr.exports.safeLoad=ww.safeLoad;Qr.exports.safeLoadAll=ww.safeLoadAll;Qr.exports.dump=E5.dump;Qr.exports.safeDump=E5.safeDump;Qr.exports.YAMLException=ng();Qr.exports.MINIMAL_SCHEMA=pw();Qr.exports.SAFE_SCHEMA=og();Qr.exports.DEFAULT_SCHEMA=Tp();Qr.exports.scan=Bw("scan");Qr.exports.parse=Bw("parse");Qr.exports.compose=Bw("compose");Qr.exports.addConstructor=Bw("addConstructor")});var w5=E((wat,y5)=>{"use strict";var _De=I5();y5.exports=_De});var Q5=E((Bat,B5)=>{"use strict";function XDe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function nc(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,nc)}XDe(nc,Error);nc.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[xe]:le})))},H=function(x){return x},L=function(x){return x},K=Yo("correct indentation"),J=" ",ne=fr(" ",!1),q=function(x){return x.length===Zc*aE},A=function(x){return x.length===(Zc+1)*aE},V=function(){return Zc++,!0},W=function(){return Zc--,!0},X=function(){return Xm()},F=Yo("pseudostring"),D=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,he=Bs(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),pe=/^[^\r\n\t ,\][{}:#"']/,Ne=Bs(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Xm().replace(/^ *| *$/g,"")},qe="--",re=fr("--",!1),se=/^[a-zA-Z\/0-9]/,be=Bs([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),ae=/^[^\r\n\t :,]/,Ae=Bs(["\r",` -`," "," ",":",","],!0,!1),De="null",$=fr("null",!1),G=function(){return null},Ce="true",ee=fr("true",!1),Ue=function(){return!0},Oe="false",vt=fr("false",!1),dt=function(){return!1},ri=Yo("string"),ii='"',an=fr('"',!1),yr=function(){return""},Ki=function(x){return x},Qi=function(x){return x.join("")},Go=/^[^"\\\0-\x1F\x7F]/,wr=Bs(['"',"\\",["\0",""],"\x7F"],!0,!1),Ui='\\"',ws=fr('\\"',!1),Tf=function(){return'"'},Mf="\\\\",Rm=fr("\\\\",!1),Fm=function(){return"\\"},Nm="\\/",DQ=fr("\\/",!1),RQ=function(){return"/"},Of="\\b",FQ=fr("\\b",!1),NQ=function(){return"\b"},Lm="\\f",LQ=fr("\\f",!1),Va=function(){return"\f"},jo="\\n",Tm=fr("\\n",!1),Mm=function(){return` -`},te="\\r",Om=fr("\\r",!1),Km=function(){return"\r"},il="\\t",Um=fr("\\t",!1),Hm=function(){return" "},Kf="\\u",Gm=fr("\\u",!1),jm=function(x,U,le,xe){return String.fromCharCode(parseInt(`0x${x}${U}${le}${xe}`))},TQ=/^[0-9a-fA-F]/,MQ=Bs([["0","9"],["a","f"],["A","F"]],!1,!1),Ym=Yo("blank space"),qm=/^[ \t]/,Jm=Bs([" "," "],!1,!1),Wm=Yo("white space"),zm=/^[ \t\n\r]/,Vm=Bs([" "," ",` -`,"\r"],!1,!1),Uf=`\r -`,OQ=fr(`\r -`,!1),KQ=` -`,_m=fr(` -`,!1),UQ="\r",HQ=fr("\r",!1),O=0,ht=0,Vc=[{line:1,column:1}],xn=0,Hf=[],Ye=0,nl;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Xm(){return t.substring(ht,O)}function MM(){return _a(ht,O)}function GQ(x,U){throw U=U!==void 0?U:_a(ht,O),eE([Yo(x)],t.substring(ht,O),U)}function OM(x,U){throw U=U!==void 0?U:_a(ht,O),YQ(x,U)}function fr(x,U){return{type:"literal",text:x,ignoreCase:U}}function Bs(x,U,le){return{type:"class",parts:x,inverted:U,ignoreCase:le}}function jQ(){return{type:"any"}}function Zm(){return{type:"end"}}function Yo(x){return{type:"other",description:x}}function $m(x){var U=Vc[x],le;if(U)return U;for(le=x-1;!Vc[le];)le--;for(U=Vc[le],U={line:U.line,column:U.column};lexn&&(xn=O,Hf=[]),Hf.push(x))}function YQ(x,U){return new nc(x,null,null,U)}function eE(x,U,le){return new nc(nc.buildMessage(x,U),x,U,le)}function tE(){var x;return x=ol(),x}function Xa(){var x,U,le;for(x=O,U=[],le=sl();le!==r;)U.push(le),le=sl();return U!==r&&(ht=x,U=s(U)),x=U,x}function sl(){var x,U,le,xe,Qe;return x=O,U=Al(),U!==r?(t.charCodeAt(O)===45?(le=o,O++):(le=r,Ye===0&&et(a)),le!==r?(xe=xr(),xe!==r?(Qe=qo(),Qe!==r?(ht=x,U=l(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x}function ol(){var x,U,le;for(x=O,U=[],le=al();le!==r;)U.push(le),le=al();return U!==r&&(ht=x,U=c(U)),x=U,x}function al(){var x,U,le,xe,Qe,Ge,ct,sr,Wo;if(x=O,U=xr(),U===r&&(U=null),U!==r){if(le=O,t.charCodeAt(O)===35?(xe=u,O++):(xe=r,Ye===0&&et(g)),xe!==r){if(Qe=[],Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r),Ge!==r)for(;Ge!==r;)Qe.push(Ge),Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r);else Qe=r;Qe!==r?(xe=[xe,Qe],le=xe):(O=le,le=r)}else O=le,le=r;if(le===r&&(le=null),le!==r){if(xe=[],Qe=Jo(),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=Jo();else xe=r;xe!==r?(ht=x,U=h(),x=U):(O=x,x=r)}else O=x,x=r}else O=x,x=r;if(x===r&&(x=O,U=Al(),U!==r?(le=JQ(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Al(),U!==r?(le=ll(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))){if(x=O,U=Al(),U!==r)if(le=ll(),le!==r)if(xe=xr(),xe!==r)if(Qe=nE(),Qe!==r){if(Ge=[],ct=Jo(),ct!==r)for(;ct!==r;)Ge.push(ct),ct=Jo();else Ge=r;Ge!==r?(ht=x,U=m(le,Qe),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;else O=x,x=r;else O=x,x=r;if(x===r)if(x=O,U=Al(),U!==r)if(le=ll(),le!==r){if(xe=[],Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=I,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=I,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r);else xe=r;xe!==r?(Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(t.charCodeAt(O)===58?(Ge=p,O++):(Ge=r,Ye===0&&et(d)),Ge!==r?(ct=xr(),ct===r&&(ct=null),ct!==r?(sr=qo(),sr!==r?(ht=x,U=R(le,xe,sr),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)}else O=x,x=r;else O=x,x=r}return x}function qo(){var x,U,le,xe,Qe,Ge,ct;if(x=O,U=O,Ye++,le=O,xe=Zs(),xe!==r?(Qe=qQ(),Qe!==r?(t.charCodeAt(O)===45?(Ge=o,O++):(Ge=r,Ye===0&&et(a)),Ge!==r?(ct=xr(),ct!==r?(xe=[xe,Qe,Ge,ct],le=xe):(O=le,le=r)):(O=le,le=r)):(O=le,le=r)):(O=le,le=r),Ye--,le!==r?(O=U,U=void 0):U=r,U!==r?(le=Jo(),le!==r?(xe=rE(),xe!==r?(Qe=Xa(),Qe!==r?(Ge=iE(),Ge!==r?(ht=x,U=H(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Zs(),U!==r?(le=rE(),le!==r?(xe=ol(),xe!==r?(Qe=iE(),Qe!==r?(ht=x,U=H(xe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))if(x=O,U=WQ(),U!==r){if(le=[],xe=Jo(),xe!==r)for(;xe!==r;)le.push(xe),xe=Jo();else le=r;le!==r?(ht=x,U=L(U),x=U):(O=x,x=r)}else O=x,x=r;return x}function Al(){var x,U,le;for(Ye++,x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=q(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),Ye--,x===r&&(U=r,Ye===0&&et(K)),x}function qQ(){var x,U,le;for(x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=A(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),x}function rE(){var x;return ht=O,x=V(),x?x=void 0:x=r,x}function iE(){var x;return ht=O,x=W(),x?x=void 0:x=r,x}function JQ(){var x;return x=cl(),x===r&&(x=Gf()),x}function ll(){var x,U,le;if(x=cl(),x===r){if(x=O,U=[],le=_c(),le!==r)for(;le!==r;)U.push(le),le=_c();else U=r;U!==r&&(ht=x,U=X()),x=U}return x}function WQ(){var x;return x=jf(),x===r&&(x=sE(),x===r&&(x=cl(),x===r&&(x=Gf()))),x}function nE(){var x;return x=jf(),x===r&&(x=cl(),x===r&&(x=_c())),x}function Gf(){var x,U,le,xe,Qe,Ge;if(Ye++,x=O,D.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(he)),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;return Ye--,x===r&&(U=r,Ye===0&&et(F)),x}function _c(){var x,U,le,xe,Qe;if(x=O,t.substr(O,2)===qe?(U=qe,O+=2):(U=r,Ye===0&&et(re)),U===r&&(U=null),U!==r)if(se.test(t.charAt(O))?(le=t.charAt(O),O++):(le=r,Ye===0&&et(be)),le!==r){for(xe=[],ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));Qe!==r;)xe.push(Qe),ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));xe!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;return x}function jf(){var x,U;return x=O,t.substr(O,4)===De?(U=De,O+=4):(U=r,Ye===0&&et($)),U!==r&&(ht=x,U=G()),x=U,x}function sE(){var x,U;return x=O,t.substr(O,4)===Ce?(U=Ce,O+=4):(U=r,Ye===0&&et(ee)),U!==r&&(ht=x,U=Ue()),x=U,x===r&&(x=O,t.substr(O,5)===Oe?(U=Oe,O+=5):(U=r,Ye===0&&et(vt)),U!==r&&(ht=x,U=dt()),x=U),x}function cl(){var x,U,le,xe;return Ye++,x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(t.charCodeAt(O)===34?(le=ii,O++):(le=r,Ye===0&&et(an)),le!==r?(ht=x,U=yr(),x=U):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(le=oE(),le!==r?(t.charCodeAt(O)===34?(xe=ii,O++):(xe=r,Ye===0&&et(an)),xe!==r?(ht=x,U=Ki(le),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)),Ye--,x===r&&(U=r,Ye===0&&et(ri)),x}function oE(){var x,U,le;if(x=O,U=[],le=Yf(),le!==r)for(;le!==r;)U.push(le),le=Yf();else U=r;return U!==r&&(ht=x,U=Qi(U)),x=U,x}function Yf(){var x,U,le,xe,Qe,Ge;return Go.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(wr)),x===r&&(x=O,t.substr(O,2)===Ui?(U=Ui,O+=2):(U=r,Ye===0&&et(ws)),U!==r&&(ht=x,U=Tf()),x=U,x===r&&(x=O,t.substr(O,2)===Mf?(U=Mf,O+=2):(U=r,Ye===0&&et(Rm)),U!==r&&(ht=x,U=Fm()),x=U,x===r&&(x=O,t.substr(O,2)===Nm?(U=Nm,O+=2):(U=r,Ye===0&&et(DQ)),U!==r&&(ht=x,U=RQ()),x=U,x===r&&(x=O,t.substr(O,2)===Of?(U=Of,O+=2):(U=r,Ye===0&&et(FQ)),U!==r&&(ht=x,U=NQ()),x=U,x===r&&(x=O,t.substr(O,2)===Lm?(U=Lm,O+=2):(U=r,Ye===0&&et(LQ)),U!==r&&(ht=x,U=Va()),x=U,x===r&&(x=O,t.substr(O,2)===jo?(U=jo,O+=2):(U=r,Ye===0&&et(Tm)),U!==r&&(ht=x,U=Mm()),x=U,x===r&&(x=O,t.substr(O,2)===te?(U=te,O+=2):(U=r,Ye===0&&et(Om)),U!==r&&(ht=x,U=Km()),x=U,x===r&&(x=O,t.substr(O,2)===il?(U=il,O+=2):(U=r,Ye===0&&et(Um)),U!==r&&(ht=x,U=Hm()),x=U,x===r&&(x=O,t.substr(O,2)===Kf?(U=Kf,O+=2):(U=r,Ye===0&&et(Gm)),U!==r?(le=Xc(),le!==r?(xe=Xc(),xe!==r?(Qe=Xc(),Qe!==r?(Ge=Xc(),Ge!==r?(ht=x,U=jm(le,xe,Qe,Ge),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)))))))))),x}function Xc(){var x;return TQ.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(MQ)),x}function xr(){var x,U;if(Ye++,x=[],qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm)),U!==r)for(;U!==r;)x.push(U),qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Ym)),x}function KM(){var x,U;if(Ye++,x=[],zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm)),U!==r)for(;U!==r;)x.push(U),zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Wm)),x}function Jo(){var x,U,le,xe,Qe,Ge;if(x=O,U=Zs(),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(U=[U,le],x=U):(O=x,x=r)}else O=x,x=r;return x}function Zs(){var x;return t.substr(O,2)===Uf?(x=Uf,O+=2):(x=r,Ye===0&&et(OQ)),x===r&&(t.charCodeAt(O)===10?(x=KQ,O++):(x=r,Ye===0&&et(_m)),x===r&&(t.charCodeAt(O)===13?(x=UQ,O++):(x=r,Ye===0&&et(HQ)))),x}let aE=2,Zc=0;if(nl=n(),nl!==r&&O===t.length)return nl;throw nl!==r&&O{var fRe=typeof global=="object"&&global&&global.Object===Object&&global;V5.exports=fRe});var Ks=E((Zat,_5)=>{var hRe=WP(),pRe=typeof self=="object"&&self&&self.Object===Object&&self,dRe=hRe||pRe||Function("return this")();_5.exports=dRe});var ac=E(($at,X5)=>{var CRe=Ks(),mRe=CRe.Symbol;X5.exports=mRe});var $5=E((eAt,Z5)=>{function ERe(t,e){for(var r=-1,i=t==null?0:t.length,n=Array(i);++r{var IRe=Array.isArray;e6.exports=IRe});var n6=E((rAt,t6)=>{var r6=ac(),i6=Object.prototype,yRe=i6.hasOwnProperty,wRe=i6.toString,Jp=r6?r6.toStringTag:void 0;function BRe(t){var e=yRe.call(t,Jp),r=t[Jp];try{t[Jp]=void 0;var i=!0}catch(s){}var n=wRe.call(t);return i&&(e?t[Jp]=r:delete t[Jp]),n}t6.exports=BRe});var o6=E((iAt,s6)=>{var QRe=Object.prototype,bRe=QRe.toString;function vRe(t){return bRe.call(t)}s6.exports=vRe});var Ac=E((nAt,a6)=>{var A6=ac(),SRe=n6(),xRe=o6(),kRe="[object Null]",PRe="[object Undefined]",l6=A6?A6.toStringTag:void 0;function DRe(t){return t==null?t===void 0?PRe:kRe:l6&&l6 in Object(t)?SRe(t):xRe(t)}a6.exports=DRe});var Qo=E((sAt,c6)=>{function RRe(t){return t!=null&&typeof t=="object"}c6.exports=RRe});var Nw=E((oAt,u6)=>{var FRe=Ac(),NRe=Qo(),LRe="[object Symbol]";function TRe(t){return typeof t=="symbol"||NRe(t)&&FRe(t)==LRe}u6.exports=TRe});var C6=E((aAt,g6)=>{var f6=ac(),MRe=$5(),ORe=As(),KRe=Nw(),URe=1/0,h6=f6?f6.prototype:void 0,p6=h6?h6.toString:void 0;function d6(t){if(typeof t=="string")return t;if(ORe(t))return MRe(t,d6)+"";if(KRe(t))return p6?p6.call(t):"";var e=t+"";return e=="0"&&1/t==-URe?"-0":e}g6.exports=d6});var gg=E((AAt,m6)=>{var HRe=C6();function GRe(t){return t==null?"":HRe(t)}m6.exports=GRe});var zP=E((lAt,E6)=>{function jRe(t,e,r){var i=-1,n=t.length;e<0&&(e=-e>n?0:n+e),r=r>n?n:r,r<0&&(r+=n),n=e>r?0:r-e>>>0,e>>>=0;for(var s=Array(n);++i{var YRe=zP();function qRe(t,e,r){var i=t.length;return r=r===void 0?i:r,!e&&r>=i?t:YRe(t,e,r)}I6.exports=qRe});var VP=E((uAt,w6)=>{var JRe="\\ud800-\\udfff",WRe="\\u0300-\\u036f",zRe="\\ufe20-\\ufe2f",VRe="\\u20d0-\\u20ff",_Re=WRe+zRe+VRe,XRe="\\ufe0e\\ufe0f",ZRe="\\u200d",$Re=RegExp("["+ZRe+JRe+_Re+XRe+"]");function eFe(t){return $Re.test(t)}w6.exports=eFe});var Q6=E((gAt,B6)=>{function tFe(t){return t.split("")}B6.exports=tFe});var R6=E((fAt,b6)=>{var v6="\\ud800-\\udfff",rFe="\\u0300-\\u036f",iFe="\\ufe20-\\ufe2f",nFe="\\u20d0-\\u20ff",sFe=rFe+iFe+nFe,oFe="\\ufe0e\\ufe0f",aFe="["+v6+"]",_P="["+sFe+"]",XP="\\ud83c[\\udffb-\\udfff]",AFe="(?:"+_P+"|"+XP+")",S6="[^"+v6+"]",x6="(?:\\ud83c[\\udde6-\\uddff]){2}",k6="[\\ud800-\\udbff][\\udc00-\\udfff]",lFe="\\u200d",P6=AFe+"?",D6="["+oFe+"]?",cFe="(?:"+lFe+"(?:"+[S6,x6,k6].join("|")+")"+D6+P6+")*",uFe=D6+P6+cFe,gFe="(?:"+[S6+_P+"?",_P,x6,k6,aFe].join("|")+")",fFe=RegExp(XP+"(?="+XP+")|"+gFe+uFe,"g");function hFe(t){return t.match(fFe)||[]}b6.exports=hFe});var N6=E((hAt,F6)=>{var pFe=Q6(),dFe=VP(),CFe=R6();function mFe(t){return dFe(t)?CFe(t):pFe(t)}F6.exports=mFe});var T6=E((pAt,L6)=>{var EFe=y6(),IFe=VP(),yFe=N6(),wFe=gg();function BFe(t){return function(e){e=wFe(e);var r=IFe(e)?yFe(e):void 0,i=r?r[0]:e.charAt(0),n=r?EFe(r,1).join(""):e.slice(1);return i[t]()+n}}L6.exports=BFe});var O6=E((dAt,M6)=>{var QFe=T6(),bFe=QFe("toUpperCase");M6.exports=bFe});var ZP=E((CAt,K6)=>{var vFe=gg(),SFe=O6();function xFe(t){return SFe(vFe(t).toLowerCase())}K6.exports=xFe});var H6=E((mAt,U6)=>{"use strict";U6.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Wp=E((EAt,$P)=>{"use strict";var kFe=H6(),G6=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,i=()=>{r--,e.length>0&&e.shift()()},n=(a,l,...c)=>{r++;let u=kFe(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{rnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),o};$P.exports=G6;$P.exports.default=G6});var X6=E((FAt,Mw)=>{function PFe(){var t=0,e=1,r=2,i=3,n=4,s=5,o=6,a=7,l=8,c=9,u=10,g=11,f=12,h=13,p=14,d=15,m=16,I=17,B=0,b=1,R=2,H=3,L=4;function K(A,V){return 55296<=A.charCodeAt(V)&&A.charCodeAt(V)<=56319&&56320<=A.charCodeAt(V+1)&&A.charCodeAt(V+1)<=57343}function J(A,V){V===void 0&&(V=0);var W=A.charCodeAt(V);if(55296<=W&&W<=56319&&V=1){var X=A.charCodeAt(V-1),F=W;return 55296<=X&&X<=56319?(X-55296)*1024+(F-56320)+65536:F}return W}function ne(A,V,W){var X=[A].concat(V).concat([W]),F=X[X.length-2],D=W,he=X.lastIndexOf(p);if(he>1&&X.slice(1,he).every(function(Pe){return Pe==i})&&[i,h,I].indexOf(A)==-1)return R;var pe=X.lastIndexOf(n);if(pe>0&&X.slice(1,pe).every(function(Pe){return Pe==n})&&[f,n].indexOf(F)==-1)return X.filter(function(Pe){return Pe==n}).length%2==1?H:L;if(F==t&&D==e)return B;if(F==r||F==t||F==e)return D==p&&V.every(function(Pe){return Pe==i})?R:b;if(D==r||D==t||D==e)return b;if(F==o&&(D==o||D==a||D==c||D==u))return B;if((F==c||F==a)&&(D==a||D==l))return B;if((F==u||F==l)&&D==l)return B;if(D==i||D==d)return B;if(D==s)return B;if(F==f)return B;var Ne=X.indexOf(i)!=-1?X.lastIndexOf(i)-1:X.length-2;return[h,I].indexOf(X[Ne])!=-1&&X.slice(Ne+1,-1).every(function(Pe){return Pe==i})&&D==p||F==d&&[m,I].indexOf(D)!=-1?B:V.indexOf(n)!=-1?R:F==n&&D==n?B:b}this.nextBreak=function(A,V){if(V===void 0&&(V=0),V<0)return 0;if(V>=A.length-1)return A.length;for(var W=q(J(A,V)),X=[],F=V+1;F{var DFe=X6(),RFe=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,FFe=new DFe;Z6.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let i=r-e,n="",s=0,o=0;for(;t.length>0;){let a=t.match(RFe)||[t,t,void 0],l=FFe.splitGraphemes(a[1]),c=Math.min(e-s,l.length);l=l.slice(c);let u=Math.min(i-o,l.length);n+=l.slice(0,u).join(""),s+=c,o+=u,typeof a[2]!="undefined"&&(n+=a[2]),t=t.slice(a[0].length)}return n}});var fg=E((alt,f9)=>{"use strict";var h9=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]),olt=f9.exports=t=>t?Object.keys(t).map(e=>[h9.has(e)?h9.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var hg=E((Alt,p9)=>{"use strict";var JFe=require("events"),d9=require("stream"),_p=Rh(),C9=require("string_decoder").StringDecoder,va=Symbol("EOF"),Xp=Symbol("maybeEmitEnd"),xA=Symbol("emittedEnd"),Gw=Symbol("emittingEnd"),jw=Symbol("closed"),m9=Symbol("read"),iD=Symbol("flush"),E9=Symbol("flushChunk"),Bn=Symbol("encoding"),Sa=Symbol("decoder"),Yw=Symbol("flowing"),Zp=Symbol("paused"),$p=Symbol("resume"),rn=Symbol("bufferLength"),I9=Symbol("bufferPush"),nD=Symbol("bufferShift"),Ni=Symbol("objectMode"),Li=Symbol("destroyed"),y9=global._MP_NO_ITERATOR_SYMBOLS_!=="1",WFe=y9&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),zFe=y9&&Symbol.iterator||Symbol("iterator not implemented"),w9=t=>t==="end"||t==="finish"||t==="prefinish",VFe=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,_Fe=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);p9.exports=class B9 extends d9{constructor(e){super();this[Yw]=!1,this[Zp]=!1,this.pipes=new _p,this.buffer=new _p,this[Ni]=e&&e.objectMode||!1,this[Ni]?this[Bn]=null:this[Bn]=e&&e.encoding||null,this[Bn]==="buffer"&&(this[Bn]=null),this[Sa]=this[Bn]?new C9(this[Bn]):null,this[va]=!1,this[xA]=!1,this[Gw]=!1,this[jw]=!1,this.writable=!0,this.readable=!0,this[rn]=0,this[Li]=!1}get bufferLength(){return this[rn]}get encoding(){return this[Bn]}set encoding(e){if(this[Ni])throw new Error("cannot set encoding in objectMode");if(this[Bn]&&e!==this[Bn]&&(this[Sa]&&this[Sa].lastNeed||this[rn]))throw new Error("cannot change encoding");this[Bn]!==e&&(this[Sa]=e?new C9(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Sa].write(r)))),this[Bn]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ni]}set objectMode(e){this[Ni]=this[Ni]||!!e}write(e,r,i){if(this[va])throw new Error("write after end");return this[Li]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[Ni]&&!Buffer.isBuffer(e)&&(_Fe(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):VFe(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof e=="string"&&!this[Ni]&&!(r===this[Bn]&&!this[Sa].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Bn]&&(e=this[Sa].write(e)),this.flowing?(this[rn]!==0&&this[iD](!0),this.emit("data",e)):this[I9](e),this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(e){if(this[Li])return null;try{return this[rn]===0||e===0||e>this[rn]?null:(this[Ni]&&(e=null),this.buffer.length>1&&!this[Ni]&&(this.encoding?this.buffer=new _p([Array.from(this.buffer).join("")]):this.buffer=new _p([Buffer.concat(Array.from(this.buffer),this[rn])])),this[m9](e||null,this.buffer.head.value))}finally{this[Xp]()}}[m9](e,r){return e===r.length||e===null?this[nD]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[rn]-=e),this.emit("data",r),!this.buffer.length&&!this[va]&&this.emit("drain"),r}end(e,r,i){return typeof e=="function"&&(i=e,e=null),typeof r=="function"&&(i=r,r="utf8"),e&&this.write(e,r),i&&this.once("end",i),this[va]=!0,this.writable=!1,(this.flowing||!this[Zp])&&this[Xp](),this}[$p](){this[Li]||(this[Zp]=!1,this[Yw]=!0,this.emit("resume"),this.buffer.length?this[iD]():this[va]?this[Xp]():this.emit("drain"))}resume(){return this[$p]()}pause(){this[Yw]=!1,this[Zp]=!0}get destroyed(){return this[Li]}get flowing(){return this[Yw]}get paused(){return this[Zp]}[I9](e){return this[Ni]?this[rn]+=1:this[rn]+=e.length,this.buffer.push(e)}[nD](){return this.buffer.length&&(this[Ni]?this[rn]-=1:this[rn]-=this.buffer.head.value.length),this.buffer.shift()}[iD](e){do;while(this[E9](this[nD]()));!e&&!this.buffer.length&&!this[va]&&this.emit("drain")}[E9](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Li])return;let i=this[xA];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:e,opts:r,ondrain:s=>this[$p]()};return this.pipes.push(n),e.on("drain",n.ondrain),this[$p](),i&&n.opts.end&&n.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[$p]():w9(e)&&this[xA]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[xA]}[Xp](){!this[Gw]&&!this[xA]&&!this[Li]&&this.buffer.length===0&&this[va]&&(this[Gw]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jw]&&this.emit("close"),this[Gw]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==Li&&this[Li])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[xA]===!0)return;this[xA]=!0,this.readable=!1,this[Sa]&&(r=this[Sa].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(e==="close"&&(this[jw]=!0,!this[xA]&&!this[Li]))return;let i=new Array(arguments.length);if(i[0]=e,i[1]=r,arguments.length>2)for(let n=2;n{e.push(i),this[Ni]||(e.dataLength+=i.length)}),r.then(()=>e)}concat(){return this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this[Bn]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Li,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",i=>r(i))})}[WFe](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[va])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[va]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},l=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(Li,l),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[zFe](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Li]?(e?this.emit("error",e):this.emit(Li),this):(this[Li]=!0,this.buffer=new _p,this[rn]=0,typeof this.close=="function"&&!this[jw]&&this.close(),e?this.emit("error",e):this.emit(Li),this)}static isStream(e){return!!e&&(e instanceof B9||e instanceof d9||e instanceof JFe&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var b9=E((llt,Q9)=>{var XFe=require("zlib").constants||{ZLIB_VERNUM:4736};Q9.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},XFe))});var fD=E(Un=>{"use strict";var sD=require("assert"),kA=require("buffer").Buffer,v9=require("zlib"),uc=Un.constants=b9(),ZFe=hg(),S9=kA.concat,gc=Symbol("_superWrite"),ed=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},$Fe=Symbol("opts"),td=Symbol("flushFlag"),x9=Symbol("finishFlushFlag"),oD=Symbol("fullFlushFlag"),tr=Symbol("handle"),qw=Symbol("onError"),pg=Symbol("sawError"),aD=Symbol("level"),AD=Symbol("strategy"),lD=Symbol("ended"),clt=Symbol("_defaultFullFlush"),cD=class extends ZFe{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[pg]=!1,this[lD]=!1,this[$Fe]=e,this[td]=e.flush,this[x9]=e.finishFlush;try{this[tr]=new v9[r](e)}catch(i){throw new ed(i)}this[qw]=i=>{this[pg]||(this[pg]=!0,this.close(),this.emit("error",i))},this[tr].on("error",i=>this[qw](new ed(i))),this.once("end",()=>this.close)}close(){this[tr]&&(this[tr].close(),this[tr]=null,this.emit("close"))}reset(){if(!this[pg])return sD(this[tr],"zlib binding closed"),this[tr].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[oD]),this.write(Object.assign(kA.alloc(0),{[td]:e})))}end(e,r,i){return e&&this.write(e,r),this.flush(this[x9]),this[lD]=!0,super.end(null,null,i)}get ended(){return this[lD]}write(e,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof e=="string"&&(e=kA.from(e,r)),this[pg])return;sD(this[tr],"zlib binding closed");let n=this[tr]._handle,s=n.close;n.close=()=>{};let o=this[tr].close;this[tr].close=()=>{},kA.concat=c=>c;let a;try{let c=typeof e[td]=="number"?e[td]:this[td];a=this[tr]._processChunk(e,c),kA.concat=S9}catch(c){kA.concat=S9,this[qw](new ed(c))}finally{this[tr]&&(this[tr]._handle=n,n.close=s,this[tr].close=o,this[tr].removeAllListeners("error"))}this[tr]&&this[tr].on("error",c=>this[qw](new ed(c)));let l;if(a)if(Array.isArray(a)&&a.length>0){l=this[gc](kA.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[tr].params(e,r)}finally{this[tr].flush=i}this[tr]&&(this[aD]=e,this[AD]=r)}}}},k9=class extends PA{constructor(e){super(e,"Deflate")}},P9=class extends PA{constructor(e){super(e,"Inflate")}},uD=Symbol("_portable"),D9=class extends PA{constructor(e){super(e,"Gzip");this[uD]=e&&!!e.portable}[gc](e){return this[uD]?(this[uD]=!1,e[9]=255,super[gc](e)):super[gc](e)}},R9=class extends PA{constructor(e){super(e,"Gunzip")}},F9=class extends PA{constructor(e){super(e,"DeflateRaw")}},N9=class extends PA{constructor(e){super(e,"InflateRaw")}},L9=class extends PA{constructor(e){super(e,"Unzip")}},gD=class extends cD{constructor(e,r){e=e||{},e.flush=e.flush||uc.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||uc.BROTLI_OPERATION_FINISH,super(e,r),this[oD]=uc.BROTLI_OPERATION_FLUSH}},T9=class extends gD{constructor(e){super(e,"BrotliCompress")}},M9=class extends gD{constructor(e){super(e,"BrotliDecompress")}};Un.Deflate=k9;Un.Inflate=P9;Un.Gzip=D9;Un.Gunzip=R9;Un.DeflateRaw=F9;Un.InflateRaw=N9;Un.Unzip=L9;typeof v9.BrotliCompress=="function"?(Un.BrotliCompress=T9,Un.BrotliDecompress=M9):Un.BrotliCompress=Un.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var rd=E(Jw=>{"use strict";Jw.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Jw.code=new Map(Array.from(Jw.name).map(t=>[t[1],t[0]]))});var id=E((plt,O9)=>{"use strict";var flt=rd(),eNe=hg(),hD=Symbol("slurp");O9.exports=class extends eNe{constructor(e,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[hD](r),i&&this[hD](i,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(e):super.write(e.slice(0,i))}[hD](e,r){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(r&&i==="path")&&(this[i]=e[i])}}});var H9=E(pD=>{"use strict";var dlt=pD.encode=(t,e)=>{if(Number.isSafeInteger(t))t<0?rNe(t,e):tNe(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},tNe=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},rNe=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var i=e.length;i>1;i--){var n=t&255;t=Math.floor(t/256),r?e[i-1]=K9(n):n===0?e[i-1]=0:(r=!0,e[i-1]=U9(n))}},Clt=pD.parse=t=>{var e=t[t.length-1],r=t[0],i;if(r===128)i=nNe(t.slice(1,t.length));else if(r===255)i=iNe(t);else throw Error("invalid base256 encoding");if(!Number.isSafeInteger(i))throw Error("parsed number outside of javascript safe integer range");return i},iNe=t=>{for(var e=t.length,r=0,i=!1,n=e-1;n>-1;n--){var s=t[n],o;i?o=K9(s):s===0?o=s:(i=!0,o=U9(s)),o!==0&&(r-=o*Math.pow(256,e-n-1))}return r},nNe=t=>{for(var e=t.length,r=0,i=e-1;i>-1;i--){var n=t[i];n!==0&&(r+=n*Math.pow(256,e-i-1))}return r},K9=t=>(255^t)&255,U9=t=>(255^t)+1&255});var Cg=E((Elt,G9)=>{"use strict";var dD=rd(),dg=require("path").posix,j9=H9(),CD=Symbol("slurp"),Hn=Symbol("type"),Y9=class{constructor(e,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Hn]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,i,n):e&&this.set(e)}decode(e,r,i,n){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=fc(e,r,100),this.mode=DA(e,r+100,8),this.uid=DA(e,r+108,8),this.gid=DA(e,r+116,8),this.size=DA(e,r+124,12),this.mtime=mD(e,r+136,12),this.cksum=DA(e,r+148,12),this[CD](i),this[CD](n,!0),this[Hn]=fc(e,r+156,1),this[Hn]===""&&(this[Hn]="0"),this[Hn]==="0"&&this.path.substr(-1)==="/"&&(this[Hn]="5"),this[Hn]==="5"&&(this.size=0),this.linkpath=fc(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=fc(e,r+265,32),this.gname=fc(e,r+297,32),this.devmaj=DA(e,r+329,8),this.devmin=DA(e,r+337,8),e[r+475]!==0){let o=fc(e,r+345,155);this.path=o+"/"+this.path}else{let o=fc(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=mD(e,r+476,12),this.ctime=mD(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=sNe(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=hc(e,r,100,s)||this.needPax,this.needPax=RA(e,r+100,8,this.mode)||this.needPax,this.needPax=RA(e,r+108,8,this.uid)||this.needPax,this.needPax=RA(e,r+116,8,this.gid)||this.needPax,this.needPax=RA(e,r+124,12,this.size)||this.needPax,this.needPax=ED(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[Hn].charCodeAt(0),this.needPax=hc(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=hc(e,r+265,32,this.uname)||this.needPax,this.needPax=hc(e,r+297,32,this.gname)||this.needPax,this.needPax=RA(e,r+329,8,this.devmaj)||this.needPax,this.needPax=RA(e,r+337,8,this.devmin)||this.needPax,this.needPax=hc(e,r+345,i,o)||this.needPax,e[r+475]!==0?this.needPax=hc(e,r+345,155,o)||this.needPax:(this.needPax=hc(e,r+345,130,o)||this.needPax,this.needPax=ED(e,r+476,12,this.atime)||this.needPax,this.needPax=ED(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let l=r;l{let r=100,i=t,n="",s,o=dg.parse(t).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=e?s=[i.substr(0,r-1),n,!0]:(i=dg.join(dg.basename(n),i),n=dg.dirname(n));while(n!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},fc=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),mD=(t,e,r)=>oNe(DA(t,e,r)),oNe=t=>t===null?null:new Date(t*1e3),DA=(t,e,r)=>t[e]&128?j9.parse(t.slice(e,e+r)):aNe(t,e,r),ANe=t=>isNaN(t)?null:t,aNe=(t,e,r)=>ANe(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),lNe={12:8589934591,8:2097151},RA=(t,e,r,i)=>i===null?!1:i>lNe[r]||i<0?(j9.encode(i,t.slice(e,e+r)),!0):(cNe(t,e,r,i),!1),cNe=(t,e,r,i)=>t.write(uNe(i,r),e,r,"ascii"),uNe=(t,e)=>gNe(Math.floor(t).toString(8),e),gNe=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",ED=(t,e,r,i)=>i===null?!1:RA(t,e,r,i.getTime()/1e3),fNe=new Array(156).join("\0"),hc=(t,e,r,i)=>i===null?!1:(t.write(i+fNe,e,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);G9.exports=Y9});var zw=E((Ilt,q9)=>{"use strict";var hNe=Cg(),pNe=require("path"),Ww=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new hNe({path:("PaxHeader/"+pNe.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Ww.parse=(t,e,r)=>new Ww(dNe(CNe(t),e),r);var dNe=(t,e)=>e?Object.keys(t).reduce((r,i)=>(r[i]=t[i],r),e):t,CNe=t=>t.replace(/\n$/,"").split(` -`).reduce(mNe,Object.create(null)),mNe=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return t;let s=i.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};q9.exports=Ww});var Vw=E((ylt,J9)=>{"use strict";J9.exports=t=>class extends t{warn(e,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),i))}}});var yD=E((wlt,W9)=>{"use strict";var _w=["|","<",">","?",":"],ID=_w.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),ENe=new Map(_w.map((t,e)=>[t,ID[e]])),INe=new Map(ID.map((t,e)=>[t,_w[e]]));W9.exports={encode:t=>_w.reduce((e,r)=>e.split(r).join(ENe.get(r)),t),decode:t=>ID.reduce((e,r)=>e.split(r).join(INe.get(r)),t)}});var V9=E((Blt,z9)=>{"use strict";z9.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var xD=E((xlt,_9)=>{"use strict";var X9=hg(),Z9=zw(),$9=Cg(),Qlt=id(),bo=require("fs"),mg=require("path"),blt=rd(),yNe=16*1024*1024,eV=Symbol("process"),tV=Symbol("file"),rV=Symbol("directory"),wD=Symbol("symlink"),iV=Symbol("hardlink"),nd=Symbol("header"),Xw=Symbol("read"),BD=Symbol("lstat"),Zw=Symbol("onlstat"),QD=Symbol("onread"),bD=Symbol("onreadlink"),vD=Symbol("openfile"),SD=Symbol("onopenfile"),pc=Symbol("close"),$w=Symbol("mode"),nV=Vw(),wNe=yD(),sV=V9(),eB=nV(class extends X9{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||yNe,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&mg.win32.isAbsolute(e)){let n=mg.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=wNe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||mg.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Zw](this.statCache.get(this.absolute)):this[BD]()}[BD](){bo.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Zw](r)})}[Zw](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=BNe(e),this.emit("stat",e),this[eV]()}[eV](){switch(this.type){case"File":return this[tV]();case"Directory":return this[rV]();case"SymbolicLink":return this[wD]();default:return this.end()}}[$w](e){return sV(e,this.type==="Directory",this.portable)}[nd](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this[$w](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new Z9({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[rV](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[nd](),this.end()}[wD](){bo.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[bD](r)})}[bD](e){this.linkpath=e.replace(/\\/g,"/"),this[nd](),this.end()}[iV](e){this.type="Link",this.linkpath=mg.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[nd](),this.end()}[tV](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[iV](r)}this.linkCache.set(e,this.absolute)}if(this[nd](),this.stat.size===0)return this.end();this[vD]()}[vD](){bo.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[SD](r)})}[SD](e){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Xw](e,n,0,n.length,0,this.stat.size,r)}[Xw](e,r,i,n,s,o,a){bo.read(e,r,i,n,s,(l,c)=>{if(l)return this[pc](e,()=>this.emit("error",l));this[QD](e,r,i,n,s,o,a,c)})}[pc](e,r){bo.close(e,r)}[QD](e,r,i,n,s,o,a,l){if(l<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l===o)for(let u=l;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Xw](e,r,i,n,s,o,a)}}),oV=class extends eB{constructor(e,r){super(e,r)}[BD](){this[Zw](bo.lstatSync(this.absolute))}[wD](){this[bD](bo.readlinkSync(this.absolute))}[vD](){this[SD](bo.openSync(this.absolute,"r"))}[Xw](e,r,i,n,s,o,a){let l=!0;try{let c=bo.readSync(e,r,i,n,s);this[QD](e,r,i,n,s,o,a,c),l=!1}finally{if(l)try{this[pc](e,()=>{})}catch(c){}}}[pc](e,r){bo.closeSync(e),r()}},QNe=nV(class extends X9{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[$w](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(mg.isAbsolute(this.path)&&!this.preservePaths){let n=mg.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new Z9({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[$w](e){return sV(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});eB.Sync=oV;eB.Tar=QNe;var BNe=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";_9.exports=eB});var AB=E((Plt,aV)=>{"use strict";var kD=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},bNe=hg(),vNe=fD(),SNe=id(),PD=xD(),xNe=PD.Sync,kNe=PD.Tar,PNe=Rh(),AV=Buffer.alloc(1024),tB=Symbol("onStat"),rB=Symbol("ended"),vo=Symbol("queue"),Eg=Symbol("current"),dc=Symbol("process"),iB=Symbol("processing"),lV=Symbol("processJob"),So=Symbol("jobs"),DD=Symbol("jobDone"),nB=Symbol("addFSEntry"),cV=Symbol("addTarEntry"),RD=Symbol("stat"),FD=Symbol("readdir"),sB=Symbol("onreaddir"),oB=Symbol("pipe"),uV=Symbol("entry"),ND=Symbol("entryOpt"),LD=Symbol("writeEntryClass"),gV=Symbol("write"),TD=Symbol("ondrain"),aB=require("fs"),fV=require("path"),DNe=Vw(),MD=DNe(class extends bNe{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[LD]=PD,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new vNe.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[TD]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[TD]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[vo]=new PNe,this[So]=0,this.jobs=+e.jobs||4,this[iB]=!1,this[rB]=!1}[gV](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[rB]=!0,this[dc](),this}write(e){if(this[rB])throw new Error("write after end");return e instanceof SNe?this[cV](e):this[nB](e),this.flowing}[cV](e){let r=fV.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new kD(e.path,r,!1);i.entry=new kNe(e,this[ND](i)),i.entry.on("end",n=>this[DD](i)),this[So]+=1,this[vo].push(i)}this[dc]()}[nB](e){let r=fV.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[vo].push(new kD(e,r)),this[dc]()}[RD](e){e.pending=!0,this[So]+=1;let r=this.follow?"stat":"lstat";aB[r](e.absolute,(i,n)=>{e.pending=!1,this[So]-=1,i?this.emit("error",i):this[tB](e,n)})}[tB](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[dc]()}[FD](e){e.pending=!0,this[So]+=1,aB.readdir(e.absolute,(r,i)=>{if(e.pending=!1,this[So]-=1,r)return this.emit("error",r);this[sB](e,i)})}[sB](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[dc]()}[dc](){if(!this[iB]){this[iB]=!0;for(let e=this[vo].head;e!==null&&this[So]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[uV](e){this[So]+=1;try{return new this[LD](e.path,this[ND](e)).on("end",()=>this[DD](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[TD](){this[Eg]&&this[Eg].entry&&this[Eg].entry.resume()}[oB](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)});let r=e.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),hV=class extends MD{constructor(e){super(e);this[LD]=xNe}pause(){}resume(){}[RD](e){let r=this.follow?"statSync":"lstatSync";this[tB](e,aB[r](e.absolute))}[FD](e,r){this[sB](e,aB.readdirSync(e.absolute))}[oB](e){let r=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[gV](n)})}};MD.Sync=hV;aV.exports=MD});var bg=E(sd=>{"use strict";var RNe=hg(),FNe=require("events").EventEmitter,ls=require("fs"),lB=process.binding("fs"),Dlt=lB.writeBuffers,NNe=lB.FSReqWrap||lB.FSReqCallback,Ig=Symbol("_autoClose"),xo=Symbol("_close"),od=Symbol("_ended"),Jt=Symbol("_fd"),pV=Symbol("_finished"),Cc=Symbol("_flags"),OD=Symbol("_flush"),KD=Symbol("_handleChunk"),UD=Symbol("_makeBuf"),HD=Symbol("_mode"),cB=Symbol("_needDrain"),yg=Symbol("_onerror"),wg=Symbol("_onopen"),GD=Symbol("_onread"),mc=Symbol("_onwrite"),FA=Symbol("_open"),NA=Symbol("_path"),Ec=Symbol("_pos"),ko=Symbol("_queue"),Bg=Symbol("_read"),dV=Symbol("_readSize"),LA=Symbol("_reading"),uB=Symbol("_remain"),CV=Symbol("_size"),gB=Symbol("_write"),Qg=Symbol("_writing"),fB=Symbol("_defaultFlag"),jD=class extends RNe{constructor(e,r){if(r=r||{},super(r),this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Jt]=typeof r.fd=="number"?r.fd:null,this[NA]=e,this[dV]=r.readSize||16*1024*1024,this[LA]=!1,this[CV]=typeof r.size=="number"?r.size:Infinity,this[uB]=this[CV],this[Ig]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Jt]=="number"?this[Bg]():this[FA]()}get fd(){return this[Jt]}get path(){return this[NA]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[FA](){ls.open(this[NA],"r",(e,r)=>this[wg](e,r))}[wg](e,r){e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[Bg]())}[UD](){return Buffer.allocUnsafe(Math.min(this[dV],this[uB]))}[Bg](){if(!this[LA]){this[LA]=!0;let e=this[UD]();if(e.length===0)return process.nextTick(()=>this[GD](null,0,e));ls.read(this[Jt],e,0,e.length,null,(r,i,n)=>this[GD](r,i,n))}}[GD](e,r,i){this[LA]=!1,e?this[yg](e):this[KD](r,i)&&this[Bg]()}[xo](){this[Ig]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}[yg](e){this[LA]=!0,this[xo](),this.emit("error",e)}[KD](e,r){let i=!1;return this[uB]-=e,e>0&&(i=super.write(ethis[wg](e,r))}[wg](e,r){this[fB]&&this[Cc]==="r+"&&e&&e.code==="ENOENT"?(this[Cc]="w",this[FA]()):e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[OD]())}end(e,r){e&&this.write(e,r),this[od]=!0,!this[Qg]&&!this[ko].length&&typeof this[Jt]=="number"&&this[mc](null,0)}write(e,r){return typeof e=="string"&&(e=new Buffer(e,r)),this[od]?(this.emit("error",new Error("write() after end()")),!1):this[Jt]===null||this[Qg]||this[ko].length?(this[ko].push(e),this[cB]=!0,!1):(this[Qg]=!0,this[gB](e),!0)}[gB](e){ls.write(this[Jt],e,0,e.length,this[Ec],(r,i)=>this[mc](r,i))}[mc](e,r){e?this[yg](e):(this[Ec]!==null&&(this[Ec]+=r),this[ko].length?this[OD]():(this[Qg]=!1,this[od]&&!this[pV]?(this[pV]=!0,this[xo](),this.emit("finish")):this[cB]&&(this[cB]=!1,this.emit("drain"))))}[OD](){if(this[ko].length===0)this[od]&&this[mc](null,0);else if(this[ko].length===1)this[gB](this[ko].pop());else{let e=this[ko];this[ko]=[],LNe(this[Jt],e,this[Ec],(r,i)=>this[mc](r,i))}}[xo](){this[Ig]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}},EV=class extends YD{[FA](){let e;try{e=ls.openSync(this[NA],this[Cc],this[HD])}catch(r){if(this[fB]&&this[Cc]==="r+"&&r&&r.code==="ENOENT")return this[Cc]="w",this[FA]();throw r}this[wg](null,e)}[xo](){if(this[Ig]&&typeof this[Jt]=="number"){try{ls.closeSync(this[Jt])}catch(e){}this[Jt]=null,this.emit("close")}}[gB](e){try{this[mc](null,ls.writeSync(this[Jt],e,0,e.length,this[Ec]))}catch(r){this[mc](r,0)}}},LNe=(t,e,r,i)=>{let n=(o,a)=>i(o,a,e),s=new NNe;s.oncomplete=n,lB.writeBuffers(t,e,r,s)};sd.ReadStream=jD;sd.ReadStreamSync=mV;sd.WriteStream=YD;sd.WriteStreamSync=EV});var ld=E((Llt,IV)=>{"use strict";var TNe=Vw(),Flt=require("path"),MNe=Cg(),ONe=require("events"),KNe=Rh(),UNe=1024*1024,HNe=id(),yV=zw(),GNe=fD(),qD=Buffer.from([31,139]),cs=Symbol("state"),Ic=Symbol("writeEntry"),xa=Symbol("readEntry"),JD=Symbol("nextEntry"),wV=Symbol("processEntry"),us=Symbol("extendedHeader"),ad=Symbol("globalExtendedHeader"),TA=Symbol("meta"),BV=Symbol("emitMeta"),Ar=Symbol("buffer"),ka=Symbol("queue"),yc=Symbol("ended"),QV=Symbol("emittedEnd"),wc=Symbol("emit"),Qn=Symbol("unzip"),hB=Symbol("consumeChunk"),pB=Symbol("consumeChunkSub"),WD=Symbol("consumeBody"),bV=Symbol("consumeMeta"),vV=Symbol("consumeHeader"),dB=Symbol("consuming"),zD=Symbol("bufferConcat"),VD=Symbol("maybeEnd"),Ad=Symbol("writing"),MA=Symbol("aborted"),CB=Symbol("onDone"),Bc=Symbol("sawValidEntry"),mB=Symbol("sawNullBlock"),EB=Symbol("sawEOF"),jNe=t=>!0;IV.exports=TNe(class extends ONe{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Bc]=null,this.on(CB,r=>{(this[cs]==="begin"||this[Bc]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(CB,e.ondone):this.on(CB,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||UNe,this.filter=typeof e.filter=="function"?e.filter:jNe,this.writable=!0,this.readable=!1,this[ka]=new KNe,this[Ar]=null,this[xa]=null,this[Ic]=null,this[cs]="begin",this[TA]="",this[us]=null,this[ad]=null,this[yc]=!1,this[Qn]=null,this[MA]=!1,this[mB]=!1,this[EB]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[vV](e,r){this[Bc]===null&&(this[Bc]=!1);let i;try{i=new MNe(e,r,this[us],this[ad])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[mB]?(this[EB]=!0,this[cs]==="begin"&&(this[cs]="header"),this[wc]("eof")):(this[mB]=!0,this[wc]("nullBlock"));else if(this[mB]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Ic]=new HNe(i,this[us],this[ad]);if(!this[Bc])if(s.remain){let o=()=>{s.invalid||(this[Bc]=!0)};s.on("end",o)}else this[Bc]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[wc]("ignoredEntry",s),this[cs]="ignore",s.resume()):s.size>0&&(this[TA]="",s.on("data",o=>this[TA]+=o),this[cs]="meta"):(this[us]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[wc]("ignoredEntry",s),this[cs]=s.remain?"ignore":"header",s.resume()):(s.remain?this[cs]="body":(this[cs]="header",s.end()),this[xa]?this[ka].push(s):(this[ka].push(s),this[JD]())))}}}[wV](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[xa]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[JD]()),r=!1)):(this[xa]=null,r=!1),r}[JD](){do;while(this[wV](this[ka].shift()));if(!this[ka].length){let e=this[xa];!e||e.flowing||e.size===e.remain?this[Ad]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[WD](e,r){let i=this[Ic],n=i.blockRemain,s=n>=e.length&&r===0?e:e.slice(r,r+n);return i.write(s),i.blockRemain||(this[cs]="header",this[Ic]=null,i.end()),s.length}[bV](e,r){let i=this[Ic],n=this[WD](e,r);return this[Ic]||this[BV](i),n}[wc](e,r,i){!this[ka].length&&!this[xa]?this.emit(e,r,i):this[ka].push([e,r,i])}[BV](e){switch(this[wc]("meta",this[TA]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[us]=yV.parse(this[TA],this[us],!1);break;case"GlobalExtendedHeader":this[ad]=yV.parse(this[TA],this[ad],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[us]=this[us]||Object.create(null),this[us].path=this[TA].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[us]=this[us]||Object.create(null),this[us].linkpath=this[TA].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[MA]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[MA])return;if(this[Qn]===null&&e){if(this[Ar]&&(e=Buffer.concat([this[Ar],e]),this[Ar]=null),e.lengththis[hB](s)),this[Qn].on("error",s=>this.abort(s)),this[Qn].on("end",s=>{this[yc]=!0,this[hB]()}),this[Ad]=!0;let n=this[Qn][i?"end":"write"](e);return this[Ad]=!1,n}}this[Ad]=!0,this[Qn]?this[Qn].write(e):this[hB](e),this[Ad]=!1;let r=this[ka].length?!1:this[xa]?this[xa].flowing:!0;return!r&&!this[ka].length&&this[xa].once("drain",i=>this.emit("drain")),r}[zD](e){e&&!this[MA]&&(this[Ar]=this[Ar]?Buffer.concat([this[Ar],e]):e)}[VD](){if(this[yc]&&!this[QV]&&!this[MA]&&!this[dB]){this[QV]=!0;let e=this[Ic];if(e&&e.blockRemain){let r=this[Ar]?this[Ar].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Ar]&&e.write(this[Ar]),e.end()}this[wc](CB)}}[hB](e){if(this[dB])this[zD](e);else if(!e&&!this[Ar])this[VD]();else{if(this[dB]=!0,this[Ar]){this[zD](e);let r=this[Ar];this[Ar]=null,this[pB](r)}else this[pB](e);for(;this[Ar]&&this[Ar].length>=512&&!this[MA]&&!this[EB];){let r=this[Ar];this[Ar]=null,this[pB](r)}this[dB]=!1}(!this[Ar]||this[yc])&&this[VD]()}[pB](e){let r=0,i=e.length;for(;r+512<=i&&!this[MA]&&!this[EB];)switch(this[cs]){case"begin":case"header":this[vV](e,r),r+=512;break;case"ignore":case"body":r+=this[WD](e,r);break;case"meta":r+=this[bV](e,r);break;default:throw new Error("invalid state: "+this[cs])}r{"use strict";var YNe=fg(),xV=ld(),vg=require("fs"),qNe=bg(),kV=require("path"),Tlt=SV.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=YNe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&WNe(i,e),i.noResume||JNe(i),i.file&&i.sync?zNe(i):i.file?VNe(i,r):PV(i)},JNe=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},WNe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||kV.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(kV.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},zNe=t=>{let e=PV(t),r=t.file,i=!0,n;try{let s=vg.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new xV(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),vg.stat(n,(l,c)=>{if(l)a(l);else{let u=new qNe.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},PV=t=>new xV(t)});var TV=E((Ult,DV)=>{"use strict";var _Ne=fg(),yB=AB(),Olt=require("fs"),RV=bg(),FV=IB(),NV=require("path"),Klt=DV.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=_Ne(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?XNe(i,e):i.file?ZNe(i,e,r):i.sync?$Ne(i,e):eLe(i,e)},XNe=(t,e)=>{let r=new yB.Sync(t),i=new RV.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(i),LV(r,e)},ZNe=(t,e,r)=>{let i=new yB(t),n=new RV.WriteStream(t.file,{mode:t.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return _D(i,e),r?s.then(r,r):s},LV=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?FV({file:NV.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},_D=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return FV({file:NV.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>_D(t,e));t.add(r)}t.end()},$Ne=(t,e)=>{let r=new yB.Sync(t);return LV(r,e),r},eLe=(t,e)=>{let r=new yB(t);return _D(r,e),r}});var XD=E((jlt,MV)=>{"use strict";var tLe=fg(),OV=AB(),Hlt=ld(),gs=require("fs"),KV=bg(),UV=IB(),HV=require("path"),GV=Cg(),Glt=MV.exports=(t,e,r)=>{let i=tLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?rLe(i,e):iLe(i,e,r)},rLe=(t,e)=>{let r=new OV.Sync(t),i=!0,n,s;try{try{n=gs.openSync(t.file,"r+")}catch(l){if(l.code==="ENOENT")n=gs.openSync(t.file,"w+");else throw l}let o=gs.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(l.path,l.mtime)}i=!1,nLe(t,r,s,n,e)}finally{if(i)try{gs.closeSync(n)}catch(o){}}},nLe=(t,e,r,i,n)=>{let s=new KV.WriteStreamSync(t.file,{fd:i,start:r});e.pipe(s),sLe(e,n)},iLe=(t,e,r)=>{e=Array.from(e);let i=new OV(t),n=(o,a,l)=>{let c=(p,d)=>{p?gs.close(o,m=>l(p)):l(null,d)},u=0;if(a===0)return c(null,0);let g=0,f=Buffer.alloc(512),h=(p,d)=>{if(p)return c(p);if(g+=d,g<512&&d)return gs.read(o,f,g,f.length-g,u+g,h);if(u===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(g<512)return c(null,u);let m=new GV(f);if(!m.cksumValid)return c(null,u);let I=512*Math.ceil(m.size/512);if(u+I+512>a||(u+=I+512,u>=a))return c(null,u);t.mtimeCache&&t.mtimeCache.set(m.path,m.mtime),g=0,gs.read(o,f,0,512,u,h)};gs.read(o,f,0,512,u,h)},s=new Promise((o,a)=>{i.on("error",a);let l="r+",c=(u,g)=>{if(u&&u.code==="ENOENT"&&l==="r+")return l="w+",gs.open(t.file,l,c);if(u)return a(u);gs.fstat(g,(f,h)=>{if(f)return a(f);n(g,h.size,(p,d)=>{if(p)return a(p);let m=new KV.WriteStream(t.file,{fd:g,start:d});i.pipe(m),m.on("error",a),m.on("close",o),jV(i,e)})})};gs.open(t.file,l,c)});return r?s.then(r,r):s},sLe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?UV({file:HV.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},jV=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return UV({file:HV.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>jV(t,e));t.add(r)}t.end()}});var qV=E((qlt,YV)=>{"use strict";var oLe=fg(),aLe=XD(),Ylt=YV.exports=(t,e,r)=>{let i=oLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),ALe(i),aLe(i,e,r)},ALe=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,i)=>e(r,i)&&!(t.mtimeCache.get(r)>i.mtime):(r,i)=>!(t.mtimeCache.get(r)>i.mtime)}});var zV=E((Jlt,JV)=>{var{promisify:WV}=require("util"),OA=require("fs"),lLe=t=>{if(!t)t={mode:511,fs:OA};else if(typeof t=="object")t=P({mode:511,fs:OA},t);else if(typeof t=="number")t={mode:t,fs:OA};else if(typeof t=="string")t={mode:parseInt(t,8),fs:OA};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||OA.mkdir,t.mkdirAsync=WV(t.mkdir),t.stat=t.stat||t.fs.stat||OA.stat,t.statAsync=WV(t.stat),t.statSync=t.statSync||t.fs.statSync||OA.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||OA.mkdirSync,t};JV.exports=lLe});var _V=E((Wlt,VV)=>{var cLe=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:uLe,parse:gLe}=require("path"),fLe=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=uLe(t),cLe==="win32"){let e=/[*|"<>?:]/,{root:r}=gLe(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};VV.exports=fLe});var t7=E((zlt,XV)=>{var{dirname:ZV}=require("path"),$V=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?$V(t,ZV(e),e):void 0),e7=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?e7(t,ZV(e),e):void 0}};XV.exports={findMade:$V,findMadeSync:e7}});var eR=E((Vlt,r7)=>{var{dirname:i7}=require("path"),ZD=(t,e,r)=>{e.recursive=!1;let i=i7(t);return i===t?e.mkdirAsync(t,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(t,e).then(()=>r||t,n=>{if(n.code==="ENOENT")return ZD(i,e).then(s=>ZD(t,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},$D=(t,e,r)=>{let i=i7(t);if(e.recursive=!1,i===t)try{return e.mkdirSync(t,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(t,e),r||t}catch(n){if(n.code==="ENOENT")return $D(t,e,$D(i,e,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(t).isDirectory())throw n}catch(s){throw n}}};r7.exports={mkdirpManual:ZD,mkdirpManualSync:$D}});var o7=E((_lt,n7)=>{var{dirname:s7}=require("path"),{findMade:hLe,findMadeSync:pLe}=t7(),{mkdirpManual:dLe,mkdirpManualSync:CLe}=eR(),mLe=(t,e)=>(e.recursive=!0,s7(t)===t?e.mkdirAsync(t,e):hLe(e,t).then(i=>e.mkdirAsync(t,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return dLe(t,e);throw n}))),ELe=(t,e)=>{if(e.recursive=!0,s7(t)===t)return e.mkdirSync(t,e);let i=pLe(e,t);try{return e.mkdirSync(t,e),i}catch(n){if(n.code==="ENOENT")return CLe(t,e);throw n}};n7.exports={mkdirpNative:mLe,mkdirpNativeSync:ELe}});var c7=E((Xlt,a7)=>{var A7=require("fs"),ILe=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,tR=ILe.replace(/^v/,"").split("."),l7=+tR[0]>10||+tR[0]==10&&+tR[1]>=12,yLe=l7?t=>t.mkdir===A7.mkdir:()=>!1,wLe=l7?t=>t.mkdirSync===A7.mkdirSync:()=>!1;a7.exports={useNative:yLe,useNativeSync:wLe}});var d7=E((Zlt,u7)=>{var Sg=zV(),xg=_V(),{mkdirpNative:g7,mkdirpNativeSync:f7}=o7(),{mkdirpManual:h7,mkdirpManualSync:p7}=eR(),{useNative:BLe,useNativeSync:QLe}=c7(),kg=(t,e)=>(t=xg(t),e=Sg(e),BLe(e)?g7(t,e):h7(t,e)),bLe=(t,e)=>(t=xg(t),e=Sg(e),QLe(e)?f7(t,e):p7(t,e));kg.sync=bLe;kg.native=(t,e)=>g7(xg(t),Sg(e));kg.manual=(t,e)=>h7(xg(t),Sg(e));kg.nativeSync=(t,e)=>f7(xg(t),Sg(e));kg.manualSync=(t,e)=>p7(xg(t),Sg(e));u7.exports=kg});var B7=E(($lt,C7)=>{"use strict";var fs=require("fs"),Qc=require("path"),vLe=fs.lchown?"lchown":"chown",SLe=fs.lchownSync?"lchownSync":"chownSync",m7=fs.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),E7=(t,e,r)=>{try{return fs[SLe](t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},xLe=(t,e,r)=>{try{return fs.chownSync(t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},kLe=m7?(t,e,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):fs.chown(t,e,r,i)}:(t,e,r,i)=>i,rR=m7?(t,e,r)=>{try{return E7(t,e,r)}catch(i){if(i.code!=="EISDIR")throw i;xLe(t,e,r)}}:(t,e,r)=>E7(t,e,r),PLe=process.version,I7=(t,e,r)=>fs.readdir(t,e,r),DLe=(t,e)=>fs.readdirSync(t,e);/^v4\./.test(PLe)&&(I7=(t,e,r)=>fs.readdir(t,r));var wB=(t,e,r,i)=>{fs[vLe](t,e,r,kLe(t,e,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},y7=(t,e,r,i,n)=>{if(typeof e=="string")return fs.lstat(Qc.resolve(t,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,y7(t,o,r,i,n)});if(e.isDirectory())iR(Qc.resolve(t,e.name),r,i,s=>{if(s)return n(s);let o=Qc.resolve(t,e.name);wB(o,r,i,n)});else{let s=Qc.resolve(t,e.name);wB(s,r,i,n)}},iR=(t,e,r,i)=>{I7(t,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return wB(t,e,r,i);let o=s.length,a=null,l=c=>{if(!a){if(c)return i(a=c);if(--o==0)return wB(t,e,r,i)}};s.forEach(c=>y7(t,c,e,r,l))})},RLe=(t,e,r,i)=>{if(typeof e=="string")try{let n=fs.lstatSync(Qc.resolve(t,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&w7(Qc.resolve(t,e.name),r,i),rR(Qc.resolve(t,e.name),r,i)},w7=(t,e,r)=>{let i;try{i=DLe(t,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return rR(t,e,r);throw n}return i&&i.length&&i.forEach(n=>RLe(t,n,e,r)),rR(t,e,r)};C7.exports=iR;iR.sync=w7});var S7=E((rct,nR)=>{"use strict";var Q7=d7(),hs=require("fs"),BB=require("path"),b7=B7(),sR=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},cd=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}},ect=nR.exports=(t,e,r)=>{let i=e.umask,n=e.mode|448,s=(n&i)!=0,o=e.uid,a=e.gid,l=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,u=e.unlink,g=e.cache,f=e.cwd,h=(m,I)=>{m?r(m):(g.set(t,!0),I&&l?b7(I,o,a,B=>h(B)):s?hs.chmod(t,n,r):r())};if(g&&g.get(t)===!0)return h();if(t===f)return hs.stat(t,(m,I)=>{(m||!I.isDirectory())&&(m=new cd(t,m&&m.code||"ENOTDIR")),h(m)});if(c)return Q7(t,{mode:n}).then(m=>h(null,m),h);let d=BB.relative(f,t).split(/\/|\\/);QB(f,d,n,g,u,f,null,h)},QB=(t,e,r,i,n,s,o,a)=>{if(!e.length)return a(null,o);let l=e.shift(),c=t+"/"+l;if(i.get(c))return QB(c,e,r,i,n,s,o,a);hs.mkdir(c,r,v7(c,e,r,i,n,s,o,a))},v7=(t,e,r,i,n,s,o,a)=>l=>{if(l){if(l.path&&BB.dirname(l.path)===s&&(l.code==="ENOTDIR"||l.code==="ENOENT"))return a(new cd(s,l.code));hs.lstat(t,(c,u)=>{if(c)a(c);else if(u.isDirectory())QB(t,e,r,i,n,s,o,a);else if(n)hs.unlink(t,g=>{if(g)return a(g);hs.mkdir(t,r,v7(t,e,r,i,n,s,o,a))});else{if(u.isSymbolicLink())return a(new sR(t,t+"/"+e.join("/")));a(l)}})}else o=o||t,QB(t,e,r,i,n,s,o,a)},tct=nR.exports.sync=(t,e)=>{let r=e.umask,i=e.mode|448,n=(i&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),l=e.preserve,c=e.unlink,u=e.cache,g=e.cwd,f=m=>{u.set(t,!0),m&&a&&b7.sync(m,s,o),n&&hs.chmodSync(t,i)};if(u&&u.get(t)===!0)return f();if(t===g){let m=!1,I="ENOTDIR";try{m=hs.statSync(t).isDirectory()}catch(B){I=B.code}finally{if(!m)throw new cd(t,I)}f();return}if(l)return f(Q7.sync(t,i));let p=BB.relative(g,t).split(/\/|\\/),d=null;for(let m=p.shift(),I=g;m&&(I+="/"+m);m=p.shift())if(!u.get(I))try{hs.mkdirSync(I,i),d=d||I,u.set(I,!0)}catch(B){if(B.path&&BB.dirname(B.path)===g&&(B.code==="ENOTDIR"||B.code==="ENOENT"))return new cd(g,B.code);let b=hs.lstatSync(I);if(b.isDirectory()){u.set(I,!0);continue}else if(c){hs.unlinkSync(I),hs.mkdirSync(I,i),d=d||I,u.set(I,!0);continue}else if(b.isSymbolicLink())return new sR(I,I+"/"+p.join("/"))}return f(d)}});var P7=E((ict,x7)=>{var k7=require("assert");x7.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\\/]/).slice(0,-1).reduce((g,f)=>g.length?g.concat(r(g[g.length-1],f)):[f],[]),n=new Set,s=u=>{let g=e.get(u);if(!g)throw new Error("function does not have any path reservations");return{paths:g.paths.map(f=>t.get(f)),dirs:[...g.dirs].map(f=>t.get(f))}},o=u=>{let{paths:g,dirs:f}=s(u);return g.every(h=>h[0]===u)&&f.every(h=>h[0]instanceof Set&&h[0].has(u))},a=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>l(u)),!0),l=u=>{if(!n.has(u))return!1;let{paths:g,dirs:f}=e.get(u),h=new Set;return g.forEach(p=>{let d=t.get(p);k7.equal(d[0],u),d.length===1?t.delete(p):(d.shift(),typeof d[0]=="function"?h.add(d[0]):d[0].forEach(m=>h.add(m)))}),f.forEach(p=>{let d=t.get(p);k7(d[0]instanceof Set),d[0].size===1&&d.length===1?t.delete(p):d[0].size===1?(d.shift(),h.add(d[0])):d[0].delete(u)}),n.delete(u),h.forEach(p=>a(p)),!0};return{check:o,reserve:(u,g)=>{let f=new Set(u.map(h=>i(h)).reduce((h,p)=>h.concat(p)));return e.set(g,{dirs:f,paths:u}),u.forEach(h=>{let p=t.get(h);p?p.push(g):t.set(h,[g])}),f.forEach(h=>{let p=t.get(h);p?p[p.length-1]instanceof Set?p[p.length-1].add(g):p.push(new Set([g])):t.set(h,[new Set([g])])}),a(g)}}}});var F7=E((nct,D7)=>{var FLe=process.env.__FAKE_PLATFORM__||process.platform,NLe=FLe==="win32",LLe=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:TLe,O_TRUNC:MLe,O_WRONLY:OLe,UV_FS_O_FILEMAP:R7=0}=LLe.constants,KLe=NLe&&!!R7,ULe=512*1024,HLe=R7|MLe|TLe|OLe;D7.exports=KLe?t=>t"w"});var hR=E((Act,N7)=>{"use strict";var GLe=require("assert"),sct=require("events").EventEmitter,jLe=ld(),Ut=require("fs"),YLe=bg(),Pa=require("path"),oR=S7(),oct=oR.sync,L7=yD(),qLe=P7(),T7=Symbol("onEntry"),aR=Symbol("checkFs"),M7=Symbol("checkFs2"),AR=Symbol("isReusable"),Da=Symbol("makeFs"),lR=Symbol("file"),cR=Symbol("directory"),bB=Symbol("link"),O7=Symbol("symlink"),K7=Symbol("hardlink"),U7=Symbol("unsupported"),act=Symbol("unknown"),H7=Symbol("checkPath"),Pg=Symbol("mkdir"),nn=Symbol("onError"),vB=Symbol("pending"),G7=Symbol("pend"),Dg=Symbol("unpend"),uR=Symbol("ended"),gR=Symbol("maybeClose"),fR=Symbol("skip"),ud=Symbol("doChown"),gd=Symbol("uid"),fd=Symbol("gid"),j7=require("crypto"),Y7=F7(),SB=()=>{throw new Error("sync function called cb somehow?!?")},JLe=(t,e)=>{if(process.platform!=="win32")return Ut.unlink(t,e);let r=t+".DELETE."+j7.randomBytes(16).toString("hex");Ut.rename(t,r,i=>{if(i)return e(i);Ut.unlink(r,e)})},WLe=t=>{if(process.platform!=="win32")return Ut.unlinkSync(t);let e=t+".DELETE."+j7.randomBytes(16).toString("hex");Ut.renameSync(t,e),Ut.unlinkSync(e)},q7=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,xB=class extends jLe{constructor(e){if(e||(e={}),e.ondone=r=>{this[uR]=!0,this[gR]()},super(e),this.reservations=qLe(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[vB]=0,this[uR]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Pa.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[T7](r))}warn(e,r,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,r,i)}[gR](){this[uR]&&this[vB]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[H7](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Pa.win32.isAbsolute(r)){let i=Pa.win32.parse(r);e.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Pa.win32.parse(e.path);e.path=r.root===""?L7.encode(e.path):r.root+L7.encode(e.path.substr(r.root.length))}return Pa.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Pa.resolve(this.cwd,e.path),!0}[T7](e){if(!this[H7](e))return e.resume();switch(GLe.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[aR](e);case"CharacterDevice":case"BlockDevice":case"FIFO":return this[U7](e)}}[nn](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[Dg](),r.resume())}[Pg](e,r,i){oR(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r},i)}[ud](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[gd](e){return q7(this.uid,e.uid,this.processUid)}[fd](e){return q7(this.gid,e.gid,this.processGid)}[lR](e,r){let i=e.mode&4095||this.fmode,n=new YLe.WriteStream(e.absolute,{flags:Y7(e.size),mode:i,autoClose:!1});n.on("error",l=>this[nn](l,e));let s=1,o=l=>{if(l)return this[nn](l,e);--s==0&&Ut.close(n.fd,c=>{r(),c?this[nn](c,e):this[Dg]()})};n.on("finish",l=>{let c=e.absolute,u=n.fd;if(e.mtime&&!this.noMtime){s++;let g=e.atime||new Date,f=e.mtime;Ut.futimes(u,g,f,h=>h?Ut.utimes(c,g,f,p=>o(p&&h)):o())}if(this[ud](e)){s++;let g=this[gd](e),f=this[fd](e);Ut.fchown(u,g,f,h=>h?Ut.chown(c,g,f,p=>o(p&&h)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.pipe(n)}[cR](e,r){let i=e.mode&4095||this.dmode;this[Pg](e.absolute,i,n=>{if(n)return r(),this[nn](n,e);let s=1,o=a=>{--s==0&&(r(),this[Dg](),e.resume())};e.mtime&&!this.noMtime&&(s++,Ut.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[ud](e)&&(s++,Ut.chown(e.absolute,this[gd](e),this[fd](e),o)),o()})}[U7](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[O7](e,r){this[bB](e,e.linkpath,"symlink",r)}[K7](e,r){this[bB](e,Pa.resolve(this.cwd,e.linkpath),"link",r)}[G7](){this[vB]++}[Dg](){this[vB]--,this[gR]()}[fR](e){this[Dg](),e.resume()}[AR](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[aR](e){this[G7]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,i=>this[M7](e,i))}[M7](e,r){this[Pg](Pa.dirname(e.absolute),this.dmode,i=>{if(i)return r(),this[nn](i,e);Ut.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[fR](e),r()):n||this[AR](e,s)?this[Da](null,e,r):s.isDirectory()?e.type==="Directory"?!e.mode||(s.mode&4095)===e.mode?this[Da](null,e,r):Ut.chmod(e.absolute,e.mode,o=>this[Da](o,e,r)):Ut.rmdir(e.absolute,o=>this[Da](o,e,r)):JLe(e.absolute,o=>this[Da](o,e,r))})})}[Da](e,r,i){if(e)return this[nn](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[lR](r,i);case"Link":return this[K7](r,i);case"SymbolicLink":return this[O7](r,i);case"Directory":case"GNUDumpDir":return this[cR](r,i)}}[bB](e,r,i,n){Ut[i](r,e.absolute,s=>{if(s)return this[nn](s,e);n(),this[Dg](),e.resume()})}},J7=class extends xB{constructor(e){super(e)}[aR](e){let r=this[Pg](Pa.dirname(e.absolute),this.dmode,SB);if(r)return this[nn](r,e);try{let i=Ut.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[fR](e);if(this[AR](e,i))return this[Da](null,e,SB);try{return i.isDirectory()?e.type==="Directory"?e.mode&&(i.mode&4095)!==e.mode&&Ut.chmodSync(e.absolute,e.mode):Ut.rmdirSync(e.absolute):WLe(e.absolute),this[Da](null,e,SB)}catch(n){return this[nn](n,e)}}catch(i){return this[Da](null,e,SB)}}[lR](e,r){let i=e.mode&4095||this.fmode,n=l=>{let c;try{Ut.closeSync(o)}catch(u){c=u}(l||c)&&this[nn](l||c,e)},s,o;try{o=Ut.openSync(e.absolute,Y7(e.size),i)}catch(l){return n(l)}let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.on("data",l=>{try{Ut.writeSync(o,l,0,l.length)}catch(c){n(c)}}),a.on("end",l=>{let c=null;if(e.mtime&&!this.noMtime){let u=e.atime||new Date,g=e.mtime;try{Ut.futimesSync(o,u,g)}catch(f){try{Ut.utimesSync(e.absolute,u,g)}catch(h){c=f}}}if(this[ud](e)){let u=this[gd](e),g=this[fd](e);try{Ut.fchownSync(o,u,g)}catch(f){try{Ut.chownSync(e.absolute,u,g)}catch(h){c=c||f}}}n(c)})}[cR](e,r){let i=e.mode&4095||this.dmode,n=this[Pg](e.absolute,i);if(n)return this[nn](n,e);if(e.mtime&&!this.noMtime)try{Ut.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[ud](e))try{Ut.chownSync(e.absolute,this[gd](e),this[fd](e))}catch(s){}e.resume()}[Pg](e,r){try{return oR.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[bB](e,r,i,n){try{Ut[i+"Sync"](r,e.absolute),e.resume()}catch(s){return this[nn](s,e)}}};xB.Sync=J7;N7.exports=xB});var X7=E((cct,W7)=>{"use strict";var zLe=fg(),kB=hR(),z7=require("fs"),V7=bg(),_7=require("path"),lct=W7.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=zLe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&VLe(i,e),i.file&&i.sync?_Le(i):i.file?XLe(i,r):i.sync?ZLe(i):$Le(i)},VLe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||_7.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(_7.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},_Le=t=>{let e=new kB.Sync(t),r=t.file,i=!0,n,s=z7.statSync(r),o=t.maxReadSize||16*1024*1024;new V7.ReadStreamSync(r,{readSize:o,size:s.size}).pipe(e)},XLe=(t,e)=>{let r=new kB(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),z7.stat(n,(l,c)=>{if(l)a(l);else{let u=new V7.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},ZLe=t=>new kB.Sync(t),$Le=t=>new kB(t)});var Z7=E($r=>{"use strict";$r.c=$r.create=TV();$r.r=$r.replace=XD();$r.t=$r.list=IB();$r.u=$r.update=qV();$r.x=$r.extract=X7();$r.Pack=AB();$r.Unpack=hR();$r.Parse=ld();$r.ReadEntry=id();$r.WriteEntry=xD();$r.Header=Cg();$r.Pax=zw();$r.types=rd()});var e_=E((gct,pR)=>{"use strict";var eTe=Object.prototype.hasOwnProperty,sn="~";function hd(){}Object.create&&(hd.prototype=Object.create(null),new hd().__proto__||(sn=!1));function tTe(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function $7(t,e,r,i,n){if(typeof r!="function")throw new TypeError("The listener must be a function");var s=new tTe(r,i||t,n),o=sn?sn+e:e;return t._events[o]?t._events[o].fn?t._events[o]=[t._events[o],s]:t._events[o].push(s):(t._events[o]=s,t._eventsCount++),t}function PB(t,e){--t._eventsCount==0?t._events=new hd:delete t._events[e]}function Ti(){this._events=new hd,this._eventsCount=0}Ti.prototype.eventNames=function(){var e=[],r,i;if(this._eventsCount===0)return e;for(i in r=this._events)eTe.call(r,i)&&e.push(sn?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(r)):e};Ti.prototype.listeners=function(e){var r=sn?sn+e:e,i=this._events[r];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,s=i.length,o=new Array(s);n{"use strict";t_.exports=(t,e)=>(e=e||(()=>{}),t.then(r=>new Promise(i=>{i(e())}).then(()=>r),r=>new Promise(i=>{i(e())}).then(()=>{throw r})))});var n_=E((hct,DB)=>{"use strict";var rTe=r_(),dR=class extends Error{constructor(e){super(e);this.name="TimeoutError"}},i_=(t,e,r)=>new Promise((i,n)=>{if(typeof e!="number"||e<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(e===Infinity){i(t);return}let s=setTimeout(()=>{if(typeof r=="function"){try{i(r())}catch(l){n(l)}return}let o=typeof r=="string"?r:`Promise timed out after ${e} milliseconds`,a=r instanceof Error?r:new dR(o);typeof t.cancel=="function"&&t.cancel(),n(a)},e);rTe(t.then(i,n),()=>{clearTimeout(s)})});DB.exports=i_;DB.exports.default=i_;DB.exports.TimeoutError=dR});var s_=E(CR=>{"use strict";Object.defineProperty(CR,"__esModule",{value:!0});function iTe(t,e,r){let i=0,n=t.length;for(;n>0;){let s=n/2|0,o=i+s;r(t[o],e)<=0?(i=++o,n-=s+1):n=s}return i}CR.default=iTe});var a_=E(mR=>{"use strict";Object.defineProperty(mR,"__esModule",{value:!0});var nTe=s_(),o_=class{constructor(){this._queue=[]}enqueue(e,r){r=Object.assign({priority:0},r);let i={priority:r.priority,run:e};if(this.size&&this._queue[this.size-1].priority>=r.priority){this._queue.push(i);return}let n=nTe.default(this._queue,i,(s,o)=>o.priority-s.priority);this._queue.splice(n,0,i)}dequeue(){let e=this._queue.shift();return e==null?void 0:e.run}filter(e){return this._queue.filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return this._queue.length}};mR.default=o_});var c_=E(ER=>{"use strict";Object.defineProperty(ER,"__esModule",{value:!0});var sTe=e_(),A_=n_(),oTe=a_(),RB=()=>{},aTe=new A_.TimeoutError,l_=class extends sTe{constructor(e){var r,i,n,s;super();if(this._intervalCount=0,this._intervalEnd=0,this._pendingCount=0,this._resolveEmpty=RB,this._resolveIdle=RB,e=Object.assign({carryoverConcurrencyCount:!1,intervalCap:Infinity,interval:0,concurrency:Infinity,autoStart:!0,queueClass:oTe.default},e),!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(i=(r=e.intervalCap)===null||r===void 0?void 0:r.toString())!==null&&i!==void 0?i:""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(s=(n=e.interval)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""}\` (${typeof e.interval})`);this._carryoverConcurrencyCount=e.carryoverConcurrencyCount,this._isIntervalIgnored=e.intervalCap===Infinity||e.interval===0,this._intervalCap=e.intervalCap,this._interval=e.interval,this._queue=new e.queueClass,this._queueClass=e.queueClass,this.concurrency=e.concurrency,this._timeout=e.timeout,this._throwOnTimeout=e.throwOnTimeout===!0,this._isPaused=e.autoStart===!1}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},r)),!0}return!1}_tryToStartAnother(){if(this._queue.size===0)return this._intervalId&&clearInterval(this._intervalId),this._intervalId=void 0,this._resolvePromises(),!1;if(!this._isPaused){let e=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){let r=this._queue.dequeue();return r?(this.emit("active"),r(),e&&this._initializeIntervalIfNeeded(),!0):!1}}return!1}_initializeIntervalIfNeeded(){this._isIntervalIgnored||this._intervalId!==void 0||(this._intervalId=setInterval(()=>{this._onInterval()},this._interval),this._intervalEnd=Date.now()+this._interval)}_onInterval(){this._intervalCount===0&&this._pendingCount===0&&this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0),this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0,this._processQueue()}_processQueue(){for(;this._tryToStartAnother(););}get concurrency(){return this._concurrency}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this._concurrency=e,this._processQueue()}async add(e,r={}){return new Promise((i,n)=>{let s=async()=>{this._pendingCount++,this._intervalCount++;try{let o=this._timeout===void 0&&r.timeout===void 0?e():A_.default(Promise.resolve(e()),r.timeout===void 0?this._timeout:r.timeout,()=>{(r.throwOnTimeout===void 0?this._throwOnTimeout:r.throwOnTimeout)&&n(aTe)});i(await o)}catch(o){n(o)}this._next()};this._queue.enqueue(s,r),this._tryToStartAnother(),this.emit("add")})}async addAll(e,r){return Promise.all(e.map(async i=>this.add(i,r)))}start(){return this._isPaused?(this._isPaused=!1,this._processQueue(),this):this}pause(){this._isPaused=!0}clear(){this._queue=new this._queueClass}async onEmpty(){if(this._queue.size!==0)return new Promise(e=>{let r=this._resolveEmpty;this._resolveEmpty=()=>{r(),e()}})}async onIdle(){if(!(this._pendingCount===0&&this._queue.size===0))return new Promise(e=>{let r=this._resolveIdle;this._resolveIdle=()=>{r(),e()}})}get size(){return this._queue.size}sizeBy(e){return this._queue.filter(e).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(e){this._timeout=e}};ER.default=l_});var p_=E((Ect,h_)=>{var yR;h_.exports.getContent=()=>(typeof yR=="undefined"&&(yR=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),yR)});var y_=E((wR,I_)=>{(function(t,e){typeof wR=="object"?I_.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(wR,function(){function t(n,s){var o=s?"\u2514":"\u251C";return n?o+="\u2500 ":o+="\u2500\u2500\u2510",o}function e(n,s){var o=[];for(var a in n)!n.hasOwnProperty(a)||s&&typeof n[a]=="function"||o.push(a);return o}function r(n,s,o,a,l,c,u){var g="",f=0,h,p,d=a.slice(0);if(d.push([s,o])&&a.length>0&&(a.forEach(function(I,B){B>0&&(g+=(I[1]?" ":"\u2502")+" "),!p&&I[0]===s&&(p=!0)}),g+=t(n,o)+n,l&&(typeof s!="object"||s instanceof Date)&&(g+=": "+s),p&&(g+=" (circular ref.)"),u(g)),!p&&typeof s=="object"){var m=e(s,c);m.forEach(function(I){h=++f===m.length,r(I,s[I],h,d,l,c,u)})}}var i={};return i.asLines=function(n,s,o,a){var l=typeof o!="function"?o:!1;r(".",n,!1,[],s,l,a||o)},i.asTree=function(n,s,o){var a="";return r(".",n,!1,[],s,o,function(l){a+=l+` -`}),a},i})});var x_=E((Uct,bR)=>{"use strict";var pTe=t=>{let e=!1,r=!1,i=!1;for(let n=0;n{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(t)?t=t.map(n=>n.trim()).filter(n=>n.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=pTe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),r(t))};bR.exports=S_;bR.exports.default=S_});var Na=E(TR=>{"use strict";Object.defineProperty(TR,"__esModule",{value:!0});TR.default=L_;function L_(){}L_.prototype={diff:function(e,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(d){return n?(setTimeout(function(){n(void 0,d)},0),!0):d}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var a=r.length,l=e.length,c=1,u=a+l,g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],r,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(r),count:r.length}]);function h(){for(var d=-1*c;d<=c;d+=2){var m=void 0,I=g[d-1],B=g[d+1],b=(B?B.newPos:0)-d;I&&(g[d-1]=void 0);var R=I&&I.newPos+1=a&&b+1>=l)return o(yTe(s,m.components,r,e,s.useLongestToken));g[d]=m}c++}if(n)(function d(){setTimeout(function(){if(c>u)return n();h()||d()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,r,i){var n=e[e.length-1];n&&n.added===r&&n.removed===i?e[e.length-1]={count:n.count+1,added:r,removed:i}:e.push({count:1,added:r,removed:i})},extractCommon:function(e,r,i,n){for(var s=r.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1h.length?d:h}),c.value=t.join(u)}else c.value=t.join(r.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&t.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function wTe(t){return{newPos:t.newPos,components:t.components.slice(0)}}});var M_=E(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});Cd.diffChars=BTe;Cd.characterDiff=void 0;var bTe=QTe(Na());function QTe(t){return t&&t.__esModule?t:{default:t}}var T_=new bTe.default;Cd.characterDiff=T_;function BTe(t,e,r){return T_.diff(t,e,r)}});var OR=E(MR=>{"use strict";Object.defineProperty(MR,"__esModule",{value:!0});MR.generateOptions=vTe;function vTe(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}});var U_=E(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});Ng.diffWords=STe;Ng.diffWordsWithSpace=xTe;Ng.wordDiff=void 0;var PTe=kTe(Na()),DTe=OR();function kTe(t){return t&&t.__esModule?t:{default:t}}var O_=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,K_=/\S/,md=new PTe.default;Ng.wordDiff=md;md.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!K_.test(t)&&!K_.test(e)};md.tokenize=function(t){for(var e=t.split(/(\s+|[()[\]{}'"]|\b)/),r=0;r{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});Lg.diffLines=RTe;Lg.diffTrimmedLines=FTe;Lg.lineDiff=void 0;var LTe=NTe(Na()),TTe=OR();function NTe(t){return t&&t.__esModule?t:{default:t}}var OB=new LTe.default;Lg.lineDiff=OB;OB.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var i=0;i{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});Ed.diffSentences=MTe;Ed.sentenceDiff=void 0;var KTe=OTe(Na());function OTe(t){return t&&t.__esModule?t:{default:t}}var KR=new KTe.default;Ed.sentenceDiff=KR;KR.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};function MTe(t,e,r){return KR.diff(t,e,r)}});var G_=E(Id=>{"use strict";Object.defineProperty(Id,"__esModule",{value:!0});Id.diffCss=UTe;Id.cssDiff=void 0;var GTe=HTe(Na());function HTe(t){return t&&t.__esModule?t:{default:t}}var UR=new GTe.default;Id.cssDiff=UR;UR.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};function UTe(t,e,r){return UR.diff(t,e,r)}});var Y_=E(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.diffJson=jTe;Tg.canonicalize=UB;Tg.jsonDiff=void 0;var j_=YTe(Na()),qTe=KB();function YTe(t){return t&&t.__esModule?t:{default:t}}function HB(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?HB=function(r){return typeof r}:HB=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},HB(t)}var JTe=Object.prototype.toString,bc=new j_.default;Tg.jsonDiff=bc;bc.useLongestToken=!0;bc.tokenize=qTe.lineDiff.tokenize;bc.castInput=function(t){var e=this.options,r=e.undefinedReplacement,i=e.stringifyReplacer,n=i===void 0?function(s,o){return typeof o=="undefined"?r:o}:i;return typeof t=="string"?t:JSON.stringify(UB(t,null,null,n),n," ")};bc.equals=function(t,e){return j_.default.prototype.equals.call(bc,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function jTe(t,e,r){return bc.diff(t,e,r)}function UB(t,e,r,i,n){e=e||[],r=r||[],i&&(t=i(n,t));var s;for(s=0;s{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});yd.diffArrays=WTe;yd.arrayDiff=void 0;var VTe=zTe(Na());function zTe(t){return t&&t.__esModule?t:{default:t}}var wd=new VTe.default;yd.arrayDiff=wd;wd.tokenize=function(t){return t.slice()};wd.join=wd.removeEmpty=function(t){return t};function WTe(t,e,r){return wd.diff(t,e,r)}});var GB=E(HR=>{"use strict";Object.defineProperty(HR,"__esModule",{value:!0});HR.parsePatch=_Te;function _Te(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.split(/\r\n|[\n\v\f\r\x85]/),i=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],n=[],s=0;function o(){var c={};for(n.push(c);s{"use strict";Object.defineProperty(GR,"__esModule",{value:!0});GR.default=XTe;function XTe(t,e,r){var i=!0,n=!1,s=!1,o=1;return function a(){if(i&&!s){if(n?o++:i=!1,t+o<=r)return o;s=!0}if(!n)return s||(i=!0),e<=t-o?-o++:(n=!0,a())}}});var V_=E(jB=>{"use strict";Object.defineProperty(jB,"__esModule",{value:!0});jB.applyPatch=W_;jB.applyPatches=ZTe;var z_=GB(),eMe=$Te(J_());function $Te(t){return t&&t.__esModule?t:{default:t}}function W_(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string"&&(e=(0,z_.parsePatch)(e)),Array.isArray(e)){if(e.length>1)throw new Error("applyPatch only works with a single input.");e=e[0]}var i=t.split(/\r\n|[\n\v\f\r\x85]/),n=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],s=e.hunks,o=r.compareLine||function(F,D,he,pe){return D===pe},a=0,l=r.fuzzFactor||0,c=0,u=0,g,f;function h(F,D){for(var he=0;he0?pe[0]:" ",Pe=pe.length>0?pe.substr(1):pe;if(Ne===" "||Ne==="-"){if(!o(D+1,i[D],Ne,Pe)&&(a++,a>l))return!1;D++}}return!0}for(var p=0;p0?ne[0]:" ",A=ne.length>0?ne.substr(1):ne,V=L.linedelimiters[J];if(q===" ")K++;else if(q==="-")i.splice(K,1),n.splice(K,1);else if(q==="+")i.splice(K,0,A),n.splice(K,0,V),K++;else if(q==="\\"){var W=L.lines[J-1]?L.lines[J-1][0]:null;W==="+"?g=!0:W==="-"&&(f=!0)}}}if(g)for(;!i[i.length-1];)i.pop(),n.pop();else f&&(i.push(""),n.push(` -`));for(var X=0;X{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.structuredPatch=__;Bd.createTwoFilesPatch=X_;Bd.createPatch=tMe;var rMe=KB();function jR(t){return sMe(t)||nMe(t)||iMe()}function iMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function nMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function sMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e0?l(L.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(H=f).push.apply(H,jR(R.map(function(X){return(b.added?"+":"-")+X}))),b.added?p+=R.length:h+=R.length}else{if(u)if(R.length<=o.context*2&&B=a.length-2&&R.length<=o.context){var A=/\n$/.test(r),V=/\n$/.test(i),W=R.length==0&&f.length>q.oldLines;!A&&W&&f.splice(q.oldLines,0,"\\ No newline at end of file"),(!A&&!W||!V)&&f.push("\\ No newline at end of file")}c.push(q),u=0,g=0,f=[]}h+=R.length,p+=R.length}},m=0;m{"use strict";Object.defineProperty(YB,"__esModule",{value:!0});YB.arrayEqual=oMe;YB.arrayStartsWith=Z_;function oMe(t,e){return t.length!==e.length?!1:Z_(t,e)}function Z_(t,e){if(e.length>t.length)return!1;for(var r=0;r{"use strict";Object.defineProperty(qB,"__esModule",{value:!0});qB.calcLineCount=eX;qB.merge=aMe;var AMe=YR(),lMe=GB(),qR=$_();function Mg(t){return gMe(t)||uMe(t)||cMe()}function cMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function uMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function gMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{"use strict";Object.defineProperty(zR,"__esModule",{value:!0});zR.convertChangesToDMP=dMe;function dMe(t){for(var e=[],r,i,n=0;n{"use strict";Object.defineProperty(VR,"__esModule",{value:!0});VR.convertChangesToXML=CMe;function CMe(t){for(var e=[],r=0;r"):i.removed&&e.push(""),e.push(mMe(i.value)),i.added?e.push(""):i.removed&&e.push("")}return e.join("")}function mMe(t){var e=t;return e=e.replace(/&/g,"&"),e=e.replace(//g,">"),e=e.replace(/"/g,"""),e}});var CX=E(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});Object.defineProperty(br,"Diff",{enumerable:!0,get:function(){return EMe.default}});Object.defineProperty(br,"diffChars",{enumerable:!0,get:function(){return IMe.diffChars}});Object.defineProperty(br,"diffWords",{enumerable:!0,get:function(){return fX.diffWords}});Object.defineProperty(br,"diffWordsWithSpace",{enumerable:!0,get:function(){return fX.diffWordsWithSpace}});Object.defineProperty(br,"diffLines",{enumerable:!0,get:function(){return hX.diffLines}});Object.defineProperty(br,"diffTrimmedLines",{enumerable:!0,get:function(){return hX.diffTrimmedLines}});Object.defineProperty(br,"diffSentences",{enumerable:!0,get:function(){return yMe.diffSentences}});Object.defineProperty(br,"diffCss",{enumerable:!0,get:function(){return wMe.diffCss}});Object.defineProperty(br,"diffJson",{enumerable:!0,get:function(){return pX.diffJson}});Object.defineProperty(br,"canonicalize",{enumerable:!0,get:function(){return pX.canonicalize}});Object.defineProperty(br,"diffArrays",{enumerable:!0,get:function(){return BMe.diffArrays}});Object.defineProperty(br,"applyPatch",{enumerable:!0,get:function(){return dX.applyPatch}});Object.defineProperty(br,"applyPatches",{enumerable:!0,get:function(){return dX.applyPatches}});Object.defineProperty(br,"parsePatch",{enumerable:!0,get:function(){return QMe.parsePatch}});Object.defineProperty(br,"merge",{enumerable:!0,get:function(){return bMe.merge}});Object.defineProperty(br,"structuredPatch",{enumerable:!0,get:function(){return _R.structuredPatch}});Object.defineProperty(br,"createTwoFilesPatch",{enumerable:!0,get:function(){return _R.createTwoFilesPatch}});Object.defineProperty(br,"createPatch",{enumerable:!0,get:function(){return _R.createPatch}});Object.defineProperty(br,"convertChangesToDMP",{enumerable:!0,get:function(){return vMe.convertChangesToDMP}});Object.defineProperty(br,"convertChangesToXML",{enumerable:!0,get:function(){return SMe.convertChangesToXML}});var EMe=xMe(Na()),IMe=M_(),fX=U_(),hX=KB(),yMe=H_(),wMe=G_(),pX=Y_(),BMe=q_(),dX=V_(),QMe=GB(),bMe=cX(),_R=YR(),vMe=uX(),SMe=gX();function xMe(t){return t&&t.__esModule?t:{default:t}}});var WB=E((agt,mX)=>{var kMe=As(),PMe=Nw(),DMe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,RMe=/^\w*$/;function FMe(t,e){if(kMe(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||PMe(t)?!0:RMe.test(t)||!DMe.test(t)||e!=null&&t in Object(e)}mX.exports=FMe});var Gs=E((Agt,EX)=>{function NMe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}EX.exports=NMe});var zB=E((lgt,IX)=>{var LMe=Ac(),TMe=Gs(),MMe="[object AsyncFunction]",OMe="[object Function]",KMe="[object GeneratorFunction]",UMe="[object Proxy]";function HMe(t){if(!TMe(t))return!1;var e=LMe(t);return e==OMe||e==KMe||e==MMe||e==UMe}IX.exports=HMe});var wX=E((cgt,yX)=>{var GMe=Ks(),jMe=GMe["__core-js_shared__"];yX.exports=jMe});var bX=E((ugt,BX)=>{var XR=wX(),QX=function(){var t=/[^.]+$/.exec(XR&&XR.keys&&XR.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function YMe(t){return!!QX&&QX in t}BX.exports=YMe});var ZR=E((ggt,vX)=>{var qMe=Function.prototype,JMe=qMe.toString;function WMe(t){if(t!=null){try{return JMe.call(t)}catch(e){}try{return t+""}catch(e){}}return""}vX.exports=WMe});var xX=E((fgt,SX)=>{var zMe=zB(),VMe=bX(),_Me=Gs(),XMe=ZR(),ZMe=/[\\^$.*+?()[\]{}|]/g,$Me=/^\[object .+?Constructor\]$/,eOe=Function.prototype,tOe=Object.prototype,rOe=eOe.toString,iOe=tOe.hasOwnProperty,nOe=RegExp("^"+rOe.call(iOe).replace(ZMe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function sOe(t){if(!_Me(t)||VMe(t))return!1;var e=zMe(t)?nOe:$Me;return e.test(XMe(t))}SX.exports=sOe});var PX=E((hgt,kX)=>{function oOe(t,e){return t==null?void 0:t[e]}kX.exports=oOe});var UA=E((pgt,DX)=>{var aOe=xX(),AOe=PX();function lOe(t,e){var r=AOe(t,e);return aOe(r)?r:void 0}DX.exports=lOe});var Qd=E((dgt,RX)=>{var cOe=UA(),uOe=cOe(Object,"create");RX.exports=uOe});var LX=E((Cgt,FX)=>{var NX=Qd();function gOe(){this.__data__=NX?NX(null):{},this.size=0}FX.exports=gOe});var MX=E((mgt,TX)=>{function fOe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}TX.exports=fOe});var KX=E((Egt,OX)=>{var hOe=Qd(),pOe="__lodash_hash_undefined__",dOe=Object.prototype,COe=dOe.hasOwnProperty;function mOe(t){var e=this.__data__;if(hOe){var r=e[t];return r===pOe?void 0:r}return COe.call(e,t)?e[t]:void 0}OX.exports=mOe});var HX=E((Igt,UX)=>{var EOe=Qd(),IOe=Object.prototype,yOe=IOe.hasOwnProperty;function wOe(t){var e=this.__data__;return EOe?e[t]!==void 0:yOe.call(e,t)}UX.exports=wOe});var jX=E((ygt,GX)=>{var BOe=Qd(),QOe="__lodash_hash_undefined__";function bOe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=BOe&&e===void 0?QOe:e,this}GX.exports=bOe});var qX=E((wgt,YX)=>{var vOe=LX(),SOe=MX(),xOe=KX(),kOe=HX(),POe=jX();function Og(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{function DOe(){this.__data__=[],this.size=0}JX.exports=DOe});var Kg=E((Qgt,zX)=>{function ROe(t,e){return t===e||t!==t&&e!==e}zX.exports=ROe});var bd=E((bgt,VX)=>{var FOe=Kg();function NOe(t,e){for(var r=t.length;r--;)if(FOe(t[r][0],e))return r;return-1}VX.exports=NOe});var XX=E((vgt,_X)=>{var LOe=bd(),TOe=Array.prototype,MOe=TOe.splice;function OOe(t){var e=this.__data__,r=LOe(e,t);if(r<0)return!1;var i=e.length-1;return r==i?e.pop():MOe.call(e,r,1),--this.size,!0}_X.exports=OOe});var $X=E((Sgt,ZX)=>{var KOe=bd();function UOe(t){var e=this.__data__,r=KOe(e,t);return r<0?void 0:e[r][1]}ZX.exports=UOe});var tZ=E((xgt,eZ)=>{var HOe=bd();function GOe(t){return HOe(this.__data__,t)>-1}eZ.exports=GOe});var iZ=E((kgt,rZ)=>{var jOe=bd();function YOe(t,e){var r=this.__data__,i=jOe(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}rZ.exports=YOe});var vd=E((Pgt,nZ)=>{var qOe=WX(),JOe=XX(),WOe=$X(),zOe=tZ(),VOe=iZ();function Ug(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var _Oe=UA(),XOe=Ks(),ZOe=_Oe(XOe,"Map");sZ.exports=ZOe});var AZ=E((Rgt,oZ)=>{var aZ=qX(),$Oe=vd(),eKe=VB();function tKe(){this.size=0,this.__data__={hash:new aZ,map:new(eKe||$Oe),string:new aZ}}oZ.exports=tKe});var cZ=E((Fgt,lZ)=>{function rKe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}lZ.exports=rKe});var Sd=E((Ngt,uZ)=>{var iKe=cZ();function nKe(t,e){var r=t.__data__;return iKe(e)?r[typeof e=="string"?"string":"hash"]:r.map}uZ.exports=nKe});var fZ=E((Lgt,gZ)=>{var sKe=Sd();function oKe(t){var e=sKe(this,t).delete(t);return this.size-=e?1:0,e}gZ.exports=oKe});var pZ=E((Tgt,hZ)=>{var aKe=Sd();function AKe(t){return aKe(this,t).get(t)}hZ.exports=AKe});var CZ=E((Mgt,dZ)=>{var lKe=Sd();function cKe(t){return lKe(this,t).has(t)}dZ.exports=cKe});var EZ=E((Ogt,mZ)=>{var uKe=Sd();function gKe(t,e){var r=uKe(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}mZ.exports=gKe});var _B=E((Kgt,IZ)=>{var fKe=AZ(),hKe=fZ(),pKe=pZ(),dKe=CZ(),CKe=EZ();function Hg(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var wZ=_B(),mKe="Expected a function";function $R(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(mKe);var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],s=r.cache;if(s.has(n))return s.get(n);var o=t.apply(this,i);return r.cache=s.set(n,o)||s,o};return r.cache=new($R.Cache||wZ),r}$R.Cache=wZ;yZ.exports=$R});var bZ=E((Hgt,QZ)=>{var EKe=BZ(),IKe=500;function yKe(t){var e=EKe(t,function(i){return r.size===IKe&&r.clear(),i}),r=e.cache;return e}QZ.exports=yKe});var SZ=E((Ggt,vZ)=>{var wKe=bZ(),BKe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,QKe=/\\(\\)?/g,bKe=wKe(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(BKe,function(r,i,n,s){e.push(n?s.replace(QKe,"$1"):i||r)}),e});vZ.exports=bKe});var Gg=E((jgt,xZ)=>{var vKe=As(),SKe=WB(),xKe=SZ(),kKe=gg();function PKe(t,e){return vKe(t)?t:SKe(t,e)?[t]:xKe(kKe(t))}xZ.exports=PKe});var Sc=E((Ygt,kZ)=>{var DKe=Nw(),RKe=1/0;function FKe(t){if(typeof t=="string"||DKe(t))return t;var e=t+"";return e=="0"&&1/t==-RKe?"-0":e}kZ.exports=FKe});var xd=E((qgt,PZ)=>{var NKe=Gg(),LKe=Sc();function TKe(t,e){e=NKe(e,t);for(var r=0,i=e.length;t!=null&&r{var MKe=UA(),OKe=function(){try{var t=MKe(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();DZ.exports=OKe});var jg=E((Wgt,RZ)=>{var FZ=eF();function KKe(t,e,r){e=="__proto__"&&FZ?FZ(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}RZ.exports=KKe});var XB=E((zgt,NZ)=>{var UKe=jg(),HKe=Kg(),GKe=Object.prototype,jKe=GKe.hasOwnProperty;function YKe(t,e,r){var i=t[e];(!(jKe.call(t,e)&&HKe(i,r))||r===void 0&&!(e in t))&&UKe(t,e,r)}NZ.exports=YKe});var kd=E((Vgt,LZ)=>{var qKe=9007199254740991,JKe=/^(?:0|[1-9]\d*)$/;function WKe(t,e){var r=typeof t;return e=e==null?qKe:e,!!e&&(r=="number"||r!="symbol"&&JKe.test(t))&&t>-1&&t%1==0&&t{var zKe=XB(),VKe=Gg(),_Ke=kd(),MZ=Gs(),XKe=Sc();function ZKe(t,e,r,i){if(!MZ(t))return t;e=VKe(e,t);for(var n=-1,s=e.length,o=s-1,a=t;a!=null&&++n{var $Ke=xd(),e1e=tF(),t1e=Gg();function r1e(t,e,r){for(var i=-1,n=e.length,s={};++i{function i1e(t,e){return t!=null&&e in Object(t)}UZ.exports=i1e});var jZ=E(($gt,GZ)=>{var n1e=Ac(),s1e=Qo(),o1e="[object Arguments]";function a1e(t){return s1e(t)&&n1e(t)==o1e}GZ.exports=a1e});var Pd=E((eft,YZ)=>{var qZ=jZ(),A1e=Qo(),JZ=Object.prototype,l1e=JZ.hasOwnProperty,c1e=JZ.propertyIsEnumerable,u1e=qZ(function(){return arguments}())?qZ:function(t){return A1e(t)&&l1e.call(t,"callee")&&!c1e.call(t,"callee")};YZ.exports=u1e});var ZB=E((tft,WZ)=>{var g1e=9007199254740991;function f1e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=g1e}WZ.exports=f1e});var rF=E((rft,zZ)=>{var h1e=Gg(),p1e=Pd(),d1e=As(),C1e=kd(),m1e=ZB(),E1e=Sc();function I1e(t,e,r){e=h1e(e,t);for(var i=-1,n=e.length,s=!1;++i{var y1e=HZ(),w1e=rF();function B1e(t,e){return t!=null&&w1e(t,e,y1e)}VZ.exports=B1e});var XZ=E((nft,_Z)=>{var Q1e=KZ(),b1e=iF();function v1e(t,e){return Q1e(t,e,function(r,i){return b1e(t,i)})}_Z.exports=v1e});var $B=E((sft,ZZ)=>{function S1e(t,e){for(var r=-1,i=e.length,n=t.length;++r{var e$=ac(),x1e=Pd(),k1e=As(),t$=e$?e$.isConcatSpreadable:void 0;function P1e(t){return k1e(t)||x1e(t)||!!(t$&&t&&t[t$])}$Z.exports=P1e});var s$=E((aft,i$)=>{var D1e=$B(),R1e=r$();function n$(t,e,r,i,n){var s=-1,o=t.length;for(r||(r=R1e),n||(n=[]);++s0&&r(a)?e>1?n$(a,e-1,r,i,n):D1e(n,a):i||(n[n.length]=a)}return n}i$.exports=n$});var a$=E((Aft,o$)=>{var F1e=s$();function N1e(t){var e=t==null?0:t.length;return e?F1e(t,1):[]}o$.exports=N1e});var l$=E((lft,A$)=>{function L1e(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}A$.exports=L1e});var nF=E((cft,c$)=>{var T1e=l$(),u$=Math.max;function M1e(t,e,r){return e=u$(e===void 0?t.length-1:e,0),function(){for(var i=arguments,n=-1,s=u$(i.length-e,0),o=Array(s);++n{function O1e(t){return function(){return t}}g$.exports=O1e});var e0=E((gft,h$)=>{function K1e(t){return t}h$.exports=K1e});var C$=E((fft,p$)=>{var U1e=f$(),d$=eF(),H1e=e0(),G1e=d$?function(t,e){return d$(t,"toString",{configurable:!0,enumerable:!1,value:U1e(e),writable:!0})}:H1e;p$.exports=G1e});var E$=E((hft,m$)=>{var j1e=800,Y1e=16,q1e=Date.now;function J1e(t){var e=0,r=0;return function(){var i=q1e(),n=Y1e-(i-r);if(r=i,n>0){if(++e>=j1e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}m$.exports=J1e});var sF=E((pft,I$)=>{var W1e=C$(),z1e=E$(),V1e=z1e(W1e);I$.exports=V1e});var w$=E((dft,y$)=>{var _1e=a$(),X1e=nF(),Z1e=sF();function $1e(t){return Z1e(X1e(t,void 0,_1e),t+"")}y$.exports=$1e});var Q$=E((Cft,B$)=>{var eUe=XZ(),tUe=w$(),rUe=tUe(function(t,e){return t==null?{}:eUe(t,e)});B$.exports=rUe});var M$=E((lpt,N$)=>{"use strict";var pF;try{pF=Map}catch(t){}var dF;try{dF=Set}catch(t){}function L$(t,e,r){if(!t||typeof t!="object"||typeof t=="function")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t);if(Array.isArray(t))return t.map(T$);if(pF&&t instanceof pF)return new Map(Array.from(t.entries()));if(dF&&t instanceof dF)return new Set(Array.from(t.values()));if(t instanceof Object){e.push(t);var i=Object.create(t);r.push(i);for(var n in t){var s=e.findIndex(function(o){return o===t[n]});i[n]=s>-1?r[s]:L$(t[n],e,r)}return i}return t}function T$(t){return L$(t,[],[])}N$.exports=T$});var Nd=E(CF=>{"use strict";Object.defineProperty(CF,"__esModule",{value:!0});CF.default=uUe;var gUe=Object.prototype.toString,fUe=Error.prototype.toString,hUe=RegExp.prototype.toString,pUe=typeof Symbol!="undefined"?Symbol.prototype.toString:()=>"",dUe=/^Symbol\((.*)\)(.*)$/;function CUe(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function O$(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return CUe(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return pUe.call(t).replace(dUe,"Symbol($1)");let i=gUe.call(t).slice(8,-1);return i==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):i==="Error"||t instanceof Error?"["+fUe.call(t)+"]":i==="RegExp"?hUe.call(t):null}function uUe(t,e){let r=O$(t,e);return r!==null?r:JSON.stringify(t,function(i,n){let s=O$(this[i],e);return s!==null?s:n},2)}});var La=E(ci=>{"use strict";Object.defineProperty(ci,"__esModule",{value:!0});ci.default=ci.array=ci.object=ci.boolean=ci.date=ci.number=ci.string=ci.mixed=void 0;var K$=mUe(Nd());function mUe(t){return t&&t.__esModule?t:{default:t}}var U$={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:r,originalValue:i})=>{let n=i!=null&&i!==r,s=`${t} must be a \`${e}\` type, but the final value was: \`${(0,K$.default)(r,!0)}\``+(n?` (cast from the value \`${(0,K$.default)(i,!0)}\`).`:".");return r===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};ci.mixed=U$;var H$={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};ci.string=H$;var G$={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};ci.number=G$;var j$={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};ci.date=j$;var Y$={isValue:"${path} field must be ${value}"};ci.boolean=Y$;var q$={noUnknown:"${path} field has unspecified keys: ${unknown}"};ci.object=q$;var J$={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};ci.array=J$;var EUe=Object.assign(Object.create(null),{mixed:U$,string:H$,number:G$,date:j$,object:q$,array:J$,boolean:Y$});ci.default=EUe});var z$=E((gpt,W$)=>{var IUe=Object.prototype,yUe=IUe.hasOwnProperty;function wUe(t,e){return t!=null&&yUe.call(t,e)}W$.exports=wUe});var Ld=E((fpt,V$)=>{var BUe=z$(),QUe=rF();function bUe(t,e){return t!=null&&QUe(t,e,BUe)}V$.exports=bUe});var qg=E(n0=>{"use strict";Object.defineProperty(n0,"__esModule",{value:!0});n0.default=void 0;var vUe=t=>t&&t.__isYupSchema__;n0.default=vUe});var Z$=E(s0=>{"use strict";Object.defineProperty(s0,"__esModule",{value:!0});s0.default=void 0;var SUe=_$(Ld()),xUe=_$(qg());function _$(t){return t&&t.__esModule?t:{default:t}}var X$=class{constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,SUe.default)(r,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!r.then&&!r.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:i,then:n,otherwise:s}=r,o=typeof i=="function"?i:(...a)=>a.every(l=>l===i);this.fn=function(...a){let l=a.pop(),c=a.pop(),u=o(...a)?n:s;if(!!u)return typeof u=="function"?u(c):c.concat(u.resolve(l))}}resolve(e,r){let i=this.refs.map(s=>s.getValue(r==null?void 0:r.value,r==null?void 0:r.parent,r==null?void 0:r.context)),n=this.fn.apply(e,i.concat(e,r));if(n===void 0||n===e)return e;if(!(0,xUe.default)(n))throw new TypeError("conditions must return a schema object");return n.resolve(r)}},kUe=X$;s0.default=kUe});var EF=E(mF=>{"use strict";Object.defineProperty(mF,"__esModule",{value:!0});mF.default=PUe;function PUe(t){return t==null?[]:[].concat(t)}});var xc=E(o0=>{"use strict";Object.defineProperty(o0,"__esModule",{value:!0});o0.default=void 0;var DUe=$$(Nd()),RUe=$$(EF());function $$(t){return t&&t.__esModule?t:{default:t}}function IF(){return IF=Object.assign||function(t){for(var e=1;e(0,DUe.default)(r[s])):typeof e=="function"?e(r):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,r,i,n){super();this.name="ValidationError",this.value=r,this.path=i,this.type=n,this.errors=[],this.inner=[],(0,RUe.default)(e).forEach(s=>{Td.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,Td)}};o0.default=Td});var a0=E(yF=>{"use strict";Object.defineProperty(yF,"__esModule",{value:!0});yF.default=NUe;var wF=LUe(xc());function LUe(t){return t&&t.__esModule?t:{default:t}}var TUe=t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}};function NUe(t,e){let{endEarly:r,tests:i,args:n,value:s,errors:o,sort:a,path:l}=t,c=TUe(e),u=i.length,g=[];if(o=o||[],!u)return o.length?c(new wF.default(o,s,l)):c(null,s);for(let f=0;f{function MUe(t){return function(e,r,i){for(var n=-1,s=Object(e),o=i(e),a=o.length;a--;){var l=o[t?a:++n];if(r(s[l],l,s)===!1)break}return e}}eee.exports=MUe});var BF=E((Ipt,ree)=>{var OUe=tee(),KUe=OUe();ree.exports=KUe});var nee=E((ypt,iee)=>{function UUe(t,e){for(var r=-1,i=Array(t);++r{function HUe(){return!1}see.exports=HUe});var Od=E((Md,Jg)=>{var GUe=Ks(),jUe=oee(),aee=typeof Md=="object"&&Md&&!Md.nodeType&&Md,Aee=aee&&typeof Jg=="object"&&Jg&&!Jg.nodeType&&Jg,YUe=Aee&&Aee.exports===aee,lee=YUe?GUe.Buffer:void 0,qUe=lee?lee.isBuffer:void 0,JUe=qUe||jUe;Jg.exports=JUe});var uee=E((Bpt,cee)=>{var WUe=Ac(),zUe=ZB(),VUe=Qo(),_Ue="[object Arguments]",XUe="[object Array]",ZUe="[object Boolean]",$Ue="[object Date]",e2e="[object Error]",t2e="[object Function]",r2e="[object Map]",i2e="[object Number]",n2e="[object Object]",s2e="[object RegExp]",o2e="[object Set]",a2e="[object String]",A2e="[object WeakMap]",l2e="[object ArrayBuffer]",c2e="[object DataView]",u2e="[object Float32Array]",g2e="[object Float64Array]",f2e="[object Int8Array]",h2e="[object Int16Array]",p2e="[object Int32Array]",d2e="[object Uint8Array]",C2e="[object Uint8ClampedArray]",m2e="[object Uint16Array]",E2e="[object Uint32Array]",lr={};lr[u2e]=lr[g2e]=lr[f2e]=lr[h2e]=lr[p2e]=lr[d2e]=lr[C2e]=lr[m2e]=lr[E2e]=!0;lr[_Ue]=lr[XUe]=lr[l2e]=lr[ZUe]=lr[c2e]=lr[$Ue]=lr[e2e]=lr[t2e]=lr[r2e]=lr[i2e]=lr[n2e]=lr[s2e]=lr[o2e]=lr[a2e]=lr[A2e]=!1;function I2e(t){return VUe(t)&&zUe(t.length)&&!!lr[WUe(t)]}cee.exports=I2e});var A0=E((Qpt,gee)=>{function y2e(t){return function(e){return t(e)}}gee.exports=y2e});var l0=E((Kd,Wg)=>{var w2e=WP(),fee=typeof Kd=="object"&&Kd&&!Kd.nodeType&&Kd,Ud=fee&&typeof Wg=="object"&&Wg&&!Wg.nodeType&&Wg,B2e=Ud&&Ud.exports===fee,QF=B2e&&w2e.process,Q2e=function(){try{var t=Ud&&Ud.require&&Ud.require("util").types;return t||QF&&QF.binding&&QF.binding("util")}catch(e){}}();Wg.exports=Q2e});var c0=E((bpt,hee)=>{var b2e=uee(),v2e=A0(),pee=l0(),dee=pee&&pee.isTypedArray,S2e=dee?v2e(dee):b2e;hee.exports=S2e});var bF=E((vpt,Cee)=>{var x2e=nee(),k2e=Pd(),P2e=As(),D2e=Od(),R2e=kd(),F2e=c0(),N2e=Object.prototype,L2e=N2e.hasOwnProperty;function T2e(t,e){var r=P2e(t),i=!r&&k2e(t),n=!r&&!i&&D2e(t),s=!r&&!i&&!n&&F2e(t),o=r||i||n||s,a=o?x2e(t.length,String):[],l=a.length;for(var c in t)(e||L2e.call(t,c))&&!(o&&(c=="length"||n&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||R2e(c,l)))&&a.push(c);return a}Cee.exports=T2e});var u0=E((Spt,mee)=>{var M2e=Object.prototype;function O2e(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||M2e;return t===r}mee.exports=O2e});var vF=E((xpt,Eee)=>{function K2e(t,e){return function(r){return t(e(r))}}Eee.exports=K2e});var yee=E((kpt,Iee)=>{var U2e=vF(),H2e=U2e(Object.keys,Object);Iee.exports=H2e});var Bee=E((Ppt,wee)=>{var G2e=u0(),j2e=yee(),Y2e=Object.prototype,q2e=Y2e.hasOwnProperty;function J2e(t){if(!G2e(t))return j2e(t);var e=[];for(var r in Object(t))q2e.call(t,r)&&r!="constructor"&&e.push(r);return e}wee.exports=J2e});var Hd=E((Dpt,Qee)=>{var W2e=zB(),z2e=ZB();function V2e(t){return t!=null&&z2e(t.length)&&!W2e(t)}Qee.exports=V2e});var zg=E((Rpt,bee)=>{var _2e=bF(),X2e=Bee(),Z2e=Hd();function $2e(t){return Z2e(t)?_2e(t):X2e(t)}bee.exports=$2e});var SF=E((Fpt,vee)=>{var eHe=BF(),tHe=zg();function rHe(t,e){return t&&eHe(t,e,tHe)}vee.exports=rHe});var xee=E((Npt,See)=>{var iHe=vd();function nHe(){this.__data__=new iHe,this.size=0}See.exports=nHe});var Pee=E((Lpt,kee)=>{function sHe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}kee.exports=sHe});var Ree=E((Tpt,Dee)=>{function oHe(t){return this.__data__.get(t)}Dee.exports=oHe});var Nee=E((Mpt,Fee)=>{function aHe(t){return this.__data__.has(t)}Fee.exports=aHe});var Tee=E((Opt,Lee)=>{var AHe=vd(),lHe=VB(),cHe=_B(),uHe=200;function gHe(t,e){var r=this.__data__;if(r instanceof AHe){var i=r.__data__;if(!lHe||i.length{var fHe=vd(),hHe=xee(),pHe=Pee(),dHe=Ree(),CHe=Nee(),mHe=Tee();function Vg(t){var e=this.__data__=new fHe(t);this.size=e.size}Vg.prototype.clear=hHe;Vg.prototype.delete=pHe;Vg.prototype.get=dHe;Vg.prototype.has=CHe;Vg.prototype.set=mHe;Mee.exports=Vg});var Kee=E((Upt,Oee)=>{var EHe="__lodash_hash_undefined__";function IHe(t){return this.__data__.set(t,EHe),this}Oee.exports=IHe});var Hee=E((Hpt,Uee)=>{function yHe(t){return this.__data__.has(t)}Uee.exports=yHe});var jee=E((Gpt,Gee)=>{var wHe=_B(),BHe=Kee(),QHe=Hee();function g0(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new wHe;++e{function bHe(t,e){for(var r=-1,i=t==null?0:t.length;++r{function vHe(t,e){return t.has(e)}Jee.exports=vHe});var xF=E((qpt,zee)=>{var SHe=jee(),xHe=qee(),kHe=Wee(),PHe=1,DHe=2;function RHe(t,e,r,i,n,s){var o=r&PHe,a=t.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(t),u=s.get(e);if(c&&u)return c==e&&u==t;var g=-1,f=!0,h=r&DHe?new SHe:void 0;for(s.set(t,e),s.set(e,t);++g{var FHe=Ks(),NHe=FHe.Uint8Array;Vee.exports=NHe});var Xee=E((Wpt,_ee)=>{function LHe(t){var e=-1,r=Array(t.size);return t.forEach(function(i,n){r[++e]=[n,i]}),r}_ee.exports=LHe});var $ee=E((zpt,Zee)=>{function THe(t){var e=-1,r=Array(t.size);return t.forEach(function(i){r[++e]=i}),r}Zee.exports=THe});var nte=E((Vpt,ete)=>{var tte=ac(),rte=kF(),MHe=Kg(),OHe=xF(),KHe=Xee(),UHe=$ee(),HHe=1,GHe=2,jHe="[object Boolean]",YHe="[object Date]",qHe="[object Error]",JHe="[object Map]",WHe="[object Number]",zHe="[object RegExp]",VHe="[object Set]",_He="[object String]",XHe="[object Symbol]",ZHe="[object ArrayBuffer]",$He="[object DataView]",ite=tte?tte.prototype:void 0,PF=ite?ite.valueOf:void 0;function eGe(t,e,r,i,n,s,o){switch(r){case $He:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case ZHe:return!(t.byteLength!=e.byteLength||!s(new rte(t),new rte(e)));case jHe:case YHe:case WHe:return MHe(+t,+e);case qHe:return t.name==e.name&&t.message==e.message;case zHe:case _He:return t==e+"";case JHe:var a=KHe;case VHe:var l=i&HHe;if(a||(a=UHe),t.size!=e.size&&!l)return!1;var c=o.get(t);if(c)return c==e;i|=GHe,o.set(t,e);var u=OHe(a(t),a(e),i,n,s,o);return o.delete(t),u;case XHe:if(PF)return PF.call(t)==PF.call(e)}return!1}ete.exports=eGe});var DF=E((_pt,ste)=>{var tGe=$B(),rGe=As();function iGe(t,e,r){var i=e(t);return rGe(t)?i:tGe(i,r(t))}ste.exports=iGe});var ate=E((Xpt,ote)=>{function nGe(t,e){for(var r=-1,i=t==null?0:t.length,n=0,s=[];++r{function sGe(){return[]}Ate.exports=sGe});var f0=E(($pt,lte)=>{var oGe=ate(),aGe=RF(),AGe=Object.prototype,lGe=AGe.propertyIsEnumerable,cte=Object.getOwnPropertySymbols,cGe=cte?function(t){return t==null?[]:(t=Object(t),oGe(cte(t),function(e){return lGe.call(t,e)}))}:aGe;lte.exports=cGe});var FF=E((edt,ute)=>{var uGe=DF(),gGe=f0(),fGe=zg();function hGe(t){return uGe(t,fGe,gGe)}ute.exports=hGe});var hte=E((tdt,gte)=>{var fte=FF(),pGe=1,dGe=Object.prototype,CGe=dGe.hasOwnProperty;function mGe(t,e,r,i,n,s){var o=r&pGe,a=fte(t),l=a.length,c=fte(e),u=c.length;if(l!=u&&!o)return!1;for(var g=l;g--;){var f=a[g];if(!(o?f in e:CGe.call(e,f)))return!1}var h=s.get(t),p=s.get(e);if(h&&p)return h==e&&p==t;var d=!0;s.set(t,e),s.set(e,t);for(var m=o;++g{var EGe=UA(),IGe=Ks(),yGe=EGe(IGe,"DataView");pte.exports=yGe});var mte=E((idt,Cte)=>{var wGe=UA(),BGe=Ks(),QGe=wGe(BGe,"Promise");Cte.exports=QGe});var Ite=E((ndt,Ete)=>{var bGe=UA(),vGe=Ks(),SGe=bGe(vGe,"Set");Ete.exports=SGe});var wte=E((sdt,yte)=>{var xGe=UA(),kGe=Ks(),PGe=xGe(kGe,"WeakMap");yte.exports=PGe});var jd=E((odt,Bte)=>{var NF=dte(),LF=VB(),TF=mte(),MF=Ite(),OF=wte(),Qte=Ac(),_g=ZR(),bte="[object Map]",DGe="[object Object]",vte="[object Promise]",Ste="[object Set]",xte="[object WeakMap]",kte="[object DataView]",RGe=_g(NF),FGe=_g(LF),NGe=_g(TF),LGe=_g(MF),TGe=_g(OF),kc=Qte;(NF&&kc(new NF(new ArrayBuffer(1)))!=kte||LF&&kc(new LF)!=bte||TF&&kc(TF.resolve())!=vte||MF&&kc(new MF)!=Ste||OF&&kc(new OF)!=xte)&&(kc=function(t){var e=Qte(t),r=e==DGe?t.constructor:void 0,i=r?_g(r):"";if(i)switch(i){case RGe:return kte;case FGe:return bte;case NGe:return vte;case LGe:return Ste;case TGe:return xte}return e});Bte.exports=kc});var Mte=E((adt,Pte)=>{var KF=Gd(),MGe=xF(),OGe=nte(),KGe=hte(),Dte=jd(),Rte=As(),Fte=Od(),UGe=c0(),HGe=1,Nte="[object Arguments]",Lte="[object Array]",h0="[object Object]",GGe=Object.prototype,Tte=GGe.hasOwnProperty;function jGe(t,e,r,i,n,s){var o=Rte(t),a=Rte(e),l=o?Lte:Dte(t),c=a?Lte:Dte(e);l=l==Nte?h0:l,c=c==Nte?h0:c;var u=l==h0,g=c==h0,f=l==c;if(f&&Fte(t)){if(!Fte(e))return!1;o=!0,u=!1}if(f&&!u)return s||(s=new KF),o||UGe(t)?MGe(t,e,r,i,n,s):OGe(t,e,l,r,i,n,s);if(!(r&HGe)){var h=u&&Tte.call(t,"__wrapped__"),p=g&&Tte.call(e,"__wrapped__");if(h||p){var d=h?t.value():t,m=p?e.value():e;return s||(s=new KF),n(d,m,r,i,s)}}return f?(s||(s=new KF),KGe(t,e,r,i,n,s)):!1}Pte.exports=jGe});var UF=E((Adt,Ote)=>{var YGe=Mte(),Kte=Qo();function Ute(t,e,r,i,n){return t===e?!0:t==null||e==null||!Kte(t)&&!Kte(e)?t!==t&&e!==e:YGe(t,e,r,i,Ute,n)}Ote.exports=Ute});var Gte=E((ldt,Hte)=>{var qGe=Gd(),JGe=UF(),WGe=1,zGe=2;function VGe(t,e,r,i){var n=r.length,s=n,o=!i;if(t==null)return!s;for(t=Object(t);n--;){var a=r[n];if(o&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++n{var _Ge=Gs();function XGe(t){return t===t&&!_Ge(t)}jte.exports=XGe});var qte=E((udt,Yte)=>{var ZGe=HF(),$Ge=zg();function eje(t){for(var e=$Ge(t),r=e.length;r--;){var i=e[r],n=t[i];e[r]=[i,n,ZGe(n)]}return e}Yte.exports=eje});var GF=E((gdt,Jte)=>{function tje(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}Jte.exports=tje});var zte=E((fdt,Wte)=>{var rje=Gte(),ije=qte(),nje=GF();function sje(t){var e=ije(t);return e.length==1&&e[0][2]?nje(e[0][0],e[0][1]):function(r){return r===t||rje(r,t,e)}}Wte.exports=sje});var p0=E((hdt,Vte)=>{var oje=xd();function aje(t,e,r){var i=t==null?void 0:oje(t,e);return i===void 0?r:i}Vte.exports=aje});var Xte=E((pdt,_te)=>{var Aje=UF(),lje=p0(),cje=iF(),uje=WB(),gje=HF(),fje=GF(),hje=Sc(),pje=1,dje=2;function Cje(t,e){return uje(t)&&gje(e)?fje(hje(t),e):function(r){var i=lje(r,t);return i===void 0&&i===e?cje(r,t):Aje(e,i,pje|dje)}}_te.exports=Cje});var $te=E((ddt,Zte)=>{function mje(t){return function(e){return e==null?void 0:e[t]}}Zte.exports=mje});var tre=E((Cdt,ere)=>{var Eje=xd();function Ije(t){return function(e){return Eje(e,t)}}ere.exports=Ije});var ire=E((mdt,rre)=>{var yje=$te(),wje=tre(),Bje=WB(),Qje=Sc();function bje(t){return Bje(t)?yje(Qje(t)):wje(t)}rre.exports=bje});var jF=E((Edt,nre)=>{var vje=zte(),Sje=Xte(),xje=e0(),kje=As(),Pje=ire();function Dje(t){return typeof t=="function"?t:t==null?xje:typeof t=="object"?kje(t)?Sje(t[0],t[1]):vje(t):Pje(t)}nre.exports=Dje});var YF=E((Idt,sre)=>{var Rje=jg(),Fje=SF(),Nje=jF();function Lje(t,e){var r={};return e=Nje(e,3),Fje(t,function(i,n,s){Rje(r,n,e(i,n,s))}),r}sre.exports=Lje});var Yd=E((ydt,ore)=>{"use strict";function Pc(t){this._maxSize=t,this.clear()}Pc.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Pc.prototype.get=function(t){return this._values[t]};Pc.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var Tje=/[^.^\]^[]+|(?=\[\]|\.\.)/g,are=/^\d+$/,Mje=/^\d/,Oje=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,Kje=/^\s*(['"]?)(.*?)(\1)\s*$/,qF=512,Are=new Pc(qF),lre=new Pc(qF),cre=new Pc(qF);ore.exports={Cache:Pc,split:WF,normalizePath:JF,setter:function(t){var e=JF(t);return lre.get(t)||lre.set(t,function(i,n){for(var s=0,o=e.length,a=i;s{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});qd.create=Yje;qd.default=void 0;var qje=Yd(),d0={context:"$",value:"."};function Yje(t,e){return new C0(t,e)}var C0=class{constructor(e,r={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===d0.context,this.isValue=this.key[0]===d0.value,this.isSibling=!this.isContext&&!this.isValue;let i=this.isContext?d0.context:this.isValue?d0.value:"";this.path=this.key.slice(i.length),this.getter=this.path&&(0,qje.getter)(this.path,!0),this.map=r.map}getValue(e,r,i){let n=this.isContext?i:this.isValue?e:r;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,r){return this.getValue(e,r==null?void 0:r.parent,r==null?void 0:r.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};qd.default=C0;C0.prototype.__isYupRef=!0});var ure=E(VF=>{"use strict";Object.defineProperty(VF,"__esModule",{value:!0});VF.default=Jje;var Wje=_F(YF()),m0=_F(xc()),zje=_F(Dc());function _F(t){return t&&t.__esModule?t:{default:t}}function E0(){return E0=Object.assign||function(t){for(var e=1;e=0)&&(r[n]=t[n]);return r}function Jje(t){function e(r,i){let{value:n,path:s="",label:o,options:a,originalValue:l,sync:c}=r,u=Vje(r,["value","path","label","options","originalValue","sync"]),{name:g,test:f,params:h,message:p}=t,{parent:d,context:m}=a;function I(L){return zje.default.isRef(L)?L.getValue(n,d,m):L}function B(L={}){let K=(0,Wje.default)(E0({value:n,originalValue:l,label:o,path:L.path||s},h,L.params),I),J=new m0.default(m0.default.formatError(L.message||p,K),n,K.path,L.type||g);return J.params=K,J}let b=E0({path:s,parent:d,type:g,createError:B,resolve:I,options:a,originalValue:l},u);if(!c){try{Promise.resolve(f.call(b,n,b)).then(L=>{m0.default.isError(L)?i(L):L?i(null,L):i(B())})}catch(L){i(L)}return}let R;try{var H;if(R=f.call(b,n,b),typeof((H=R)==null?void 0:H.then)=="function")throw new Error(`Validation test of type: "${b.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(L){i(L);return}m0.default.isError(R)?i(R):R?i(null,R):i(B())}return e.OPTIONS=t,e}});var XF=E(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.getIn=gre;Jd.default=void 0;var _je=Yd(),Xje=t=>t.substr(0,t.length-1).substr(1);function gre(t,e,r,i=r){let n,s,o;return e?((0,_je.forEach)(e,(a,l,c)=>{let u=l?Xje(a):a;if(t=t.resolve({context:i,parent:n,value:r}),t.innerType){let g=c?parseInt(u,10):0;if(r&&g>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);n=r,r=r&&r[g],t=t.innerType}if(!c){if(!t.fields||!t.fields[u])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t._type}")`);n=r,r=r&&r[u],t=t.fields[u]}s=u,o=l?"["+a+"]":"."+a}),{schema:t,parent:n,parentPath:s}):{parent:n,parentPath:e,schema:t}}var Zje=(t,e,r,i)=>gre(t,e,r,i).schema,$je=Zje;Jd.default=$je});var hre=E(I0=>{"use strict";Object.defineProperty(I0,"__esModule",{value:!0});I0.default=void 0;var fre=eYe(Dc());function eYe(t){return t&&t.__esModule?t:{default:t}}var y0=class{constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let r of this.list)e.push(r);for(let[,r]of this.refs)e.push(r.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){fre.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){fre.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,r){if(this.list.has(e))return!0;let i,n=this.refs.values();for(;i=n.next(),!i.done;)if(r(i.value)===e)return!0;return!1}clone(){let e=new y0;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,r){let i=this.clone();return e.list.forEach(n=>i.add(n)),e.refs.forEach(n=>i.add(n)),r.list.forEach(n=>i.delete(n)),r.refs.forEach(n=>i.delete(n)),i}};I0.default=y0});var Ma=E(w0=>{"use strict";Object.defineProperty(w0,"__esModule",{value:!0});w0.default=void 0;var pre=Ta(M$()),Xg=La(),tYe=Ta(Z$()),dre=Ta(a0()),B0=Ta(ure()),Cre=Ta(Nd()),rYe=Ta(Dc()),iYe=XF(),nYe=Ta(EF()),mre=Ta(xc()),Ere=Ta(hre());function Ta(t){return t&&t.__esModule?t:{default:t}}function ds(){return ds=Object.assign||function(t){for(var e=1;e{this.typeError(Xg.mixed.notType)}),this.type=(e==null?void 0:e.type)||"mixed",this.spec=ds({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e==null?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let r=Object.create(Object.getPrototypeOf(this));return r.type=this.type,r._typeError=this._typeError,r._whitelistError=this._whitelistError,r._blacklistError=this._blacklistError,r._whitelist=this._whitelist.clone(),r._blacklist=this._blacklist.clone(),r.exclusiveTests=ds({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,pre.default)(ds({},this.spec,e)),r}label(e){var r=this.clone();return r.spec.label=e,r}meta(...e){if(e.length===0)return this.spec.meta;let r=this.clone();return r.spec.meta=Object.assign(r.spec.meta||{},e[0]),r}withMutation(e){let r=this._mutate;this._mutate=!0;let i=e(this);return this._mutate=r,i}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let r=this,i=e.clone(),n=ds({},r.spec,i.spec);return i.spec=n,i._typeError||(i._typeError=r._typeError),i._whitelistError||(i._whitelistError=r._whitelistError),i._blacklistError||(i._blacklistError=r._blacklistError),i._whitelist=r._whitelist.merge(e._whitelist,e._blacklist),i._blacklist=r._blacklist.merge(e._blacklist,e._whitelist),i.tests=r.tests,i.exclusiveTests=r.exclusiveTests,i.withMutation(s=>{e.tests.forEach(o=>{s.test(o.OPTIONS)})}),i}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let r=this;if(r.conditions.length){let i=r.conditions;r=r.clone(),r.conditions=[],r=i.reduce((n,s)=>s.resolve(n,e),r),r=r.resolve(e)}return r}cast(e,r={}){let i=this.resolve(ds({value:e},r)),n=i._cast(e,r);if(e!==void 0&&r.assert!==!1&&i.isType(n)!==!0){let s=(0,Cre.default)(e),o=(0,Cre.default)(n);throw new TypeError(`The value of ${r.path||"field"} could not be cast to a value that satisfies the schema type: "${i._type}". - -attempted value: ${s} -`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,r){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,r={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=r,u=e;l||(u=this._cast(u,ds({assert:!1},r)));let g={value:u,path:s,options:r,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,dre.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,dre.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,r,i){let n=this.resolve(ds({},r,{value:e}));return typeof i=="function"?n._validate(e,r,i):new Promise((s,o)=>n._validate(e,r,(a,l)=>{a?o(a):s(l)}))}validateSync(e,r){let i=this.resolve(ds({},r,{value:e})),n;return i._validate(e,ds({},r,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,r){return this.validate(e,r).then(()=>!0,i=>{if(mre.default.isError(i))return!1;throw i})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(i){if(mre.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,pre.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=Xg.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Xg.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=Xg.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,B0.default)(r),s=r.exclusive||r.name&&i.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(i.exclusiveTests[r.name]=!!r.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===r.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let i=this.clone(),n=(0,nYe.default)(e).map(s=>new rYe.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new tYe.default(n,r)),i}typeError(e){var r=this.clone();return r._typeError=(0,B0.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=Xg.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,B0.default)({message:r,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,r=Xg.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,B0.default)({message:r,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:i}=e.spec;return{meta:i,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};w0.default=Do;Do.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])Do.prototype[`${t}At`]=function(e,r,i={}){let{parent:n,parentPath:s,schema:o}=(0,iYe.getIn)(this,e,r,i.context);return o[t](n&&n[s],ds({},i,{parent:n,path:e}))};for(let t of["equals","is"])Do.prototype[t]=Do.prototype.oneOf;for(let t of["not","nope"])Do.prototype[t]=Do.prototype.notOneOf;Do.prototype.optional=Do.prototype.notRequired});var yre=E(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});Wd.create=Ire;Wd.default=void 0;var oYe=sYe(Ma());function sYe(t){return t&&t.__esModule?t:{default:t}}var ZF=oYe.default,aYe=ZF;Wd.default=aYe;function Ire(){return new ZF}Ire.prototype=ZF.prototype});var Zg=E(Q0=>{"use strict";Object.defineProperty(Q0,"__esModule",{value:!0});Q0.default=void 0;var AYe=t=>t==null;Q0.default=AYe});var vre=E(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});zd.create=wre;zd.default=void 0;var lYe=Bre(Ma()),Qre=La(),bre=Bre(Zg());function Bre(t){return t&&t.__esModule?t:{default:t}}function wre(){return new b0}var b0=class extends lYe.default{constructor(){super({type:"boolean"});this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,bre.default)(r)||r===!0}})}isFalse(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,bre.default)(r)||r===!1}})}};zd.default=b0;wre.prototype=b0.prototype});var kre=E(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});Vd.create=Sre;Vd.default=void 0;var Ro=La(),Oa=xre(Zg()),cYe=xre(Ma());function xre(t){return t&&t.__esModule?t:{default:t}}var uYe=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,gYe=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,fYe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,hYe=t=>(0,Oa.default)(t)||t===t.trim(),pYe={}.toString();function Sre(){return new v0}var v0=class extends cYe.default{constructor(){super({type:"string"});this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===pYe?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=Ro.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,Oa.default)(i)||i.length===this.resolve(e)}})}min(e,r=Ro.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Oa.default)(i)||i.length>=this.resolve(e)}})}max(e,r=Ro.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(i){return(0,Oa.default)(i)||i.length<=this.resolve(e)}})}matches(e,r){let i=!1,n,s;return r&&(typeof r=="object"?{excludeEmptyString:i=!1,message:n,name:s}=r:n=r),this.test({name:s||"matches",message:n||Ro.string.matches,params:{regex:e},test:o=>(0,Oa.default)(o)||o===""&&i||o.search(e)!==-1})}email(e=Ro.string.email){return this.matches(uYe,{name:"email",message:e,excludeEmptyString:!0})}url(e=Ro.string.url){return this.matches(gYe,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Ro.string.uuid){return this.matches(fYe,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Ro.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:hYe})}lowercase(e=Ro.string.lowercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toLowerCase()})}uppercase(e=Ro.string.uppercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toUpperCase()})}};Vd.default=v0;Sre.prototype=v0.prototype});var Rre=E(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});_d.create=Pre;_d.default=void 0;var Rc=La(),Fc=Dre(Zg()),dYe=Dre(Ma());function Dre(t){return t&&t.__esModule?t:{default:t}}var CYe=t=>t!=+t;function Pre(){return new S0}var S0=class extends dYe.default{constructor(){super({type:"number"});this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!CYe(e)}min(e,r=Rc.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Fc.default)(i)||i>=this.resolve(e)}})}max(e,r=Rc.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Fc.default)(i)||i<=this.resolve(e)}})}lessThan(e,r=Rc.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(i){return(0,Fc.default)(i)||ithis.resolve(e)}})}positive(e=Rc.number.positive){return this.moreThan(0,e)}negative(e=Rc.number.negative){return this.lessThan(0,e)}integer(e=Rc.number.integer){return this.test({name:"integer",message:e,test:r=>(0,Fc.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Fc.default)(e)?e:e|0)}round(e){var r,i=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(i.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+i.join(", "));return this.transform(n=>(0,Fc.default)(n)?n:Math[e](n))}};_d.default=S0;Pre.prototype=S0.prototype});var Fre=E($F=>{"use strict";Object.defineProperty($F,"__esModule",{value:!0});$F.default=mYe;var EYe=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function mYe(t){var e=[1,4,5,6,7,10,11],r=0,i,n;if(n=EYe.exec(t)){for(var s=0,o;o=e[s];++s)n[o]=+n[o]||0;n[2]=(+n[2]||1)-1,n[3]=+n[3]||1,n[7]=n[7]?String(n[7]).substr(0,3):0,(n[8]===void 0||n[8]==="")&&(n[9]===void 0||n[9]==="")?i=+new Date(n[1],n[2],n[3],n[4],n[5],n[6],n[7]):(n[8]!=="Z"&&n[9]!==void 0&&(r=n[10]*60+n[11],n[9]==="+"&&(r=0-r)),i=Date.UTC(n[1],n[2],n[3],n[4],n[5]+r,n[6],n[7]))}else i=Date.parse?Date.parse(t):NaN;return i}});var Tre=E(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});Xd.create=eN;Xd.default=void 0;var IYe=x0(Fre()),Nre=La(),Lre=x0(Zg()),yYe=x0(Dc()),wYe=x0(Ma());function x0(t){return t&&t.__esModule?t:{default:t}}var tN=new Date(""),BYe=t=>Object.prototype.toString.call(t)==="[object Date]";function eN(){return new Zd}var Zd=class extends wYe.default{constructor(){super({type:"date"});this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,IYe.default)(e),isNaN(e)?tN:new Date(e))})})}_typeCheck(e){return BYe(e)&&!isNaN(e.getTime())}prepareParam(e,r){let i;if(yYe.default.isRef(e))i=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);i=n}return i}min(e,r=Nre.date.min){let i=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Lre.default)(n)||n>=this.resolve(i)}})}max(e,r=Nre.date.max){var i=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Lre.default)(n)||n<=this.resolve(i)}})}};Xd.default=Zd;Zd.INVALID_DATE=tN;eN.prototype=Zd.prototype;eN.INVALID_DATE=tN});var Ore=E((Ndt,Mre)=>{function QYe(t,e,r,i){var n=-1,s=t==null?0:t.length;for(i&&s&&(r=t[++n]);++n{function bYe(t){return function(e){return t==null?void 0:t[e]}}Kre.exports=bYe});var Gre=E((Tdt,Hre)=>{var vYe=Ure(),SYe={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},xYe=vYe(SYe);Hre.exports=xYe});var Yre=E((Mdt,jre)=>{var kYe=Gre(),PYe=gg(),DYe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,RYe="\\u0300-\\u036f",FYe="\\ufe20-\\ufe2f",NYe="\\u20d0-\\u20ff",LYe=RYe+FYe+NYe,TYe="["+LYe+"]",MYe=RegExp(TYe,"g");function OYe(t){return t=PYe(t),t&&t.replace(DYe,kYe).replace(MYe,"")}jre.exports=OYe});var Jre=E((Odt,qre)=>{var KYe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function UYe(t){return t.match(KYe)||[]}qre.exports=UYe});var zre=E((Kdt,Wre)=>{var HYe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function GYe(t){return HYe.test(t)}Wre.exports=GYe});var fie=E((Udt,Vre)=>{var _re="\\ud800-\\udfff",jYe="\\u0300-\\u036f",YYe="\\ufe20-\\ufe2f",qYe="\\u20d0-\\u20ff",JYe=jYe+YYe+qYe,Xre="\\u2700-\\u27bf",Zre="a-z\\xdf-\\xf6\\xf8-\\xff",WYe="\\xac\\xb1\\xd7\\xf7",zYe="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",VYe="\\u2000-\\u206f",_Ye=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",$re="A-Z\\xc0-\\xd6\\xd8-\\xde",XYe="\\ufe0e\\ufe0f",eie=WYe+zYe+VYe+_Ye,tie="['\u2019]",rie="["+eie+"]",ZYe="["+JYe+"]",iie="\\d+",$Ye="["+Xre+"]",nie="["+Zre+"]",sie="[^"+_re+eie+iie+Xre+Zre+$re+"]",eqe="\\ud83c[\\udffb-\\udfff]",tqe="(?:"+ZYe+"|"+eqe+")",rqe="[^"+_re+"]",oie="(?:\\ud83c[\\udde6-\\uddff]){2}",aie="[\\ud800-\\udbff][\\udc00-\\udfff]",$g="["+$re+"]",iqe="\\u200d",Aie="(?:"+nie+"|"+sie+")",nqe="(?:"+$g+"|"+sie+")",lie="(?:"+tie+"(?:d|ll|m|re|s|t|ve))?",cie="(?:"+tie+"(?:D|LL|M|RE|S|T|VE))?",uie=tqe+"?",gie="["+XYe+"]?",sqe="(?:"+iqe+"(?:"+[rqe,oie,aie].join("|")+")"+gie+uie+")*",oqe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",aqe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Aqe=gie+uie+sqe,lqe="(?:"+[$Ye,oie,aie].join("|")+")"+Aqe,cqe=RegExp([$g+"?"+nie+"+"+lie+"(?="+[rie,$g,"$"].join("|")+")",nqe+"+"+cie+"(?="+[rie,$g+Aie,"$"].join("|")+")",$g+"?"+Aie+"+"+lie,$g+"+"+cie,aqe,oqe,iie,lqe].join("|"),"g");function uqe(t){return t.match(cqe)||[]}Vre.exports=uqe});var pie=E((Hdt,hie)=>{var gqe=Jre(),fqe=zre(),hqe=gg(),pqe=fie();function dqe(t,e,r){return t=hqe(t),e=r?void 0:e,e===void 0?fqe(t)?pqe(t):gqe(t):t.match(e)||[]}hie.exports=dqe});var rN=E((Gdt,die)=>{var Cqe=Ore(),mqe=Yre(),Eqe=pie(),Iqe="['\u2019]",yqe=RegExp(Iqe,"g");function wqe(t){return function(e){return Cqe(Eqe(mqe(e).replace(yqe,"")),t,"")}}die.exports=wqe});var mie=E((jdt,Cie)=>{var Bqe=rN(),Qqe=Bqe(function(t,e,r){return t+(r?"_":"")+e.toLowerCase()});Cie.exports=Qqe});var Iie=E((Ydt,Eie)=>{var bqe=ZP(),vqe=rN(),Sqe=vqe(function(t,e,r){return e=e.toLowerCase(),t+(r?bqe(e):e)});Eie.exports=Sqe});var wie=E((qdt,yie)=>{var xqe=jg(),kqe=SF(),Pqe=jF();function Dqe(t,e){var r={};return e=Pqe(e,3),kqe(t,function(i,n,s){xqe(r,e(i,n,s),i)}),r}yie.exports=Dqe});var Qie=E((Jdt,iN)=>{iN.exports=function(t){return Bie(Rqe(t),t)};iN.exports.array=Bie;function Bie(t,e){var r=t.length,i=new Array(r),n={},s=r,o=Fqe(e),a=Nqe(t);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)n[s]||l(t[s],s,new Set);return i;function l(c,u,g){if(g.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch(d){f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!n[u]){n[u]=!0;var h=o.get(c)||new Set;if(h=Array.from(h),u=h.length){g.add(c);do{var p=h[--u];l(p,a.get(p),g)}while(u);g.delete(c)}i[--r]=c}}}function Rqe(t){for(var e=new Set,r=0,i=t.length;r{"use strict";Object.defineProperty(nN,"__esModule",{value:!0});nN.default=Lqe;var Tqe=k0(Ld()),Mqe=k0(Qie()),Oqe=Yd(),Kqe=k0(Dc()),Uqe=k0(qg());function k0(t){return t&&t.__esModule?t:{default:t}}function Lqe(t,e=[]){let r=[],i=[];function n(s,o){var a=(0,Oqe.split)(s)[0];~i.indexOf(a)||i.push(a),~e.indexOf(`${o}-${a}`)||r.push([o,a])}for(let s in t)if((0,Tqe.default)(t,s)){let o=t[s];~i.indexOf(s)||i.push(s),Kqe.default.isRef(o)&&o.isSibling?n(o.path,s):(0,Uqe.default)(o)&&"deps"in o&&o.deps.forEach(a=>n(a,s))}return Mqe.default.array(i,r).reverse()}});var Sie=E(sN=>{"use strict";Object.defineProperty(sN,"__esModule",{value:!0});sN.default=Hqe;function vie(t,e){let r=Infinity;return t.some((i,n)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(i))!==-1)return r=n,!0}),r}function Hqe(t){return(e,r)=>vie(t,e)-vie(t,r)}});var Nie=E($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});$d.create=xie;$d.default=void 0;var kie=Fo(Ld()),Pie=Fo(mie()),Gqe=Fo(Iie()),jqe=Fo(wie()),Yqe=Fo(YF()),qqe=Yd(),Die=La(),Jqe=Fo(bie()),Rie=Fo(Sie()),Wqe=Fo(a0()),zqe=Fo(xc()),oN=Fo(Ma());function Fo(t){return t&&t.__esModule?t:{default:t}}function ef(){return ef=Object.assign||function(t){for(var e=1;eObject.prototype.toString.call(t)==="[object Object]";function Vqe(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(i=>r.indexOf(i)===-1)}var _qe=(0,Rie.default)([]),P0=class extends oN.default{constructor(e){super({type:"object"});this.fields=Object.create(null),this._sortErrors=_qe,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch(n){i=null}return this.isType(i)?i:null}),e&&this.shape(e)})}_typeCheck(e){return Fie(e)||typeof e=="function"}_cast(e,r={}){var i;let n=super._cast(e,r);if(n===void 0)return this.getDefault();if(!this._typeCheck(n))return n;let s=this.fields,o=(i=r.stripUnknown)!=null?i:this.spec.noUnknown,a=this._nodes.concat(Object.keys(n).filter(g=>this._nodes.indexOf(g)===-1)),l={},c=ef({},r,{parent:l,__validating:r.__validating||!1}),u=!1;for(let g of a){let f=s[g],h=(0,kie.default)(n,g);if(f){let p,d=n[g];c.path=(r.path?`${r.path}.`:"")+g,f=f.resolve({value:d,context:r.context,parent:l});let m="spec"in f?f.spec:void 0,I=m==null?void 0:m.strict;if(m==null?void 0:m.strip){u=u||g in n;continue}p=!r.__validating||!I?f.cast(n[g],c):n[g],p!==void 0&&(l[g]=p)}else h&&!o&&(l[g]=n[g]);l[g]!==n[g]&&(u=!0)}return u?l:n}_validate(e,r={},i){let n=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:l=this.spec.abortEarly,recursive:c=this.spec.recursive}=r;o=[{schema:this,value:a},...o],r.__validating=!0,r.originalValue=a,r.from=o,super._validate(e,r,(u,g)=>{if(u){if(!zqe.default.isError(u)||l)return void i(u,g);n.push(u)}if(!c||!Fie(g)){i(n[0]||null,g);return}a=a||g;let f=this._nodes.map(h=>(p,d)=>{let m=h.indexOf(".")===-1?(r.path?`${r.path}.`:"")+h:`${r.path||""}["${h}"]`,I=this.fields[h];if(I&&"validate"in I){I.validate(g[h],ef({},r,{path:m,from:o,strict:!0,parent:g,originalValue:a[h]}),d);return}d(null)});(0,Wqe.default)({sync:s,tests:f,value:g,errors:n,endEarly:l,sort:this._sortErrors,path:r.path},i)})}clone(e){let r=super.clone(e);return r.fields=ef({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),i=r.fields;for(let[n,s]of Object.entries(this.fields)){let o=i[n];o===void 0?i[n]=s:o instanceof oN.default&&s instanceof oN.default&&(i[n]=s.concat(o))}return r.withMutation(()=>r.shape(i))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let i=this.fields[r];e[r]="default"in i?i.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(!!this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let i=this.clone(),n=Object.assign(i.fields,e);if(i.fields=n,i._sortErrors=(0,Rie.default)(Object.keys(n)),r.length){Array.isArray(r[0])||(r=[r]);let s=r.map(([o,a])=>`${o}-${a}`);i._excludedEdges=i._excludedEdges.concat(s)}return i._nodes=(0,Jqe.default)(n,i._excludedEdges),i}pick(e){let r={};for(let i of e)this.fields[i]&&(r[i]=this.fields[i]);return this.clone().withMutation(i=>(i.fields={},i.shape(r)))}omit(e){let r=this.clone(),i=r.fields;r.fields={};for(let n of e)delete i[n];return r.withMutation(()=>r.shape(i))}from(e,r,i){let n=(0,qqe.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,kie.default)(s,e)&&(o=ef({},s),i||delete o[e],o[r]=n(s)),o})}noUnknown(e=!0,r=Die.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let i=this.test({name:"noUnknown",exclusive:!0,message:r,test(n){if(n==null)return!0;let s=Vqe(this.schema,n);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return i.spec.noUnknown=e,i}unknown(e=!0,r=Die.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,jqe.default)(r,(i,n)=>e(n)))}camelCase(){return this.transformKeys(Gqe.default)}snakeCase(){return this.transformKeys(Pie.default)}constantCase(){return this.transformKeys(e=>(0,Pie.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,Yqe.default)(this.fields,r=>r.describe()),e}};$d.default=P0;function xie(t){return new P0(t)}xie.prototype=P0.prototype});var Tie=E(eC=>{"use strict";Object.defineProperty(eC,"__esModule",{value:!0});eC.create=Lie;eC.default=void 0;var aN=tf(Zg()),Xqe=tf(qg()),Zqe=tf(Nd()),AN=La(),$qe=tf(a0()),eJe=tf(xc()),tJe=tf(Ma());function tf(t){return t&&t.__esModule?t:{default:t}}function D0(){return D0=Object.assign||function(t){for(var e=1;e{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch(i){r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let i=super._cast(e,r);if(!this._typeCheck(i)||!this.innerType)return i;let n=!1,s=i.map((o,a)=>{let l=this.innerType.cast(o,D0({},r,{path:`${r.path||""}[${a}]`}));return l!==o&&(n=!0),l});return n?s:i}_validate(e,r={},i){var n,s;let o=[],a=r.sync,l=r.path,c=this.innerType,u=(n=r.abortEarly)!=null?n:this.spec.abortEarly,g=(s=r.recursive)!=null?s:this.spec.recursive,f=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(h,p)=>{if(h){if(!eJe.default.isError(h)||u)return void i(h,p);o.push(h)}if(!g||!c||!this._typeCheck(p)){i(o[0]||null,p);return}f=f||p;let d=new Array(p.length);for(let m=0;mc.validate(I,b,H)}(0,$qe.default)({sync:a,path:l,value:p,errors:o,endEarly:u,tests:d},i)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,Xqe.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,Zqe.default)(e));return r.innerType=e,r}length(e,r=AN.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,aN.default)(i)||i.length===this.resolve(e)}})}min(e,r){return r=r||AN.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,aN.default)(i)||i.length>=this.resolve(e)}})}max(e,r){return r=r||AN.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,aN.default)(i)||i.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(i,n,s)=>!e(i,n,s):i=>!!i;return this.transform(i=>i!=null?i.filter(r):i)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};eC.default=R0;Lie.prototype=R0.prototype});var Mie=E(tC=>{"use strict";Object.defineProperty(tC,"__esModule",{value:!0});tC.create=rJe;tC.default=void 0;var nJe=iJe(qg());function iJe(t){return t&&t.__esModule?t:{default:t}}function rJe(t){return new lN(t)}var lN=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,i={})=>{let n=this.builder(r,i);if(!(0,nJe.default)(n))throw new TypeError("lazy() functions must return a valid schema");return n.resolve(i)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,i){return this._resolve(e,r).validate(e,r,i)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,i){return this._resolve(r,i).validateAt(e,r,i)}validateSyncAt(e,r,i){return this._resolve(r,i).validateSyncAt(e,r,i)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},sJe=lN;tC.default=sJe});var Oie=E(cN=>{"use strict";Object.defineProperty(cN,"__esModule",{value:!0});cN.default=oJe;var AJe=aJe(La());function aJe(t){return t&&t.__esModule?t:{default:t}}function oJe(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{AJe.default[e][r]=t[e][r]})})}});var gN=E(cr=>{"use strict";Object.defineProperty(cr,"__esModule",{value:!0});cr.addMethod=lJe;Object.defineProperty(cr,"MixedSchema",{enumerable:!0,get:function(){return Kie.default}});Object.defineProperty(cr,"mixed",{enumerable:!0,get:function(){return Kie.create}});Object.defineProperty(cr,"BooleanSchema",{enumerable:!0,get:function(){return uN.default}});Object.defineProperty(cr,"bool",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"boolean",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"StringSchema",{enumerable:!0,get:function(){return Uie.default}});Object.defineProperty(cr,"string",{enumerable:!0,get:function(){return Uie.create}});Object.defineProperty(cr,"NumberSchema",{enumerable:!0,get:function(){return Hie.default}});Object.defineProperty(cr,"number",{enumerable:!0,get:function(){return Hie.create}});Object.defineProperty(cr,"DateSchema",{enumerable:!0,get:function(){return Gie.default}});Object.defineProperty(cr,"date",{enumerable:!0,get:function(){return Gie.create}});Object.defineProperty(cr,"ObjectSchema",{enumerable:!0,get:function(){return jie.default}});Object.defineProperty(cr,"object",{enumerable:!0,get:function(){return jie.create}});Object.defineProperty(cr,"ArraySchema",{enumerable:!0,get:function(){return Yie.default}});Object.defineProperty(cr,"array",{enumerable:!0,get:function(){return Yie.create}});Object.defineProperty(cr,"ref",{enumerable:!0,get:function(){return cJe.create}});Object.defineProperty(cr,"lazy",{enumerable:!0,get:function(){return uJe.create}});Object.defineProperty(cr,"ValidationError",{enumerable:!0,get:function(){return gJe.default}});Object.defineProperty(cr,"reach",{enumerable:!0,get:function(){return fJe.default}});Object.defineProperty(cr,"isSchema",{enumerable:!0,get:function(){return qie.default}});Object.defineProperty(cr,"setLocale",{enumerable:!0,get:function(){return hJe.default}});Object.defineProperty(cr,"BaseSchema",{enumerable:!0,get:function(){return pJe.default}});var Kie=Nc(yre()),uN=Nc(vre()),Uie=Nc(kre()),Hie=Nc(Rre()),Gie=Nc(Tre()),jie=Nc(Nie()),Yie=Nc(Tie()),cJe=Dc(),uJe=Mie(),gJe=rC(xc()),fJe=rC(XF()),qie=rC(qg()),hJe=rC(Oie()),pJe=rC(Ma());function rC(t){return t&&t.__esModule?t:{default:t}}function Jie(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Jie=function(){return t},t}function Nc(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Jie();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=i?Object.getOwnPropertyDescriptor(t,n):null;s&&(s.get||s.set)?Object.defineProperty(r,n,s):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}function lJe(t,e,r){if(!t||!(0,qie.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}});var Xie=E((gCt,nC)=>{"use strict";var mJe=process.env.TERM_PROGRAM==="Hyper",EJe=process.platform==="win32",zie=process.platform==="linux",fN={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},Vie=Object.assign({},fN,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),_ie=Object.assign({},fN,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:zie?"\u25B8":"\u276F",pointerSmall:zie?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});nC.exports=EJe&&!mJe?Vie:_ie;Reflect.defineProperty(nC.exports,"common",{enumerable:!1,value:fN});Reflect.defineProperty(nC.exports,"windows",{enumerable:!1,value:Vie});Reflect.defineProperty(nC.exports,"other",{enumerable:!1,value:_ie})});var js=E((fCt,hN)=>{"use strict";var IJe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),yJe=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Zie=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=s=>{let o=s.open=`[${s.codes[0]}m`,a=s.close=`[${s.codes[1]}m`,l=s.regex=new RegExp(`\\u001b\\[${s.codes[1]}m`,"g");return s.wrap=(c,u)=>{c.includes(a)&&(c=c.replace(l,a+o));let g=o+c+a;return u?g.replace(/\r*\n/g,`${a}$&${o}`):g},s},r=(s,o,a)=>typeof s=="function"?s(o):s.wrap(o,a),i=(s,o)=>{if(s===""||s==null)return"";if(t.enabled===!1)return s;if(t.visible===!1)return"";let a=""+s,l=a.includes(` -`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=r(t.styles[o[c]],a,l);return a},n=(s,o,a)=>{t.styles[s]=e({name:s,codes:o}),(t.keys[a]||(t.keys[a]=[])).push(s),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(c){t.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,t),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=yJe,t.hasColor=t.hasAnsi=s=>(t.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&t.ansiRegex.test(s)),t.alias=(s,o)=>{let a=typeof o=="string"?t[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),t.styles[s]=a,a.stack=[s]),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(l){t.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,t),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},t.theme=s=>{if(!IJe(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))t.alias(o,s[o]);return t},t.alias("unstyle",s=>typeof s=="string"&&s!==""?(t.ansiRegex.lastIndex=0,s.replace(t.ansiRegex,"")):""),t.alias("noop",s=>s),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=Xie(),t.define=n,t};hN.exports=Zie();hN.exports.create=Zie});var Mi=E(bt=>{"use strict";var wJe=Object.prototype.toString,Cs=js(),$ie=!1,pN=[],ene={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};bt.longest=(t,e)=>t.reduce((r,i)=>Math.max(r,e?i[e].length:i.length),0);bt.hasColor=t=>!!t&&Cs.hasColor(t);var N0=bt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);bt.nativeType=t=>wJe.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");bt.isAsyncFn=t=>bt.nativeType(t)==="asyncfunction";bt.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";bt.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;bt.scrollDown=(t=[])=>[...t.slice(1),t[0]];bt.scrollUp=(t=[])=>[t.pop(),...t];bt.reorder=(t=[])=>{let e=t.slice();return e.sort((r,i)=>r.index>i.index?1:r.index{let i=t.length,n=r===i?0:r<0?i-1:r,s=t[e];t[e]=t[n],t[n]=s};bt.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};bt.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};bt.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:i=` -`+r,width:n=80}=e;n-=((i+r).match(/[^\S\n]/g)||[]).length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=t.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),r+c.join(i)};bt.unmute=t=>{let e=t.stack.find(i=>Cs.keys.color.includes(i));return e?Cs[e]:t.stack.find(i=>i.slice(2)==="bg")?Cs[e.slice(2)]:i=>i};bt.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";bt.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i));if(e){let i=Cs["bg"+bt.pascal(e)];return i?i.black:t}let r=t.stack.find(i=>i.slice(0,2)==="bg");return r?Cs[r.slice(2).toLowerCase()]||t:Cs.none};bt.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i)),r=t.stack.find(i=>i.slice(0,2)==="bg");if(e&&!r)return Cs[ene[e]||e];if(r){let i=r.slice(2).toLowerCase(),n=ene[i];return n&&Cs["bg"+bt.pascal(n)]||t}return Cs.none};bt.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=r<10?"0"+r:r;return n+":"+s+" "+i};bt.set=(t={},e="",r)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:r;return!bt.isObject(a)&&s{let i=t[e]==null?e.split(".").reduce((n,s)=>n&&n[s],t):t[e];return i==null?r:i};bt.mixin=(t,e)=>{if(!N0(t))return e;if(!N0(e))return t;for(let r of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,r);if(i.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&N0(i.value)){let n=Object.getOwnPropertyDescriptor(t,r);N0(n.value)?t[r]=bt.merge({},t[r],e[r]):Reflect.defineProperty(t,r,i)}else Reflect.defineProperty(t,r,i);else Reflect.defineProperty(t,r,i)}return t};bt.merge=(...t)=>{let e={};for(let r of t)bt.mixin(e,r);return e};bt.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let i of Object.keys(r)){let n=r[i];typeof n=="function"?bt.define(t,i,n.bind(e)):bt.define(t,i,n)}};bt.onExit=t=>{let e=(r,i)=>{$ie||($ie=!0,pN.forEach(n=>n()),r===!0&&process.exit(128+i))};pN.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),pN.push(t)};bt.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};bt.defineExport=(t,e,r)=>{let i;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():r()}})}});var tne=E(nf=>{"use strict";nf.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};nf.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};nf.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};nf.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};nf.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var nne=E((dCt,rne)=>{"use strict";var ine=require("readline"),BJe=tne(),QJe=/^(?:\x1b)([a-zA-Z0-9])$/,bJe=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,vJe={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function SJe(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function xJe(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var L0=(t="",e={})=>{let r,i=P({name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t},e);if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=""+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=i.sequence||""),i.sequence=i.sequence||t||i.name,t==="\r")i.raw=void 0,i.name="return";else if(t===` -`)i.name="enter";else if(t===" ")i.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x7F"||t==="\b")i.name="backspace",i.meta=t.charAt(0)==="";else if(t===""||t==="")i.name="escape",i.meta=t.length===2;else if(t===" "||t===" ")i.name="space",i.meta=t.length===2;else if(t<="")i.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")i.name="number";else if(t.length===1&&t>="a"&&t<="z")i.name=t;else if(t.length===1&&t>="A"&&t<="Z")i.name=t.toLowerCase(),i.shift=!0;else if(r=QJe.exec(t))i.meta=!0,i.shift=/^[A-Z]$/.test(r[1]);else if(r=bJe.exec(t)){let n=[...t];n[0]===""&&n[1]===""&&(i.option=!0);let s=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),o=(r[3]||r[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=vJe[s],i.shift=SJe(s)||i.shift,i.ctrl=xJe(s)||i.ctrl}return i};L0.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let i=ine.createInterface({terminal:!0,input:r});ine.emitKeypressEvents(r,i);let n=(a,l)=>e(a,L0(a,l),i),s=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",n),i.resume(),()=>{r.isTTY&&r.setRawMode(s),r.removeListener("keypress",n),i.pause(),i.close()}};L0.action=(t,e,r)=>{let i=P(P({},BJe),r);return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};rne.exports=L0});var one=E((CCt,sne)=>{"use strict";sne.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let i=e[r];typeof i=="number"&&(i={interval:i}),kJe(t,r,i)}};function kJe(t,e,r={}){let i=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=r.interval||120;i.frames=r.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,t.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),t.once("close",()=>i.stop()),i.stop}});var lne=E((mCt,ane)=>{"use strict";var{define:PJe,width:DJe}=Mi(),Ane=class{constructor(e){let r=e.options;PJe(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=DJe(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e=P({},this);return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};ane.exports=Ane});var une=E((ECt,cne)=>{"use strict";var dN=Mi(),yi=js(),CN={default:yi.noop,noop:yi.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||dN.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||dN.complement(this.primary)},primary:yi.cyan,success:yi.green,danger:yi.magenta,strong:yi.bold,warning:yi.yellow,muted:yi.dim,disabled:yi.gray,dark:yi.dim.gray,underline:yi.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};CN.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(yi.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(yi.visible=t.styles.visible);let e=dN.merge({},CN,t.styles);delete e.merge;for(let r of Object.keys(yi))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});for(let r of Object.keys(yi.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});return e};cne.exports=CN});var fne=E((ICt,gne)=>{"use strict";var mN=process.platform==="win32",Ka=js(),RJe=Mi(),EN=_(P({},Ka.symbols),{upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Ka.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Ka.symbols.question,submitted:Ka.symbols.check,cancelled:Ka.symbols.cross},separator:{pending:Ka.symbols.pointerSmall,submitted:Ka.symbols.middot,cancelled:Ka.symbols.middot},radio:{off:mN?"( )":"\u25EF",on:mN?"(*)":"\u25C9",disabled:mN?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]});EN.merge=t=>{let e=RJe.merge({},Ka.symbols,EN,t.symbols);return delete e.merge,e};gne.exports=EN});var pne=E((yCt,hne)=>{"use strict";var FJe=une(),NJe=fne(),LJe=Mi();hne.exports=t=>{t.options=LJe.merge({},t.options.theme,t.options),t.symbols=NJe.merge(t.options),t.styles=FJe.merge(t.options)}});var Ine=E((dne,Cne)=>{"use strict";var mne=process.env.TERM_PROGRAM==="Apple_Terminal",TJe=js(),IN=Mi(),Ys=Cne.exports=dne,Ir="[",Ene="\x07",yN=!1,HA=Ys.code={bell:Ene,beep:Ene,beginning:`${Ir}G`,down:`${Ir}J`,esc:Ir,getPosition:`${Ir}6n`,hide:`${Ir}?25l`,line:`${Ir}2K`,lineEnd:`${Ir}K`,lineStart:`${Ir}1K`,restorePosition:Ir+(mne?"8":"u"),savePosition:Ir+(mne?"7":"s"),screen:`${Ir}2J`,show:`${Ir}?25h`,up:`${Ir}1J`},Lc=Ys.cursor={get hidden(){return yN},hide(){return yN=!0,HA.hide},show(){return yN=!1,HA.show},forward:(t=1)=>`${Ir}${t}C`,backward:(t=1)=>`${Ir}${t}D`,nextLine:(t=1)=>`${Ir}E`.repeat(t),prevLine:(t=1)=>`${Ir}F`.repeat(t),up:(t=1)=>t?`${Ir}${t}A`:"",down:(t=1)=>t?`${Ir}${t}B`:"",right:(t=1)=>t?`${Ir}${t}C`:"",left:(t=1)=>t?`${Ir}${t}D`:"",to(t,e){return e?`${Ir}${e+1};${t+1}H`:`${Ir}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Lc.left(-t):t>0?Lc.right(t):"",r+=e<0?Lc.up(-e):e>0?Lc.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:i,input:n,prompt:s,size:o,value:a}=t;if(i=IN.isPrimitive(i)?String(i):"",n=IN.isPrimitive(n)?String(n):"",a=IN.isPrimitive(a)?String(a):"",o){let l=Ys.cursor.up(o)+Ys.cursor.to(s.length),c=n.length-r;return c>0&&(l+=Ys.cursor.left(c)),l}if(a||e){let l=!n&&!!i?-i.length:-n.length+r;return e&&(l-=e.length),n===""&&i&&!s.includes(i)&&(l+=i.length),Ys.cursor.move(l)}}},wN=Ys.erase={screen:HA.screen,up:HA.up,down:HA.down,line:HA.line,lineEnd:HA.lineEnd,lineStart:HA.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return wN.line+Lc.to(0);let r=s=>[...TJe.unstyle(s)].length,i=t.split(/\r?\n/),n=0;for(let s of i)n+=1+Math.floor(Math.max(r(s)-1,0)/e);return(wN.line+Lc.prevLine()).repeat(n-1)+wN.line+Lc.to(0)}});var sf=E((wCt,yne)=>{"use strict";var MJe=require("events"),wne=js(),BN=nne(),OJe=one(),KJe=lne(),UJe=pne(),bn=Mi(),Tc=Ine(),T0=class extends MJe{constructor(e={}){super();this.name=e.name,this.type=e.type,this.options=e,UJe(this),OJe(this),this.state=new KJe(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=GJe(this.options.margin),this.setMaxListeners(0),HJe(this)}async keypress(e,r={}){this.keypressed=!0;let i=BN.action(e,BN(e,r),this.options.actions);this.state.keypress=i,this.emit("keypress",e,i),this.emit("state",this.state.clone());let n=this.options[i.action]||this[i.action]||this.dispatch;if(typeof n=="function")return await n.call(this,e,i);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Tc.code.beep)}cursorHide(){this.stdout.write(Tc.cursor.hide()),bn.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Tc.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Tc.cursor.down(e)+Tc.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:i}=this.sections(),{cursor:n,initial:s="",input:o="",value:a=""}=this,l=this.state.size=i.length,c={after:r,cursor:n,initial:s,input:o,prompt:e,size:l,value:a},u=Tc.cursor.restore(c);u&&this.stdout.write(u)}sections(){let{buffer:e,input:r,prompt:i}=this.state;i=wne.unstyle(i);let n=wne.unstyle(e),s=n.indexOf(i),o=n.slice(0,s),l=n.slice(s).split(` -`),c=l[0],u=l[l.length-1],f=(i+(r?" "+r:"")).length,h=fe.call(this,this.value),this.result=()=>i.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let n=r.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=r&&r[e]!=null?r[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,r,i);return!g&&r&&r[e]?this.resolve(c,s,r,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,i=this.state;return i.timer=r,bn.isObject(e)&&(e=e[i.status]||e.pending),bn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return bn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,i=this.state;i.timer=r;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return bn.isObject(s)&&(s=s[i.status]||s.pending),bn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,r){let i=await this.element("pointer",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===r,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=bn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,r){let i=await this.element("indicator",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return bn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return bn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return bn.resolve(this,e,...r)}get base(){return T0.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||bn.height(this.stdout,25)}get width(){return this.options.columns||bn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,i=[r,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function HJe(t){let e=n=>t[n]===void 0||typeof t[n]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(t.options)){if(r.includes(n)||/^on[A-Z]/.test(n))continue;let s=t.options[n];typeof s=="function"&&e(n)?i.includes(n)||(t[n]=s.bind(t)):typeof t[n]!="function"&&(t[n]=s)}}function GJe(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=n=>n%2==0?` -`:" ",i=[];for(let n=0;n<4;n++){let s=r(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}yne.exports=T0});var bne=E((BCt,Bne)=>{"use strict";var jJe=Mi(),Qne={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return Qne.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};Bne.exports=(t,e={})=>{let r=jJe.merge({},Qne,e.roles);return r[t]||r.default}});var sC=E((QCt,vne)=>{"use strict";var YJe=js(),qJe=sf(),JJe=bne(),M0=Mi(),{reorder:QN,scrollUp:WJe,scrollDown:zJe,isObject:Sne,swap:VJe}=M0,xne=class extends qJe{constructor(e){super(e);this.cursorHide(),this.maxSelected=e.maxSelected||Infinity,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Sne(r)&&(r=Object.keys(r)),Array.isArray(r)?(i!=null&&(this.index=this.findIndex(i)),r.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(r=i),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l(this.state.loadingChoices=!1,o))}async toChoice(e,r,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=JJe(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,M0.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,YJe.unstyle(e.message).length));let o=P({},e);return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,i){let n=await this.toChoice(e,r,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,r,i){let n=P({name:"New choice name?",editable:!0,newChoice:!0},e),s=await this.addChoice(n,r,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(n=>this.toggle(n,r));let i=e.parent;for(;i;){let n=i.choices.filter(s=>this.isDisabled(s));i.enabled=n.every(s=>s.enabled===!0),i=i.parent}return kne(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=i=>{let n=Number(i);if(n>this.choices.length-1)return this.alert();let s=this.focused,o=this.choices.find(a=>n===a.index);if(!o.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(o)===-1){let a=QN(this.choices),l=a.indexOf(o);if(s.index>l){let c=a.slice(l,l+this.limit),u=a.filter(g=>!c.includes(g));this.choices=c.concat(u)}else{let c=l-this.limit+1;this.choices=a.slice(c).concat(a.slice(0,c))}}return this.index=this.choices.indexOf(o),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(i=>{let n=this.choices.length,s=this.num,o=(a=!1,l)=>{clearTimeout(this.numberTimeout),a&&(l=r(s)),this.num="",i(l)};if(s==="0"||s.length===1&&Number(s+"0")>n)return o(!0);if(Number(s)>n)return o(!1,this.alert());this.numberTimeout=setTimeout(()=>o(!0),this.delay)})}home(){return this.choices=QN(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=QN(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===0?this.alert():e>r&&i===0?this.scrollUp():(this.index=(i-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===r-1?this.alert():e>r&&i===r-1?this.scrollDown():(this.index=(i+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=WJe(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=zJe(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){VJe(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(i=>e[i]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(i=>!this.isDisabled(i));return e.enabled&&r.every(i=>this.isEnabled(i))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((i,n)=>(i[n]=this.find(n,r),i),{})}filter(e,r){let i=(a,l)=>[a.name,l].includes(e),n=typeof e=="function"?e:i,o=(this.options.multiple?this.state._choices:this.choices).filter(n);return r?o.map(a=>a[r]):o}find(e,r){if(Sne(e))return r?e[r]:e;let i=(o,a)=>[o.name,a].includes(e),n=typeof e=="function"?e:i,s=this.choices.find(n);if(s)return r?s[r]:s}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(o=>o.newChoice))return this.alert();let{reorder:r,sort:i}=this.options,n=this.multiple===!0,s=this.selected;return s===void 0?this.alert():(Array.isArray(s)&&r!==!1&&i!==!0&&(s=M0.reorder(s)),this.value=n?s.map(o=>o.name):s.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(i=>i.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let i=this.find(r);i&&(this.initial=i.index,this.focus(i,!0))}}}get choices(){return kne(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:i}=this,n=e.limit||this._limit||r.limit||i.length;return Math.min(n,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function kne(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(M0.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let i=r.choices.filter(n=>!t.isDisabled(n));r.enabled=i.every(n=>n.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}vne.exports=xne});var GA=E((bCt,Pne)=>{"use strict";var _Je=sC(),bN=Mi(),Dne=class extends _Je{constructor(e){super(e);this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let i=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!bN.hasColor(i)&&(i=this.styles.strong(i)),this.resolve(i,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await this.indicator(e,r)+(e.pad||""),o=await this.resolve(e.hint,this.state,e,r);o&&!bN.hasColor(o)&&(o=this.styles.muted(o));let a=this.indent(e),l=await this.choiceMessage(e,r),c=()=>[this.margin[3],a+n+s,l,this.margin[1],o].filter(Boolean).join(" ");return e.role==="heading"?c():e.disabled?(bN.hasColor(l)||(l=this.styles.disabled(l)),c()):(i&&(l=this.styles.em(l)),c())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(s,o)=>await this.renderChoice(s,o)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let i=this.margin[0]+r.join(` -`),n;return this.options.choicesHeader&&(n=await this.resolve(this.options.choicesHeader,this.state)),[n,i].filter(Boolean).join(` -`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,i="",n=await this.header(),s=await this.prefix(),o=await this.separator(),a=await this.message();this.options.promptLine!==!1&&(i=[s,a,o,""].join(" "),this.state.prompt=i);let l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();l&&(i+=l),c&&!i.includes(c)&&(i+=" "+c),e&&!l&&!u.trim()&&this.multiple&&this.emptyError!=null&&(i+=this.styles.danger(this.emptyError)),this.clear(r),this.write([n,i,u,g].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Pne.exports=Dne});var Nne=E((vCt,Rne)=>{"use strict";var XJe=GA(),ZJe=(t,e)=>{let r=t.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(r),o=e(i.slice(s,s+r.length));return s>=0?i.slice(0,s)+o+i.slice(s+r.length):i}},Fne=class extends XJe{constructor(e){super(e);this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:i}=this.state;return this.input=i.slice(0,r)+e+i.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let i=e.toLowerCase();return r.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=ZJe(this.input,e),i=this.choices;this.choices=i.map(n=>_(P({},n),{message:r(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Rne.exports=Fne});var SN=E((SCt,Lne)=>{"use strict";var vN=Mi();Lne.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||t.styles.placeholder,l=vN.inverse(t.styles.primary),c=d=>l(t.styles.black(d)),u=r,g=" ",f=c(g);if(t.blink&&t.blink.off===!0&&(c=d=>d,f=""),s&&n===0&&i===""&&r==="")return c(g);if(s&&n===0&&(r===i||r===""))return c(i[0])+a(i.slice(1));i=vN.isPrimitive(i)?`${i}`:"",r=vN.isPrimitive(r)?`${r}`:"";let h=i&&i.startsWith(r)&&i!==r,p=h?c(i[r.length]):f;if(n!==r.length&&s===!0&&(u=r.slice(0,n)+c(r[n])+r.slice(n+1),p=""),s===!1&&(p=""),h){let d=t.styles.unstyle(u+p);return u+p+a(i.slice(d.length))}return u+p}});var O0=E((xCt,Tne)=>{"use strict";var $Je=js(),e3e=GA(),t3e=SN(),Mne=class extends e3e{constructor(e){super(_(P({},e),{multiple:!0}));this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:i,input:n}=r;return r.value=r.input=n.slice(0,i)+e+n.slice(i),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:i}=e;return e.value=e.input=i.slice(0,r-1)+i.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:i}=e;if(i[r]===void 0)return this.alert();let n=`${i}`.slice(0,r)+`${i}`.slice(r+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:i}=e;return r&&r.startsWith(i)&&i!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let i=await this.resolve(e.separator,this.state,e,r)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,d=this.index===r,m=e.validate||(()=>!0),I=await this.choiceSeparator(e,r),B=e.message;this.align==="right"&&(B=B.padStart(this.longest+1," ")),this.align==="left"&&(B=B.padEnd(this.longest+1," "));let b=this.values[a]=c||o,R=c?"success":"dark";await m.call(e,b,this.state)!==!0&&(R="danger");let L=n[R](await this.indicator(e,r))+(e.pad||""),K=this.indent(e),J=()=>[K,L,B+I,c,p].filter(Boolean).join(" ");if(i.submitted)return B=$Je.unstyle(B),c=g(c),p="",J();if(e.format)c=await e.format.call(this,c,e,r);else{let ne=this.styles.muted;c=t3e(this,{input:c,initial:o,pos:s,showCursor:d,color:ne})}return this.isValue(c)||(c=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,b,e,r)),d&&(B=f(B)),e.error?c+=(c?" ":"")+h(e.error.trim()):e.hint&&(c+=(c?" ":"")+u(e.hint.trim())),J()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Tne.exports=Mne});var xN=E((kCt,One)=>{"use strict";var r3e=O0(),i3e=()=>{throw new Error("expected prompt to have a custom authenticate method")},Kne=(t=i3e)=>{class e extends r3e{constructor(i){super(i)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(i){return Kne(i)}}return e};One.exports=Kne()});var Gne=E((PCt,Une)=>{"use strict";var n3e=xN();function s3e(t,e){return t.username===this.options.username&&t.password===this.options.password}var Hne=(t=s3e)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(i){return this.options.showPassword?i:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(i.length))}}];class r extends n3e.create(t){constructor(n){super(_(P({},n),{choices:e}))}static create(n){return Hne(n)}}return r};Une.exports=Hne()});var K0=E((DCt,jne)=>{"use strict";var o3e=sf(),{isPrimitive:a3e,hasColor:A3e}=Mi(),Yne=class extends o3e{constructor(e){super(e);this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:i}=this;return i.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return a3e(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return A3e(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=this.styles.muted(this.default),a=[i,s,o,n].filter(Boolean).join(" ");this.state.prompt=a;let l=await this.header(),c=this.value=this.cast(e),u=await this.format(c),g=await this.error()||await this.hint(),f=await this.footer();g&&!a.includes(g)&&(u+=" "+g),a+=" "+u,this.clear(r),this.write([l,a,f].filter(Boolean).join(` -`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};jne.exports=Yne});var Wne=E((RCt,qne)=>{"use strict";var l3e=K0(),Jne=class extends l3e{constructor(e){super(e);this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};qne.exports=Jne});var _ne=E((FCt,zne)=>{"use strict";var c3e=GA(),u3e=O0(),of=u3e.prototype,Vne=class extends c3e{constructor(e){super(_(P({},e),{multiple:!0}));this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():of.dispatch.call(this,e,r)}append(e,r){return of.append.call(this,e,r)}delete(e,r){return of.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?of.next.call(this):super.next()}prev(){return this.focused.editable?of.prev.call(this):super.prev()}async indicator(e,r){let i=e.indicator||"",n=e.editable?i:super.indicator(e,r);return await this.resolve(n,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?of.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let i=r.parent?this.value[r.parent.name]:this.value;if(r.editable?i=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(i=r.enabled===!0),e=await r.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};zne.exports=Vne});var Mc=E((NCt,Xne)=>{"use strict";var g3e=sf(),f3e=SN(),{isPrimitive:h3e}=Mi(),Zne=class extends g3e{constructor(e){super(e);this.initial=h3e(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let i=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!i||i.name!=="return")?this.append(` -`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:i}=this.state;this.input=`${i}`.slice(0,r)+e+`${i}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),i=this.input.slice(e),n=r.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):f3e(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),i=await this.separator(),n=await this.message(),s=[r,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(` -`)),this.restore()}};Xne.exports=Zne});var ese=E((LCt,$ne)=>{"use strict";var p3e=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),U0=t=>p3e(t).filter(Boolean);$ne.exports=(t,e={},r="")=>{let{past:i=[],present:n=""}=e,s,o;switch(t){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:U0([r,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:U0([...s,r]),present:o};case"save":return{past:U0([...i,r]),present:""};case"remove":return o=U0(i.filter(a=>a!==r)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${t}"`)}}});var kN=E((TCt,tse)=>{"use strict";var d3e=Mc(),rse=ese(),ise=class extends d3e{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let i=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=rse(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=rse("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};tse.exports=ise});var ose=E((MCt,nse)=>{"use strict";var C3e=Mc(),sse=class extends C3e{format(){return""}};nse.exports=sse});var lse=E((OCt,ase)=>{"use strict";var m3e=Mc(),Ase=class extends m3e{constructor(e={}){super(e);this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};ase.exports=Ase});var gse=E((KCt,cse)=>{"use strict";var E3e=GA(),use=class extends E3e{constructor(e){super(_(P({},e),{multiple:!0}))}};cse.exports=use});var PN=E((UCt,fse)=>{"use strict";var I3e=Mc(),hse=class extends I3e{constructor(e={}){super(P({style:"number"},e));this.min=this.isValue(e.min)?this.toNumber(e.min):-Infinity,this.max=this.isValue(e.max)?this.toNumber(e.max):Infinity,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,i=this.toNumber(this.input);return i>this.max+r?this.alert():(this.input=`${i+r}`,this.render())}down(e){let r=e||this.minor,i=this.toNumber(this.input);return ithis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};fse.exports=hse});var dse=E((HCt,pse)=>{pse.exports=PN()});var Ese=E((GCt,Cse)=>{"use strict";var y3e=Mc(),mse=class extends y3e{constructor(e){super(e);this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Cse.exports=mse});var Bse=E((jCt,Ise)=>{"use strict";var w3e=js(),B3e=sC(),yse=Mi(),wse=class extends B3e{constructor(e={}){super(e);this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` - `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let i=0;i=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){if(this.scaleKey===!1||this.state.submitted)return"";let e=this.scale.map(i=>` ${i.name} - ${i.message}`);return["",...e].map(i=>this.styles.muted(i)).join(` -`)}renderScaleHeading(e){let r=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-r.join("").length,n=Math.round(i/(r.length-1)),o=r.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,r,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,i);let n=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let i=e.scale.map(s=>this.scaleIndicator(e,s,r)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await e.hint;s&&!yse.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,r),u=await this.renderScale(e,r),g=this.margin[1]+this.margin[3];this.scaleLength=w3e.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=yse.wordWrap(c,{width:this.widths[0],newline:a}).split(` -`).map(p=>o(p)+this.margin[1]);return i&&(u=this.styles.info(u),h=h.map(p=>this.styles.info(p))),h[0]+=u,this.linebreak&&h.push(""),[l+n,h.join(` -`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(n,s)=>await this.renderChoice(n,s)),r=await Promise.all(e),i=await this.renderScaleHeading();return this.margin[0]+[i,...r.map(n=>n.join(" "))].join(` -`)}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o="";this.options.promptLine!==!1&&(o=[i,s,n,""].join(" "),this.state.prompt=o);let a=await this.header(),l=await this.format(),c=await this.renderScaleKey(),u=await this.error()||await this.hint(),g=await this.renderChoices(),f=await this.footer(),h=this.emptyError;l&&(o+=l),u&&!o.includes(u)&&(o+=" "+u),e&&!l&&!g.trim()&&this.multiple&&h!=null&&(o+=this.styles.danger(h)),this.clear(r),this.write([a,o,c,g,f].filter(Boolean).join(` -`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};Ise.exports=wse});var Sse=E((YCt,Qse)=>{"use strict";var bse=js(),Q3e=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",vse=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Q3e(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},b3e=async(t={},e={},r=i=>i)=>{let i=new Set,n=t.fields||[],s=t.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});uR.name===I.key);I.field=n.find(R=>R.name===I.key),b||(b=new vse(I),a.push(b)),b.lines.push(I.line-1);continue}let d=o[o.length-1];d.type==="text"&&d.line===c?d.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};Qse.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),i=P(P({},e.values),e.initial),{tabstops:n,items:s,keys:o}=await b3e(e,i),a=DN("result",t,e),l=DN("format",t,e),c=DN("validate",t,e,!0),u=t.isValue.bind(t);return async(g={},f=!1)=>{let h=0;g.required=r,g.items=s,g.keys=o,g.output="";let p=async(B,b,R,H)=>{let L=await c(B,b,R,H);return L===!1?"Invalid field "+R.name:L};for(let B of n){let b=B.value,R=B.key;if(B.type!=="template"){b&&(g.output+=b);continue}if(B.type==="template"){let H=s.find(q=>q.name===R);e.required===!0&&g.required.add(H.name);let L=[H.input,g.values[H.value],H.value,b].find(u),J=(H.field||{}).message||B.inner;if(f){let q=await p(g.values[R],g,H,h);if(q&&typeof q=="string"||q===!1){g.invalid.set(R,q);continue}g.invalid.delete(R);let A=await a(g.values[R],g,H,h);g.output+=bse.unstyle(A);continue}H.placeholder=!1;let ne=b;b=await l(b,g,H,h),L!==b?(g.values[R]=L,b=t.styles.typing(L),g.missing.delete(J)):(g.values[R]=void 0,L=`<${J}>`,b=t.styles.primary(L),H.placeholder=!0,g.required.has(R)&&g.missing.add(J)),g.missing.has(J)&&g.validating&&(b=t.styles.warning(L)),g.invalid.has(R)&&g.validating&&(b=t.styles.danger(L)),h===g.index&&(ne!==b?b=t.styles.underline(b):b=t.styles.heading(bse.unstyle(b))),h++}b&&(g.output+=b)}let d=g.output.split(` -`).map(B=>" "+B),m=s.length,I=0;for(let B of s)g.invalid.has(B.name)&&B.lines.forEach(b=>{d[b][0]===" "&&(d[b]=g.styles.danger(g.symbols.bullet)+d[b].slice(1))}),t.isValue(g.values[B.name])&&I++;return g.completed=(I/m*100).toFixed(0),g.output=d.join(` -`),g.output}};function DN(t,e,r,i){return(n,s,o,a)=>typeof o.field[t]=="function"?o.field[t].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var Pse=E((qCt,xse)=>{"use strict";var v3e=js(),S3e=Sse(),x3e=sf(),kse=class extends x3e{constructor(e){super(e);this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await S3e(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:i,size:n}=this.state,s=[this.options.newline,` -`].find(B=>B!=null),o=await this.prefix(),a=await this.separator(),l=await this.message(),c=[o,l,a].filter(Boolean).join(" ");this.state.prompt=c;let u=await this.header(),g=await this.error()||"",f=await this.hint()||"",h=i?"":await this.interpolate(this.state),p=this.state.key=r[e]||"",d=await this.format(p),m=await this.footer();d&&(c+=" "+d),f&&!d&&this.state.completed===0&&(c+=" "+f),this.clear(n);let I=[u,c,h,m,g.trim()];this.write(I.filter(Boolean).join(s)),this.restore()}getItem(e){let{items:r,keys:i,index:n}=this.state,s=r.find(o=>o.name===i[n]);return s&&s.input!=null&&(this.input=s.input,this.cursor=s.cursor),s}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:i,values:n}=this.state;if(e.size){let a="";for(let[l,c]of e)a+=`Invalid ${l}: ${c} -`;return this.state.error=a,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let o=v3e.unstyle(i).split(` -`).map(a=>a.slice(1)).join(` -`);return this.value={values:n,result:o},super.submit()}};xse.exports=kse});var Fse=E((JCt,Dse)=>{"use strict";var k3e="(Use + to sort)",P3e=GA(),Rse=class extends P3e{constructor(e){super(_(P({},e),{reorder:!1,sort:!0,multiple:!0}));this.state.hint=[this.options.hint,k3e].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let i=await super.renderChoice(e,r),n=this.symbols.identicalTo+" ",s=this.index===r&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${r+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Dse.exports=Rse});var Tse=E((WCt,Nse)=>{"use strict";var D3e=sC(),Lse=class extends D3e{constructor(e={}){super(e);if(this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(i=>this.styles.muted(i)),this.state.header=r.join(` - `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let i of r)i.scale=R3e(5,this.options),i.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],i=r.selected;return e.scale.forEach(n=>n.selected=!1),r.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=b=>(b?this.styles.success("\u25C9"):"\u25EF")+o,u=r+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,r),h=this.indent(e),p=h+e.scale.map((b,R)=>c(R===e.scaleIdx)).join(a),d=b=>b===e.scaleIdx?g(b):b,m=h+e.scale.map((b,R)=>d(R)).join(l),I=()=>[u,f].filter(Boolean).join(" "),B=()=>[I(),p,m," "].filter(Boolean).join(` -`);return i&&(p=this.styles.cyan(p),m=this.styles.cyan(m)),B()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(i,n)=>await this.renderChoice(i,n)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` -`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=[i,s,n].filter(Boolean).join(" ");this.state.prompt=o;let a=await this.header(),l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();(l||!c)&&(o+=" "+l),c&&!o.includes(c)&&(o+=" "+c),e&&!l&&!u&&this.multiple&&this.type!=="form"&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([o,a,u,g].filter(Boolean).join(` -`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function R3e(t,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>P({},i));let r=[];for(let i=1;i{Mse.exports=kN()});var Hse=E((VCt,Kse)=>{"use strict";var F3e=K0(),Use=class extends F3e{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([r,c,l].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Kse.exports=Use});var Yse=E((_Ct,Gse)=>{"use strict";var N3e=GA(),jse=class extends N3e{constructor(e){super(e);if(typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let i=await super.toChoices(e,r);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Gse.exports=jse});var Jse=E(RN=>{"use strict";var qse=Mi(),ti=(t,e)=>{qse.defineExport(RN,t,e),qse.defineExport(RN,t.toLowerCase(),e)};ti("AutoComplete",()=>Nne());ti("BasicAuth",()=>Gne());ti("Confirm",()=>Wne());ti("Editable",()=>_ne());ti("Form",()=>O0());ti("Input",()=>kN());ti("Invisible",()=>ose());ti("List",()=>lse());ti("MultiSelect",()=>gse());ti("Numeral",()=>dse());ti("Password",()=>Ese());ti("Scale",()=>Bse());ti("Select",()=>GA());ti("Snippet",()=>Pse());ti("Sort",()=>Fse());ti("Survey",()=>Tse());ti("Text",()=>Ose());ti("Toggle",()=>Hse());ti("Quiz",()=>Yse())});var zse=E((ZCt,Wse)=>{Wse.exports={ArrayPrompt:sC(),AuthPrompt:xN(),BooleanPrompt:K0(),NumberPrompt:PN(),StringPrompt:Mc()}});var aC=E(($Ct,Vse)=>{"use strict";var _se=require("assert"),FN=require("events"),jA=Mi(),No=class extends FN{constructor(e,r){super();this.options=jA.merge({},e),this.answers=P({},r)}register(e,r){if(jA.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}_se.equal(typeof r,"function","expected a function");let i=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[i]=r:this.prompts[i]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(jA.merge({},this.options,r))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=jA.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=jA;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];_se(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](r),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),r.autofill&&l!=null?(a.value=a.input=l,r.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||sf()}static get prompts(){return Jse()}static get types(){return zse()}static get prompt(){let e=(r,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(r)};return jA.mixinEmitter(e,new FN),e}};jA.mixinEmitter(No,new FN);var NN=No.prompts;for(let t of Object.keys(NN)){let e=t.toLowerCase(),r=i=>new NN[t](i).run();No.prompt[e]=r,No[e]=r,No[t]||Reflect.defineProperty(No,t,{get:()=>NN[t]})}var oC=t=>{jA.defineExport(No,t,()=>No.types[t])};oC("ArrayPrompt");oC("AuthPrompt");oC("BooleanPrompt");oC("NumberPrompt");oC("StringPrompt");Vse.exports=No});var loe=E((Gmt,Aoe)=>{function K3e(t,e){for(var r=-1,i=t==null?0:t.length;++r{var U3e=XB(),H3e=jg();function G3e(t,e,r,i){var n=!r;r||(r={});for(var s=-1,o=e.length;++s{var j3e=Af(),Y3e=zg();function q3e(t,e){return t&&j3e(e,Y3e(e),t)}uoe.exports=q3e});var hoe=E((qmt,foe)=>{function J3e(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}foe.exports=J3e});var doe=E((Jmt,poe)=>{var W3e=Gs(),z3e=u0(),V3e=hoe(),_3e=Object.prototype,X3e=_3e.hasOwnProperty;function Z3e(t){if(!W3e(t))return V3e(t);var e=z3e(t),r=[];for(var i in t)i=="constructor"&&(e||!X3e.call(t,i))||r.push(i);return r}poe.exports=Z3e});var lf=E((Wmt,Coe)=>{var $3e=bF(),eWe=doe(),tWe=Hd();function rWe(t){return tWe(t)?$3e(t,!0):eWe(t)}Coe.exports=rWe});var Eoe=E((zmt,moe)=>{var iWe=Af(),nWe=lf();function sWe(t,e){return t&&iWe(e,nWe(e),t)}moe.exports=sWe});var UN=E((hC,cf)=>{var oWe=Ks(),Ioe=typeof hC=="object"&&hC&&!hC.nodeType&&hC,yoe=Ioe&&typeof cf=="object"&&cf&&!cf.nodeType&&cf,aWe=yoe&&yoe.exports===Ioe,woe=aWe?oWe.Buffer:void 0,Boe=woe?woe.allocUnsafe:void 0;function AWe(t,e){if(e)return t.slice();var r=t.length,i=Boe?Boe(r):new t.constructor(r);return t.copy(i),i}cf.exports=AWe});var HN=E((Vmt,Qoe)=>{function lWe(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{var cWe=Af(),uWe=f0();function gWe(t,e){return cWe(t,uWe(t),e)}boe.exports=gWe});var H0=E((Xmt,Soe)=>{var fWe=vF(),hWe=fWe(Object.getPrototypeOf,Object);Soe.exports=hWe});var GN=E((Zmt,xoe)=>{var pWe=$B(),dWe=H0(),CWe=f0(),mWe=RF(),EWe=Object.getOwnPropertySymbols,IWe=EWe?function(t){for(var e=[];t;)pWe(e,CWe(t)),t=dWe(t);return e}:mWe;xoe.exports=IWe});var Poe=E(($mt,koe)=>{var yWe=Af(),wWe=GN();function BWe(t,e){return yWe(t,wWe(t),e)}koe.exports=BWe});var Roe=E((eEt,Doe)=>{var QWe=DF(),bWe=GN(),vWe=lf();function SWe(t){return QWe(t,vWe,bWe)}Doe.exports=SWe});var Noe=E((tEt,Foe)=>{var xWe=Object.prototype,kWe=xWe.hasOwnProperty;function PWe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&kWe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}Foe.exports=PWe});var G0=E((rEt,Loe)=>{var Toe=kF();function DWe(t){var e=new t.constructor(t.byteLength);return new Toe(e).set(new Toe(t)),e}Loe.exports=DWe});var Ooe=E((iEt,Moe)=>{var RWe=G0();function FWe(t,e){var r=e?RWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}Moe.exports=FWe});var Uoe=E((nEt,Koe)=>{var NWe=/\w*$/;function LWe(t){var e=new t.constructor(t.source,NWe.exec(t));return e.lastIndex=t.lastIndex,e}Koe.exports=LWe});var qoe=E((sEt,Hoe)=>{var Goe=ac(),joe=Goe?Goe.prototype:void 0,Yoe=joe?joe.valueOf:void 0;function TWe(t){return Yoe?Object(Yoe.call(t)):{}}Hoe.exports=TWe});var jN=E((oEt,Joe)=>{var MWe=G0();function OWe(t,e){var r=e?MWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Joe.exports=OWe});var zoe=E((aEt,Woe)=>{var KWe=G0(),UWe=Ooe(),HWe=Uoe(),GWe=qoe(),jWe=jN(),YWe="[object Boolean]",qWe="[object Date]",JWe="[object Map]",WWe="[object Number]",zWe="[object RegExp]",VWe="[object Set]",_We="[object String]",XWe="[object Symbol]",ZWe="[object ArrayBuffer]",$We="[object DataView]",e8e="[object Float32Array]",t8e="[object Float64Array]",r8e="[object Int8Array]",i8e="[object Int16Array]",n8e="[object Int32Array]",s8e="[object Uint8Array]",o8e="[object Uint8ClampedArray]",a8e="[object Uint16Array]",A8e="[object Uint32Array]";function l8e(t,e,r){var i=t.constructor;switch(e){case ZWe:return KWe(t);case YWe:case qWe:return new i(+t);case $We:return UWe(t,r);case e8e:case t8e:case r8e:case i8e:case n8e:case s8e:case o8e:case a8e:case A8e:return jWe(t,r);case JWe:return new i;case WWe:case _We:return new i(t);case zWe:return HWe(t);case VWe:return new i;case XWe:return GWe(t)}}Woe.exports=l8e});var Xoe=E((AEt,Voe)=>{var c8e=Gs(),_oe=Object.create,u8e=function(){function t(){}return function(e){if(!c8e(e))return{};if(_oe)return _oe(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();Voe.exports=u8e});var YN=E((lEt,Zoe)=>{var g8e=Xoe(),f8e=H0(),h8e=u0();function p8e(t){return typeof t.constructor=="function"&&!h8e(t)?g8e(f8e(t)):{}}Zoe.exports=p8e});var eae=E((cEt,$oe)=>{var d8e=jd(),C8e=Qo(),m8e="[object Map]";function E8e(t){return C8e(t)&&d8e(t)==m8e}$oe.exports=E8e});var nae=E((uEt,tae)=>{var I8e=eae(),y8e=A0(),rae=l0(),iae=rae&&rae.isMap,w8e=iae?y8e(iae):I8e;tae.exports=w8e});var oae=E((gEt,sae)=>{var B8e=jd(),Q8e=Qo(),b8e="[object Set]";function v8e(t){return Q8e(t)&&B8e(t)==b8e}sae.exports=v8e});var cae=E((fEt,aae)=>{var S8e=oae(),x8e=A0(),Aae=l0(),lae=Aae&&Aae.isSet,k8e=lae?x8e(lae):S8e;aae.exports=k8e});var pae=E((hEt,uae)=>{var P8e=Gd(),D8e=loe(),R8e=XB(),F8e=goe(),N8e=Eoe(),L8e=UN(),T8e=HN(),M8e=voe(),O8e=Poe(),K8e=FF(),U8e=Roe(),H8e=jd(),G8e=Noe(),j8e=zoe(),Y8e=YN(),q8e=As(),J8e=Od(),W8e=nae(),z8e=Gs(),V8e=cae(),_8e=zg(),X8e=lf(),Z8e=1,$8e=2,e4e=4,gae="[object Arguments]",t4e="[object Array]",r4e="[object Boolean]",i4e="[object Date]",n4e="[object Error]",fae="[object Function]",s4e="[object GeneratorFunction]",o4e="[object Map]",a4e="[object Number]",hae="[object Object]",A4e="[object RegExp]",l4e="[object Set]",c4e="[object String]",u4e="[object Symbol]",g4e="[object WeakMap]",f4e="[object ArrayBuffer]",h4e="[object DataView]",p4e="[object Float32Array]",d4e="[object Float64Array]",C4e="[object Int8Array]",m4e="[object Int16Array]",E4e="[object Int32Array]",I4e="[object Uint8Array]",y4e="[object Uint8ClampedArray]",w4e="[object Uint16Array]",B4e="[object Uint32Array]",rr={};rr[gae]=rr[t4e]=rr[f4e]=rr[h4e]=rr[r4e]=rr[i4e]=rr[p4e]=rr[d4e]=rr[C4e]=rr[m4e]=rr[E4e]=rr[o4e]=rr[a4e]=rr[hae]=rr[A4e]=rr[l4e]=rr[c4e]=rr[u4e]=rr[I4e]=rr[y4e]=rr[w4e]=rr[B4e]=!0;rr[n4e]=rr[fae]=rr[g4e]=!1;function j0(t,e,r,i,n,s){var o,a=e&Z8e,l=e&$8e,c=e&e4e;if(r&&(o=n?r(t,i,n,s):r(t)),o!==void 0)return o;if(!z8e(t))return t;var u=q8e(t);if(u){if(o=G8e(t),!a)return T8e(t,o)}else{var g=H8e(t),f=g==fae||g==s4e;if(J8e(t))return L8e(t,a);if(g==hae||g==gae||f&&!n){if(o=l||f?{}:Y8e(t),!a)return l?O8e(t,N8e(o,t)):M8e(t,F8e(o,t))}else{if(!rr[g])return n?t:{};o=j8e(t,g,a)}}s||(s=new P8e);var h=s.get(t);if(h)return h;s.set(t,o),V8e(t)?t.forEach(function(m){o.add(j0(m,e,r,m,t,s))}):W8e(t)&&t.forEach(function(m,I){o.set(I,j0(m,e,r,I,t,s))});var p=c?l?U8e:K8e:l?X8e:_8e,d=u?void 0:p(t);return D8e(d||t,function(m,I){d&&(I=m,m=t[I]),R8e(o,I,j0(m,e,r,I,t,s))}),o}uae.exports=j0});var qN=E((pEt,dae)=>{var Q4e=pae(),b4e=1,v4e=4;function S4e(t){return Q4e(t,b4e|v4e)}dae.exports=S4e});var mae=E((dEt,Cae)=>{var x4e=tF();function k4e(t,e,r){return t==null?t:x4e(t,e,r)}Cae.exports=k4e});var Qae=E((wEt,Bae)=>{function P4e(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Bae.exports=P4e});var vae=E((BEt,bae)=>{var D4e=xd(),R4e=zP();function F4e(t,e){return e.length<2?t:D4e(t,R4e(e,0,-1))}bae.exports=F4e});var xae=E((QEt,Sae)=>{var N4e=Gg(),L4e=Qae(),T4e=vae(),M4e=Sc();function O4e(t,e){return e=N4e(e,t),t=T4e(t,e),t==null||delete t[M4e(L4e(e))]}Sae.exports=O4e});var Pae=E((bEt,kae)=>{var K4e=xae();function U4e(t,e){return t==null?!0:K4e(t,e)}kae.exports=U4e});var Kae=E((tIt,Oae)=>{Oae.exports={name:"@yarnpkg/cli",version:"3.1.1",license:"BSD-2-Clause",main:"./sources/index.ts",dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/shell":"workspace:^",chalk:"^3.0.0","ci-info":"^3.2.0",clipanion:"^3.0.1",semver:"^7.1.2",tslib:"^1.13.0",typanion:"^3.3.0",yup:"^0.32.9"},devDependencies:{"@types/semver":"^7.1.0","@types/yup":"^0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2",typescript:"^4.5.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",types:"./lib/index.d.ts",bin:null},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=12 <14 || 14.2 - 14.9 || >14.10.0"}}});var iL=E((SBt,QAe)=>{"use strict";QAe.exports=function(e,r){r===!0&&(r=0);var i=e.indexOf("://"),n=e.substring(0,i).split("+").filter(Boolean);return typeof r=="number"?n[r]:n}});var nL=E((xBt,bAe)=>{"use strict";var sze=iL();function vAe(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=sze(t);return t=t.substring(t.indexOf("://")+3),vAe(e)?!0:t.indexOf("@"){"use strict";var oze=iL(),aze=nL(),Aze=require("querystring");function lze(t){t=(t||"").trim();var e={protocols:oze(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),i=-1,n=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(aze(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split("/"),e.protocol!=="file"?e.resource=s.shift():e.resource="",n=e.resource.split("@"),n.length===2&&(e.user=n[0],e.resource=n[1]),n=e.resource.split(":"),n.length===2&&(e.resource=n[0],n[1]?(e.port=Number(n[1]),isNaN(e.port)&&(e.port=null,s.unshift(n[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),n=e.pathname.split("#"),n.length===2&&(e.pathname=n[0],e.hash=n[1]),n=e.pathname.split("?"),n.length===2&&(e.pathname=n[0],e.search=n[1]),e.query=Aze.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}SAe.exports=lze});var DAe=E((PBt,kAe)=>{"use strict";var cze=typeof URL=="undefined"?require("url").URL:URL,PAe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);kAe.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new cze(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];PAe(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])PAe(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var FAe=E((DBt,RAe)=>{"use strict";var uze=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},gze=xAe(),fze=DAe();function hze(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":uze(e))!=="object"&&(e={stripFragment:!1}),t=fze(t,e));var r=gze(t);return r}RAe.exports=hze});var TAe=E((RBt,NAe)=>{"use strict";var pze=FAe(),LAe=nL();function dze(t){var e=pze(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),LAe(e.protocols)||LAe(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}NAe.exports=dze});var OAe=E((FBt,MAe)=>{"use strict";var Cze=TAe();function sL(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=Cze(t),r=e.resource.split("."),i=null;switch(e.toString=function(l){return sL.stringify(this,l)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}else{i=e.name.split("/"),i.length===2?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}else{i=e.name.split("/"),i.length===5?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}default:i=e.name.split("/");var n=i.length-1;if(i.length>=2){var s=i.indexOf("blob",2),o=i.indexOf("tree",2),a=i.indexOf("commit",2);n=s>0?s-1:o>0?o-1:a>0?a-1:n,e.owner=i.slice(0,n).join("/"),e.name=i[n],a&&(e.commit=i[n+2])}e.ref="",e.filepathtype="",e.filepath="",i.length>n+2&&["blob","tree"].indexOf(i[n+1])>=0&&(e.filepathtype=i[n+1],e.ref=i[n+2],i.length>n+3&&(e.filepath=i.slice(n+3).join("/"))),e.organization=e.owner;break}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}sL.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",i=t.user||"git",n=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+i+"@"+t.resource+r+"/"+t.full_name+n:i+"@"+t.resource+":"+t.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+t.resource+r+"/"+t.full_name+n;case"http":case"https":var s=t.token?mze(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+t.full_name+n;default:return t.href}};function mze(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}MAe.exports=sL});var NL=E((Obt,ole)=>{var Mze=jg(),Oze=Kg();function Kze(t,e,r){(r!==void 0&&!Oze(t[e],r)||r===void 0&&!(e in t))&&Mze(t,e,r)}ole.exports=Kze});var Ale=E((Kbt,ale)=>{var Uze=Hd(),Hze=Qo();function Gze(t){return Hze(t)&&Uze(t)}ale.exports=Gze});var ule=E((Ubt,lle)=>{var jze=Ac(),Yze=H0(),qze=Qo(),Jze="[object Object]",Wze=Function.prototype,zze=Object.prototype,cle=Wze.toString,Vze=zze.hasOwnProperty,_ze=cle.call(Object);function Xze(t){if(!qze(t)||jze(t)!=Jze)return!1;var e=Yze(t);if(e===null)return!0;var r=Vze.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&cle.call(r)==_ze}lle.exports=Xze});var LL=E((Hbt,gle)=>{function Zze(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}gle.exports=Zze});var hle=E((Gbt,fle)=>{var $ze=Af(),e5e=lf();function t5e(t){return $ze(t,e5e(t))}fle.exports=t5e});var Ile=E((jbt,ple)=>{var dle=NL(),r5e=UN(),i5e=jN(),n5e=HN(),s5e=YN(),Cle=Pd(),mle=As(),o5e=Ale(),a5e=Od(),A5e=zB(),l5e=Gs(),c5e=ule(),u5e=c0(),Ele=LL(),g5e=hle();function f5e(t,e,r,i,n,s,o){var a=Ele(t,r),l=Ele(e,r),c=o.get(l);if(c){dle(t,r,c);return}var u=s?s(a,l,r+"",t,e,o):void 0,g=u===void 0;if(g){var f=mle(l),h=!f&&a5e(l),p=!f&&!h&&u5e(l);u=l,f||h||p?mle(a)?u=a:o5e(a)?u=n5e(a):h?(g=!1,u=r5e(l,!0)):p?(g=!1,u=i5e(l,!0)):u=[]:c5e(l)||Cle(l)?(u=a,Cle(a)?u=g5e(a):(!l5e(a)||A5e(a))&&(u=s5e(l))):g=!1}g&&(o.set(l,u),n(u,l,i,s,o),o.delete(l)),dle(t,r,u)}ple.exports=f5e});var Ble=E((Ybt,yle)=>{var h5e=Gd(),p5e=NL(),d5e=BF(),C5e=Ile(),m5e=Gs(),E5e=lf(),I5e=LL();function wle(t,e,r,i,n){t!==e&&d5e(e,function(s,o){if(n||(n=new h5e),m5e(s))C5e(t,e,o,r,wle,i,n);else{var a=i?i(I5e(t,o),s,o+"",t,e,n):void 0;a===void 0&&(a=s),p5e(t,o,a)}},E5e)}yle.exports=wle});var ble=E((qbt,Qle)=>{var y5e=e0(),w5e=nF(),B5e=sF();function Q5e(t,e){return B5e(w5e(t,e,y5e),t+"")}Qle.exports=Q5e});var Sle=E((Jbt,vle)=>{var b5e=Kg(),v5e=Hd(),S5e=kd(),x5e=Gs();function k5e(t,e,r){if(!x5e(r))return!1;var i=typeof e;return(i=="number"?v5e(r)&&S5e(e,r.length):i=="string"&&e in r)?b5e(r[e],t):!1}vle.exports=k5e});var kle=E((Wbt,xle)=>{var P5e=ble(),D5e=Sle();function R5e(t){return P5e(function(e,r){var i=-1,n=r.length,s=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(s=t.length>3&&typeof s=="function"?(n--,s):void 0,o&&D5e(r[0],r[1],o)&&(s=n<3?void 0:s,n=1),e=Object(e);++i{var F5e=Ble(),N5e=kle(),L5e=N5e(function(t,e,r){F5e(t,e,r)});Ple.exports=L5e});var Wle=E(($vt,Jle)=>{var VL;Jle.exports=()=>(typeof VL=="undefined"&&(VL=require("zlib").brotliDecompressSync(Buffer.from("WxSteIBtDGp/1Rsko1+37VeQEmWILAWus2NIX9GQfXTamdxQ3DAVQZm/czI4dZrL7m2taiqoqpqbVIbMBngCLTBU/Z3f9icopIlQyRwSW0LmAd1xJBp0KShTakLvhLqFls9ECISbkeazt+a3Oz6WDcIQ0rgyHJrpCa+V4cmVQ2z4oM2JfN4j+7vMT96CNwkkkPaSsvdW3AmkfVxAApnLX5aOBjpOc3P7TNjG17v+MIABlUDmOqzCLLLbv11H5fHeze26jjOpgJE6N40WFR11m5pRVZE27TUgwrj1KxBDRB2mWGZPkat662N5RXbtr37ttfl5OkO+WOsjtp6CdnBKLX6mPgUXYbPeQnK4HXKv21cNTTU/x/thkJk1y4lIlXAEX2X5tnKBomsuEuC/3L/Kl6Djv67fzqYtzB3ZIfxZGZV/UVGEKpxXKOofHL63VOt0JTRRECeeZkOI2lsusUvit9l8Rgd4KcD+a6reezk9CohA64NZQ9UjO9Y2FA2HXpJXJtl7X5d93/58LZOCHFNmJNnm9NZxSuNKhWvm4hEGZ/UClh42aRS/vqnf77VZ9fwoZhBOL0qrl7KcXvJXWUBfGKx7D/27W4BcZUhgbakekjx1KunF96Ywq5naq6kYVY9yxv8gYRE0HApxX06hcmX/37dZ/fPzdeNZ0JvIcpZt7N4IhO7USQgH06uLsRXrARoM8rFEqlwzDGw3R0OYgB9g61P17dVUZ+d7BqHZ2XiEQ0iV9aEAEnTOqy3r+Z06w0o844wwrVRWlBK7/K4eKTEzN01fqlXV3/T3KXQIkM0YgRbQpkbwRIn3x4ODflri+GZ3k2zbbTslJW4Ei6ggvik8fNbr+uV2Zt5/eXStdt9OHJATA2YHDkgmZbOYj94QwWzZlqlngRfnXpKUIu5H2RZ/PPwFXGaGOb6qrl6yUmkixBsgNDEqIowBIcRS7fnIFdr9O+DSFmK5YFO/LgkI8dYp8oVL+VEyrT8edveb2N4ZfHyvuiRaSMLVWEnwjZB1tcKfyCCSluPHN7aOhw7+zFo7vhkGGAVqQCq6GebH2A0Vty/5YeL8/+Xivfe/C2nLXZ4ZjeRRLMM4UYjZpeZWNgZC64BL901c/fG4BvgzXCVZSdwmBdX1lHJj+j6y4rQBym7qWq/Tvmwd7gdKUeCTLmTZO51mlwdnC2fkcK1lPb8YQ9XyhBo19o7sQBSVX44tGG0TcqBRcMgB6yluQRRh/v/3fmrV7UEKSpSXsoxr44bGjtorQYhljBkMe8w4Z5+7xe+iFLaEiCA6SYBcRbLETlImjTLXMff9+P9HAIoIgEogwMwmIalaxXIsa7WUbdzMmWlPZtYPhj2aBaEaMLONGxk3bv/7SrX/n56TmUiQokzJ9dxU9a9vZx0A0u5f0/Ux/+XMvXOFkedkxiUB8F0RAOPLIBlREqW4ZVG6jew6JwFKJ0G6CqTpuiClukXK9r2S61aE7Nf03eiN/2DyY17vjf6f97OZf+/6ff//m5p96XtVAAiSbciWme6xrfHf+RRk6xtngvyvEd+7t950vfeqVlUFcBooADsAiN4hQfYXAZDns0GpCqTOASDNfjZntEuOZWsUUN9S0gSaXS+yu8+ozdge22uMOfm3NltjM2fCjTba89PNfviDJNkk2DQzNgk3XIiv/dSGSEaaB39dTooAl1joCp8rYFjVmBrhO1WZ45+Pe5pu50Hz7nhg8DdqbTGzbFvMKMgSSyDgBKMqTtKkB44swltPb1/+vj6FYK7hSpa3O0I013J+1amboZ6Z/kQ7KyRrXcXNygPNQwtElsInw/XrdQtagJZkefQccxSg9i5404ZHt94+JHifEPhtHUmAkDVYYYUksBVZKsPBOMWFgrjQO6/dyrJjAD3/+X9a5JziuKNDzAwjEioR1KjWaNllVxIqwwxq9I35fxLnnAu/HwvRf/SNC8IML5jifKfvv0/X6esvHjz4gQkOUUCDAhrOoMGDU0o/Y1SbpNoHcKCaCh4EHDhw0gKiKSDAwMAgIDvte/69nn2fb36HsBATDFHhQoULFSYxxAQnmKCACxUqVIhEhYvJhz5WWxQVvSPMR9zdt0AgSiAQiBIIBAKBQCAQiBKIEiVSINrSRUVdTQPy0oICBgYGBtbLwKCA9TIwMDAoYL3qJYMCCRIkSBB6Jaht63uo6Xn7Of9rQdUiIhAIRERE6goRgYhAIBAIRIsWCEQEYua/bfVQ1LfjulFS4idUWhBlKBMsjBxn0M3Ddc/wmdBIlwGR92IfIabqvvzRKDyAm1VHB8psqZy0s+ARIAlBInhQqSBFtOAR8Co9/Q/kZAC39f+5E7mv5/nj7h4pG2MsiFY6FEmBgbiNSElFwniBsFgX2NeTy5DT1HAZIfeG4eRcSkttn424uBjyH2vseRUk5MsQEmMxfEgUrZ9Q28QbqSBtjd1HQ7Tkw44jIh7WFgJFMCHD60o1D2y+EeohORn3SU/lzN2/V1r8w/AersRQcK0kqunxZE8uB5WHc0dEfZYsN4+i332KIdR+k7LiczBrQroXTlf3rL/uext5prmtQodDD5NShZ8w4Q2QI+5ufL2BQUUdtwgXDP/4TGFjAyMhIxuS09G35PwXQLbxvSz8+ra4e8ZUOxiHYhte8OHidFn7G4eZZZenb2O+JYXLb59QC1CmmBWoN3OnSOlDM+myJilRxGmYv3niw+VHpTyr6QAejCSKR5wSxPbPLWbZ24iuceJ5Qj5Wgt2zRVDiEaR087Mu7cWwCExJonYpLQRNsqTtINZoD4iLWpuQG3zoeUXCgGaAITe3ex63YDLKN1pvaTjPfLJA+1E6Pw9NmLTzjgxHB0sCeWMrVqNS93bDGVagtNRyOZ4NKSMvLU/yljQ6T9wAvPOPoUrT45JAqa6UUkxItaSUijmS45rTLOKlYNssxz/9jMeA1h6R0ujE2+O28ZqGKF5FifNbHaUGF+qqTfu7pWSvOvQxS9Ogvo4YwMLPzHe7OBlNo8AIOlWyuWxgtQMdlXgjsTORc7vH67BpwYDaxh7z474L78YL68t54/pCM1ANIELWskaJsWksNuGYjvI/bm/+xGitR5ITpYkp14hIb8UDvNLHeG1SbVNv5IJJU3wt2hhsFbCH2rD3+hX8x5CYVM8kJcrECN9+uaH2vJD7V6oxa/QZsPH1w+N6Kb93hhZiwmER5DGAxHO8Ne0tZmqRsP29nnqzZk0AKx+88jUgPPQs1lgK0W5Dfy0IZjEK5E8tOGBtpfj3KUDr5iMalbMDCymR5VaZ7/t2WssfLxvD3WiizLYx/8to6UttEY1CNo0Q5rIoImysh85pvLqKx0aS7KXS/BcYNhOSudBJi+c9VZakneVYNxP9+jdbzjj/sofAmR5ZMAujINro9nHXBGpZa423z+FvrdD1hfb1vRiKlXjnNtoxOedJlZY9JUICxV1aundyeVqG2r2H+9BbK9lSDtGSl7SadVC8tlBRL6QkiAZSeUlo+eQoSGKalaeUmeiNkGr6k7hDLLzhcxTpGpORX0ucpCjltJ6Cv5x7Uj1uZUEXzjOFgra+JdJfGJdccYIEL0zuItNd2oGmTza13ZjsC37Bwn7RCCrrH7yFaC7ZavUbonkGisWywItXsv2eMESScyfh5TZTZQlB23nKGSjXFx1lfe81uoPpohbhGh6e+/5anaLUMhxGNYnQfGFZOQ0CDpxIFnHsqGIc+cwrdWCODnOpqb2R/ZGQnw+tkyMu2mj5jgbWBcPKjyLjHlw8S70NGRfnn2+NfJvlg0+aUS7vQSSI5NqnzTNCqP+AmqUcaSet+x7JxcnjppT827yQYjO4Ca2DfYDpB56ftmdvehJQpxlQA3rBM8632UD+Entiwsdt90oSx1IQ9iVr6Cf07MPK9iHhmclk06IhTW6p2czgb1gCiLNqouVJ604TSNFI1u/2EH2IVeF90fH1dfu8wEpVXvxGDna9g5hwQ+XHI1JCE80SKjfIASQG/cnx19eZGK4LpEVC8eBT3KikqASqOpNVnOp1LDedSF5N94W06lsLPTmTopQj5Vof0mLJu5JpqSsZ7qUAg3wMzGIqHFX8IP9UepIrE123utkwNmhtL61dzo+fWvMKEW345aTCjpw1nlBhmqCeaOSLDy1GJKGlrt628zAwoE2RPtc/OjWUbEv7zxfFrayCT4ktK1v/sK7pejeCT7laZK0m5YLxuiXXV2pAWSPjhOQJBplWvdQd4kxbgnw0/DysRonEi/mBArW9aPSC8tYSMxdvKh595MpYOYiy2BVAxguPmr5Y3rcYcJpGDokxr87ETiKlTfMlxalpvVdJH7kENHmEQjp5eTVmijTdTG19tfpMW1+vBgZUCV2CZGKYzZ9aZRJvrvFe3LMJFY2NPnHsL0rpiEl69qfBv6Nwm2Gq9GX0iGrKQUdtI/5cXuilS24aMhGyFiZ1CYy4IRFrnBUV80mrM4PFMDVVsb4+IG1wBU2F4aEjqShwAfxYZRdYB6aCoNmQl9gzy/y9DUUI3SCg2IJ2Zwteu5Pj1BoEfejrEWoKxF03L3pDI0XzJcr0qyRkvAgfn7QXVZZoFudTciMvoWxdH/iPiuRJO+7GevZHBhfArGFblIKT7RI17b78+mvtOGmviVZBk7M3Da9oUdN6p/cyFfvCJzB5sNt5Kk8roiyP+O73LkVy/HXP892mx83Zlgw0dXuI79bAPPMEejsLAi1ktp88bypucKxC+U0Kt+OV+qfa47btQl4lEQuaaa8RjAxjqfOOgpJQ9g/Lpbm1oPjIS2ImYG6q9OfLc2pjEXxwlTbMmIZbnjXpmtIUw/wn8s0KJjFPGm0q+BrytcLp80M+9EkV6u+ZglgdUY5bwos2ycS97EmFRmPxTx6P86B26oF5SCxLjgYnD/AYqSpC1guSVnn+wUCDEjGpC0r6DlmkPyhnHE/EfBpOzxhIXABSLRMsk8uzRIQ+73FOFBt7WvAOZ6Yya02BcfV0rJDdYfpKA0Mg1rXyb1t3DY1Gham2H1XNIv7EcLntxfZy4hwRhM1q3sf4QvSUhBJuRIX7oOp4vrOx1CLCQuEfawvYZyuKBZK71N8NLl+RusOX3w4mmI1NtnIysMJGpqi2oWB6hN/782965j0gZK8M9zWyYK/BLO6WO7Y05GQQ4AsuhxcKOLKYmOpnVTGRkND+E2O5YEpYQ8GfTtp7+wufu8rXaFMESoJq4fapIxX3R6Wa5i1HnFAVoaZhdY6FAW00MXtLBkB20CHDStt5VYoDYtpszaLFFdB6dpLJgKytPsQlRgxMM3MKebiEQVKZnws7zbU0RKLz95h2oh/LYgYuRFTncRx+WqTmWQRvjgi1oFDS+fqp9sPTpX42w9NRW0ToYoaWBVO0iG0RK6cW+nWTmeu8hId64vuh86aFBwV0FT+Wi/XRjHYUAeq+iQOB7iD2hwsWIfPKH6rchYVFlVO8Gsu1gVpldg36s3JNvTD7Ef5YZTgrdMVa8GK4b5XxRGPh1LbZIxkvbCxw9anNakZaG3Q1xDxF1qsb00G7Acl0HCyVh/l65Wh/XAgcHjWbHZ202Yj96V9l/mUcSOpKveeuhy0s7PJMj0bXYUvUZeMxb3CbXn8zeSzgzAjWYmnb24btNlEauKJO9qx+gS4l6CEzfhS2NwJPYe3+ujfKQ4kNcEM4vqNKqUM32fGzmfvaqiSDb4gOWLc4+B4loB/7g7A48POp/LHrL0A4rtdrMUltG8kMUHS6IFsjlQHyLnZwpX8VSr6Efuxvs20B/OxhZjz2oyRM9vtO8E2eCSpOKfwRJDKTEsc29IpD2PqNgFHN4Fi2O1YQTxjnaNJbLfU84dzyGIa7RNQCtxNTPz/dF77oh+jhhApQ2bnBdbJOCUYcbLcbLlqum3sTSVM3y6PumGK3tkLu6t9QsnnD2pJ71hdZtiLag2rrsZ3IaReJOuWFumNRI9+fN2KLolKtdjrIytrutNHG2yPRJDqA33hG9+KpvzdK2wQa2sqe+xKPm/skZxKIDjmDvUOLhtkP00c/TCLCRKth4nfDAJF4/onJFBDhqDNb9QkJ8b9HG7AW9IKUxCfpMCH6yTCIZEJpS+GWTfcmlksfv4baBjsyGlHH/fXKtlmPQMPDYk1nf9pjD1TC4SQMbnW4dMHiDOHqqWd6DllNnMp/3vnhVAeta+qKhS+XJAeBVY1jcVoJPTCHy/u/gPjFH4xtrlker8ndM4F55IdZJQ4MrMlwH6I32aQHsbXxZKcELJWtDbV3k6JfF80HGbOflCWqz7vRqRgPYzEd/RZz93p5wG8xGoUdk5QevEUheN1hhO1AjgpSFpsyCGgqbZfST4X4dkKVub53yuHabCG3hnaCdAsxxiXZxOrsTEUy6eA/U7MaHjYkQ9Te0ZSasJLdYtfRYvUMP6pgqnJB5UtouJIdctbkLZOasw2LsgqGslXxwLr8GdSBPWaZHmUM0A88sYnLcbXnjotFRrOFr8QlJ6kcsWAu59grhPFM2+bnELx/xQnNlX/3KgDyRnhvUR5bXWQeLo6/P3YSuv6eDvd0WsjTycW/lpbdcWuPt5Ub+CxK4i+O+iNaP1pWn0RncO6MmT6agZp88IP60/NQ3MN0YdxpJs1ZWj66qxx3+Cd1dDgzNVrATAo1LthgRkF3PbOqd26BHVcWTow9NfKcnn/hgX3z6DScXs0sq3s/DqcP5nrmh14889Q9blVaLZ9BvEheDMirkUhvtOTNCGRvoN9bZDDQH339eSS/kiP5NiD/jYb8GEGbkIMRyK8B+TNkoZLJ/+OrXc5zeld0pYWgsxLaulgsDFu0OcEvr6WZuLgqfOMmFWakB8XyPtJkyVRMQo96GEsmlOITLewYqTCbUWgxov/u6emUlp2GYk0qfOE3Bpfg7zA4F1fauNMSRZNnMhJEnC0t2NvkvPyZRPDoLFXPxGQy5yBCv9NDiCZhJsW6iR4L12ZwlqfFwpPrPXhAKspecjMSDTvJ7Vi28VmyhhaQm2SCf9LCe6cUkX5etAc7l4dosQE9VGbftIHoFG8hWhpD8V16J85EjkIyIulpb5YmCy/k0X/nMOOmcVCeEBFuOgYL9Ig5oOWMVAg3Az8qouqXaOlIg6BJ/KrIFh/RsiR1gqalz4G25hpyGYhTR9PzW4NcZt+j5ZJ1EBpjruWKNUIz5agLdGX+F1oqmyjsAkdToCb7PVpesZoKO+VUg+zUd2h5zToJu457C3SNv0PLW1a9YDdwT5Ab8ys09NSDYF8eyEywnx+oWmG/OlA1wn57oFJhvztggrvdB5xZ4NuTQGXzY6t+jc4/WpU5+48DqiTsvw+oorA/HOCy21wLEw3ufi84I7j7k8CE4LpKmBFcdy285MDdXnBEXHcSuLDAD5VwkQM/XAszC/ywF8xy4IeTwEyDe6yEivmsVXa8fxygzFUDqmFZj0YD+YqhcK/kS75aetE8MnR8yLllUM6WM0PgTHFsP5Xj5gt2X/94UiqsHtkVcp7rCzsj/jx5384GIHEDNgjtPzpYSeeoXYJvOGI4hVyhuKOCCh9ZkQa0qDDcGpoUaUD9HgWK6mIYbg2V1kfm8LszkHpfGigojgwFLHoa0SuIKBknFEbyi9M+4BSlwQxFEmptCoUnXFdxZFJQ4ddQaKm+ovY0NWfmUOzMUYGC/VBBcNZ+fEP0AhlUGGT7NTdWQpEG1EcMNCvmsSTCdaJFM3LdDmsFLaguhpVKn2Af4xNSWPxTdEZJ+xF+fNArFAxYZ4eBhY+DQgrGAzNW4Ql+De3VGjaGU6QBLSNpUGG4NVS1RMWu4YhBCr1C8Q42ijKcleUpapxRmKCCoiUJQ2AuYBVnRGChCNKgQoGVTmEHkuRTKK2h0GIVGGQlnaJoQfQirOIMjeKRcA0Di3MYNrAVFMmjunhWNls5+4wX7IcQ9gLpxRiikCsUKMTRPj6+IYWlpwn0DBxUrDTPXmMZXNndLmNXS7lFmR0RofDx4CudUdIEr1VhcD8cvW0TY+p65y83Woj0IZoCkqn+mzSJawd2ZVjBWtkgAq2PoMgFyd+0fsfEcAoiHPUKxRIIbhtA6yO4MDsqmk1YYYJQI7VAhEleV5GgsK3NxwfsSIhcMzIgzVFI1+ZMbfcg2xg4hWqR9BIWan/E0Hb0qDZ4KVWostR5tQo3reJAv/AZUhjx4Ca4dZhqqDVB0Q5RHswB+RlIwGw9Q1OFdz3YDzSJ243KZoWzz7zB/li7A+SKlkovJrkUK/qve569LZx+t8x+39BGAX+lM3pxLEHFZ1Qgaa7yJGi2MytbO/rawTubjwoJLeA/woeThzRr335pXBr7OnsquSYvwIfkCUpVdouihTcWVjREIFrMCLK3+9iDGDcben9PEXCFgl5BNAtiRYICRpWBq4YKiDP7KNzpCil4tQOvuUnCxU2Dcyy3Ait5AmyhypOSAgW3AzODM2wpjgpouzgn0y3ctFYuMwxvHg8YoeB6NjsuPA8niThtaLxaE908z98p9TtxKtO2Mwa1w35jEDkfF4bcwXBpvP5JF19SdHfwiOB2hId/5pEktBNA4Sl+Pd6bxdfTWY/HKBSERSLlpovSTrvh1ewpirAhAjPpJwpna/8deCehbockJlnNKhl1CAJCOnEcQ/JPOhFEHhSRcHw/R4iUusPHdxFWyBlFhhRQyCTshQSIaudX8vVW35oOEWwWu2hayCCz8noM7ayk01ZfN5XIG062hEjTnE4KhYhDbxDU4IIW3LWIIUeIH3MKNKJEDORb3dF8pG7+dOF+HGE/U/CjTxE43AQWz9RIEsaRaFCIaJjXaiJB5TXDDtqgDbN3lgk1jW18bxAOPMHwBA3QWFBSIRYkaAILqwSFWnvkWysU5sJ7DPyymV0vcqVRRJIwNMB7bJMOhkI5I4U3C2Q/mxiwvekmWtNxbyUaLM22Be0wuzRuikE9nc19LBXhWnWUf3v8k+YHFSGeovaEazuQ6mEp1Sk/n5Niz0JhgsKSowxcQ5Wtv1Hau9NLxx/mKiHHIpglkFOsZsXhQYh0vmoAh1C5DNaeJwRr5ai/3Wjvb1IRQ4SZFpythwUKOp9GUBHdaR9ghoL2spjG56hQsKTdWaXdB96NimYvc7NuiQrFOSoi8EZXtPR5S8jvmpKnJkoKi4qcrj6+E44y0dme5Z8pcOp2EmCf4QtYkkwas4A2y6EgzHyEZzONhzDqQAJgj5gRGLupu7KInqKAwryISyJ0JBG2VEkxClkAPx4hCd9yLsLYptFTCbgcpRPJh8YieF07WyGFd7FU16T7T5PUZFYD5+SWZyxY1GqF1RxGyJmyeZau5AbBJFlopupQtVRC+NFQdj4QGGF7UlV/OQLMrvdW0jXtLL2hvZ3AsfTr1dfFpvEpVxOw94gyQndLM5rocyNF3JhRgWrqDBEKJflXiLMYg9fQrIU2MmkUsBRGDP7mAnceyVaAij1o9Ewd2+3LSXFD5DnamJNPPnuGCdHKjtI4AGoPm2hXOTgohg+PL+16UEtiP6WEnTGPH5yo8dCjOvIGEHpiURHYSJMaJXCxD1TgCZ0Zkr4JDjfuPzQoiH4entrIgLJDibu7JUpHXPD/ldKWQU9DPXj+69PLu7YGXJlD6PUjwsjJx2Jxcw8aFob1ka3u658f77azyu6soXotb3fs4CflIbojwh2lFjwq3+1AOX+KQNNxRODvlxvFwXLYvr4SjvFkzfUit9jID/zSchMiUEOCXQgWKEaGk4fUwaY/iPlIccQrbjo53Lpnpt3M8xa9YG0Xpx2wBp6QYJP1ckOXVyHJ41m2zchXOWwioPA6ZxDoVNrkQF2Bw+wgyLD/07Di4GLhfzkCp5NYZCUTnFt8AtX93onXRA+N4zbBAwQ8ATpzzLRbYSRWq0p4tbmCkkm9C8kPyuBoTMpZIP65wgot2ADlqW5M9LiWqoq7PGc/xtB7tQVSVKWQ20V65DTPAhIElUWuVSm7s+QAcGjguMN526WuoDMbgpJuSUuLRJtlMpwSk2CzteGU8MYS6Bcc5n+ZDRlmbnkmIQr65j1Lf3cFJC9tSZDhTTOQfRNM7Y2V7DZ515oQfUpi37XR1ci4NFMoWokEa3sqtR8NFd0HCBXBfuo26O48UKmgY6hCTf3Sp6SOsRmr+Atw2LeYT5F1NbN33ttfjQ6ROPCzY3X78wTv/5y8UF/7+C2jRAJFL8Q+INUgkratGk9D15xuX05cjYKxYzPzDfdzHpvF++kFjZbqFPUzgUHbEbt2f2xVb+zIWbNANG9iZAWuGB1YQdtQVLRFJIoPVHZh1bLbuJ+uPwAiSqUla4whZ3dWuqhlQDsqJPn0aZO6lOcsJYMDYX+dL835XZWdQlwYSX5W+lXNiN36wZ2e00PNoPBXyi9TaWD8ZJq/vy3jr8YTmsN2M1icG/Tr1G/GOy/opKW/xSbOODQp3KqnhX27LLK2Dcj2zBve7zQySYzFGRG2A127D972f7fgTBVW1VdFOWoc9481j7Uo4HlZof3qUOC42iYPhwLp4r9m5rRTVSL89vg94I4TnTjUpsKA7urAFjf29rhpEg/exa0oMEJCJKdQHM7qw3FCbhTwTEJTBMuAXJvFYWjVDMyjjfZ9ItPG9vsdKf6xGdXa5CT+ofyAx8dWtsakIOMpWkwg3ERDCenytNzF4gBikixUhXlyfJFNEDelWFQusShJPX4a4FnlqXWgiL4dcoNOKaZEuTgV6zmF6dcE2VwSg0iz/psItCkvA8GdQFPwlud6uWuYC1gPFA+7Qcrf/7mMVveBuVY/flPtkQRZVDOjKMFpnxFCPCuXe2dPc0yCz6L/ilWUnkDAjnmrbrGnzwzaJq3bgaHwxMmRdKc/ovJrAdzh4I6CnBFpHG86V9h2+9GkfYliMHWAHJyITvX55Dmd51D42BuXNpcFRiJ/CiJqe/PO+xvpriIwarPuYrpb6luEU6jm7X2bGyKyWIjAaUzPDIX1610s+nuURLfNSN1Cy04CIUQxp5G0jOtLMXdWPXmyPQiDpZOBT97cCkwn8CsHFSNowxOgMSSzbknqyC7F1KAYwZRWQhhwOGFCcfEtYAFN5BNIenXE65un8LH3OoauFCOJi0v1GBHPvnnaf9mKhlPTrk2XS9RBhRG3oe12KCly4fQgJrX9K6p8PTCklpdS0bWyaUQGX8geeLMcUq02oXzqMHSaLAyFDUgS3mSbalj5aT43MnJsIASF4AUJ6V8fAMFOZ7UsHSZHFcKOk4FCdtgiHFJEJdMbDrUAnCcha2Pslsi9pHBMr7j86sBrJknHheOtmIKn0FXgfirBGJZ+3jxqPFsJqEVh2cI04nSpTpiNi+DpgSeEzhxEOBl6ex7OKfRmiYHzwaDIYvqhlPkxoT0/WEkUMxRjGQ5JMp9gbApwLOfKPUanRURjoxRk3vNQsON5ahm6RW9nzIB03rfwfqqMYMUjy1o9TJPoFxIy4rjRGsRyQhibZSJMVJNoN6EjSL6amiQCz9PCVwKzfz57yOnH0BTY6c84x5goTsSvmgD68FUTQF4JkyID6kwwmfCkRIG0Jn64HCK0IYqCxrJJYVls9BSZBPWQiJj9N2APJ2OSUkQw0Y5SKZOQogRehIKqeAYJDRlhaC/oPW6yzxiDQ5Uauo0IRk/Oupht01HsJ1Ji4I5dBIU/ABn8aaTg/p15lJe6Xs+eYfv5HiylyGuEbpX5d3BMqWHx8RoruADv2DfjSNG/VflIHqysM/Z9581qkQ/W7B6cDo4+vv/4n/JfxjiQ+IMBi0kybFWNiH5VCxyXFilgETk4J4Uy067B6Dq6SAtsiiANdvF+HmWfCSsbhisKUIkonECbxIz7f3CpKglzcQeBFA/sfD2j3gYDJohyBTkIeDBL53aUlSmbOwn1RD7M7vn8OU/Gd0dS3QXgRHKYHAqh3YoKEqjJj2SUiYYJkvSoRJtFYGXvSN4/88+Zn+lwm1boAnn0DQuiqu6wtLI8fh8LTjmwju0qniidBSr2UBy2kwzeiA4oqUNLZ+jF6GDfnbSZieCkNT0ezDAyeoYHYX1IWjgyjgITNVHzZ6i+/QZKDj0XpuksUJGqhyzDCRDUxekLDb8HDCOodoKhNIC5y8KtpMw+WNaXFd5uGAGr8EBnHBnYGLLPkzesixkSFKagoFvF66toERK37ENU4W0HEpGsb3cppf+QKNqLYzgrKsEgJiFrYYRQjR32sHAW+52R0CYJ7JG/QoaTIj2k8qYIImBgmG0MNSsWlPSuI0vc9MNJN7puQX41ul+GWvN1KKT6lBSc7c8uMMWveieJJ0/1KGjmUU8ZYdW6LAhRzqkP63m7kzGTM+jutqaOCEgZitQNSabdEcEJMv0Lwk65E1o3gaI3QrJPhzgAkKdUyAaoRsHhzmWGd5NSPiFDNsohxsTJPtGYfpQmKYTNJRNfgHyIZiIyzTQf8wjV3XbVpKAulJiWdejxNEYOGpU+kZNbo0LnfQ0qVhOYyYTdp/ltUxxSBhKW5E9EEIXeTmCipiE8AZNGyQyou0moP5r7gyGAF53AipkSyWP7vKIdCjUZJ7ec+PFsVCwNuF4W5l+WRHv7VjSqKzCyfs0sVrCUJYGs6v9N0h4d4AYEMPDTWFEMlMBZRy3Hho9d7l8tT/sg1gJ25qCXo3icQpsqrERDlB9BwjNaJmkxIR0v0ZQaqKQkne3IaLRPHahPpWnjyASdU4XmQ2vaU52uqYVWqSI9+pEnpzfkqeHJktH2uKumc1S/rSgBkXM3PaxoTwGUU6XBNUW3EnWwWMtIZhVWnL5jN9Ll+ZGlokfA/wwXgHwD5AGZgZ8KqET/PvQnllGc4AlEVmU4gxMgL8gtQ5HIJjpv+DKosj3h/bSG2BxLbABBrI8j5KJ5KHkuLwLDtEIWPlDEGNCoDKWEyxOAN5wIudUEESPxkk14CNSRVuBpSTkRYbIULcuwelELWeUGRaC0/naCI1A0OCIEBLOZtH9g0xDelqqaKV2WlJM7c+jCZxLR5IgFaf/OAl+VXktPVVQfzwx49/HX9mu2A/NOW4tfB9lui8aVPxEOK5hyZMiMQI4nVNs7EJglq2hNJJ6W0hAlgwwCtWo1VD9rLurfdL87Y51nu/Nmgpt4e3b0vLsAucCSV+0bvuOiJoHERWbdfVNzVeDPiep/HAGXrWNkQQ+H/uMkIrlR+C5oGbcSWJ2gR3FVDRcYpES8iYcvXFJ/uqjRNZ1EtnH6nsznx9XF7+nPHt2ViJJRmwkFNbbhcGuffs0K3A6RyHCELSMoZN8edyUhbGcjB6gnmxieOPvUUJcYjxwJ1NgK5I9jVXLovNFENzhNtt+s7D/T14EB/+/Nq2m3OkYZG17U7+pjG4F8GyrULLoZ5Xwm5OmYDFUaDeh4sY9ktMhXHKvjZuBSgs66AhjcroiabFh8G262/Oiv0djq5Z1EMcJIX3R4qv/n9s3onUYFAm8c6VrMzBpto8KGqPAcHR56Uqmx55tlj/5gVnEzEBAJI4npqFO/q6sREy36S/3zfwav9+9rRcrxcOBYkDnzkv6PnZW/3PqNB/0d7/woqzRuhRJ0wByXo6zTLAZixxe6T8Suu5wpp5BJLCjtISdlnEClUwNbOm340ND8gRJe1z/AYtsRcQXY/lnMXsqM5Bauyo41dPVVsAdvZENyP43eW7lgBGCotItQ4aOWdlhZDqlgMzkcCDkroW2RdrKXAquSGc4MkQuazwk7NlEMd9ki0EUmcsW61rKtZApSNmio1os86zjar1bzAQGylJ+YRHhXH0GA40VhEQHc4hqeDFRXGhGa2M4SuYjYxGleGw4zrSsvhCjMatNuIHQB4Ap9CyBJeAO/S++3KwRFDCFJpHKmZROEhJXocuFfV8WwEEiJ2gS7ihpmFoMQXVGbCRyaNhty1e2UEImVIF92cxSyigx0AMuDOF2yhrz+ERBpU6YRYLHMyfi49GRaj7XPoqoRGe5XFQWLw/C7beA5CMc+UmExi7LQYqyUDQLJ3OEJbqTxrI/VxQsAF7yxa+pjfbyALVqFfEAWC5Ao2wAf7xBfbLIqOY6HTj/uG67IiBkV8Xgazso1/lhuyOs1B4iPzAddtNyYm4Evp6A+SH39Yqxc7AMvKxanaIGzL37lUhZ7MzHax+LRgn1FLzR9vN8eCjuVa3IDIeniw30CF4MOT5TLCIFRGAkGsMRpHUV1MR/eh2dneu1p1dZwiHVqgHICMlqdfoSEG7mXfkCaB7DyLGdB2w2o7AoQMAKnljYeDZiGXMyLNb1Cw0yVjEuFGq/uVPOm6deB3TmqimJ3vFQTY4CcxKdO0cCWw1NJxCn6kPDl8kpK/QRimyV/yHBF66tL1cZydAzTxzBx0EZqH5ksoeOn4PCwWir8/HmreWNedZJL1/Paf4JkmdP47q25EoSs6Hj/5xRytXfOBsyIOISHUM2yTNgHl+vJ5Q5rIo8HrJZEFBKtkI5XCQzB5Tk/W+Z0pv2IZAvXBsZS2cqiyGsy7oC5GtL5FSAPSBT1hwposF+iqJqZaU6Ym6KnS460IhDSaHZm+pcDxm1V0xhLqxn3sSMWf8Cnt1+rq2cYbJv1mNP5K9hOZQl0Fx/CjzNAaj3l8WZeaw7tRvFtj+7V8+9RXPFmYbZktirxk46cpv1wHvnlyaFtTYo2dDBTpvvABcss1/t+4Aygc215wyIfpqU7VvYKAugQpX3YBjCvQDcguKXolu3aVqEa+0u7/GvNCkFkjXTk8qvDY3WOOpRxtHTkO4hB/WItcIV46XmYZ1rv55FSwxffF1xVSskVNYLKNNxqxYE8gmmB2WuMKXWln6DiV0RNy+xsA/AyNcBHgk3Z6BLuhDvqcOho+jgHThHBKNZvoE7bNDt7W95j6l5LgMQ9syOptuc/uct9lsE0TiKTgnC5HQCA6SdXsl3dRNbsFemIOuHAUZbDIQE8bmZ4p/bPmNv8Og4UlQv4BmcuuL7k5LIddzpdS/+45S66GjxKJhdicqdJiTi6egknu+V34+m/Up+YjWq0JlmK2YK94CensTGBf7WwLwmdRLOFmX2j6z1As3ca87khCB47lS34kylo5NyWzDc0py9udjZO7aiQV7RP6P1hAY7RcIGAqznPUolwwyrmJf/DbWmZNqGeAWPBf+PoJnAdzGQVWCOzoFBcDQnA7CrQGXs3OkMK7N24JNDhJ/ZfmCrLRYDBAzF7wBDqVNB30L/B0NXqle98Pmk3liC7yta23Fb+6ROYyiy3FpB/N03evRdN+Ep1bNvqIL+w+wb8ZQt7qU4HpP3Lv0jT84G0QkKo3ifbURwu9ZwHRex3AZX3qL9jX4YWbSzy345M9Q9ECwKQux9DJm4rH/lazWyHbexhsRWjNfFJSBZPMu2cm3+wZOhZwx4CMQ6rtLLdWtVsKcoMGf/YV7nNHi+mxZhwS00PvNigmOFHFxjGse0jPqsAAeMJHR8AOKU0L6d27iekziNnOJDX+cZDpg15w8pBi4HM9DTkOxOxsINlY83lOlLooiX9Vg1sp4TLlkFqxXQlS6Foj6mjCfVjW0H6O3d3zKmiXOpb7lanHzP/5WlmbMn/sAFaSqj9RYWsel5EfuiWxOBlcKOhH+AGp00HHLX4JVqTrQto5mIFnFadbJm9HbsB4NkQzU9mhbLvMzLv5HgyfMcPvxF4wRbbpW0TYsjlH5myjSoOWc8HpCGEl/c6ROfAHW/ltKNZXKL2YFVO/QUMyZr3jew58uBgDwb772q/cndjG2b0EFCa7tBTmoaZNRFfD8OwH5kmZN6/XQuu70HpQYADUQMXO1DKeiwPn6wdIkwotQw7zboYnwrmwY3nx5t5tYZM6fr9ZZCCAO8a0hUzJVwufdrOWgurmMs0LSEyTBPqYmP5Kr5vAvZgVeJQdJsXBPmacqtKTIGvp1IzGnmb5+1mS8ctGVxzWZxnQ2XoyXCnWWk+ZlbnJt9RedMtHzrFknrdp4TD2lxLILzMm8++wem0WstIBKom0ehGov5GWYZSllcon5TEj5CEyHt/lKi9ESRQGVXNfx6C4XyEr/GPRriABMQoUZtJNJhbBDgJNDKgDFQRk0Fy7zdagNCCj6Opc3eLoV50JeQOkTJex8tgBRqMnIl7jkXsV3BPG2CtAppJrzOLy7dGsa0UxeOw7oJk6ylBWO3SphypSMgc/3r5RFZE/U3gmiBi22O6tLuEch8RlEHSSnbyZknUze1RCLSNSnU3CGI9KacOmAFL0HW/vJDOLPFHmNh/iedfnnb7NORm+XljadR6ZFHRl+VJjsArGVo8gbVK4fIlM1Ezyvwa5K251MtKns/4cwt22NTX00HZXA3v9tLoAhsd7pSYDnc0+sTnEq4yBgKWnhL1DA5A6XEpUnnq6dwNzzSeotdxWtNTCYDVOmA47NYiYKfPDzXu7XpN66s8ogYRxYmRowL7Eds/uIA9TsOYQxdg/KqoXE1s5vQcUdPesVyHjTNs+EJe1ZtbiGynxSTT1CHQONYGocwmNFfVBS8LREy7UBKI8Fb5UPQj8luIXAXTRsp5LBU9FIZ4QS+Af0SHzZMCqSNAwgEtm4kA1lzECAioitXWgrg2MJe/g8cD/lQyw92BB2GsNAfnB8S9z9LAUeP9Ed+5irib8i1tOILalXc0Bs43tcRpeVKVhaZBTyZLUhNlDXC5M/IDjNFXRUG4EC0s6ZdSHJlCrHHmGhSGmRIrhvOv1sDHx17N2g/emoQ75OtpaFEOufy7sXFkaBTtYmCPcwXt+AzmnYYywuYvnKJuhvbKluDj6Cz3SjauBbiIpLNplA31D74WTjZKdi7CzIIaQQuLRwZBQaSrUH/rtX/K8M8JE/7Vu6blxJAyRm0UySr7WdP/KWik0kyuQ2YdZRIk8wwQGgz3Z0HUDqWfoc2XgILL3ajwST4zdDLJOE+Sj37JF4GHjCennqGYCKiUhB45BSM3qpnIynTpCVLDInSsQuqSjB22EmfsbxVDpBB6CdpaOl2x4efurwTGKrEl9RxcDNGpikRwk9QflflyHq6ZFaE7Tsjvsgv8i0z9BN/rB3x6PO5IajJDdW5UgYwtDsOpCfn11MjhAgXeWkmTqp/smgcUqBkR2tVku7sUlH8fUN8SHcaoUcTqIlqxdQv2A5uq6sIadG39AFihrb/OFSWOEaqW86K2OIsVKYvYTOQToeK0j5SWAJS5JAlbypfyGzP/HmDe40X2SNJAROKzasjy+le2kewifgx/DYjSvlT/0QEuaREnzdMEEhPYSKaacGEpNuD31/L6PIRNHr9pqK35Z4EexA60PZK1Piyrr4gfwO5ifXZ7AVA3oU/j10QhIZ1GbzPisQU//obFM21Mfy0xTWpokqxNsXXsboqZDsipL6lIKo77aLTQs9bcwoSJ7eTdsAjMkzAi132tizyolt1/TEkB90vbpskMSuyxohk2atFHgUbql/cGwWIXYdLc/ShhHAi1Gop6V2uqT/pChLjcdggXhdQxQWa7xmiFwZKMz8RfDIuyPTwgajpF7RKSGcX2bisnIbB9VS10F+43MnGaglQlXP6zXM+9wjGLA5GYHZyM7lUF12uBt6VvYjl1ArsTozmSVRHZCKiUJOOwyglJZinNy2pcrek+YvrVhlTQm/F7WJOP/8WkYmZk+FDEKUc/Xy9RGOGthqVSuGgDZ+WKpItnBWZ0rejHPj2m9gHCTHoYS0wn9p21nsp1Qs+sC2VdVh3KZbw+LkmGk54TAFB8x3UFsJQPWNqxoUZAXFPqVmVG12lbfKzwbFR2WI63lcqjRcdVI0AqZBxnbqPemgIWRNu3L0K1VfSGNli82xGhzexKDQNE2Um//P3MmDrZTsSpvS4fRuTrfacnaXoYGLba8sk0lRwZTYVI/8fxCUVGqUoNqgQ0KgXNmNjwCEjTmI+uyntkub9Tt1Gaf+2fLXAPq2VApmBSwkUMI0tWN1muZiMNwxEy3TiR4swL11jRFtg8F+pUuhgvT/v1ayiEWodb28RRpgHBrqZU9eGSHe+UXFVqMuVraYwkmflOZ1XucmUqqsij5FiNjB2n1YbroTsxslgJLio9i+OmC61RPK14UJCdAxlHro0FA69PbT2vu92n5OkxCpbfKl6MfEhhwj1Bu6c/+gdh/XziwkfGDMGGa5s+Wo7GGhs4oVANTZ8AkU1LmmKwJ46MU06mrQMDkPIZ907nIlvmGu1mzoJuzHLV3R09sokpzeDfMctiN5SJdmZHr1lwb/xxraMRpwX0Nya0k4YVk0c46wX2giCKjALQiX4X7jEunAV05BA8CUYLzOd7eRaU92GVS5jFeooEyE5YfaoCOSgZ3gBEHs2K39fI1qO6Lw4UDkFdeJIFA9euHYulF8EjoRHXqFqxgL/aFljmRStq/jDCYywzd5+LJ+Mmc0//isFII62IowTN2OhKCMdYls1d1CNog10ktAimSahdQU0ACQG9fAs88LgnEZycH5YkbsyOAEqrLNo8BuEs5aSqYCjoeWQ5sJUKqWxig1tIhPnUb7OZFWlkbQ2CAslQq6Wdmacz+6+JCNldOyPRRii5hqKPhN/uIPfTMcH1AtNJmMER41amU3jBH6ycvpT49J11Gvboc3hGunNkeUPDd+y1qYvSflXb36jN9SNgVpxsdV2iNqcouyRilzzi2I67QJLaqy8g9oYHQIsKH4x7brjxojaR2d/Nffl1RybuXOw7QKTAfLbtrnuKk5MVDcPZNrkkgGzOSnVJt3xQJ+n4qSIgJbYJ1oaNFuQ1YgNcq+xJs/SO8G0wlRw1zw8WZ3lmN8suVMGBns2ujN8sQaijzYRFWpqMj7qBwQprnhMLVgDUUiVxN57Bp9NlbF19eaN5pxSDz3EsJCQZQ3ho2V8+o/tWBf75HrR3YLKni4yYXiPatMYVBpWY9Hal5ZAAibd9jsXJrJedsPazS3krsbbsrRGVdDSuya2KabeGPRgQJv2Nu4v6lumPfJXH1Znxq4KLGrkj9uTgS2L5qBSRCC2CGB4NWFyQ5f0I17bdrFhhkRqJIz46ZhRdEBT6dgEstva1gx+or3dm+kc39bbfTHAyhx8TAJNzt3OOS6WJi/zqhbO3ddhOLV/gSfak1OVkohsxjCdZiJucF5nPoGW+bysJDSlWS7fXUAK7SWsbK7vwI0z5wlbncq4kaN86xTNq08SyE7I/bGu2SKNcGg2I5sU0M5vtvAl8slgdUD6ikSdQ2+tInk/oMTcGbtv9fH/oOkbjUjhi0IM9N4HKzeH4ADbcGs5V4C1080PEJjwyJo/G5bykiEq0WJ9GpBOTiaf9hXmHQyd99D2Y4uKcOAaJ03D4BAXM3AGswcJV4BZcOAbbNW7QoKnLLlFI5C/vbLyr9TY8xQwdtOH2wnnrwQ9I2ZvbgVX8ZTzNAUtYIZqEGsoZdLFQK5Z40fT9NLZzMPVHnVI03XC1FfSGB/QbQU2ldat58vt1j2WrkP+yDoa6rXZO6nmoTnRmVe4806TgeoJrkTyWh7qXj9ubwRW4wUfIKaNiRdEMJ65xwM/aZcL9KK5BMY2S5a0qWsYQM6ArzoEK+wEelb4Cxoi6HCnwiYhwr+jsD1YG+sZIzMx3ilWbvLunSbu4ZhlCOeoN7Qha5oZ0Ell5VYsK2ejE0UHy0cMBctwkLSpGHBSoo+aWIzJDLDgDlt6sOfOuLEADb8jo73sp0PnOV7TORko1H+y4JBMxw5iw0hw1XIGlTUUJl/TS++xgHwmFRKJM4vk2n4TmZ+hNs269BG/+/V9P2QvLVL8BKJD41fenWprXbVGg0NDg/P131Mj4ePdWiGCV9sP49zjidPtRX8A3KrqqJmVF6mCwQXIR/ykyrxHhlFGR1+MSh9Cx+1Ap/jkxHDQIfyGfYNzoR+x+x43rYZ9iBwA8imDCAEhN1jtX+gVSeqaVCM/15TVg7BGi26W762sDgCTQUU8tfgP8IY5mDhTwCkTAvxjrvkYKK/9AGx9yql5CEEteVQzKS1GwjKmM7h34eI5gq95wBTGlREW1QmaDH26R7kn3vI8mweYrUxOpcRkQIad4PbU40U9rT+O0xQyvpUby8LdEXzXNhIjmEBRL6KdECmMkg1g4sdQWwIFP8nLHS1KQ82WEU6OSTu26GUBAyZnFmbMKS41MuD46pSgQKs5/yWYrOooBXcYVegpDIBci6HW5EnNIFZ3ANBObG+cMPj5Kq0vq+xanuBR4IkLABT9GLikZg8geIe3ixrwRQXbGXM3fttnecmIm8ywUraZlUMA7W4Rey+ZupiwW51L3ShFWLiWik7vTRsceCGrGNbRjHDjOTbjavMeKoklxFnnbaUdlpiQsOoSgzSfd2wIy4Z5yA2tgWEKEsp0xE3bbP05DBxwX1QT/s9jmcbEO1P6YgB3ITMkx7L0DCrZI8R3nyzZVdpTLpMUX0/crPd9VbdRkU9qI6//fBi0e3YxjAAWlm3e7s3bt0IXiMCS7zehpkeQlTz7NEyArvdIIcOE7NpZGeZZsa/eXS1zBnh8lLT6EA97V2YH0gO8dxOpZNq4ORD2tCranR1hWKLO10flhjilj3R1j2hatqWPrlKyquV7Mjhlz+GcpUspPapcV5v0iULta9sWZGRmWYZFLpO518qtEsMsdP65ji/6q/r2wDwnh/r/eHYdmYiUK0u1xQClJvS2yeW8gMqLi/SjnOidGpa9uhsKhBuZzj3Fy2q4BHPKWmTfqiofz/R9MuM31KDeGxiVf0c1JK8pF/ewgynBfUitpFVnsNK66RniYTFdR8BO58H2L4UPhcrjV7XLVMZPsDH+uf/pyQPT2iXYfsCUOqx4TjeKZOErhR0N4Fc38Bq8Q6sch3w0dqLRuFuBOithGVUUZuQeWcj3l4vKLutaKtjInh4QT0CRa1p/65Z5FpfswOD0pEBcmgCUafgE8nEBFQ6hX7wwunQgsbIaRuFxZst2wLi6purgwlhRAXLG6BpUCNyh+kUDW8qFLT/qWF+uA+fpA1eF7ZffLMjpuVHqRQHAwLMI9B2dh/k24GvNvfvPYDV2QF3GbE9NIg9q3M6j/OCdc4VA/Thb3KZ2yBOzFQD9lXjjgajsvUzH4tzp3DhPslxcW1PmzMp2TW1D75azIp4XR1A61pVLqhlqthHy40sCw69+kzGBDov4i/9VaoXaP0J6Vpi18+mAWnggiLiPfTkeFrcDHnWIlcHMk0YPOzf7ZInEyPPAEFPKjtFlM5DUDgdUrdzzXKs8dflFDuNYfkO7nxlbTNc2/G2bJFW/JARCqC/XnN9Q6TeJgd6TAMiU7bb46BBruDENmKjQAHIFNGTLIPNWRIf2nJCMoqrFUNbwVAYw0zF59flo5UZwWalt2Ugb9e5kRQwTCMcPnSMPt2Ok6zcCqInRBGPfjtuCOABoOVZbEo5yISTOu0ZrTwUEXuhMDd+by6RtWE9ws5FnG9rRLJlahWRilAgO5URLx8dAFgrNdPEPXKBtDB5arOigs9n4D2nwbBtlHBGo8f9uEFg6f1Jah6HQQJAmxmeAakpKweLaJpkn6UyAJ7s6zWWa23ojqAGn4vLiPG9sEJlw3HOV9hCwHAiQHSecSp6OSno9cvZes1ZcVJLSqkkQK4nEE9tRDt8H350qs/PKWDOFT9W94kesNax0OV2klAmnA6qmb2GKNLYesjkqxQTNDDjI9lmhnOBHlkqVSgJcklaeUJdny1ypjiImokGfuYA6MM6uKNWxsLjDlk1gRnqI6B02V1d4sAklCZk4UZbuVZjIE6xP+ik3x7ElMRqxc0+sUTdtoxYv2VjgBapPTo5CJONsQsKqWOjUNZblpsGMCkz7vrpJjjrBFVZxTI5Z2GQjGWwboaa6dcsotP4NrxLTe0Qplc2r7iv4M2y/KszGy9Qe9ooKtGM+hzxjkGlKcu6lAd2MeTSZ+VNsNsBl25z4wOqqk5qOwllZ5qoyP13Ru8M2zQCKKSUjwZbP9OkdCKugdiPk/CKiKZAjAqkjqlHL9mBURnye3ijijxVJw9MMoliPad4RlpscHkI51ltOPp6eC9vrvcvgD89kHtk+rro27iiE9UkJ1TTrScGLwPecTpWMJKV6DksHrHsPnH2/4jvxdA0rf3+16qazPqzYCz6l0sp1SJm3PVrjcEX2UELDXR8UTWGfMbAdEu6j0C8joqs8f82tA5/cTNxzjzeh82Z8o6TH/cAjfer/tYCvIUZKmsG62Sqz48B2NGEXtpN6+0X6vbxvkkBh/zJoEABvupn5e6csoYMLItUit32FjQ1SM99jqqtMflo9gJOY9bf81IbYGNDos1VMVxp5M6DKE2tDkr2zPEI7MztKG+M8QgFfdgJONjaf+eDpQC7ZO8OU7zbDmoFT4JmRUEddQP8Omn7qu/KvwbjFXPA+T4/Q6orZ+q7CLKiRS+8CfFbw7oZG/79ZH8DUWT7s368ZqAc+VgeLviaN8g/bD+MftSEMen4t12JYhTZR0QeiJaiF2Su3LkVxUsTQTM8H9XSdvWRIZTrmEWziXykIVrcm59LdfSOa10wPPhqraq8kOxfJNRIQ6NWyrwI0OIHDjoT0AFM57FqKbssDlBtxaFNJovpmXoJQvv6GSvdKARi7M4pCpv2HmB25FhYyxXGO5V3KnvAwsofumKJHTerqYv/jcIob5QtmL4Rn0+pDrtw/sb6cijCeHXVuMt3n1CQ0FJmz8zh2R/BgTdBjlYiRcvC8ziJxUmNoTUdusAd53QkMc2qSauyLcd0wezXjxcz3fQ7w5U5s3AN1XJW7payNIYx79MdqRyej+ah2CeLnCubPBqtlDU52vjLIrbZpVVOLZxtcZ/dFs9V/fKVqKX49CV3xGEY/NtO3PmX7YYgR6fSZhxMfXd/6kLM8S9lrE/v29NGyYjSBkht4h4WdXTy+ekmxvkglFOyqvY8LB6n1jJ2yaUGMrFFO+oOW+Jnoi2L8HdaCT9ae2rhStb0oF1UC+xbJwllb0mOMS/MlX13qqIoIMFqdVSteBX/250gs35+qSjAtlJUuu8lUL+of4R2ZWd9aTYRtb6VhaxkJe0kFouUmbmXH8ohA3+RM8FkgaCmvxya1iMswD+N6W4OpP9sNP2bYtrXRzUflyqFNb/Gx9cc1vAPkoY+AHxvEqXmPj4Q6M9YdtBlNgDnphaFZ7Z2Pie0kX+Fc+kIjB6PXUfoF+RZ2/Bcxwd7FaR8O2bXDZ3pam+n/YqlbsOTHXPzEsrDUZ52pwyRGizQBMWnm1y13tqQBeiSfU7bwaW3Tap87O7uJYIoZo7x3pzcJuNjfqizKgYME9LdkP/IEES7uejWLTW3x8MYUWL/qYRWDBw/1JRxW+g3POtbwuIy5B/8u5LCs4S7Bk8kmYoDEE1BHECF43W1ULdpgpNuOKocOT68kKh9pNE+57cdYlc7mPK5CDVz7iCPB+mdsFLgRiPF8mS/uEj0ButC2mDqptHluOQaEQPmyIgE3UYDd7mGt6FilrM3kMpyXySiq9Mu+IcUmQ+iOamIDw4Qf6U9/RDZ99WvUQxmq860jE1QJR5YijJ+BJX2GWGE73n6AJ+n6/aDjS32vJJBrJvuY++8HWK9uWSX4UT9pPpCIyLCSxpWPaLg451PKUkN/1XAyHhlZJqZmE8ipFeoBZis26AE9GwInCQGO6kF0U2zY+7XWWBjjPzmDvLbrc5S1WMcI9h/tQBqWI9qP2iKY1eHxoYPxcE+gaFYT7Dewdli/2Qklk2iYZh2CRIrh40iTuyEhxrPFwQywGjs1hKx4aWMYaIQ3ode+E+8Ec0/e9HnXOWPCcpagenKVsTFCRRWJLt03htuDDR9qIv2YSSKsFAxDsE4oyU1ZScsWQw+/PLO5Iqnuxx6TCNS1cFGWwdZtkm/6epFJcVa3z0uNx/htiFx6N1oL6lxSNmHUW5A+12M3wPKsvPTx3P7w5QU9wKU3GlsikSX455uEciOXXDBO//wCwUo6ewnacs529w06wa7QeebXHrmV7gOVrCSuTQBdIZyRt2Q5X88UwTvYQWJVzsKMJNs55JgEI7FWjj7oONS9U62Vci6mEReEKVy2vMbxF/vu/lybpJ7Mcb+V1yk+H8VpkL+B16LTEX1EP9yBP/xtXDLCL/p1uUzp5h/9vgofXumX7IGJIM8HEathUYlVc/TmuWHfheQy11caQs/87tZxN06PmloctvmL1byVV6CovLldcx3qgY8ECaBsB2OLFZBsiXQMQNClw1EcmRBSr7UZKlEa/sS2O14cl1PmxZAfbU2ci1gxTxblSsBoPLle3HImg3bIu96d1XI9ruQ9rrxLHVzaypBxCQGgb2sFSHS1wDUE33RZfyxDawIswwsB4/5H9F9SisnZK2yiAigQGOnNMDqDirbtBOwTGXPpxz51OMalEbjsp8g07KxO5rwMSYT7UGqy0BqOCnLmbGtPE5lv6NTeVwAGvtKolyX8F5quZBmrz1MmLsr+vmbeIpibYK8I7yKBRDNCwhDo/FvcQT8ln6xORFGsgdaTh5kXoJKMbtVG0Mz0I040vXUqjM+VkfnXV+KIkYRdhsrbGtOOVSCfDv00dZHMVqi5SbRbfYomzGoAM9SPqdpF2Mn3W7PsJD4Xe0nz5BUrPY385ChOJ5EZI5ET6+yuXTL6DmH4PsDoGKU8kCFBYhzXnIN5cE+o9spXUHf8GWmJWOiqjCofA0nbDEjm3GGKFDT41cEfuLIKsZllMwZlnR0ZVmIKAHE+aKppployP7DqItq87SJfKuM5/PyVkMpyWDAV+e4BPGpuL9FF8mYA65ewi+u4RDuXOSNCn56u/ASEmlmpOvwdv/rney/ZPtb7fLL6e9OWh+UrqgJDq7UuviAxkkhyYxfNSF/L6/uekWEebjKVto3T2f0/B4nBKTwUfAZY9+yiSXMkS0T2i4o9jw0xbHUZC58IKtXjn82PY9IdaS2Cxug7sSR8VNzD0VlBcLfa6l0tJPPAVIprrv7NjIYhTDoVskajCWBW88LgfFWXv3No7OFUbI/AcfIO2GQQriKjziHKZgjHUdHbIGGDJ7NzUJPPER6UFo2RZiCvibjgxoeQiGYETUVVulOtDM4hoLe0pp2yKNJLmf/ReyQwfZlnRvU26EdvLQCadMmU+Vb2I41cVuqjAqxRDv3QByMRy7u7lCY91uS8SB42Dfd1pbqfW3+iMKxaQPhozM+JnpTglaJFR8ySGzeiO4ysdr0sd/ub3FAzwdgkJXm6Xt9KivmIrIMmrGqTNylJWWEpfDh6XaQG6iOE78neTL2Rrx0bn2nbc9rK7OmREwvIx48gEPEdunMvV9tSxPN1wYx/5WjzOaLb9VQIcAe0t8r4uz9uXWV8gZtwbFfw7E1h5vjetJPa9qo2POISm2/CSDw+08AIVwld5OcLvpwRx5jUocylv4adXnSLsxNOq4GbTQaKk9VjY/cb2Us4j6ihO5ARiBmN57tkwvOVlyg0s0aIan5z80eb5edNmCr5wkbsbnDHPGOfieOHbLuOuREXjZe9lA1eYxwzg+LoYEUqXMnCcmL7Q7DbVVR1PowLusVM1lDETGV4zcZpKANzR8uW8Oj0oMkMqaqQvpKtpvIgJrCqqjDwacdw5co61oqFR6zQaraCS+DdUxIVJyy5+8dR22vZQ717d1G/CikIQXX5pos6bjNIlCl/DWu9pTLcwwNQFP60PszTd02jojgZVvVGmtuGjs4oBdcpFaaW8SgJjnkvL1kzB5bHrjVU4f7Eu4TMxmDqKr6lVUMbDsB4IjJf3Rk2tNno82aB5RcwZp3RD5w7HNLdD9ZveXZsA1G8KHrTOMfpRUa+AJIaXkLpUnl/eGbxfk90UlEP5KGqjMxwOY/xVUH1ysrAa72+C6vJCw0JD3fA0+cZDfX56hiA34oV8Y7/g0nD4PJq/WyhXc8PE+XX7Bt//3H6aWb5U+fpy2oDjN2dhxt62btYT7R9U2oeg63waL90lWz68yhxk9yEzNhWC9C7h/b3BHxaZQo+Q7UCE27eSkTldEp4NuLeEBdhQRVX39BSLhjKuxnpqT60AZe1IGOy3mUyMJ8zK7/dE+K1ei0c1ruw76yZ0twffPgiwyjMKiFr2TsmQV/z0uZ6eOU6KTzWA0hbo48eVKhCS5Ui4LyHLwA3vW/+ILcE5pda+71hcY0h44mYkiebKTJlozuI7OmSpMwZFeZDwbcaGFu/0pVWsr/xvSEW4pAQctT/QUvLtuizWIdxVa5+zP/7pRa9Ge3cm82T5jKYXtexym0J88wImSyUVOsJ9qls64HR1I6aLEyenTI8eb3Kw1EMqZhwGzE73iMRUTvlDjDz74ttENxErjy4UfYNOPTP8vNafZuthi5f5ekNh5lhx6FHE0djT48x06mM3r4aPUldnFD9f7kfUCJNy8IEWJqzkk4hUqJWSskVlYB4TEe97O1mHWItdTVunjbvXoD6p5wvw0iUG1OLTikZOdq9HGePFYK+VaH0JYsTI4jXwbgZnJ1zkvGyIqoVzHXmnt81j+hDYjXbK71ZZ86JCRAxcMRl65arXEtx9Z+n+aI7wfvUQd3j3zglHRXery1GUWuEb8wvCqTtXbndT/AUoj73wiuHQr0j09Rx52hHp6WPFb/HDzIh0bOUvYsKPXchkCEETJ1CkCT74RIDAPRf7mzIUrTsEjVfGu0L7LBahCV8J9bX2OvEiAHnH0vLm2hDGMWt+UognlVSXhlSGjIXu0SyyyL7YHuBy23fE0kv4egrBHtZOOFFp4UTs1K0VUJT3mmIf6pcAqFQLVMyGlbqXpEznxdsCxRs0ZVoYmcDRJHWwIwDa41fIVHPmWe2QmBqBOulYUnPZfOFpSF0gu4pnRiCfozH83SmTJaKwDE24KxRVOrTszvwFcufW1jkxf643uHdEB0ffcL/JQsh/KCrGeUluTlpZqJHbG0ewEkUIVxFB1KTVLipCPzYCeX+NrfaAtgyv31DnyhW6NmGeDBloXh90VRsyAOSyEbS73nj8Wpo4hiJAnlKvPk/547ka+CAtiZzu5NSrxIoRt1JGUl7sr+UTXYi6bHVnHqpSXNlALIamodEG98BAsJDQ9iUThFciUGc9Iry/WcR1DwSXXLsg6KrUKJN5JZFH+I5dk6FCFM5RsOoNxVuBDH+BRgfLvxYXDnIITqlN5ynC0FrO1hzpZa39Y7v3rH8vRNeCkA5F3mAL+9n2Q37vXETMmkrv3x5ZRy+ItAUi0vKWG1zs92HFEygnVBHFnWyWwzdeoharq9DtKTbATl1v+joJHpdosDjv1kAjoZTnF2tKzG9mD4iw4H3374YFGXK6uFvIyLkZQ4kQKJpd0zhIst+b1rfrbcUYfxdErGy03VTcQ/eXt6uiWno3xPNVAC0RFYE+l7En50khzmH7WWnvjYjVyA6VeBnx5B2HiNdOrJdQWrM5GcbtCXu4mm99sJal6fR8/78vNw07ulx4JsK/VoryqUW2cvr9ji9WjunR6Nv+2SjQ3PPgVby+mUUk2/gkYrbVFxmKAlFbY+VkhzJJ7yZs2E+1oT/yJVjWDXjlyjNZq+07u3y0ua3UhX1gIyNaz8a+oQgLPYdPOE9qXRRIYm03f5BFDtdcANHqO4JvGnFpZbEAeCNW7OHbsAeNVnBJo8V2UW/0B7C13L8lbsjq2tk44Pr1Kv67POBLY7Us49WPShlGGNt93nYllwP6+ls8baFmsJUzgnPnAsNB44VcbuPeVzTfRoIIQc6zq1e8/6S4RfEuMhjsghn7CJpJp5sLRfXJjjAr4qnv8iYCBog/kzRB1xUqrWpW8LM7vJIQ0UBcioHBj0YhKTUU/8dfNSw01k/Bhw2Yyxmu3JcB5c53VNZdj6Y7LB9OfqLmpMUtEI2sl457gOw4jAr/T+FsiKxuLI/B9zQea+iBJUngORHYKOOYki8XJ3uren8d4u4ss/r3glaqM4ONLlB4p+suWEJ3p3idInOIhMI+tHv9jsPq0vwnq+7B9683dzL7KxmL07XCl5by03oVbHGL6cdKs/tCD498uu+gLbvfslvYvtoR/PAQxnMj9irDphhr5qOcDm6AAvCx8VGJGqK2cFOZsXS6mkV8zY03eDg+PnllePy1xeBaScwD0DYcF4uTm4IX3IIUiKgdbhaLkzIQ6siDIo5Cy6SgNSJcpnhITSy6OHHQoOS1damUlp4zWY0+MbD+qTwe8NcRdTDgdfbs2fc18tRtZp9tEiAcgJCQ70seUd9rSuK4L2hQPV2ZaMm1Da9yIJlks1cdZeYzr7EoV8m5r742knEetaatTL31HweKlpYREQvtdotWP4SEAELdR8KP8s9P5yjlXiwitnEyyBwD2csjYSkSk4D0mkTapvaF+NkGHdKyAcgWB5vo2+Vu1KbDzAanDYuFi/Vp3SP4Y1mBCAwI8gQBVl5qN0Wg9NFqcyjgxwI4ELAc8wOMG7xHz3kKQO1bGqlRonD7T35M9xM/agSwDC3Hqi8KEjj+9UQy4a1N7LV0BSg08uwQXZwBi546nQe5j3UGRsraq9VuBtGpPuZp/Bd65pAm9JRvrhTS8Fzc6RcZo5SX3lipredaMxICDbPQQwXTz5VxpC1mmJWVlZcqiODt+ULsJmtBlmCDWZUikFpFot5sosvxcWTRdi6I3YGoV0qkwPAjwrI7aHYM8Uh9B+1bUPi+Yg8G1DcHsUPXyEK5Bnj6ufO3qAcwBKGCSksAhijcAyR2b8phO2D3EJLtgfc6tgW3TcEqb+VhIJ+5FPZagK2YslK69Sm32Q5wCopfaTq1xkRjIYL9LQNrgVgNDWhtRvn0nmd7eVxQrCfJKro6Xv7Rq4dP0ZkJzemcxv95esiidjL1s7UpKBx4hIiLmAZcnsXUtpxmZgtVrVD5giGcQQ3P8daXNIdwAMyIIBIXVcTBOESsKPQiegH7Do9D7rBI7DBDcyIKoYLPD5QHA4gk79uQVyK6YeOczj6cdwB+ttHD0cvhkjy3KHuUS2NiZRX7DNnRzWLb7C5xmwPIJiiC5AcxWYZ9olrB9u150iu+XOe9kpApK+FKH7pRR82H5VDD7vHUF6y1mlxyqSkyn0ouO9wAmCQloHICmK0Y9XVoBBLCGg+0qoc7S+/WmsgYlBnIqpc0Qg+wO9xWv8dcnPAO0t6MXAA6hp6gJiUMOiW44hx7uu2SqaHuv/Tg2GLKN2BkLhXL/xXOZ0qZAZ7y5ELu1z0+gZmBrSrTyHKPGABZ1uPQFzMZNYLMilOAZbiDfGiQjxDxdhlp4ej/1mzURgdUUSmOI1sRdkKoUMggG5clC/MwDm2j2nJCQ9g1JtyN8WS73isinLfslKpYhmwGx4A3hipSToJDielqppZJlNtF2Lyral7yaAGgZelotNdezUwKP6yXoc6clbMD73s4PlDl4cJgKXoZScpLGq9fgOQpKpzID9e3jpIREdQwwR8niPxKSRRtgORXYPjFt6PoDyDSar6FlIHLu4voTrYFbpNuCx9pBVwbhDxM2KgCPTtSNzt1tfPdWMVFM4yaBGqDYwhAfpq6k4AhxSypMr3C+VYZW3t73EYWExjb7dC1YmTqgGEsoRI3daBf4EnXLUN5J6T0dEiZN2k2tiS6QgoElO3PWJuFY02CHG3WdUtNj8/GUF9WUq7cCdzMrLQTyKltgPsL+evADAnTgrS1Dm6L7tax9FQM5GqGG5G0NAEoXToMAk6XKRmGN46URpYIX73GQrxMnPhqJYoEVd+nrXOEwT6LEgSPj2MYmfpK32kZshpTPYPUhHBhnRc0UcqM6QOHWuMDCyl6r0V/fas/+ecxkjwYaIDTzXWNMTTTmFQHb+L/vIbU5J+sbEQr+c9hQGCkCxHOIa81XgRBj4bIor2+Um0i5Kx9SxqqTrL1DRTkcKBUL0WReWIf8Qw0qzwhrHX10ejUdlZ5PsR0zhwU1C78hOZwg6j5Ru7dHzzfJF7Xd4ns1B7qPlfR253ONa6yfiYtkmQCKumP7CXnoHPoC8sY4z/2fZayriP/uJNycLwGZfBetZKiUYrdxHgWT8HoHNJpx2Xel28dWByp3kD6gi0kntCsrYB2JR2hHfF7KLp45KuCEa8ntwwQSic+DG28zxOVrUY2TQ3nHEKDsVR+DkwjFnA1n5Q2knmGR2a8/C5WfwFIUkIyRK2Ne1qA58+keCbL8i1Kv1HDYajY3jHeYaXwBhxAl144Yx+UNWfJpgfz8S+C3JDeVnrXDi3GUp1aBRRfP3YKUCo5uj10gZHN74N25gP6jtPbY7T4RLsAqYBdv/o7HZEvUR6JqfQRUrQsIv8zY9KvfpgrClR9Q++nFxSD0ghv5u4Qx48CUWrFA3Eax5FpkQhTPF6jPsODN8eKxixadCvCzfP+00mF4c1DK+/GK9MGFaFSwzRaPtSQWsRFjf30PBcC5z2hSpOEeQaXTkqwkqXmCW110oX2al4sgF3GjBysFawi6jA7nuJgazv2s0tEzpwKrqPMSpG29Fzq2MpxK0q2832A/Ij6nWBE2Y4MRZUw7f0xmTQoNpk9yGgOZseWDY3OSs5YpViFnWK+V0qEN3gtCDfXx5z2ZKxymmq0EO5c/0A6djkPNb1617fBuirxzRlaee57ZUy6msOg/1LCYCdXk6lix3rrDIU3rBT+vB9XUIykZKjCiAopvJ+CtPSwIDeGSD+/6cnGBM87O2LJI13+SYnWCqlsEqVrCJOTRpd4gAOfDwq/vlki3NUwMbw8CdVaDfrxOAdaEwF1bqsD66OGh+0YCWj1bKDIv+FQpGelQH+xHKXrQZzCmjTdAddmHXTgXq310Jc2gvawPXYktuTpJorE9+g/VfV2xGfF7BJxu6NxnNwQmbFVFJdheoqqKsxuEeFOsTStgm2Q8k+V4oF8BBkWnCIQ5Yyk+EoQXiKg8IZnYY1AJcphf19AAX2PQLieyg5dcZICoPUt7tIQcTZimhJ2B/XY272gnXbKHDNSUh2gIgWnBd9eFD8T7wjrVsmuFMsEU2yI+bwkqsa5VjdDI/ZpwXHMWFYvYjs8xa35JZ0KZREoA2WTxslQEFQ+JUcgX08UuFOj2CSBI1dPARk11GK4cT3dccsKYgXiATWgZ6hBxqyjDlGogVDEtWyJeMfrifAEZueC45L7ZTW+owWlnB7v9DH00y1E3HTRwbfQoGkXZFzbB1K4TMXfPc/d/niCFYd/a3PI9niKNwCcX7xzfLHH1vV4v5Y0G/7PKcDX3dYrDLrzbiER9tSL8b4hMcwYhnwqpnLSsyyVnYIZciCALCmDTMTJteSxUheZLNlDExBpj98W/IfODeZ6VyPWAjAJfK3i/xLH+E9QelSGq5npTsaCd6CFuIi9oAYhIRYKIXCNE6klIvbIpRFxJE15DBdO8SdE03oiTuVAcSx190yUrp31/SdtZcSdIrIVI1u/gZcdoeyQQpxPXRZCxZZQOJAaYQhoEZLkF1BzDsdHR0iYqnSPknr9vNxDZjL7xeF1mvEoKkJQcIVHiU4babEDbGKG+Xd/hBrh9KBET3LSlkVC2Rymk5unse4NDMwnWMG6hHVmqvNhG6JjmRlmlFvtDVdftt32DDmh+QJs9SvwhA/83EqvYvonrXRnuLyN6o8fsf2yrytDUMMh9FXrX8PFMt5sv8ktkpC/smVwrTy3CskX0L6QwTL449HcUjSrI9IP9UfZDwW8MaK+3ZQTnc6KVedBw3qXM0ZoMWS5q86wlWAVHaypo6jH7thOV7K/f6iHucjyUGK8X9F07kQFj3yNwvV16rnc5MEPg0N/OsmrOHXB8QuPMp5QXf4CBuZxndzwmP3CQoHRsu+4FOSfSZmOfo0uj4hGx5hNrsrF4hdANwTwewac4MVDWFFgSmbS6xSfHMoZSUQtYka9wQy3Gb9fwwZwA3tGMJNv8L2TaVCtOVcLQ0lxLIN6aLIzwIE7x3s44RpCXrUWUXdcvFYRWT14uOyQvG2CKxg4gf5dIlIv1GPywdV/YJZz8ti+CavsevvMelw+KU0egJYD6fVoJX6k53lBaYh4r0YHVZUbChRvw2PP24tuIHCaBOpDvhR1UVwSYawAj6PbT8+DEiy3DilSRnprhy6JcniR8oinf0Lzi+KgOriv1bhBrWZGYkoZvKEOWJkwck/lEBWaPRJHu5wRDnxv8gdlzbDfWXSq4mNbkaCClpO8FUbEGLr/J8lzyrzhggrYehgkenTCqJqOSNxHaBx6Yg+UQ3ckV3Zb1kwsDMj8gQOyEECYUPg06kJnvtXhNUq/OY4arrD6mqyJAvxmHQZrX8bmTCPMTsis7J+FpsLPKCXI7PRyR/KMPLH0qGjGt9NeTXBfGuRecErNsp+5MP4LCm95GNc4LUGf0cTl5yKVJF91tTjJqHmrXU39PCygnLJBSUBeq2KwF/DeCnrUpIwKxUdv++J4mNhbaK54AdZs5PC0H6uEbSaysXIVBWm4kUsv1KzPAzXbovvQDGqRv1uXTpQeOJRjcolXvy3sKJ83LbSuVYTlC+AbvG9jtvAiJ/IJ+Xj52hfdBmaclu43OseLNdNn7/u0DbAC6jlpfXg8HF6yJnNCzWUjWeBtPPuEdsk56LSFoPUK3lIFxBMNB78sG48sv2C9aSdwdGTi2MzxMhGsPsqt4S7i2AM8fXpxP0jK3Wx/9MsGjnVYu74PuWvgrGJ5nHM/sfkzLI0DJwyAKHN/tkbFuKKd1i6lKByvokirBy9JTtHaqkstx8DxaVk0Mu6tuttA6ZNLvrruLdhp3F294wURNYda2cue6M6Klzxk91K7s23Vo/La2h1IGPCwLh3m75EC6GjNcfdkO+0GK8eHUHGrHF0uiVTbsJH2eHnuxfh55qoA7Sv099BOyl0JFGOBnDck4id41/vUpEFTzKGFlSw8kGvlLyCS+hhqkBvODBxXU8By8TL5xO0bTf3a1+E3TJsOpIj28BqW58ZO+dzZYmlWdveloh2eIlxVKBAz2GbHb/2eRCR5xXXqbM/Nrb5Mif1gHwLa7zk0owXokVgwssSgloj8Z6qyx7fW7ecaOo4TKvOxNsA8NHg9h0Ze3URWV3P4yX3F9MRm0NFMGMwPBSLSuSjLdcY2cfGrxm5yaTVLvOJIaI7hoU4vv/EgP527cdbSg3WkCKgteUwwPe0625aIol0z7xq5miQlVOMMJu1SonV/2OMT+/j72eZvbUxMT8fFEE+3PaNxDeqx80JK4+/n3+v5f/55pxapo1O3kkPJKCqKLkeU95qFD3w/vfK0TIxQVCkJfzp1GyU500vctLWcbX6sCE7rj5pKt9NnTQYP6v+C7dhv8oTPJt5P2UvpQccU/v6/SU8kQSpZ5DqoV9omVe/iOZy3pG7WUJ6c7U/QhX/799IpWYQeD1DOGNuqCj/Bv6yjRXhUW71P+irnvbFDldllt24ARWuT7uj03pKhBy1P082Uzi2f1DY7tD6apGku296UUU130k5S5aFnmnYL7/qChLLraYCPr7KqX2iNmGBhWXNmkUHn0KXnrRhsGkSkU9GgVUxrVOd4NvGFnXJ5brtgvo+t/DZNYohhogn78KwN6ynoId/s1+PKHEM2bRnZhUIuueJ3CCVV1Lw3XhJFLDYabTa4ww2rnoJ5o+4XxnvXWOpzbuuCJuquPsv2iGRP9ctMV0qiPtD2tkiGgUoucoX1kfKU0IhJyfCm35RMc17qeRp1flDxaVXQgC4qDSuza4jazpcrieRR8rGF4mmVW2Ry5Sa/5gqyem51bWa2vudyBclml120eMx/gzY+8bWSneqlHvKonrOpLKqY2a3AC/+yL9Gbm6Ajkix1rW7BhMWh58S7W4A0pH1XdNtUxVEL/bqZ0NFDlWSx7ZHNHGORjmGhGGEuZane1q8MlZybt09EtSS3UbUCTkcsi3/njhVYlMkZLThK/awM8tySn6/hRWD00nzH5P1HvdCeTCx0sUQzAoH6fgTKEi6zQHntyACdNcHrljvo46mYUXYbhhV9hOIt+aZPyoxIYu6JfRaABsBAeOM3Rnb878FXfe6z5tflsJpO6H1ZBM9rV3hS7enNcMkd9peBEnkOlbVaPO8UfqSUZpJmxfjYFc3LAhwlukRQIEKbtxI5G+vqjX10pYQxtuCbpnexYzhb7MgqUnWnbzjavd82zdolD9PzNF60P6pp3yEhpUHJmyfJSxYr7yuQzw3HJ2BORL5SAcXuCw5WUEkTVoShckSM11sKJ09O3NW+OfPcqmfVvwkiW9blMzEMgDhtc82hdDYYrGXJZfjA5j8k6vIfMB8zQG/PfHn24cpEx9hblktnSPiLTakvYwve5Yk6eW4RCpnPmUpjnptY9VmAdOwJqiip8EPxeOS6MafMCCZUoHozcyzjQseJeBOS4/CsGvzHW9mg3jREuvDJ75VgEC/1zpGZKM+ZlxmnH7VrHAU5l7ifpeye2cjpo3LoeZ8TjcZoW1CdWJ0JcV61HZLvlbOWfvOBdZ9WLFDVao0Ti1025tg/oWrVzMlGoC+vzishldB223XKiuGjeBwIkOC1OxvvqHInJiJKn8W1uPwmRcLnPE4hKXs6EPhPys6H1I7+IPYhz2vmd6nwaCq2scSp47rWLuWsBY92r1Jq0goHjIZOqqCp8emUZJc3lxxI7tU4oVsxSlhY405bi3Dtw8cO+1zHOlDcGndTPBsccXIhjjczdZw18oeBEmU2ykjMrhP18jwqkiHw/k7RJHEL3ICKm5nH6SUiS8ZJlMB992/8uf9GhR/JhwsTLTZVrV6vUDDSA6onnIhCwUFRlcJwCd9Z4uWjOquahR6URJoJjC4meEFSs2Cw9oLuymtslf1m9O1+uvQmBxcaclBwcfpxr/IbnSI0fBY0asmaVoRjMd7AYBkeUnOgycPVgd7X8rFEG/6gWuvyb1jG12PQZIZaN4WgdDuFB/eNcCCavxMdTm8ULkjB+WFccED/CBqPcqkvnzwc+ujAcdARUS2c7Of7Fw7GeKpZJmLMNuSAIWPcKh3GZ6+x+tPBnzpi8Tp68UP+9TuWDiVUcbA59Yhiq3GHzKbDGq1KaqD4O33Qjp6WZCQMFZ0pNxQRgT9cTqUFkuZrYMlucrqKkgS/rumjoIQEQA8woTTaeDQkqPxi+WFdhcy1CyWnhhZtjNN+/5b7fuwS99WY8vm5/sMf/Y69bhMppvC/4kC9muavxQf46fqyDUBsWLhLGshaQkeQAzFm74zrULiRDFJ/bi4BkObXBGG3DA9LuHEd37FFA8it1tS18pVKvsPMBTQHDCsAHYYnHFRGyanvSIxFiIz70CJ0+c38VPmm56yHPbZL2R5P4QbpqppdVjShJ+itPL23kXB8OXVH5jVlM74M3Ut+U29XfY/+JR0fO6+OQIIZ3C2V+lxLcMrHXX45aV2ziUZhRs1fFfod47vut79Wxs/nRM7knF+8w8RPRvZT7C8PI87RoTiwdt9bRWAfXBQhiV8y/ViND7GasDjGv1tWv0pqlsHWw3fh4/B2jhuN8jXsalDHZq9BRP4bFZb6g/ueUO6FxCq5CRKrAVeArAjUnE23HtQ1TFCLtuVy8EMRd2IvrsEhdLBMwBgBDYbPb2NWcVlqPYuLeJz8Ex0lSJAzrkAmCmTsLXnoka5iykzi5GApM5le0uszBz12FTtm5XrnRoi9/ELLo1rz+xWrbBvYmCQ/eImGGfgOx5F/BlcoHdGQiPUPFKDIy5++ShcH6PVD7J2AP82MfqVYKpWITO5jCXNE8movb6BPRvAT8vNl57YdtjDPRolPMMXswlgyyzoCw0hA38faoQV9K4EZnZKMhmb+U8xN0CC0dMh1caX3yo2Dzrdbx3PE7xB2Z+6ulWRW0pH9Vy0vyZbv3FO7Jv7Jc8IXBR8r3QDW1ZWhEyQHxhTbv2fswjNz3/MRw5HGbeIA8hDPpAG5jKQb7luDnzKKI753dLE8HXdA2jeY5ABvRL675xnUpLzFFk5BQEmnMENP/bCgwfZfnZINjoaJDNlFT8tiFIF5FUsigNbZ6dY2AI2PSgzRvkDFfdTEcE6xB4HmzENyzNVihhxryUAmN/lirhivDF6zzPiIR5l/ipHVgSZ/Uk+Hl2w939Sol3aKIXCqoEDOb3gWLx5jFmJaYWsgsms4w7hQFgU4kjPE+2Yuyr2/OZp55wdKNyPt4V3lOMVMvFZpEym/aGXl4eMm2logZLH6hHtdcjt8Cva+SyZrsCc/06+s2sikY7CCfvFNn4n6ORH3ZWADjvHBkMtRwwrGRE1LBEe14m57pjgxKz+eTHR03EDLfyGXd0xt6YeKmiEviZr5AslN8jzOCts0c7idX1eLPUk+fYg8OHDwMjauE47wVJBYlwo+yVniRIEOM5wNY5ycbOXLeUaU+5jWc7izcPGpmZ6aG08981UkPvdH4z3ILRtrrO1AkRn7WaROtKF25bDJTmbbj7WNvgzLTMbBJSd5SIuoGvDhWOfehvUECQKam0mvg65+Q44bVDH3CdN4d0WngHRCvBXYfYhR7GX1vf5ezoAXZkYIcoE2cxT5hjSZdcSJLJwD/9kBtAgr+w3+OVSn4DbyrYPn3K48KrYAIGKWcM0SagbEdOTqV0T6h11d1Nfayjf8oOW0DARY8vahGlnkOED6OwQxQK4N1ukd5S4sfxZNTWwhVXkcAS6KL+PmRbfO3qioTON+vcmMCIQT38I7W7n3ovlbZaHDnm49EcFa+rK6EeEnV6QHkFSE2oKV89TMqbbDGcmxa5AkwOhs2cNrW6YKpoWRl7lPGKJKMhucuXkBWAxzjX8rl7crar/uN2B4uvRTCfQ76pW0Q12G0VTl982CDv8ikgxo5alvwA2635Of5bbghSdgdjcygEtriFuluLMRMWq95jd0sDwWuvEzbcj57GRPhK6T8Spe10uqcCv2YjjQ6Zw5WVK39Gf5aYlqVkQxeY8FmgqcFX8idb5jeC5enbPbya7bB1wFwGggRWaQuwtn4CapTibw4ovjHpaY9KBA1bWqkxbu7Vnge5WlPXZM1nxEDZOdDAtzM4Kny+vAmju0MyA66paqloHLHBBvMBL9MGR5HtH0a99o9AYskbyW1gCUgPRXYJnCPXdGYWW3tuFt7JEZCQTl58C4QIa94bJmmf/i45PfyGv4W3hw3KjzdGQ1l7kxosesS1IAa5JUEUtzWQq+Oq2Zfr3bgrmaCVl5Qj6JxwCoosYCqhAUgPiboTXuax/YIEs77/0uxC2Flmop3q1SSjbkkFEamT7myUCoTu0hsvHQky0PpEl+Qv8suF8ulLijg75Si/XE1iitkS7TdX4fT95F7WXToFvUKH19ehGd/P6h57sU58Ud5FJ/2RoBZWVNRlY0gi7l0ciSM9X1XyVkC/QFw+sni1Z/Y7dx6OYdKwXuymMdS1YVt5m0IJBP3Cn2jD9iIuDbCTrGQ4eV0eUNOO2iNcg/1W7wFWlqDR9fJfXzPtcoDd7YMpgeC52+tCR/88XL/Jead9StrfZA0y+ZpAErrCGT3f22momnQhe2iCga5v+ow+mPwPszkxJgADdiQg1E9vPhi8i78KWA6nE5u0dhJXR4xav8LUUGmggUPikSOBhscWidZFAOD84nSRFPX5tuituEPl7XombZXc0sbW7SpWn1nwd9lgj7HFpumf/YMh6KqHPiysonL8sCMLxXenjzG7KJQ30Lkt2WnY4e2gJkEeQHE/fOZKJOkzj2hvJmhBVSKRH/ZVUShG66ZAZ7sXlzzOb1H8U8v9vJgb0mMlapQFSCNWwY0FDg8p4dfL4Pgd8og/QiBK3P4iIUEDww1OYYTs5f1A2IFz/gqqYk4GaXKinAlJe2l0/bKw0RD8tTnndF+JohDw4Eetq33G8sWadir0zSZK1sxDL0Uo9yZMmBpZ+LTubnTTBya9TyXf9HqF3iJ0utGKSffQCNn0qYEeTKz9t9FLdgTabOP73SZ6BQlbfQQ2MC7tGGMhdNxTz5lF6EvUBhl5eCyQMRv7DOf23vW3U18wjlidW0XPfe3DCu4pfHOcPVZAoL5bjhxzu5AC41pUs7nBQTr2nWPixv7aEOiHuUJIdviVtmvIvwdZkvqbX8osYTYQ5gGq8ZBN/j6C9dfFvLZQ+sb5OzEXO9rPiY1OpaoMXZMofNvT5OYwb5GC9ILUT1DxApUkA3Sd0l2aIarw6vsFO1sR5oPv1FaX1DJWsthpWsUoR573H1PMF4BttP7pASDO89hynUMN03Wv9Jqa+YrOpHMyE6sz/6AX+gzfyVB6GJVzFVDXovCmEK4zPYzS2NO6dMZa8ll68USOWPGVuzuiHrRSDeZTKOV3nUdNP076EAindA96MXuuKtYdMuHTVRrGO/vAXHjfPCQOAM3EfH9VmRrbC4HZeqy3mP/9TSSS9X1rWT1gYBMdrAqYxnuFQNCprVb7okFe0KAMCqap7Kcwp7xYN/vUMR1rfmPjXgR/Fp5rPnO5TutSFKXRDht3A1XviLi0WM0RXBuK2KYgdH0zHS9nX9zTMjgOCLBk+csgO0MpfYK+sM8vAZ2GZSHaEcy5ClpCV1qWxsx9DidN0RIxv/wiyfWKvAyEBAS6iacTkOAvHUgj26ltA7reXr5zlXJz0rnmy7iVrSCWxYn/EpL3aya5/lV+MmzOOtVkbc8LkJxDSk8xvO1mE9hcarbPbtggdL3vSxJdrcKoAS6joed+CFNy0ChNata81zERkqwzz1EMz3MCTUpvUrR5/Es+Cog+yJG+PFQHiGPAKHA4AxRiol9sVoIOhQ821YbW4uGhaqUQq6kKIIZ8E8TZsraCcIFcAk2yDPk+KbdoPTDCpLgZojGZgkF0YIZGAZUyXU3OFndGXGule6g3NPuYfzIwayQDmqls0TzMU7qkx6bGcs82jXyQDQwrnyfmPKy8mIDcZBc1CcRJ4fykcEK4gH47hx4J63PJRQjeZdb6PyAATGpGMiDMT7Y6LCTMAPTCRlqD5KES1UHAGE5EQwgPjHT2WMif6jShuCgT09E5iDDpLA8oiL4HGRmCkKY4QlvW7nfkSp9mW9cMDoWSsyzkErOWZP/nQ6KdkFPQaIc9/pUvxcqUufAz5eybvaqp+9BKhEL9BYQw9S82NSHCI0IQCV7825Od+RgsCSwQmj+g6dLJWbYrRY1jjG8MJjP3cfOMTq0B7mg46usTExhudw3FMfM3ZpW8U5OGITtg6ni/5FCaZyc1qxx61bajDHdtvPsRlwzjZuqkvWw7c2Ir8nyj1WYEe2w+TcPPwGUuUSLzE6iG441i6P8PXMcBRfBrP/Kx9IEWG0xEXyO7jnYTXxJ3sYPrG8/qlwLyXsE9g6qk0ZpV56nxFauSmtfUR03F6IHZ2IhqQ41lM+6biisgvhxLJHrLbX8QdUpEUzSG45cDZB4QBx041avqngB1iOiQQB3eJOKkD11P7WOVz1oRPoZeEhS+8JMNoal3QUmWs1TI1jInGV7eKRJAoZuJ9VX6cAXGJDYaMpSuVT5NVjd7OhGY23TrcZFtdPLOXNqbzPiqkL7P7jyELEWrKxnvv37cB96RMy+GKSGpzKR+YYorlqIhmBTDgV3MycX6anit/8B3dhyl4lR6V/8AgEKWwmfbYSC5k4dsfnqZq9pJHBF7FX7xJZ0ngrmWwMEYiVeTW1qR+Tc47FJpyAryAFSgZ0xEZNKecGCKGZQ3PX2dKhsCfUk3L9Iu0vp+AfENAbShjIQ7aFW8vwS8Z9YFGSxB/WZjvhWCarQ3Jl0dCuM9bRJy8uWSgDS1FoiG9PqW3qJdskQTJntWE0OPm+s63iUcgEm6WKNuExpzAblLPPMWlr3lcWEWsGmdT4T9UHEO3COUE9h2W9fnhq0Jvcrz+Y4T3BujXm4m+zDwcicmpvG2FhYCr5pmFerSdlesNMJa+E5+cHfMGqt6Qw615bsUUtJ1dyp7ho+Nh6a0j0oDvyaYIP6PDmGgrumOXfUyhrAkTgkfI7wJIyvSVGc3NsuySqp5M5Kd1uCz3GgBmfPRNVvbhMONzHHsSoad7XQdwjWkVqFb42keRRyg0LbC/FbEh10JVBXj3PZkzLFifm2yye+LnGBbjtvJFACpSFw0Qk5KDkGwDEHERVJRGyEFtKpy5iCUudLjHFsrTcBPa/UivyAa9clAPrj0tD+LBD8/f9QxsgXzLX61HH2wKGYdeujdhRqW9jEL44sEfcuo6fU6EMb8Qyu1PyRjgZ4T57Hk92KjrB+twNqIgqQJTLj8/inEC79TqIroeEapMIpajGCumdTVK+Q7Z5saJOYlYLz3/tlcKxNAIczRceaSKHHXvYbIlb3fplNTnmm+ElsmjDMojU2N06zDzlHTDZgQIynZQY91v9efaZ8NEIhMiTVag6zKBXBC/cKrWnqnOu2X4uD9sbYm387admE0vBHqL5gKq2YxE4FPukOLYqMEv/iuctANvJ8t/LYTlxnqdoeEh/WRMEJz8XY0AhSkM9u2SJ7nQ280bqHg/8NeILpHBxR0SQ1JyFr84/8pP4S5WoVQQykOh83iG3pZNJ86m86jQHn8rIvGna4V3a+R5bPCI1YUSv6fpCxe11sTh7EgfW5krDa1FfVkqKu96oF4BKpIS6ebunRRv7jYTaL7CKdL5CEHZIxyzWNaCkFqx7/nJwr7plqesQ9kfgHcz7kWPGqwJdXNYAW1+IqJ2WNgWgJL2BBqBOmEqKY1qjwYDIy86e9xIArXA+ql8eHSxOfm1HpGW4j/Teh5gEpFiLfZTaNtdv7eAAqe3v+7mk8WcYjbfkAtyVBHmqe7qluM6E12ssj9pQIpKFkeWMeXMBTtRXMdzjf2649Jo0fWsDGlF+G6KDd1Z5TnIvoSYrCMf56zRMhH+ve9CbMTwJafgLVwaAloY/JcrM9xjyCO2xjha+7B7SOmdRKSllpoBnnqe3gTdVB1ATSUrv2qP4IYlMHw+FyOhI7OdyeASv93a4xmdd05TfXHUVZJgPQfDz/cWJHcCg91qcfGzbxZ+jEOtpzKP5uB3u8QTkZpq7x/k3PNr/fODG2RfkAXCCnWMhIWkfbp47rj/7Ctol15Je1Izi4ejcKK3w9q70f1QWb5W0aEQr62+yFH33FoUFJct92zsW7NQri3nrHlJR8UqoOKJkeQp0zMrcWXMJmQLkaQWFr3oeILmumvrUzxFzZn3XLqIO+7yd8HjooX5tV+jcTnzq2eyp6W4sboWL93foJsbcYE4ClNglBzCkKQ5ww+b5GON9lChGD1/nJRJ+FfpULUL5Yb5zOJAXrWOq/XCXwkM9OTV80oQvJNUKJNby9WVKZsTomvy0esAfeiCp5a2v5eeQ3xiJ3GdvJO36grvb0a4/UDfVyTbTlNG6BCiyI6mmNsllvh92Xg/mckT5dYjQVbXOXX2ydLGhmH/XSyWoygvtpkFUjqirtMyfHLywBCjqahIQufWMsutpD8h4zqMGGLD6ZxXIRec0tSh+06wUoqbIJt7QWndOmk6vXwZ2cCDKmrBFQDf9KFpy05Nna7iBSi9qrkW63+gGHH+Xk6wi17LSdEz2VOkvfSB9u81GjGWdMhUiSIRr0YSq/v15cd9h7JY2IdkmctaH9hQXaVoKfNZN62mjm5tQtz41QVZzo73OexazbVU0zko8BBc796eOiZFL181vXuFxh0m9xHMQWafNvSqxK2dJymlbFK07TyB7S0tupav1yQYFsgYr8zN8dyYcmU2W2TNBaz6TjIkXs4dcZnIjQEB8PN/sgapM/cWAVfPiQDtlnILSX3IKf1XLDo18jFMwxfD/ePHXKoqzZUMGzcXToon2Qjnxzj2t2MTWdpHoPQbaMIv5r6S6gZAvB+l2Z9o3fdZEboRdG4jwbKs7eYxOq41A5oS7FVBR4sgm67fEyNydjKyw3XNGlyhKsFuUAt3se9jW7f04OOlMblDfSJLq1GN6+y8rPOUeB58uCPfFbE9IyEiJTgV5Jlh0+PdoAilAu9R0G8eRgqCVECeRJQ5hDy1X0ET0SUYmxCEJTTfYee2rZFCuQqqvk9wdKSMU32jNt4dQW03wcJaEbqj7+r6Sbx+R4rvrQ9sDhR0WyCIBsuDQ2EkuvVmX2kuIkW0Drp/wEeoXzZCOzRUJ1kR209rXrfwU/PlR0/lQx2PjBW17PsmEHC+IrZoZCksXSZQSyDKj2POyLzmkz/VImFtNUZzYkJ7JEpp01Y5im4bHiyFg+YKthimMFNvXiF54THNTRXKYeDVaLbbnnWicWJs6SjD1F1h+iVf8gEvB+sppIpmbGNBhXZe8O/bE3kBeXaDVh08IXVYyhGsS4K4QfSy5Ua3ps3FZ8Is2r44vGS90hdzZtDS83KmXgpYqPar9Uz6INv3rNHLORv2FZisC7CmYhIsDgURPsPBS1fo+KYWtpuS8AH9sVbQ+Dkk9cfylUFChtDTTHBX+p+1buPmyBJf6DDQGFgNu3X887vhxliZYpYu5Ju3s9RuLj3kACe+wZe7fcwDCe1lDOc2irocFyDFEm78SSUCJhH/LJfCDNowScfGdlZR0m08emHJzZbuLRMb3Zehpv74esJmI39uX89MP8qL0nNRGPOuHY2sqv3H+WzGMcB1b5cVOC8hYSiZLCXhpfhKYVcal65Tnc9RxLUPzg5JZQB49gTnL9XobV6RPhK2MjtSmBaRA8VK7jh2CdMkoqci0erfRiZTEcadD0ZblZlafIpmpjTkR7RT9benrj0H9kWvaYJJw8501goFYNZetzPJArqR//CoQttFHQj8eIPMNaFtMdy7LQYCQtX7b8tMV/fGOFn+UAe/3YJ/5zOLpUPKQHXC/+gaYmE7Z2bc3N/8M2wMpM8RHIDYsaQUYhSIdY23bG0C97Pmz6vuOFYni/4v76Cc0SkK0YBjnK8SfpJmD9bjoVRvKQ2I3Kf+hw2jZSOKFOxpq4e+N7KWIqYMnWgKl9bQj2obhsle2xEqtA88HrbeIb4cOo163fsLBS1ZgCa2d96f4dd1MM2QUMPlVbUmYXDJUpoRhXyBdwptZvn3QrTlklqD58zMVgQs37svvDFUq+EOHOEMPMgnfamAGQLZKpQmqyIHpT/DTsnffCPkRXZGdAnvvBsHQ4TOCp/VVepJYw6wjLa+LYfsIXbdZCVwmOkDqDjzUG1joUECHM4MRq+IGhAdONTucD8VZi/+8Q8G2xImnI3k0U1TFajwwCL8gi6PUYAo8tNt8qpK9+75VGcYsEDiRAqYTptRd4LA5zeCKZ7Xo6vqp8LkeWjm8xAHgnlE4DcfmLHFPtiz83SyJi+NvkDB3nuhKS54yv7YAq5tmA+4IrJA2t/TGNtXmhXdsCcm+rkUvEBWmpJ2Ap11AkVOfa2xkebcBQFH2ULAiEXbOUcg0gZgIhFgd1fUPuCzWMflpftyB69bVCBlL/98z99AdKLALp6CstI3ZIWqKzyfi/NGD7kIr8lFt5JwsxKT7a4k/AExQRxBo1yohTONqYKT21GcC4dHRDkVYxg1x/QKAkv98koT5cI+yCC/Q5luQe8hSij0A69RLn2vAI7hEUVTLPVjDa0QeuhbcGd0SNHtZvrGVaf4zFFtCS8XwvX6MHfG461VAetLtlPzfv30dRW7IXDwufUMN+gtI0/YlyNrAv0VXh4qV2OSEYu+byKVyWbTBm5Vjeitml+NVx7eEaYUuJR++G6BgC9ZC8l/oWbAHsD/1qIvtDTou3crSQ95duABIRsRKdWmFYR3A4hSS9AIj1mtPvh3sPVAuRSaBE8kWN/6VDGH7M3oz/3sE9N+xvAuejgTgyp5/Z4jb/rgFhLGaJX+KZMNWWsQBXtshcfM3u7NfjDYsUHdFahU9GdwuwVvsQ/hbVDreaO75xQQC2XkWOfo9X/m1BzEDh9vdq9k/kqN3Iy5W480LJ4FeojY/NzaUBnm9G0hBgv+yTF3z7kcu4Nvp9b9jwZaPiMK5sYKW2iajCRKPRNeXV4fTCmw9ZLrj47EXYPrCM/6/018pEujcz9oEUAecRd+FbtZFscbX69gk2D8Tki7fHxcCfq7b9nYWSr8Kd0jUNgWnF/rppqEoIaZBvlVQTzwPzDQRluD6gs2zkNKPuaUx+Q6uvN6qIzGlozSxsGADt4XdWWGx6gnri3MzWsOgREtlZrKx0h/zqhT7snI1t73J3ZUZMWhgih4mWGrph8s+/EzgI/E4KKFJGr7J6QHM50d9yFgIODEuO9s5q+PPyUi0ve9T5FQUUfMxMD6A8EgQaGMXuGHVFAMr9OABOQHH9LIt+cnCDxGHakBb4NqPyCN6ys5iisMqE1iZ0q/mIe6abQTyylJADrDlQaEKh4aU2T+Q51I3Au9bAwl7HNEtUep924JaT4FQFkIYMfzkFzLLuD+eoxLvt5SAJeMAwUJUBLisLwlBR7hv1KWRrY4wyuACcrJAAN8FGNPgxLqGwRuMCbJoOcYaTngOgBlmeMswF/zDap2sWMqitvBHYNWpbD35NAioSzUk1L8twoWd1EobhID8m3QyCO/3cyDJoNJQPP3NgSS7wnzMGY9RFKJmEGwfvfS5MeJqCv6CATUsUE3Ke+K+dRlP2NzDZLmKGUkhAFjVEYTOF4SXfjfFVy0RLLEf5pJ8PqofysmIuLn6JGs9VmHgtjbR4W4IwEipjNyK8BzRHodRoP38aWFwo+ZT5hkX46okyiYZ7k8akAHwJ3yQffdl9O3xD3PCHs+xDbhh9GQe5tuz0HnyghFQnR+GYwFpeAiJY9TjHONC2GtblTUFVw+NMmuUNjdh8+e3a/UG7CGQSk1A5/FUq2OiIIyj10uu58cNH1BFhLqRSGm8k8R/nwKBt4cb/aS0SEgpE5CjnwQ1jFIEN4zauQqPCgsvOy8GJKRhkSrgjxaY891VjtjJde4zqGBRB/hlCPVifTB4S12qp/q6gAu7AGrwGAECnl+5aYFws+gMDHJl0g+CoA//ELb/MeWhjKyHd8ftgmyUebjYd2+IPHNJKF8fEnvehEZ9nlKWMPRQxWJYkk0uGCZFSIfQgyLgEgipLSGGW8+1BvHAX26AFzXWKgAQHday+Y1AksnU5cvSpUbXZb7uz2kHpRdf+2WB+1wSX/wP002D7RQ/p0mv8c3pJjdyRLaStzukMfMY/QpFEQcktxS3C4w8z9Dze5tKmb1gO161pzMjwOr5U0VQmrf/o6FnKe4zjRlOCtgmK9NtwxjnLK209YSWlQPJIHbaSxL1/qwBvNdE7EzQaXh5ki/xVDwK+a4p8hsvEc3+2NP2CXjS7rHscfopk6BlKxL7OIH2vKGcI0sQxUMjedFhOjKakIsh7oVO1RaqXvSPKIpM6j0OyKZmOCAPHuryPzFYLQVXkl/PPZyDPcu7E+23AamazGlOF807unFxquWD8CbWt4XeD+J2gbS+T0Zxf5+F6rcZpXfyLtpW8IxwKeCK9bbPwujCTbxpMaWR8KaFJAc0HoPJCRnjUXrmRJg8OPpiETP3CoU5MkEVuvOVdzB30Sqe1SmOYZlbBhdko3PVseEvoJtaQEnOOnTuk2ciajaokwr8ML8KX+PzwRKguhY+SKF9BB0/Pjlz4DtcyOyJlUog24PIfvKEyoxRTa6ly/X+wmDPrLP2Auc+vFoWN1yORL/Y/ApitkULK3yjrRW5IscT6yDGWMjCJ350klHj1cphzN777OQpniUn40PoiiDPIS1HenNuNGFgiWWTtkFLnEMVbuC4irDnjSCFAVItjLw1SZYauI8R2ar/5w4fJw0Tfnw5l9nI8ZMMR+Bk8gLuz8i6wa05KZKgk8lwnSmn1xY7oKJTYNzNzJY6zq8MHg97XQudTWeNt4bZ0rnvpejw43LUBq8WTdIJoq1Ije6yC1q6YGc2nePRRdwJXP2LIPEQ3Z0v97AlFdpFRhK05ajMNYwb7UjfDE+x+qjNcEtBGdQ9FRueR4tQDomzn+OHpBAKjMhcFDsXxNwcS0JQyPNYI51Lu8UcN55Gh/qU94CUQB4oDH01OaQpMMFj9pa4YRDeMe2zg0dpjhSvSKcO90HyNE3Lj+oMChAJYj8qApcBFU9ftDVFse9fxtKTWsQV4NFsL8GFyIN+2sx7uYUKQCzmwKwptHn3yDjrO91ogwURhxWRhBw3wTGNDeGuWydJbotwkLfeOVWRdNWUrrMhNFTfrOI5T8A+JHeCrRx6d0T/6MaAFr9d0mFM+OyOrjuAavllawDZ3K+TOMVAcSZ3Z/drkJWv573FCgEQo0tmuZvREodOx8kMg62subO1eyDxLyJx1iZRVuXZhlhTyiVZ//4IW7HS3C3MXkVhbuMbqG27J5q1HthHwH461IB88tMCYobgWyq3myoVN6cXQ7x9X9mvTvqhArX2dl+rjWpTr7nZKbrfCX8IhRLdkV8ZD9/UcQLgSd791r6Bbtp13BY0UeZPDfhKKx+BfKjZErI6wYy4X/ysDDmWzyfRRl4UPSgxEa6dEf6lIDGBmpwjVw6lU6aWVYFvr0I1AN8e+R3d995YVNEXq/faa92RvR6Ceichl6SmH9ASXxHrGUdqI37nja7AHluGHnqZ9DvEq9bdRa61+IwwOGZxTZl5ymwTF+likRcNP+39W2a7/Uq9PFfHH7Lr3MSY3QsnXLpk1B/c9nviePMn+8l30hGWn+9PYh0STjBwXgoxlu4GH2f0hphoO5ShZyk8VyOwOHtkHwDbw3ie6OP9Gfj/yXvBHXYKYj4NJP+1Mt96KJiVLfJu5zjQhbyQURTaVkqqvvWutu5cWGY+19SeUpogodkO0dXTwcS5DB9dp7n5AWfM/+/Ey7P95Vp6tzWC59FPoDz2ef8ReC6Or7aVB2++pKEQo0s41JqgZESzyoiXWhc3x8GNmH7dOuWbxGFRDVYLB3cbdVWLpy0nrouzLin3RCdf0Tw3QKzfsZo7WzBmjIBWKnwoJXVT4RuOPTBniBc/NTuFUyOzImixmhkkCSnxOM9FDJwVdgys5rkRF7B+A9AfObVi1sWhfXKQ1viTtAoqQwL3abUQKbSaZTXIEvjYGmEhXxPQO6pJfF/2qw2UlCtDDxp+NYvuKTtCqZxcBGNjNkWOJhH6qobDr1cJN2F6d3CKrSn0JXV/RIyr+v+EXUsutKurSzNNSMYjmqgtuJImUCxZiRkYCQzgZkulrJV96pDYpSpBMs73snEd9w0vaSXFdMASEnG7lt2QzO6ILPSDexZVURbN4+i0EmHp1KWAQaAB3qhCmiRQpUKWBLGUCay0FfQtjNLkdI1+Ae5hF+ieVqcwpdKj03IfTZ/Ns1CrHG8HPUV+ld9Ma36bxr97vgFpEN4v0oX0Oq5ypsNcFuEc0NqYOJTGN20eBIpl1aVt63/vxDXxiF0sqSFZZ5ze4U5WMjNSOKdM6Wofnags0lUK0qokqcZRjsueQVcKcyNJNjbwDgH14w+PmszhANrRis1YFm2YDKUVMpE9L0DO29L0oPJrjl4D+s57+fkBirTfh7G2hyot8zshHptmN5v37J6PEXRipwB8RuC1VsRtjydMqyJq5tEA5gq4PifCy+3y2PKPzP6hewAQoxqTpf8Duvs4HQjRIySgVxou7TtKC49jQvMNvD0tMdkCJvxKIxRaRLHdEhwpZm5vgEkLzouc3mr2uVhk9+WrwaF9lCCbV5X8b1tsJ2meelmcryuqcJDlffOVZRGH5dGMJV5zmkL59MuYQKaL1kaZAsfUaR1IanK9CsugZ4Zg/loUM597rsbxmNZyS2ZM7gYYiWXXD3acMQsTRXKpzZpU9l+7DW0rXOUfSzbZ1aJt8hhlQRjpaYGkGGMrGf+7GZqpc5WBhHo3Q7LxeDHfxjpWVjNM1eLy1rWvFz0d7szGyogXS+pi205OAXBHqhMbLRFT0rSbDBVVY45RyrcdOfzsHuIbV+TghDhDsIFAtUpML1fDDESrpbepL6tSjjO2IH7HWqoCq6tP6LKHTXtfbLkFBcPdaNz1zFmp5tIJqrQonr83fuPHdLUiR9kmF63sUyMhgCnY2KQnaUxmD9XExmL5hwppOM8T2cQEqUjDSkBDJ6Yv+IEhYQHT+1qkYwN46S/Ti+NeNCBQZcfBTaNf8dO2CRsUJ1GItLMAFbI05PhCFgViD6vP7soimRLaF1HOTsjF+F4LasvYHe8lKTuR6d3tcXhdu7KE3Gx1oqR+6ZkhcFlExY/rFXSNFd/QJd4pbxTE6EVKBI4IUQa42FL4knyg0EmQLmxGSXtCIxMp0CcJ/DXD+4Ca6End233YdcGK00O9XRapY+wreMadnXgpvDEjEWA5f4lnLw06+A8w/xkR7zerGHhKVY6AEvtz/pm/97WGgCbhXsf0jcfhkUVx5MEr31VP+4FZlg9dGiXJL1dvmgVoYj8efDPGE0tYMwk/wpdOMwgWOG9k3ht/Q/QKzxTfphYkyc2Gmc2xALInNuV3NoOQV0r0KyxBRxMcSfhkvx+GF+gfZfd49tiphjSKAqUAAswbOTfZrm5DExo657GK+2N5ZGrpaNYTs3TMVet6ne7QARUSqBHIMj6VGomfTgkyMkAn41DdHKOHCcdJLQTH+C9X3T1E4WCHhYuoKODFV2YBmW28W5QAjD8hogYbwSLJk88CezJblAyJo+T447QFl4WAL1EbNhxlAAHXqGit0F/RWzlR2BDbk8wbbfnl9ajxDM1iZLBEB18ye3cGVtXJsiC53cxnJz7BnM0eROnkzY4uCXt4xNHSDWpQs4wXssO6bidd62K8dGl1j2r6IjwxlRsgDYz5j6PZl4WAL+ka3nCU6XI/Yzfa3kxtjxBKNyNGsXze4cA1lmy/3I71f+K2qEcEVyr6P/nCbJk8++kuP8F1Bao+yhWrrFvVvZlqyo5ozCGHV7baZxxRL7hl1sQSnn/wM1D80syKs6BmIWm/eY5tTw5q5BC859hlqbHhZVbZ07PGBh5NePjghck63sDOcrlndGRPknD3wfuD8x87R9kpuGXirBm2IB5JuHxwg2xmsW2u9RRdC42HE84fXBkDXXRdD3QQRjtMY8onXSqhEhUdS5VXXL3GfjZ7udWJuvEG7gANE3plZUGW5pKXUgroId1xVc2z1g6Gsq2u1SmcnZW2KFEW6fO0gUjTFo4SFAiZY3LSMDpSvL2d3cxQY9AjfemVMJgUNFC08FbovFVtVKjuyvJ+XNP4NAltWG5c0mMCf2X9gxgG9qiASSdk6GEQMi+eZ0X0MSdoRR315gTzRK7YvLzKnwAJRsoCqFWaMFxbqkRn5pV0XXz4/8QPn07wyFP1rLL4V0ncl+gqnkRPwL8OePq1AX+qENhDrLWnbUSYvrItdDVK56Wj5249gdblaqzjsNTHSqjo+c8lilco0rsVUJMsmc2qznVzenspE1/40RQ5zqGs/fLxPnQEz+Ge+fRciqg3F0rIxMvqg1OtArNf6+plfcokn2MabfeqJovOdayoVmuEVlqrucitYhVZmNwoYgGVJRY1xcqz53qZK+3cUnp9IbJRK6AutDiMyG5jh6pyoz0r8MFE3jIpob4sthTDQP/FsP6XePg87eXpyorRIrRYwcJ8oYzA9Djg4/1uZtJlvOmuJVW68T7mdy7q1cUTe5prW99BQWO3g/WDGve7k6+o7cryPuwRE9oXO6z27mlaOPn39nLF5YcvR7MvdliXSI3z8JyE8x1mvuEA+rosFdXzLjd2bHisVsWeqhDyvpH8O6tIvTvXwMv0hg2987tRhitrqqxCeBGjPTenoKmrTHsk4fLBDbAlwZKah4QuK7GS3nooo2e02yM04BO8bXz3bkVbyPwn1Dt3fqNRtdPzf5wDXAHzCbXOWrgXfYHHOjnfP4kclfhDE+r5yTJU+lUa+QtYBmQTjg8OgIYLlENL/ar0+z7++oqivNCKvX0jeIKSOV20xWuOMKvuRsU/g8TrCfxwMndvMfPLSRnY4IyM3RjAphgLvMQHZY6TiYJZp8sYFENbSDxiCNNhNeBMcRoU96Zpd81T88ZCebUsNgeP6LVnaMxtRWddtweFcOWGmV+B0vorNI1tb7I28XZFgPQd/KxhV6JYWN8MMnYerdv7QvhHDsFhk5Ol0wNIJbJYXthPXmB3+d/wX5uNf6nf/xrblwGYSqfWumXt+f2/SjPGnArdP7bebwo/couQq1NmKzXuAx5MDIAB0hMxo6zjcxj7eWVyYlFwpL26krxS2nduSrxldrAQzo37IdBhMwKeGtIMWoEsRfESB+g3L347zViW4sXnVoOA5HUCqKdFEe9NxnGKYY6gIk/MYsS7nwkIckE5VLOLwTqW8+304JB/n/hW7HFoVRFMpZLESx6DjaTOLc0odpSAVwGSKn6/7JfYy5tK05kxbeuicyBQo/RjHKJeUxPPcCnsit/740AI/gT2JEG+afi4QujxbmJ9yJQDxkML3yGm2vtkKV6w/0+RTHp6VUZ4qU8TcLwJa+FMpocByOEYH+EPW4PrLic51Yamhmqc5hiKiB4jX4SFl+wCmv27+dhB0ZR/LHTpiQOn0NOXJpwu/GP8ABXGZ2w+3oCWrBIlD5Xwh+GICi1QcaiSI5jHQYxo39DPNSBaKvtJdjIYjUKFDf3M3EBqzmYrkmTw7KiQYhYpIeUcSkOYfNaWKIF8bgSjdAxMXO49lnDIQQlHbsLM+8/bcU3AirP+q6h3glcMFiT05J5mxHgrx4+uGvr0lKBDhXpqUTs9XrALGzXzoS41dGKeqqeHcAbADxbLzeDQizhV0fvuW1qsQEQ+9x27Bs8PVjL+p7Ly/hIh/SC+k8cbgWj/+h37tCAT/wmzoP83fVmBl2jjezqJEgW54vD33T7clPr6Gx3zENOvou+QJ7P4pQ+Pm3X5Aq89pC6dBNyQ/a4YHc4x2NH56LRKD2l/omdrYLZm9ZOIHIQSSKwlT922pliSrcQ+iyrvkFm6ao078XG8GsXqjvFo5KnOvtoTvhnDjzD8mGaIkFsbJS7c3FXwVt4zI3Z552ZtEdHDibyJkNP6qVghVdX5/RkN4cHYW1MIDoqdCCaFYO6MXr529AAKScQHqh8IE6LmJMSa/5fI4PqqZXOvqds3h8LcALqQOEtcVaJxmCpl9Mqw0mSxIMP+6OhUbhA1kbSAga8EuZRJnJshpA9wON96s0OKgcuggDMRKuTNyXK33AyGgKB7/Y3d4izD6pLZsnk5fyAG6mPdJpWQZZCyVHahkgooDEXmLJRMndLBmA0dMiSLPq2518Ur+e1djdZPf2VaMhPxu7O+tMPm0BX/mr9T+MqfpQn6r+nlPg9Bfp/+g46HkJfvdbGk5++PwPGIhPRnF5hZwdkvCfPgJTtc67r8tMrsA35Cf4dPbFz3Ei7Z4ivxjUNi3qsI9vkT3jeYuqCVl43roXdJziirp+NMIq3pZ82CWb2wNxNrTqjJ5m5Rjdf1ulKQc09PNUT9J2k4kGB4/v0R8tPkG0mcGF3gl3EpK3hLreLI5v1sYoEJff1c5WQM45VdvekLfU7VUlrsidtmTh72N7MtRfInZOmgYCA/cbtW0X0aV3iiUeMebfiJ8hN50iXhqGiWH5fFLCyEM3g0U6UfQG0rsVg6++J6maXsVerbmNAB9iDDP+rZ+pZgEVLUrASTOJrb7/mglsr9wWfiAhw81nD+BbeFriEFq7hF9k+mwdmT0pWeLl6KAostxmnr5/RtbaL8Cb8hVyYS3XhinrOJIjts5/zw5j2iNSEiRwPx+pJpj+MTJ9NGJpg67TgwK+cHUuif0DqwNZCcZz946hfJQGFSUTJswXvH5SPF9uvToyQw+9PuBxBLC6iF4FkqB32ZEFeenIaq1fn2Un3ma4rMltDA7L10qElwekFDps/o+4GPjG7X5FSr2GPZyhIpCVgbQrC6IZRhlsGxubo4TXCU8djO0u7IB5OYePtdUXAL+SMArZzNt9rqC2SDmrZzzvYQsCSxhGysURrsWTB9UFhmsU63TR462ZslxKFHzK/Vio+PiNsfLDdz1N1hewmn0MqWaKmjgACCNpiwmCZlO6IVAFOWNbMztcl8D0jO5SYCMgeUYGGHMBEZH/pZ1+Ed+6uYsZQvo2eOQ4qDQV+Oe3bgn+TwjpCZMK9XbgACu6zFv4RiGVX+yNUucU0IggWV7ouRV1EyqC2UoTseYE8pPR/LD1zXReqvt3dlNE2PEyCqvz2RvLwzfYtkDYIZcprzC5fUYbQGeGX3fAifkwntAzdQFEczYHBOeHuaVyqmMvOsQViplnzjVcC2+YFlQ5ivP4cUCYij3eSYtrQC92FoDeLOJZIAx94Hk8m6v0eU9HAJSE0Hr3z2hHX7t9Uy2ant116Jp6s3jP2qDjB16bY1wk+r2rf6vkTe42+YsXozOER4mkk8MaZKl+EVswstXKz+QlRX30BlR6lV/wCIn/3NoVeOWJN1kMNNbVbiIZGVJR5avho8GYE8GViz+TbL4ljtSjGNM/Mj6bzeQe/W+YqdFzK/r/yvkOYDJAxLqSpaX0I4545cfzftGUTIkqRuMnpd/mMKLBtc0XMeTyLdaC82mO84zhcsq1y5pL3mWUgnHtjoLs39knSHG6ZpyA+mOtOYJfm/zvMTI40Bg1z9ViwXoCeUYcV+uvlvVZw3rB5pxR7PnWHdPrVuyZBPQzsA8Vat7RlGxF6neZheMcJBXmm4tntFYjzCzRV44iACWKGJ23bLm+AbVb5F7R7wNSOgNeLdw8GAeZdbzZ56W/OAUSRa8BBqBHKFuEOWnQBhUUrYQBZB8Iybx4OHu3xVskgAu9+d/n62N1oIG/GQk+Me9vdaAgXR9Ho0EEx+/TJ+DGuswFdK78V3AFUQC+x5ZxvBVWDuJ515yRn/bscClh3UA120e7ceR2VBtgm12M32tKluIXZVpO7x0sDMcT+Ly5Ns+M1EgMLauulWB2RWempzDY407ZnOx9i0BhK3XuXfkhvNfV0fnmGAamTqEUXNZt3h36L7wImo9vqHYfl4sDbCkbEVLG2BvksjfjjWqGTAbeP4+SlUVs+LAGoWa6WQlbccG1EVdYnhCR3PjxByF6gdEbHE+FqXhY1jnojMc7/Gq6qBxoiW18TYYzGUYIhbsRv+yfDIFMRPdrUiNCcEp+T8GDjWBnszwcZ6B6jJZgkotgIO6+ATyeIxe4gVKNgsAxH/VQgyz+eFWf6r3ytGVDT2OQFedRgQY2DeAXotD/zhzHVjpD6pfLV/UxW8J8fXJ1E9lYDkSTTja0c4LhxIay0Vq06vCih4f26lQEGg8x58HkLJkyVccZbrOuCfk0CK7SXC7cX67DriXTUFzjB/IWs3VrCknFJ+ZwT3iovSqRt+WAF+2/RoP7kcLhG2KegmYkFjv0Cr0JQzZrBav/VjJ24YKpAXrqzCA9yF4rILOkAyxIdOt1wjk4GWBnBlsyy8AuAcewovG26ak9rnxCCvASEh4w4xJI5RQRxcZcjjVj3J11nayBmEZ6E+E9Fql5mbhHuaGXU5vG3C3yHUoGHgpHXWbzsqKfZ3FtbWp4SGXCVfiwNMPyQT+ewmJodd1POafiVlEbaOspmTUiuFahyW9wfA4knU+brlKyy+acW61PlB3/j1BoY7ll//C3wfiHeys2941uWmf6QY59sgOa+I6H2TLzIh1qM28K6ENg+ZEgSX8/YX6MRxDreRQnQXQOoWPBc07eIQ19NwBIsQ8bbjlUZL3x3fVa4Axe171663brIruDkQtLv34Fi61VjC7pe1B6zP4iC7HYg7uSA+6QhkMG9BilA4RMPBwtAfdkQnNM/4ExcgLQzxUBMtj4HRkIj9gMzRsjO5RngxymKuYkTpvlyTU2T5DWahNo6nyHQ5nXQsnq/1vb0dcngrs6V3dCy3Z4gLmQ7r36qcZC9eMQmO6Md7E18Q0Xu/0qHrbfluSzr5dnb5SB2ZLBmOV1ZqmFmLAMcCPjzk0hVIMUoUOKXouYzHxnTEICUg+UOqNMuiyx+mzlyMBWaLJf8yJN3hUDzfyyOEUCkIh8ihvvWl7d6jDNSNkGF/lGfD7yO7xdvE/4duHs4jDNILNIx5YqPAKbOR435ZqENf2F1BVZC25fbuCqLs22cZIctsh6XZ8tkM13fVwzoX4XAYZnm+ne+HbGD3ZC54fEpiQ3pljoHxMCRSyga6mtF+cq2zdgx2blDhSR+PtoCwSOdsHsF4grFfG5vxaQBOh7fWcDgZCL93LLFDOeK62N9PlLnTnuVKJl4mXKBgsBM0fnYLmmVfy2hyYT0qf+xEfKGAxbWmvWwizZBgMd9z2OATxqytEBTNKQMk2Wv2D51H4YO7J5kFxuHbJIXWQhOWvyCG4fNLhC0PSDhYRiQ4XiPnXE9761NcmssSkCt22jxq1iIHmhupq/licflKIAzA0hL1Twt3Lf6fbGCwPYMjCBx0lHCw7YCQnvE+AbwG/wFS/7zj4qYaERBtsTUHNt1cCNTzXvPfHkHEWcP4fy1UYk8hTi/7k1luEj3doTKjGWioFVemgJCD59SDV8kNTHDg1qoEWzhyDxGi36izjGeNzW2yGUlty8vUcPCs2OuOW3F0abSD82IoOWk7qMRkIpYJhAp5JzzJVn5Pn0XOFBlu7d2FdHjC3ooKpkYXNcIn4LYyywjq4sfijqhgletiE3nMq9eBNXzjUJ3d8WLVdcSUvI/OOr4JvCw8XkWN/3tcAbpC0V643QiX6J+qIQ8FGTgYdEXvXRELRgRFxLgVHMBVNQeKLy4HD56HaC0OW0dOIcyHMHueKWC8yml29D0G3uygBcif4fOJ2JR2HfF2ENkEXXXZ92Q0eGC/aJKagMy/uBXI4UsfuHS4MVxvj6c3WhHIt5aE8hAW76HVHsF42Jqzc6aHRDAIPLKMsbVOjzgtJK8rzAqVe6Mbt3ZhjuF+8GbpF30sRPsDF8cYsNDg8XjuMNbgdfCEpMoaSpgVuWg/eNN6Ik4vwDAItLLQxUfFts9C0ZIHmYhra4lExDyA8qygEpubsDF04K2ZW/TtgiSOewfhW4ZlD58iHnRKInJpg4AUSJNxTnFIkGtFhY9hL9vuLE6yLDFrIN76vOU7Coxa7hAffz1RJlKuYUSgiQKsmrtAB1+f8I/wWc3bxpy0vPL9Nq9AMq5UhSTtFcvD5+QtZWRRxFuyeqlC02Y2qaqz7VVeFLrHIGRYHoROr8aWSm0agQnMF6DBcIub0KWRQx1vNyHu3V04garWukQWNevQQQ+Z9ipubamitkKyUfBzeAJADbG8oX4TyB4lDmBFuhWbHp4bvdQbkoSl6u47bhv8LnLC4bLCaIjj9HmEwxVy5g48jGcLXeoDHrlZnC3/gt4fNeBugfLXxrlgXWmLZ51SY/3nQrEk1H6YXFJV+0kh6EYFZxmuSNMSB09iLSBsg7twOWq13hXQ4cqchq8wSjCQk6gZKPzu/3hbcPPaMo+J6YU1Xpac+tL3Girq9pk1gj4NQp3hLUtAgsX6E6zNK6Ge5OcFq/VovWwCSEG0HeNZ08QHRtUaYEmdUOsOwACXlEP7N4MWkHEtkaESBwCOOLybhodoMJvHqPw6+7aJQHi3ElmYjBAI2ADzmPTILvEtmDfN+si5oHrDPU04JvYkkbN9yPcJ0PkBF+xJPfsLBADWiD45ffD4ucXTebicVInwqexseZsmuU98EnVIr5BikGQ7hndosj06kKFdRS7bWmMoeyzcdUuZw2xUzhcfh7kQ0C6wZlHL7Ibw3mQp8FI1hJnALKW7ZIE4wYORIKVfnpAwv3sjwfy5Xfn4Jv7I+GwjTggMBKb6lHAYpS/LkwkHC0NTu07hKWT9QUrPAoW/geQeWHIk8yXP5gLLL9vjMjXcobOzuhNfFVnr/zFWf+p4Dw3noSseLGC5Ls3/xR9UMtq2l5a1cD700/RAkZz8eOj0Sfnmy0KImjr3WplPiW8y1viQcQVOzN2pYmJMH2NU0O9kzJ7YL4SGhEWCt33xKzhMkamVUoBydoSpDjJlJucE/VMbNpHh07NACOb/PQLwakop1QIO/AlhBToljagx8RULjk95wl4GwBwmkhPomaRjzt6h0aY6+QkSi7N67oQvf8IW4MplJB0Ypt/i7sxRmUQnFRzyArh2rhHPuvfO4r6Xh5ats4Ph44OPhD8yLNyEKeM81H4B5/Q8Su4WRH5mKkmGIF2Bx17EaEBdfS/3Nzo98xjZu1+F1z73kFs0zw/iUNVsIxWCmE1Cjm/06xPR5T+mKfNgEePJpFkBtJVU4sCfk+Q79pLVd5QnIsiSJhw3S3dnskct06cxh1RgHFuaD3TqEafERRcIjVm11byhNxlhTgidcYQ7oFuhtrxEVHGN2gXQKSOYHnazsoO03KquaBPxpsw6PLWWF5mCAZlJdWRx4wgNnB1Efj2vV8ipJFS4FFFUfI7nsRNdMyKQew9VmCc69QZ367do1hHE/4nrsh2/nJsdOQV1M/RkcWcMAUQN0RmRm6zxYwaaTuq+Oac2S3D/CILEi6QGlMV2oqcwWI3VQS4SR0g8RnvXt1tIS26yfGEjoEy0DCKpgxEkd84M0etGrrmIIr4NNLCILXQ65FPkd/MGWW81mBgO40vRhOp4l6Jso+G86kVQJbmBtLXIpqpY6DEZ9fHl1rVh2XIEpH9naxvwcyv2qVp3a9pIggcD2N1LKd4IW/fD5rqF8JqGBNN7U7dqeyYBnOpkivfK/sjlkHxuPI85eqmwQg8FyZZVCy/a9771fSnYZqKjwARi+PvaY4/SGaz/SGoZbMlv4r9d0a/LWudGrn9N3kb+7zCLfk9BOo3fNBK9V8j8cT5rvWoR3dlePJ5dCizS4x4HXFq5va6HC6dqanMLbzG7wHBJWaETquZfFPe9nGk4FLGohg20ZrUhRyprFFDvrTAFsUtLA20K/DqdY8Cq3hbZqYJAMXlR/0+YfibCBChwAa0IR5GfH1mA+vBik3bYTXBbe+/5TsPYq7QLQxHNtkEZD+17DrATvU4OuqDrZOgVYw9gDVzZAfzKkvUUt39K4yUWKcWj2tjyS2RjW4Sxzkc42cyy9d52Y6c4sqTetguZ21ipLPBCMmXi9o69Nmhes2YNCCaLObgppUugwSeHHdFkYkEoxxPvvPuHsKyYuox3mgMSD7bkgmIWVfhDfy+tgIvDVGmFMU5U1eFRBsfSQ5nmnxCX9xGlMR+ewEWebLVme7oxlLq/iW2DU7Uuwc5FEYb5aLjgYk8KVbB3wiCsLc6/78AM9Vk8jx80C5WqNSOF0Ofc+Zjno4yHHLaQ2IdP5T4A8RQljy/Kvt6KlLZ6hSFGMyW1rqY88smKr8XSpIqoeIeq4rIy89ifFbl+xrkoyFq7+hXnLxj4u3sBoYrl9IANSPHYl7A7y/UBXvcYaKFrj+C7Fa1BbG6bJLHeI3QAO/3tox04rH4PH6OCyU+WHo5snRmPVzbM1/y+dfKixu2mfi+wDElCiduCR/4gUwCZzb3UtlgxAYjbT0qfvNenmNFAh551Ob5XGNbuaHvCkhPoFlaRadwUnvzT/XILJ8UQMTE4ctH8c/IPAMq+7aaHbKP7aeXy3EUOTkpX6Me+M+imUuGKwu0Po1zBn5fzy1qQsXN1aZw7IjQVBgNfTHJkJWWWKzH0f2a04jWrMuEZWqLSHscd+pUhg3THIEVH6zVTgoaVZV6tPCibCdagCk2cc/3TODtxiZay8WBbGlG6ABdgRwNVm1Gj6IZxOBqkyJc/CWXAnVq+FfWfqqBGeioYI0RK0pKS9EVTCjO0T6u6bcifvrpAXpiv4Vn9ql+7fgFKerv9SdHxBxjf8deuHDP/rbdqe4JIDgLFmgaFwUmEplpntnnR1r/8tHuWJf19GoqTwdC97y+uJQUgaZnLHbUjz8UaKz4tt15+xPM8Jzgh34uR1PdaSBoni7Q0UY7gSct1Oo2XHh5MzgOr0UPg24L+nTZtQ3e6DSIP4fx3Jp8+rdOiDnOMd17e79fXEQSqko7aG7o3YW9965RAGlwQ5wntgiraty8P3zA/qdBrS6KNls5gO6vzFAVualMk52GRwRGRj+RzNloTDsHe1hwUmnmwSF3SWRuUrcxQFMX8t/V8Thkq2dh3E+CjZ+aGYqFxZBhgerjBlp/NfjIgyL9z0Cps4e8RPPYjArScRceNXGbCDxHdUJdPTIpibr07YtVoPX5SIwEYuZ+05YjrZVmaEbMrXLXnqiAlxhoEXWegY9CbObTppVbM9oesQaGrxJFRrAzB4MOjBJadwNXhAV/ZlT1sUHrYWX5Y4ZY9mcVtTnIfK5NNdl2D5V/kQvWMgmVcoZvOezaUNYBjD8x92rAGihrxKyJthj7Iv1TVmQUTKU7xeijwNUepSzc485k3H9wH/MaSdnn60DVk0IIpYOHtEYX5BYctaN0m1rlHPuvyfOVRbmRlkvIxyFkc4M4YaavEc+mzonNj3IKIVSmYr5OKGUVWig2vpPQsV2k9FlEnijDdAhnRbj2cgkbOAAN0wAIpuQLlRf+levW6e8l29cIb8ya+e7vAzwT7R/gZAPrczI3HvOufvA8nNDUJInFZrgXETlw6HB1kL+j6qb6N8LrG+F7CKxE5OF8FXJjQkEgnpKZFIpkw93aws+QOKDDKPxLKAv141rc9+9tEfDzsHgnTXIU4vvxYxUGtXFO/QPbfdefwvcs/LyNqmL1X6qG/z1EeHbKu0suLG5O1JhDF0cwlO6xfN9bfWpTlvqWLkrv9TuWiuPyNQBgknq0zW1wacGajw2ZgI04r/keBANSUv8bKx9wQEeF+CoQCF8f4v598R7OMfoWE0QAO+YdA5rXJjeMrrz79B33HhuiwCZ+kR8ql1LheWYu/B7Wpuqbl/6sVdDu1aWT+ysTeltVfNGYWwfC+iF849wtJPo5cwKdQgluVyQT3bsBiMYowaGndVmrU8thUe8YLdJDIehZD6fhqnJALdFb2gn9bKInXfCqm/UVXUE8SFjHURURgg75hauhW+LqD39owEA/r9L96ARdjMfKUcbO3cUZx473f418kk4wuE8qUPWqbr/0Hj7xB4CthFd+BjIftXKMODgI63OqlcZdmWBownkswUtiw7Z1Zt5Bsa8KYKyPJPiYPM60mv4IU96Yfh+5JGRjkgCrsPF7Y17BIkcSviYsvYGNi2puQag8XMfyG7lufMqjqmIU8F3n5wUPeWSbhISYrErrMJmz39JXL6JxgShC5n7434TxLohfk55D01vGJNgrWao93xW3xFuX7HYz7uPUNIpzDVWkSaP8BbYkVn0WdyXkkBMXHzAMIXsoMcrI0JuAxVtDRyy3sREF73FnGURKwdUWWHsuVnYIcekBisvHxmUhwq8YaQfKaHVixrH/sTvcBQrJXUlyq3ZGIdPyYd3CLlbh4heMgrBhXrIWEvTWvchMb0OmPe3Ru1GQXh6z18L8cyjo7O0mwVeqATis7e92WcMCLsPvciJfqkPtzTpKtCcRvw3uXJWH1L/Y3AQqxxKD0uBimqe7uKeKo9IwjKRnLL2fMXOGRX8HepJDBNa48dVRx2Z6APbInHVmJztwr4Im9BKK45Hiaf6xlkKJEWj05Bc3mPoNPurCeuWL+L4TOdMdcqaCldQoiBvo3S4uOIa2yr5Rjxe/sG1srgoY054QrfhJTGQkYmfCze3GSXJtGzA9o16DFuP5gC+xSxM61s9EU4HS3TkCPB2tADGZa/j1J0QES987PC+ukv7o+64bS2ZDgMQ42Jv+97NMrgmz4PV59Qo8qDOwT92pzOD/7gWmab6z3GvVjpehhOESVOp+HlB7jQObLYIaRVmfLhwGP1ZsAW9ldop6ND4r21tUqArQsdCugfFhAm8I8ZsBAFiPUeMsVvJk0at4pzIfTf2UK1MiN/lz5pnMVgUFDZrtZowrEm5juYZ1laYS39rQXffKAq9L3G9LCGyJpqkMPFLAYJETRlLEM4M974n5NH87GJ5WVhe3HWBAKoaR4QPhRDtZKHQD4vOXQmuAKx1+qFfG/5Qqx9/FAxPUChM7SuMJ6k7UNDK9YmFnF2dkwwUyeYoIy4PaU8Vr3QaUto6pgFax6rvn77RzvTZv9U9QU1flglSzaWitVI11Z1MhHDkIcEbzIyTjhU/0mFmIHN3Mx00NYN37qrdK+fHa5IjK/ti2N51uvKKx1MiDw1AAdetPRuOYgdsfXXbWkYo2cCIiI3siVsQHaU9OipLMRfJPIFoUsuXuR0iZT0MDtDZTisN1hVo/ko6Hgh82PbhEFAIU8HAMfE4rwRQJ0g8BwYK9tx+nzgFUTPOvCfgnVNl16VbY7qdIxfOAIP3wh4oUjM6976Ecrnt9tecoPpfW/2XKAlnIHxchrtkNekxjAwtszjFU1PWG2zHwfwrI72f0UI/VFZvdiz7PTfzHl/gNqsHkhfxIDi9k/EuvZOKx7JulA9BCxFCmOd0BZvs8GCilTnqz2XRQSZRVQMGVjs4o6zeOKu7zLl0l/X4E5Jc6uCuQ5Wvj2nSZ45dVWLSrQ9STj49rXWigxJhNdf7yzyhc7EQ/lzbbd7wPE2qjM7eLExqtL+eZa3Px1adit57JBpb97nAtdDFOxiIeBCqSKP9oS3jyeb4F77BxbFAv+uQQDooOBcvzjfGhyi2s5W4bdsZUteeQgrvGq3Ow3RAJTP94dwrtOxQbwhZYekL9EBBLcKEQQ3ODE4PGRvLVvQK2xbSb1g/5Amk4ibGc201g8Pa/o6WHXxLo/ASWD0UFbmFC/n9sXJv6n6KuMt1DluCv9QN5twMsfaQQAqUNCYBENvdQV8sEFSiIBw4yJ0qeG7qwVg9ndPS4ctyCCfrYEO8cOUypNzSCizS+nf8+QSyJMTl/y5wpCpV1YIXf4+ElTPrZbPz5c4Fy/mqe3fQGlDovhvLexo9Mc0QN2zz+yZXu5+46HT/H4eOkTPs4R9xLYDjnc+QiKB8L9EGLl/WJGePLUdLjlgC8MeH6tL7ZRWpb4B6KkP6/T66uns21+Otoj7yj2/9xFRldyGwvD1CrAheHudX50HKLIexedQn0xBcWYQ+ZKyVEeyIPU8Jmmwn1kH5qdDWU3A7Gf2I3F6+75qdrLch32OzorhVh6BNjXjZtt2nYns3m1pizFN6AJq6ABGrPj4tUaQE7X4/MUnIt2J7z7jCBt2N46J1NRn0kPmPZHqvK/DSM8JMg9mG312Jaed3aTaOCa/uXchv0eBUiXi9A4rmD/UuDMG0Q8Jv8wTKMp+vkXtLOGqZQlgEJZ2UFj1i2J+Ow+Dvm2VI/vRrjbmLosK992xblkgFO5v81XrtJMo+2mrbZfmuUwDQ5qjmNTSnOT4vqQj4htYXFUkFvYHiQKI58axGdpoNjPYHvKLxQKf3pPUnD9PFK/B7fOEnJPqlSKAb0kBycvK9ZQ1zy/z1bQ0YuprXUVQVIOS9+7kx4gHctGnUV8kcBNp3fpCKqskV36n2OrK3suzOOmOdM6IlSnFuAlauuLd8azsaDtm+IYRCIODiueqihFYAIH52eLCl+ngzb1qcA4TVcU4XWrFbDXno5P+pExNXuNoWxWiKna3TCN17hywuKzHJLY5M9z6tKVTMHUqbmZGkjFo3+oSGpTZnBfqZPaM2m5vraC6ZDKH7dMQpULgkjwZMoVaHxJrobK9q0YlhTU3WEnX6Mr32VNhoq6+DJjjNz0yJzY5eoQ5BNC8xBpOjhq6xMP+cluTu+IW8WYuBc7lpxLpFJPuJOxUuYlW4ICsF9nZWqBlnOZUHXkKfmIkn9WXStPuGKXL+BzwGiSGsZkPNB9XqXWy3J0p9UL218NXjE4I0hr+R3V1b0tHsJpa6n2dE2BS/U2Suf9q+zHNhRlQzv3jDSB1DZehnpPxVVrfCslTLnHzYO/H6RjpUEW2ehpGbBuN39ZGrnNiZnLoP2rHCi5S5TeDQ0vcsvzBrzhBlsY0veaopBaDDcLgm73fqr+rcM5qipi9NEoWBaeKeiLIyMEbbuC8zzhp7Wi79gwq7+Yl+qa3N96Z3K1e/06buGSc/rS5zXb99Bewn2vvpjyvXQehPpmykp0rrDjfH3qfbuTafBuQUfPMqjIeJOxJt6SJ8tIy+wn2WpBvmGkJLQbwWyYr4hNIEX3MB8fAwpwkJjrehwGdMDEACWAkZny3kezqyVb8jbonGLp9WbIsh336azJbdIwpVrTYVgg0ZkFRyFrsY6wC+X84dbb3KBPt7HoSyCjsyhghTONNr7scTJrRbLy1pTAG3sLxPNLe2Hq1raisCAHh6E/O/f5mYGrF5WRRSdHce3v5MVfSKq7GwD9/dSXuBw3M2Nznhfq+Eucgm81FsHc0ZhCTTsegzW6V61ReZNS+piXcoxuPvvG1RwXKSmWzjE7fWX6E2bf4ny1wsdB3FNvfPEJ2me2hMD3W9b4v4YRewTXAh4psgmdJIkllI+UMMx4/wj5WayhyHWTMM5+ecmq3srt2mVriNr1mxfsTuttc3pKgpVs1GAv952ZpzFXHFOW3lzZqSEOA0/3x5I2d5oMRjphpkr5V6BvHxEU4H1o2akwhdmOCCiStXcejPaNrrzJLWLpVwgHECoFag3NedK0vk0kURPBayD2onuCnfrddhZ76+6EpHCQbSjMkLWXPVCMTxcNVfG4rjOHM0RYwchkl08hjpD6FHnfGUxE0M1nNF/ph15waf18JQi99UOZUaNuFElqR2KCF1qm0B9EHzWmH35bKswHJFcidtgQpXbz3utpYGsfSLGWMMX28lqBH2h9AyoQfK3k+7KnQz6HrXJHp1fI2zarUM4YBG63mmUUwZPCM+OH2PF5YSr2eOF8zw6oRLuD81XI8JJVmPi9xGmqbIXVWgTjXEGMWbwcuMKmBHS0x2D4jLykZZpzsebt+GJRCcjmUQJQ7xxEIXM1naUqg/rlhrs+1UgwQjKvZkZcbNydZVWf5CRTIk7ZvWL4LLgxM9YA9443jgjJFFExON/nUW61IGkIkwiuV/C1H5FKFKyPhMcuFh8VFWYhD79hmnTS4qThgPQ8tMwKwTb4jVMyKodtXhepdsxcC98RmAioCuRcHxA7TKW4ViacRe+cqJbrjxnM9s+qEG4VJHjOEA29zSnTMjUDL6oX//gk4Ym0vzUjMqFkxAw5P3o5ga0IP+scRzWZOmNgGO2evUAKCS7iRD6eIjNAueV+9Xe36rxjRjpWkNjYHn2AUyAKjLTI1fQDDRDTs0tS/DwFswEmlhGdRgsaluXyivr1s6UksCC81kKxadajVNHlupBguxOC5RRcfmbjxC0FfjHHWMDUPkIL2Z0iOk68HbBg2nEE+AAEMim/hrXUWijIYxEcbNObplXBWHbXIHgsoxBcB2Zhu3tFKA31Z3DN0sOjAYqxhNaFlnR3VWl61GsKAesgpoQ8t3bK2+zzCp6/G3bp9rR7siks9NNFd7jsWYhMGz+h9WwL/LqbBy1zhtvstWx+6+Rcuh0zDMwSNz0X+9SYB3K44QModXGQIIats2ku2sQp4EPQ/INLrmQOOIobZ7sF50layvwtqgrkClKXJVmxnzZfZSD6fuQ+DOoaRvN32moxifVrEXg1wmlt3tOLix9xQFDuQmZpi+kgskWqfqBHCdeniE7jq3V9nkSobxkmP50h8jji7esjZhHR/0LI16Uf0dtwjSDFmrZ94mhdgctoeuuIFITSirtNC9xfCLuC0/WljM9ZX5v9h0Js1lpqb8bfH83GAmuPnrtLlSVKYetHWazxc0e0JkZT1f7zvMQMskKucnR8XJQ4+BXMIyf1v2QeNuw9vYPilnQBqWFHMfHQ7w8HageJUmOGggM9Fn5FrSgABeWviFbT6XroOk7jx0agbrysycl/GnTvFJECoGD//21U6XgDKXaJmjaKovRAlAwH/HFRCXQDAACivGUAa7v06TZmceaRqUHnw3AQSVpGdLGCL1G3gyDuOrlg9kwdXRgOHd+ykKuU5saw+e0+a7h4k3yYU5orfx1L7xed93C7ugP9YidaevYHxhGAEo4akXEMVzs5wdsgKljTAwOt3Obx1BRxWUzvuD8Z8ACz/ayPO/ko83+xoj+nbZD/G0DfK+rv+IitcdZxc8CPP+yffejt++krCRF2srPtadQu93gbgr+rTNH/J9kaWGsNzGTUUl+FZR9BGvuwYNvLqOgIR5lKnrNWxLKSI4cGSl1N6euA9qzLd3BV/X9KZb8Jo66+s6N4elmwd5+/V9LFn1bYxxC7tfU5+Hrja/nE/3MouI5mR9PdiD+wtslnFSlHIY/zDMqQYtZOJlP5oiEHIoPJ/lKF2YUSndXwmFaXBKFOV9qKqt/DwDLYFHOihdndwZC0NLpBQMuSUsoPWCkeKH0dx/ziG0nxZBqiIQoGHJ+z9EwlsQaNKeIpPih+ut+iPmaOPRSD7D9CyV1fc24AePgemOypjFU4RT9V04+0VsbG7Wb6JP531j70tlUj6aZq3XEx9WfGl5abesWQ2fOsugMnQ1+CohJToaX0uVy8jcF2naQl4ZuLrWJsjKGE3OW6VWjn911/ZP0tCrTuGl/7MF4zehty++2phCThVNn/XP2rVBNGUGfzXitEp161S4uue6cJ67y1WRIy1KvdRl64BO2YZaMMZ5Vg90SJhdYnKOfphh3EAxR1qChZ7PbC3UgGfds2XX3spVa0uwxVPWp7f5xXUv8D912lBcz+EiU6C29vO1TmvrMn7EKCNYlvPdD7PNoj9x/Y77SZtZ9uzTCiIqi1QbvUwLOttpMfC/XApBRfI/wzR8kJjIV2xgOXq5I3ODQoGDe22/QsErKSeABR6WC2mPglvIDGLFi8+hSWiAfUyXtkl+8JSvWPqCcPrRnQ/WkVj1fT1W3EF6vI7IuDR7ASPTI28Cs/mhi3itFfMfs7ow+EE+9ndmyMEd0DzDGmR3FPfPinNVViv+2HiIuABiBVB8VA5I/o4ziQ7PMZ2wNrM0rbL+eRilbxNULd9O/1lKR/5/Bdwnvo1uzvLepCvFqSVtZjUx5GVrYz3ga9GWmYvzMJnaPckg/FY4ZqRDL7Ox9HHMx22zTGn0ZMImpzU7U7FhMLg/khovgr0ilJwf3jODHcR30ep6mS4gspGSLf0JbdrTJGAgAAsAmPt8yb/H+iJaHTPccdMkjopuJ5LLfaTegV/7TJpO8z/tMyoagEboHi6B3cvvan8hgZitYVIHJJ4wpKp6NuB8fbUCGjh4hO8c816ljhZiJOPzKoMQdF5ajoRxBAob1ZnB/QPtd42ZYYCCDRjnxqfRHB6OCu9YoK4TYRgh+b3c919v5iXcx9LppTX1Swel3wCpl3tFU5ZqZZcF6ZOdej5VHVJHEPwoHSbCvpvtAfxfRSHfZyJx9P4vD2H+welyKHj1Z6uupAZ2+X7XYfXDKh3UZZ29sj9yN30sDLqpvjVKZpXMHe2szUQLH2iGSNdtKRBeCMFvkbO9/kFccIUy15flQaFfYGkkE+cBswCVcFWfktcyRyBTLyWn8Uo0o23rGglqVLjx/2qr8/SoePkz4OrZMpejC+nJPB+OUz3ynOjopuG7TS5UcYBgYhyy7PxNtvornRmiesFf98mFKqnR1opbH224dk7QGdTxPKBUYdY3EYVAm140+bvxsm7ifHw+4SEVayhm1S2qADKhQOitsR2yFxXgnukCsUA+Fp0ok/ioz+RtKLxQ10pR2NkHsPWx8kPXEbbLfLuxi2RYgGCcvNn8LYKLqI7dLwD6/vA5mkqJEQFK9CzUfym47kf1FxYdx2rTcjURQVipiawahFjJcwF3lVrgOs0RsTV5Q03uuV8mgA3KS1embSw9sOGVHVyDsYkeBk3BZXWLGQ+GcQbvfmwE6h1nhNucUE2O4QzcR0Iiguz8akyKBYoWIClo13xMpKOu1HUhE3XJDiKm/kCluzv7G9wu7ydWjHdME4Ncl03ePTI7dMd/RlrUgF+q20qLO1uJ6VG8SAhfO3KDUVuhrqSRotctLIQX2WypWi5ZXmAetOcVCkjqF71YpxQ5KMvd58kMmt+W/bA6HDNIID690/fLwRsnq4zj0Yv1NwqaWhLPSsC3rJ4N+U9LREvdZIGqrZXrrkjfvVdDeLX5oztlauXnKRlwNRqghTejkrVehAek7GbAOW7/Gmq9BWfgnrvepKKdhp/1y+zll4/Zm3xG7uIZIU7TnqawFeSQVjnXooHf+WJ+GDbgd8oETqbIAclkBc+aQQtoqnPL0/VgMJeTq5A010i3pQUDwIIy3vX4AfMOySz3m5ST9hZfZ4idJkSivCa8yh16ectH9k+P4eKJpP0hDloOtqI35gCWwYmw7vBV29JWr6t1w4GRgaKxEZM42GU9xvFsnJwxKy7wXh8leFTdjOJnGgznWw3J6RcPFE/AsAHSYhw/mL+FqhcKBswyiDktWbEt9CODtEZ1ixedjIiknhR8qMJd0V4DchByev7eDBXYiXiRdF7L8mwp8LyWAJvf9epN+yrWKTjSDOYhDyyga7EX9LRaOECrDs/v1qSmzvHRhOWNOw+vrxAlbg7zlpQ2BllxXPk/y9v+rmljxp0SzJ4QDbfbxBxhpS169F+wQo7PtdnuTqtvN8CPhm9eS3dxMedVnafXIjtVq0A0fOZMkjiZ6WU1VV2kMFOdc/mUBqQzk4YaDRWScWaqd446QbMFiv9ILW+vlrkrUKp6SnD81o0Crl+/syaEFBSx+4/vwthJbm+7EUYV4bK5Tsygw0krZrBUQI1DBbiP0PZYKlnEZAQRSMztYcGzef23vMyM82j7N5TH6Uyfezb0Xmj53C4EdZSs+r7rvcBpikwD/SK/jWBSBKJ2RtJOubH5vkz63GF4P7sbpfd0akACzVNkpIynUXhRcjqkwab98I7lt3CQEDnyOAPnbfI6hGAKGS4XTEDxKeC3+838P/JlY+krPJ4Gxt+3ezSQdqCvn4wZYRZyIRz7jhm9OgUui7MYoW/wRxEiTtQtc6GdmPmu4Y81dP4BTp87UKJdnmlRYf8vxU15yMIaEc+bVVoOizWWTdzP6YVRA63YdwWs3jxjlS0ZFv1VW06ZTLrxMFhVn1GfDSJ34O27/2z/OpHYaAlP8lYYJ93WNhdn2WnaBVRhGyG94XvKvkgrwNHUoTtm7Or9iWhgd8+tHKF8GRFXSmR0QpSdAPBQkj0FwIZj61v9IRxlJ5f8PJj1Q+Xj2TCuVVWmA7eN7K/9LkXyZHu7b2RAz30F118RCHe6484E3trwdpRhzsDiuY+edP4KpXSqeLT3mr1dfriPOJCvpp5UOgC6Q0birt+r0M6+QMSqWHHdhOG6RMRfBK9YzK+KX3E3rsdA8USTENvJl7b/lYKynKzvCXT7L38HdRRbaibyadB+fb1cYKScV9dA/r2KYddwRx48JWZATtVv7GNrPkqWHikzy0h5LeG4iS5W3Qjasi5y5UQThBPc+anf3l4VJUb8dLOnBmvjoanriEIXex2MCndzPy2AkMlOIfn7JvLGK1kQRliQ+hgc8KQFyoOvpjgJ+RRgd8+m816hRg6sia//1weYiIUtiGZkGjoCQWYUBdTGxqspp8DABDB+uxSVZZFBcc8Kzlzco5O7B7ZNQNVCmHdYQ5xhklBt7UcqxS34kxzGemTs+gMWnDliutFfMKe7dxBCAnMFWplNwBfgCCNNETlR+BS/hFndWpVif+wsG4SWQI9QyezUS9eJy3jDWkvDvehAsoJKeCQRFi5FCQjSO7gF4zSmJlQgyTqzTKlvkosN0GFNWbd7CCYHmWnwQNZr2hDPknlxf3ZtkKFFUKMGiAS0JUuNns7zm4jRjyGCX0vhjzUZB+SWFEU10lsiV+bZ0M7p5bt09sRKmGU+b2WBMgRGcrj26NgvQ2pBWH/p0sdhc7TgDhXbXbl5dcCew/QjjGolbiup8ka2W4b+ZrwUnl7XXH1MEid14uodd5iBliXeXcvVFj+74wO6WioOIkKPW4PkjNhB0YaIg3qEs+nh0RxBOQ3OSG6XsUDbFFGAsrSq8PyVuqngTwg2vAbWL0JaJ+v1Wztveuv/Y8PwUwSU/kHjzt81yUZEnVpuAezbQUIWy/0Bwu/bndzVpWm+gBp2iB7532GxBZ5gFtDK3Ul0Mu7461R/nG1lllhN/gkPQgzapy6OLcMhDucf4b+0huiUoxIBNE/zDCiHOB2o5JtLK9I5L4K0VgThUGB7AKeQ580eJiDHbtibVe/QEyqUXbTueGayFgXaSam7w+Zh9zPLWAT9xAoZcBfigXllCxOB6keNQHQsSRIlHYSTubJBHKggN/RzC8lShscGVf/wpuITyorp0OLHjpNbS8d2SdDW/+DO3F38h32OKoCJQX+8TOil8ugoQzf/18qyIghvGfI2aN5L1lWyi1q8NAZCf95zRBlfsB/n0UFeRoZ2M7AUGlXpRsRu8zKwkeL71tfVP6GojqU4HVlI2a6H5gRLXqK3/Q7O/Jpu8U58Y+KYfAUI0ZXGCtTW/uEjglQIUjuIn7ttIOPV9AlRA0jJx14twPgKDfINr/AOtCXMlwuMZ9++c/D9iTbk2Y3w8TyOOsRYeUHYuIt3PzHJ2bsXYHRktBvEERZskPoZ1ytPNV2XW3a89ffyyJa8HxBZLz01E6l7gkfGzExvLeYOUs6ir4o/TZxrkZyVp441dLD7GPP69g8OCuvY25rGvBpEQOhyj/ivKo3QLhQk4NeyxHigQtfEpJAt7vgIYwP3LIvHIAZo+mb8lgnqBVrl6g2/PAahZPlRXpPzH/0X5//qKZ6Dvd+kba0gksRNVt8L7JzfJkP50tf6d8Ul4jkq25LRJOxDE3avCnsVpDc5XVxeRHvSEwXDGDPeOqzI2u86iO7cUZ7FrKJc8JiBDhzphjR4XDNb2vtnaoiummI6QVyW1Rwide+FRNHj1qzfJWh7S7Uf64hG+vqAcv1ngZP9Y0GNXBbVzCB1rUw5MalPKJd8L9J58QtEfG1YnZi6dLTqnnuYLRYt/AEOqmc5sC0VIP3bxwvWF98i3nZUJzyLTU12dqJzdKQdQjCnmOYHATF9DVQ2y2QsFNSXMZs0yRCJ/N/N+W8Je/o2YA/oF6ulysITGriWlQC/NQDk3+dREAl+VXVtSbWEJbtCDViqYfxnI7iQJJTr8w5iMiCL6eZXcfF0XyL8V1Lz9XylSL0Ez7IqIXWZyFQGBg738XP+RG4aOzEDhO0PH60UlhP7RWRAmPQf7cwgqbXTZmmQ0pJTyU5tWiXIhz2wEFZ5hFP0CMLW4SjEAc1GSn56VxUMNUHjFNwPlcA+QWiI/SGsHDO2KA0qB3UDqJBjAd2hnlNtlZhuqShTRjOK1ttw6Pa44EqdTbXZluOULxVda3XI6dhhZFbIO2hTL/5JIu9uodmVsm5Ny20YJG5s9dT1btpKGjvPUIA2/HD7yXT8eIAH5gWytjwHLXL+q4PVqOwUXMzs447mApM39VxrXQaqGhlPissfdIpU9ahN8GU8jwvlTVgLElrzZ2bRsNjx3NqSmnOVkTBj8Sxf2JmEo4vJfVdFwsiXFeCxoFoRrTyJNvAFjVvp2i/qOesQGWfD0Vu4BddKY5gsFM674s0uIQGJA/gITwARnko62VVis+xBQxdgsy8FRS4/TCutzKijK+MpCH2GOsEjyPMTPBujjdKswDfEVdSb55dYYmW78Yujy/Losw4GKhXwvdewU8powHIrwd9d9SXXZaHr6yVAsguu1akYnZ1qH5ur0V2ZxWax8joNLnrrWJeKjuroi9D1fLXY7gda2f4+IWYKvSpqE+oEhFjQJI0LsVVz7dB3smMcoEFtQShFoWzXJeePZv24sfXW4GNGJ44LgI8hIOzUyKHLSirGPYOS1KwuIlF3tF+lPHcumYBXUCbS7wftHBTeq94j3PiO+Xv/ATFcc8Pl0ELVzS9dsEZKINEhuSWdao/qz+9sB9F3gwSh3h5NNT8wOtdX/5qib82pCRieBsu+QoT8E5R6lP4nXdWglJj4PiFsOpk722gyvoTWCs7biVFMJ+dkGfk8NZPdUj5qiPs+sJdWY+0nLOLnUpgj8uBmmnZP+RRhn+PpLW1Zm/RhkpkbA5ucQ9sfUfXOkJTwjh0yDkMnX6+0nYfHz85/91GP3/u61vNcMzhhAMeVPwgTo1pmAQwlxMpLtFb+8X5lCO25iSkpOKrKoOChd0Vs4x1f6E96YSYenQR/u9nOwYzvYgiwPIwrBOCDXM7Smr0Lgmtovq/GMlTgYZQ7RbO2MiBt04msrkeZaVl27NQfbHCz2COd9JK6FctJPJmCJRTinZi6PHEMG1JwUGeygn2soqps1PstlpSo+e+h6vT0SavZ+SHxVBosPTEHeAWSlZMH44K3oA6DN7/qtEToY+PJF3dtlFkFkVweTkvmteR+c0VXR9hfOiJYa76fYssuis1qx3Is6Mpe24vD1McNv739H5l5RtS9Gm3FVZa+Hx8SXl/TLDXi3/iSYXIOL1Y56OUDM0Uso+w411NSiYId+1ZCHRq2sKcr0Dm5K0qx59xyRirXFArD1B8gdrH9gq4FCccdC58Gi6D9k1L8ChR2EY2Aa5rzWGC02cOLS+4Yo8KTC46CUeBiMgUZTtxJGl0PZTYS2NSlQ8JwqQ8B8mF8BNhpf1qIRpu2w3Krcg+toGVnQn+i7/CF+IdHZYAqD7ZlTUZt1ilzpOg9PSZ0FbPqebFT9me1B3jtu5vI2zI5i3Awaxag3PNflC5+q5sfnnBlaXNzaMCu9PuLGTAsOUzVlDIu004iwNyDCG1mtVEtaZmRIJt6+SC9Ehg9npMaIgwqchlMth3Le+mUpcRE/g9klzyQ9fhmeMQjDAky1nVsuKs0kAiN5asZfSx//Rj19WVWznkbd4xB6tCIsaC43l0jJbqT4VtrIAnP4+khC6fUZ7fk9iWX6EJpFuXiT0eDZuoEJbogGveYLurhTo69CPD56cOnm449r1Y2XzrNnzG4hePDssnRo/D7wvMvu9YNFXS3GnlPzh12DwTfggCH2ih4bdQzxV3aQiKqRBtgrgQ1LDnpNEf47/7sJUy4EvF71g+8td/jopVA/ABwTEYli/TBLjS1q2eep3ClXUvQzX+i/v9J9f4ro8Nbv+ORqgJaOLlILYEKcfhZT54JwntB9pihMbmauV2Ut6r2BhWaG2qTUVQCNb1tlM++4vdz9WjbdpRODbNMsPoSXXHYkkPxZR/bxW8dhAVdBammdHPyztqiND1ubKSTJ8PHYswp3HHnGQvxe0FtMsrzRYfm/3MxYr2/9uOH1f2p5Zs3Lf7gesrP/7wZLwvJp9OK7xW10zBb8fIul3Y8rCcceF75BZupiJ+6a8Lu4P9Ga0bjqHJbrv8mA6DpUsMCm/UliwOip9JUAmrCN7SyhfZ80aPItlmJWXW8DZ2GzCmTg9wrbwOc22slR1kLT7xD7ujp5nN0SzNvznwYZIII0gVEqy9wJIpZjNACmhyFbOq88Cssw/eUmMSih9AUskv7Uv56NF/9rFiJfNatx1b5H/hjQpY95yKL3xa5NO9zHV9/HVX103nzbN4k1uYU6CmrtMCs+PqLqCV1Chr3as8txQko0qKYIXVpTXW7C2u9OUDjW/tZJdZswY956B1QoETjxgZKsNWjEfl2/s/eZ19UGWunMaTVJjSxcmcxNEykda3nQQQwgAauNljhMxdR16dp2JRk6qSClvUkTZE5OPfHztrBk3cZFbwk6G+PySJf9zBCno0MUo+ZdA9Ti1+02ij/+80989UCHw1cx3Lwsjtlqpy9kiVqEJpHvXDusaAHiRZQ1UrXKeHGw0peLmT2hfWWjuJnV26rVcclaNpY65075iRe42JG1IXtUTsZzdRFmC+4V2GyXwVmqNFbPQ8Jnzzp0lI5gJj1dZ+rmbJltN2O6lyUklQP+dPgZGRj6a+CAVi8mJ2UlzSd4SygIJ9tTO9mklBaN/EV5CTxZMgm0zTxHD9ELKaXgXueVh5AYOVw0TMoynPQbvV39M+CrCK0MEelc9gbELDFpxHEItkUPv8vtxLJT3mHkvvcBMlBn3VvSDoRIi/VJGFXA2Eom7Lr4Gm+/1MYZpCDfm5muCNAgp5ocDHXh+mNTNA7DJc1qKbqGXhThv9Rp5SLh6JNyNmIn/XpeLz0NmzMS+2YxheRJ4dIPPRHbMgSPhXs3WQIoGEgYNzt70gJdeyqjziqz0sS3+N1EtnsNiKY3gx5CI8fLDEXF/eyyFI8od8fxtn7J/dwHCSrK1oMMThfCnLUU21GrqnrDSNNa/IcouJIjDOl6T134CV1kY+/HzFmrwRDFwpbFcx8UAe5SVldUIcHs9Rj8qObDXCsvcGMnYXPHH2iJXvCU+FxAIM0fQoRIBKvbYYtUGayWDetO7CkFSkkQvj3XSCiK9KgnUcGAiSV7+Hy7TFVK53ddIbpP1b9NB2bwsXgLoZlTUsL+RRDgYEN0m0Q1y4+dmyXJmvnbOTWjUNCh1Qx1jZRZDni39+urZtIAhMsbDtEaQGXkCKa/y0QWMypKSd1w5th+uvjxqSMRDgqyWi/otiiXEfFgq2IET4YRQzBVl6yDcLlO3lAxBEc/GMz6jPhlFMpePWH32c/NoO7U1AHPRGpUG8wE8/QA1CCe36/8EWiC3786iOgr32ZMt/McjB1rWQD6ax8/hQpOLfJ4Kv8uon0Smx7/x+k+Idj2W0sj6B6I9+/tJm8uXnIh9Oa+xO68y2UzzRdIJiuJoRSshAqtO22GFJSLICq9GNbZ+nMi96ro8VcFH9bQzT5gJ26If3lU7X2Bee7NbJB5Vpcb/zZsj1dNvnGKpXi1dOd6wtCZn/nTUMADSypaQUUCTZJ1b8zVdOkfwaXzmfP3Uiajui/j62uw9iUontu4gA0zkdN1+7fhPMnaK7qpzHar8HnFUK3wD921QK6aSRfku6/U4pGqZpbFbL/B2ubiGZM9YOliqbkjHYJ2fLNROFyWEtS9/Ntwj4nzTqfOvQsjae9SJ5m8tY/BmErNPwjnQVm2Jzz2sX88zZ2jwgm7mmtjYHptBE9E7694meULW8NVfbQayjBCcR3fLdzqOMzT75bw3l8ZHOf5g/zBqq3rv0ugxA+H5lW7LesVRRmwwsTtSfX2k5sTy5X2h9Ks9nfxZKpYCsKhhLtNUsLzggH1lUbQS3XUYJHXJM87L+qvVH8sZQaaeNYKnuvpLrFjbf1NY98Vdudu3psbkuab/SKdPwsgX+7uKvGXyqQ73EvE74Shiu6CMeuXjIq4v7xHkmVfWpsbiJ6amLcd+36pr2vvAKdP3jeavQv0oYWIrkAnHbty6oPCcTYSml/mIcv+I6oepbaM7HWFJ3mNvOEXFabQRH1GM7c6aaEK7+b19tO7vyEwURMNrUUDtanpx6kjFLWKFNE99ikmfjnqyNSfJzJLlIN3eEUefy0WQaIP6CBHiPdZ0R1ZAk1vt/GGPOJy0a+dNDlrdX/mhnH1BTQ7P1evb98DMkttzu3Z5GQ+3BGarvA1Hmof08a9LS46aE7stkINOgaZfzDH5oe6LNpbUuSkDUGLcWIYUmQRAEGKGSXTo1FH77XPiSKjHeHaN4cCXfCCuSKSvOQi/RxbeCvUjOnwAoChDVLF/AWkisuRUPcCLqZ89ZYDBVnIW0eyr5qYHbEmPaziYGstCncMLHnnE+wd7TZy8OrAS3INw9a4sH83qAwBHKc+9zFrSgx1nBhQL7hq76lVx8ob0Xyr8QY2TaDZwN5N4Y/J3FG5Iic3DDJeTu++09vIjwhMoc3jWwlnil0LG0e+3PfMHzW2vk0pW1kNfRGkeloXNlJJ19le+H/pzuOFa+HEn/6b9rygeMo7WaRSW89AiEyybDmHAmz8Xj0BSzrM7T1wPMbutfHhB6iD6r87nPiJUbdessLqIRj6PY+Sgen8iHMs7iKYhCd1q2+/i+DrYi/mJnmsd5WLuxfOIdW0tMtc4rkzPzTHy1af+3KrdAGuUq0bNcXvgdlMgsG9EuyDzOpBNQNrkzPnA19lYwOeFX1OfQH0V7j23wGpBKq9XQ5j8ZTHyWpmotkugr+G6nIheL0VrwqQJK6csTmbDpF3bHsuG4VV9VSZ5y4aLucURpiwpX7p+GJw9RpBPsioVgNnR6yBv6i5S69YzE5492WyshU56cmTN6F6mE2bw9ioVaT7u0X7Y2fSxIUGJTgB4o4grepkJkFgRW+eXceWYf6jawYaTegmIEJe5nFS88+XMUwhlw2/ylwftcrtfN5lGbdLduNYCtNJOzgyXzifJdSaHuLZeJ6+mI840FapG3TzHa008NaRAPm6X4I8GjTIkDcsd7toX22M6v7vVi9G8bewnG02lWAmFSLPT8TU5+U8TIXIJ/dSQX7oskCrr7iw3NBiJvhL5jytO6ligb7X46zkIiVuCARDPjUZ7EQzwhwDhhy7A3LuyV2Ln6aIELiP3uOZWe23YaO2d7VhJxmaScaqN+rD0+hd7yM/6SupdDyGptna3S+NL68+b8ipE8KHnhOP9+uwITEmzmbEv3liZty4HvZoG/MbsLyywWsGDewLjt/edLWXMVEQp4aFnvEg0TBoKV3oD6o/pRCaKkSO9X3SF/D/6qVdGEFioKldH+LjOzKQHqpBJBlFipjkfNUas6+AZ2cVvEagbUPRLmvjWMC9P0ikkSRjWF0RAjtP+/6Oewm3322vO1m2lm0M8opC0d1KUtxuBYOUYba+kM/z7PzxUsW87Zq2NHqcbZGI2+4nl8rcrLgK+//ICjUl4Zc2L+dE4SKTK7FbrYkctoWppydjyEB9xqKVGSrzcWlff1S4ptWnCsvX42XKmMvC3Mi7k2C0sEVCsvvrEKAmfrDlGTATQeILDz/7cIVhM3d+2qNq/XvTypAzIe2YiMZdmEj9GZTYIBm1RtcU9oHhFOaL5qnwiT/jQzmTOOEobnHO1Q9haMRxi8iZUNkn3bHFepwjgl2vacCG9PuwoUdz7ynI99t89cOwKMX2yIJfhG/lq3bv7V2rC5AxUETw3Qj8pSNS0UArfxudzBFnqXFoIuZQobwDSQnOtu0aFl7rXp/lE/Kjr4Ys/SCh9LxE7PnwN8X+fzX1aDscm8kL1E3tgO8K7hsE1lDzQAUau7qc+sB3SvnIB9vBuSI6J033A0YfdP7kvaQPcDlWLdqKte7TA3xa7z4LhOfi3baSK+IyoR1F+8KawbRt1DPkGuIBy/te9hZdLn9rQTgDErajMEiVztlN5iDkkck4c8Z1qxc/AMceF/qtbwGDNIeRWeDWjyyOGdPVxYY6borFm/04+lvNWmmO/5eX64EafOJQscvjjyqKBH2t0p+0uk6LhZVeMYPTTl+jVRtv5JAjDE8exN5bygDHvnRi4Xvd66zvHtC2wmCXjyZAsVRn6wLYfiuLEkIY2r0VcobPUT0yTp75i9p6QeZLvAXaX4rI8Lr8X9LLmctpnCicqk6v3ReP/88S/Kx/4MKlFNubcN1E6VxsBs8UKbKWpS+n1scv9S+rIARFeJYruFBckcDkLg+Ll0tWR/6lcF5y/OMpYj/2Rz6JvJpaqQLpT/Mx9SoBXKnuOw5af5fc16MxtXibBod2KH81CVWgsrHCdTMbhPPUjZWftdhy0HYJqlhK1Jjs85QTosTEVxa7SV//mtuKDT1lzYG9vGjOxkVUdlTpuGwli0LhjI8tUoNTOVZ0oQ62aW+i3Q3INiNwhyGkOd/Zuo55OC0Ce6xQ/FuoAzvqjqlYtggNhMDUaQsV0BoJkvPOysFeZLJEnt059KyK0I3SwOGjKYchyqMNnXB/xqFlMJx4AJWqOF07xX8lOIIucXnhHE2TjbTXuQDNnHsdnkrG+Vq/+CupI8p4K8xkjm6Kk/470O0/4D0/j1OV+vnwkBtN1VL5POcwBsKN+Ki8D7GvRa44PtfZuSrAiDeV1/N83hvyfM00fF3OpTDd/2Wcb70ZhTtalzBjBVsxQLb8KqYs1CBgK1x6hc97yy9d6kZiXA2Uq47EptW6QGojfyLKvIEDKWH4hKz8/Q4WfnkH2gpF3hh3H85d5GeOYUiEHsXOHfBKZD/X0XYQGifG+yTOMAJA8/93yxn4326FMWE0+arckpNGxHmPlyJgrSuVmLkLOph1kI+jnCSQEFo7jnSfGWr6hffp7KdaXMD4ilkRIk+aMHfu7b/bivgrCsZST6zP/OknkZnd2PQE+rzjOKUkNO6pmEXDzMu97wCVbbEvC1d7HvqD91ZEIqJlSe0IrZztftYUpYhLdxShJxba24994f0ueJBWeEGauaC0NtBamI51F02pIcstSU+mFxorLuEVmt/TN7zUr1DxXTUdny5dX8PuUSXSc9qRi3JjQwe+48bWBScTcGF6W4/OQtqwcDgffinhk8IPVdgall4O4kXnlkIp3HFXaM3NmnW2/GrnDYlY4dgUvShO5EEe4b1rH8e891C/at1LE2ER7ZznpHgprAfYq1uS7lyMdyJHSa8cy66RHTmFFWN5m2zcG8YRDtmkvnBxz2eL5OdmFkrZmSUqyoP5dobBtWGRgfDkCbaCBGR/gyQiA7EI8wKowO+5PJapZa/eAlTiSMPeupdfhHkPUPzoKccrBcu23QvRcCsgKwFOUDV0EgV4kG3PPGLVzr0+fInGYyfj/1C7zyUDs1W8W719hgKjFn0gVOAz7AVwBSFIOYZTjvFd8FYkmqS91F28YFKSx3SlGyux72wvB5OHZUvhVRFVS4ohIblZ5wNcQxwd/QO9OlPAUvTkw869uqLBDn0cwtaE43dx1TATQ8XDO3R94oOaRR2dG77AvIqi1tQimUYCfT7mTCkp4YKsYFW/I4IZSaL3rvlFD/FU8C+WzZEjyLYOJUrb1uQJlfndAxWAEyVQd4wMXUxLE/KxieeFwF6pUoRtE7UuRY3tN1X+dAkPxIDfeUPR1FxKO6Zj9W8AFQHTzNEUD4MsMriyspac5lR804tasVnWyXXRlnfzw7UbsnKFNRadNcauX3cCRyu3KTBW5CdLGzsTljrzmfVKUi6JC4oRwceJ93LjJV8gZzzVkMwR+upyJXH58b/Z3uxlEtDSRV1h8Yqg+iuxx7DBj83x9FnmeVNgjsvPh4GUK8WKe/lAU4OisK0lG92jQii7z2+RamurtVARqccHSFzT5XNSwC/fDJov8uh3m1B2qgdZhIS+XFDERuoASSv2O9ftSyYw+iTnc0H/L+SJ6tzcrDD0TreGmUqrP8KeGNbVc/N9pUl67x04UIuy6ji0MYzzd3+SVeZ7HzOii1YXbQZAETRXHmlI+p3anqxWjtO5rpEf7QaZXyai6F+nf++rV76j/4nxMfz6YuBoluKhEmQtNyMgkKm/2idLbRzhkyjkJNd/jDry5Uq48dQbDWdMSFqxTcvxhEN+hG6oaqBHT27btFyKnO0ukgTlawhj2LrmP0nPfXGdivQ78aRbXKO3asM4vcAbr8xK86icdKVOYY+xjbfSjf1+Xcrl2Hj/YHdxgrBAAH7aVttXh2BvQ7unzL3lMmTQoFQHsN//Ia7pWiZnBJ78e+WX7gLZ/E6YcO/O7xn2JmoNVGs96pXlpsqjlgPw/pTnQagWwSgPNL2U+NTDqOvui/3P9tF+i9VtTt1lyfaKX6hQOF+3z476+e2YXrPlveV9uo2w8/kRSLx4K7vE7EpBGtaaqsE1pHDXDhn6YU611K6irwwRtj5JX4PRiIMV3b+Rje4abtdqkcetmEdcRMlPSMF9XnYbCadOpGZzw9BbYpWLO6PXX2broBxZajz13LhB/uQMaipIr0+7p+7UkfU09OIFo9zWzG730AZ777Ocy30wtzoowL3OtPoqnUhP4nBd3wxdV4uPYLJb4MQoRpK7GRJlaQeOlqYRtvpcI7HFX7K/TrkBUwejfb004AKSGTB3wiRCbyTbdlJCfNWnemz4rctGQ+567b6lJnKI+O0Gdk80hidIxxinR1uYgmoCrMbkHormsmbcHEjYIpikFCzXb68kJNJgMJE0zJuvpPW/UMpnAX5qQBYayfvR6CxYqt2pdK56EKDN7Lngjwlgj975bs5cT36iXKFdb4jM9RTujCT3y8o3487r38LZcme00Lt5xEvNSWPAlofocMu0iW0ANd7DBnUehWOvpIM9Y7HV1fl4VgXaLrtBgQQ+qhfuuUlR18nGKFcmaXuAk+J7HuinTPT0zqnFlOUEt1/OvwKCqag3BC11uwyyCVNxAkkvyOWQBZ0IDBeitXVk+Qx8DGTNJtezjUJQOKUurkGc/lbMNlDnoTS2WvtdtQFyQfnazNRZEiX33GrZO7HiGfArGsxk7FXYTAy/Ud2jc8AWU713Mtwx9gimLRttrQiWjb2AGMIAnpSAzbPREWllBFhnLT94CjQu2DByycqh8KbHFhWdRwg+vLDR9WPavRUwED0axHqJlV7kH/eowZUse3bSCMqlzVPSQNPWueSroVNReTp1ooAJkufQbZFtPDZ9DJnR0S4T7WL0AkfndfFBgGW/Kx8TOEhpk0fmZsNAJC5xIvLVkP/vFOyIUhwFNy7yxq86seI4zXHkdtDJ6/PpGmT8TBg4nBuAPQc8qgK+tFfYtnNVmIqqldK1zbU0LKCkTUaKqdkCU8HRDQBi7ZEz9/KEw+uOXUP3uiReS9gt6k9ciFGoEbEtoniPLClzhsXP2bbZN5x5/FPoQyMVkdGSIR+JN05csKmErzuTB9swU6W5S9LUxHFMNJQ/DZDPzpMZI1bLMS0OM6eREnLpXMFM9yP50+2rubQTFdIsTO0WHgasVbzX6xJ/QEl0zaY7sjRB3sYZ6EfTjgtg05JFJ0S/eoRxA7MUqCz8ai4J1aas4t2rEWByv3YUXtMMbwKTynZ59YzmfAujjHenjBrpB+aOs2yWSxxwq6iuKv0R3r+Tpi5cie7VLXDEwoGHwmnLxyWIwiSi5BF3BkeKjAvOY7EPviE2bn2xQooj5xiBAJsikGiP+X2H6LugolbcvitrHJlqgLRKl48f4jWtKBueKb2QUmAHA1eYuSfZ6OO1DqJ+RAYfVVTjo4ANO8/BZjJJ4BsN3jzVbNPSsbpaWCyXmoe7Zt7Rvit8vLYD+pFZagYYktNYaW2mw5AG+aUOr0YWsao3ZtwZco0bdNIqlAvjCcOnzBke87uSKbtffkpxj4QcAbFfbBRYsmKqoW9lNgSd7WbAv1eDSmZ3Px0KQKjSPXj5E/jgBtRCQrSdWF2s+BDTCLepIXiuS7NFS43IJ8C2uHVsTmlHmJaRkjNlQG1PVFuIaaqgBN9A6W0DrSl2soQ9dhmcK9iFpZIOG//fKZ2OTeOi0BRZ24TBtSrg0U5RD7pOmJnUoTEtzVs6e+Ohazf5TVyYRh07KpW3NaBXfVrBK6yEsYMmiycXPh3ACFarlRwkuQKXBfJR5lPZyOQTqSXJNL/RZ0gmrY2GL4l8BATsfP3sA+IwfP6iGzPorM1iFGtiMZHvueJ04vJsGLUYIaXd5mj00ivrFhDwqW/X3W6bl7+mlm5G7Yh71qzS+D4bXHlDUXBd8OkH55dZ1JEzncETzvMFkbOT9NOLoT3cwJ2JKwBo25yYuNKSzwYg1SjL6erz5kwvFAYbD0QNf/BNPw5GmIM/Ap6V75ukZfRw+hUaq8P+YyW2+B+DU9qwVm8e4Mv7RlN1W5nv8trlEmNUftln81AlOi/MvonyCAW6R+6N17Q9dhqcdo3yQZwkRqQs/jrZFXlnqa+XpDMayAl4bw/Jlnj78kJ8A9/xB9F/s99ivD4VfDiK8LMkAWwZA+uDpM6dQcmfqYGHxc2skXhsb8U0kNbdb8qcNhX9WMCBahc1Z82M+ASUd0bCkn3zBjvV1XCvCUYxYnVqfJsOsKTmNMjEYe/HWcdrEanQtjC3dRQmxY2MCnv5VZqTUeUy2X8yu3TQLoqmql1nCNlBXNjQIvW9P5E9mESRGl5u8A7+Ueg2P50OFxAtfDm22hY21cyz0KRHyIlAoIoQpE0Q1NZcmzIIQqBNKhpXOlyTFjBBDHFhF1JJEIjXLI8lMFVJ4NWExsEqHigG0VxZ5X16kKmuGR7YwBB/7oqqsTEFu0RU8szzZ8QoqDYnQ5DxtQgtdFaH4SL9y5aHM5zFfZo2eQYlLvI/4BpeJTPvE4e6Cfa+zafvTTsAy2112kDIK4/jHbI6PX6iRXht/p2j3jI+xqNgoxIF9nYmYU5WzAnZnqnRuQSBVu2fB9a30igQB26A81efhFm5F/qqpaSaycN5D68W1d6UZtJvFmu/nt9djvp0IQudV/bN/H/zZzSFaEmS+4X7d7+vAJLWrcNabzG3hM+YOEhqzCH/YavrjavN39E8BOvJndQCAtre4My9GvYkPyw2X6bNTiXm6749GmZtS/sVr15mjEAdC3kYBnktpBJsoRWNUagN4kmhNrcmmOuGDqS00IrH2XsAJ4a9uychPIYWp2D8HV7tXtg/u9WFpYfNXmQlVNl59r7zhRu3vvnnuJU8syhU/mXATJfQG1gRMZ24FXtbM/mez6xSOD6IbwSgmRfaIZ+YaOakpKGeARkjHKFLtrrMASpnQfX41ESGsBoHwtw+O7qGUbZfaOPNpLAp5IS92DH75TEBrmqjAJxvOrJZGo9EJjhInhT1QzW7z+4MZ+EUWbQBKScNJpb+0yBLf3CkoqO1ow5RoLJlopmTL7Ut2Jsph0N7SczTYKXpdJXbRJVqfCDaLsi6YmspA/9Il8/LrpIbGZNi0u7Fe0OuOE2mjsNci+pFCKJpnuilds4KdVUhBA2sNKIluG0w9mhvbKosVtsSVMGed5GmdkG6ViKMnsUk+BcmPap4mHH51fWGHLCB+dzgrPmVItNVd63udQwARPRbKMpGhjzOiTGp429JrfLqlwGW8nQxbmTCE2n77/P6VG9BJYjgVflXL+AKUZjWPEcBloLd2zyHbSmRQVUAAz93BHTZTYSbQdfAd0YvBmSTofcJnUD7rA3lAQXYW9s2dSdQa2H2TipYHHUE+5d+M3c9wGoXfOCeRWiODNSv77FD3U4JP/0DR3+4uGDjMI+F0O0sepH0ALE+UEAhRYcCreJrkSwRFg+AtnPplke1aInKMlw+tVWHpGDnzXltcxp1NczDkuLyE99pmXOX5Rp7EdlhGMZ6Gz2vMbMdXu+P8cMRBQDtKwCtG8VOU1G9HEnf0dykCTj2fLQpbpMJl0ZGZEOEKhkt2qgrBcfV8d0zcwtwiEy4L7SDsNlYfC65GYY+UTP6BXQrLp9vxEyZR2zLE+Y+Q7xnkuN692hhiZT5WG1CkeXSy0VG0OUMzDNVt+Bv2Xhc5ZzjyU9GeGV0GL3H9qUooYVcVT3wT65LyFHE6qmh//X9t4XwqgBEWkayS2tPNGNbL8Tlxz+fyv0rrfVWApR7eRmGpWJQjc2UXanLCpfDjcwV9c8YGQ7fFMM91Xp3cmInUdaz5OKjtgstrtBOcnmknmnCX7N2agWmAoELPnoyMZekgFLhbN4/RTq8CRpxA6c8NMVffvt5tb72012AHOwrkqXG2tYyVJzbN6eBHsC4TOzpYSsS3ypWvE+ZrJ08KIx+jWaOIDBXiqZ57/8u+eGuXCqFIiuC/LpGPIEI+I+KshX2GXPQfD2vsu6FtUSCF1Hti/T2cley4pg+OGVQS8SWfXIrMqk80eEnt4ahKLJTPWAWwXaDygMqYmpl4tx94ibe8ZV5Y6rGAGADLPQPwfrwTrJ2fkKBY3fKX7bEasEozX6Qz0GnnqWwbBpVrz55CINRA1OTdQ3wPbjHW6N0v33Yc/cxg7Obt9W5p9oYxNNfIbIs5k2FmIMdpj82a+CN/PakkskcmQSstBUdfw01bDZOIUak0l/EgoU2iBaYTrNV5T0r3zWPJY3LICInTtGFhj4D///J/FWzj7cXn9nCYcgUiD22T6aKP/bBUG0z4EMh5WOor2b9pgLqCZrByIFxPFMugRWpr+35KLnkj+urgXFGL/u9Wn8ov0X/XYv+01a/+S+xdHvajQ69avSfp0DscT1CNCnifyEezBOdtdyPFzdblK0x8g+nEFThOWnwnrh0pTmwHni4/genW6HbfeolmKWy+oX865QxqHMlHmM+7JnxCFL8usyM1T/mL7+B8hJQOer115sUpmFkPpPh9FVEgzs1DMIc67+O1G9Wv4Jy4zAZS64Q/N5ltG8R29N2Ue35d5MW7pOcya77KF3L7R08HNdpTq+i9pFzuZpZ7flpmM2k/+86JzSi/gZUTvf6d4GT5R7raN03+GaTi/S0qNCbvzKqar05oqX65vCQ6+BsbRF12f3rF1rafU3ccx2kLtSgfopUIfnWdwEpTcpOGYNTWu+yUv7tx0hzNxz1sOPW8Ld+gyInU35rxpcms3+WakFxEdBC9xq239L5UH4S9Ow/Fr2O2gfSzAfg+9PDHOvpNPzekI8f7CDh2qY7U+ofQv/3B5D+iBlawJL7w+cQaNeA9kR/Sih/U6k+XXRTzEepeeefg6cBe+abq7+ZwFNG+uTae4MeFb7ZeAwbpRRQKqnv1xQMXRHadat8wapvRn2lic3+QodUWzRRvcEmhPrKyyFeBfj9pi3qqiC8y12pcW9CffdKYVesfSTU6kNau59fOpEInSU96lFOqVRhPk+ywCGz3m8p46WpRdBZ7r2fvJPA0wTMTtMmFBrwu8xXFFJKvffdbczgr+ehdFh8rr6f/To0ZksMp8SNbK1Zw0lvpVzTR6LXbIO/Uimnbisf3Pnu0deGlREMQsXz+RI1JKiItXaMRA0Gj8yYmoMVg3wlUZy13qAYcW7lXk7SQSAY0N1jVm0YgEO5W8rozL6P5LO9bn/BfWlknAkOiOLNd5RjrWQ8y0UecdTlEWPFzMQlEa6zR/pfD/DxUqRUkaZmP3iXZ6FY6JyKNcmrMopTfjPzoRM4UXCFy6z6riVbuqC98PyYM4FhpjVVP0Frfc3NUBGpKXaz2P4pUusoJXMsIGt6LHi/UESGEyzcfnH+fLCC1+Emcbb3XSMFZN0M1IFgm7CK397aHlrxPVjVGJlooIqbfX1q8F16NTDmH0Xux0tiAo3K9DTC3rraIb63On3cXWPHLsMXl9ydYD6kojpqyvs29cO7cYmz+8wzfGlejVvzzfPf/Xo4Z/07rlVD5+L/SL4Rqwi22FB4zL/fPh4/78sD6ilP9vYpJv7R2zCJL0ZZT/d2HopcWCoBTb3jqa2J0eNMbZC6IXjp+6J5Ds6D8ODxxwbu3gDf5gdnxUCzYPcsN/rYbdl2kiBg+ZuWxryh/0tFUsXQ1pXWwWOahq9i9OPxvZt4XK3ZLyfjCnkNYodP2bcnvWw1UKEADVbu3fbG+QXL4MZPwnxGruo+LjqKJ9EWokQ10ALIigylRXRIscl9dLh3SV4LkHnS3go/GBJj6MfIqY+lzfvMwVB4qooybzpy98TuNs5noWhcB9kMwHBfKG2cHQS9KquOebGjfq7YrJyeEuvQz6boHNILds/ShF4v9Bs6SnLWZTTqH6h47sPrVNFntmBECJHqkBDFoHtxh3unMj2MvC8acLPgHJ+LDYhbn5ZQH5n9lmHF1MAlMaLpgbouJTQ/gXO0+58zViz4ZIP8ODPkTYw4LFIptvsyLyEfdjXgexEsIxsTdRpTjj01bSAdgWndahfL+cJ3C66DsNUeweW84jekUNgQ+xPkl1Rr0Iymp/KNcX2qT7YXbx4fOdM8cp3wRdpZzJn8aaG02wYzvLonewgXgs8lGXAdqg/YwQtNVFm0gwGHsfmvUse0S/pJIPlpB3YdPTi2PVBXYWLInWhT3DFHbnP0TQ4pEv2E76kJCdnrJ1RHyp3aUZqwFHowlJGfHwJpQ4dqwezmpTp8p9EXLZBhOpI3/2rSMNPgDAG7bY0CtIA+IkuGoBVCei3bZtaQ1GI8TO0IFKPNJ2sz97BpXB/zTvHelTqpOSG8bZDZOVvBH2TH+GHq07RgpvoSowgmdbRA49WUcjiQkhflVNQ+XkLTE/GNUWMrwGXDbvyFxdCSSrxxWZe2dQ/cWmCpiOzfTxkEgvT+LO6/OXN8ZRbEwMs/+G18MbE/46dTekh9luNruktZK0ctzVjEiVDY8DrH7lj+Hkce33EGWaFoJjqIsXEVBLjXmvWG0I8XkOvB8HuS95enkzFZY+SY5dhrLENHRDynHRhaQnJ1ndjqvsr0D8GJ2CBuz6lycX9jLFAHrq55xkiQshyRQkY6sQ+KXhc6jerXdpfA5hG896qRtKqpIKCrjW8tLdg9A788+z1x2vmwN6dluelh4c2IJVpB5EuHrsKTnzQKsvBfxexqlXjfb7934dP8aaKJG81KXYA1R3nh497nIy004paMmNowAi9xFjbnoY1WzkzuEbDeLFQTjp5dtSI/0+RwOOSOriOS5VD0marKPWTO30tn83NFWtpkK+08sAgtnFlX88GHEZtjA0XWJy9IujRRJi70QXr0saFXM+4zHEwCLmpNr5LkD6LQk59IDqu5+NGqvhl7q382AJjymq87bkmTvEqpQyUozTmmfrAHBrz+kdHx0xpXBeYrsLMM7wLTBDBHFH3miylK0xSI9viyD5nGtZzd4KxKmlKhRceIdPyhXrzzRvMe17JQuVNwjJEp0FOIfi27QgCCorYiqi8bBn1RlogZgg/2/O0e0Z981Q7X+gMj6k3NE8+SI4cnj3xtjdPTAlB56fV6ng2y1pHA4CWnLkTtvra8AjvTavvl5iabEaEFvpoMYhmEYxxdyKVE7s9f54IN21giPVIihEkWkFV6jF09Z/+k0pGjVi9Ld7upv4LhT2jIMn4wOPyauM8HOBidtWe3kwNU5r2V6JLT9wnaxYZDvJIzjvcMCfA9QmIwSWc2E5gnTib04SRuYib4JPeey78/WOIRRvH2P3AZrG5KDucGzP1OGVo17MQUMRci+FRHRLScmrOpfnOZ/gvN49DDH44izbcPLuLpqd3CWXzrvrIafcsN3w5/vqFsanRlkDoEwmdV/c8jroynLdxaDwoKeNLohGjS2i8w5I1Phwf1UU2Pkwb6o+a2IPnGsqiRW1e/vo//Bqjb/e+iXbIbyNxAo7cQTNqBxSnCB5JpkPQC5t30D5JE0MXWZ6yHMBmj69dBTS6fMN2Mw3/ZIJQHmsdmtcYF8zuGNWGheGIr05F6vb7TbEnbLi1zCXON6uAfMTi2scRWdyawrIZuNl9YJrPr8D9zh2Cy7okWnKrqrM3SZGXPtKGw8vk1S5Q1sZGYwVT1Z5UfmDIRHfNynmgvUDy4Hy2SthSBcptLqrm3aXyv+xEYobQNbVUMviAcgPTG8Gfk+Lsl2VehVog19iBul+j6XEok7eh5AnSwVlU8h6RlK01s81taoALr+Pmi9wsTHypfveuIBCsjnm9JpcP5cyAzoxbgNoM+0hjzkIV2xUP9eK4rmTbiS5j+0LW26r95gLun1vWXtuKJrfvoh94BAJEIM/lAh51Uz6lF6p9rZQvrZRhBRRKhjcy0kvEOsNw+YNfEEiXyybhDfiDyzTO2XErJTJHozeaBOMaQBs/kK3T1m1H0Yu1WYSR99I7GaQdKujhb9M1Wit/bLEPTvV/Xm5wLD8ZwRIn/kfetMWS93tJcK7aK2toLxjNoOT+b9/D1LgMM295Jb88SnhanFGjEDQnS6tDZNvLY+ZvO5zT3nIXEedeNqLe+ut/LxmSZp6/h/eL5pwgCojJgYMNy+ycfUmVRBS/H2g3MK3RZC9g8+t1uqAi1elvTbQuhhSDpdczGlaq6+ODItGNx1Hshb6Pjg357M1qwbr9Wi/Tn6Ps+VQuPKLpDIVkhL5THknG+yl6dCIwksvmu5SaBnhhiD+uCJKozYD1ENmQqwJiQhBe/K9SF+VE3CrT2Y0AozIwCpKVI7mG79qsBiHxDVcCaJQA1OGL0D2Xg7AdtMPdTIsfdcQj9qyJwa9vr/eiTOZwrlfBWVnAOaAI0Xs1WIzSlUBVkDlWn21KdcXJ7mcQuVW6EnCZcG9du0u+KoD9TavuT35CTph7Nv/JxoLH8C0ORm3gf4rkuBYxXAy/Odwm7CDxlI90q5aq7piAz3tPyhaCZF8xl9ck4wz67evZkwSqW8xbcNG1s/0PN8hmEYhi+3pxEvWHH4KMcl5vwWzqn35zikY/5MVgki/4mwwDWs/r9dns7E8UFbEg6M1B4yLrR8hGk0PcU0OygLDuV6tX3lr3JKea46+RvKhCUO7qPyCZFP6dDr7e3hMxrSz1Zg4QYS+rUmdRfcIXh/gXUzmw16w8aCaiEwcUCHqq0bd4Aw+PtsKyG8z79wgDkI28IF+7mEtsc962CoNGQ4O2ziuE/vOn1Q87Az05FWifeEGy7eg45Cw1p36NdLxhX+wQp3VavszYsBo6LmLzxOdXjNpDNJlWA6ZZ0nhY1/lROWU242mSYIDUobkBtfrscWmn1fvTCR4/uyzw6uPVNQneLMaeZRHG7ffRyqAh9+VFYKNTVRDaLdctZfEXXFiQ7hyvzUegAQD6UijoFpJdLtWnOhRp58eVCxb2OE6ka1d74efX+PFnKBvCQJSwLXwV6vXMngDL6PElm4oBcX0+//zGnBHVFAMYL7dDv2JJRZIuIDmEhHjISHVF94ZcrMrGJnxbhjj61aMRgtGTb1Ko5c7357dAB1zn2tYS8zX4vLSUCS6XClHWQkF0wtR4hZVVEFl9dNJzYTHmI2fBg5Ofl0B2YXKnRnpjdDe3/h8JmjE86Mx279i1iI4FKCWuTDesddgp+76KR9RbwkMkrTI6mGiPdcAoZ44BuLaAjveILuPQQY6Y/bE5VRzCLto9LTNbb7WDcofLpT8Cq+lOxH1oEJnG819aJsxfKvcCU6UpKhxEIHrAMXCOtPIlmQDbjoWJo3Sm98sKg9qP6qXK2BzUlD8Hsc6V7y6uxJ5/AqII6u2G4VwuH/GrM5qkvo1mbcEMrfURBUWjP2D4yJMUHRv6ZtemLLyhxjk9wTfpkppJ97+7woOparDgd+lFZaukRH768LhHl3GKCnrcwQxAKDJldO2PGG5GT+f+PdbOYnCIYy1VQccCRFFfeKV8Y25EhVh+3lX0zj5z6osbC65rTZsWrcR+tuv7jqNwG1d77VzxZcjhohFvINB0Gk3939x6DOy9EtR83uIa6pPGUup7s8yevXAX+Adc32UPJi6lq6sYgYTPWxl/zqn4CBeU18S/3aqt5KVQLgiTXEEh+165fyupT/qWfgLoHkGLqM+BLMfpr0HwOPOeE0BCy5DlNVVplghcqUTvKyhqSsSNGngyUYqNyLJvSNAXP7dZREq23i9oE/OMkayNLWkVyazcCEdNvxfPP2Wu73fTg8LaO8XQJOtcjOne1YKitu4remcgzhVRDAk4gFre4aCjKIJdvpWrPKkSQ6SLaFsypSdveAFeKQrkC48/nzP1fIwwH+pKHVIwzHjmQX5azIGGrCq8mRgGzeWZXwU9mrW7EbWUezeNxA0veSu2EYhmHHlPywjmrU7SLu01XjEdFs4+Yrk37r7Itwy6xK8uugN1ltToYHTIdvJilYmOxAeNhLRNo/A61rTEycBO7q8B0doOdGgvVqwV5fQHu5z2BJlEDmFyl5TlZhdQKtP2bBPQ1CiRVOgKwGGycdSSlmwqAyZ6H/ZXuad+dVF10Ue6O+RbyVvu3g9D80iOHkYxqwgKOMGPhi7GbTNqli3EfdFkvH02IINFztnqJAjTfRtuUH4jLRSFRMxIKZTKddQJMxDeSFGS8VrWe6aKDj+dKRHBrB4enhF0VmxwySx35P/+Rq07tQBUNFSc3qRaY29R1lMF8pRRC4YQEhwa4XT2voiPXyiAcWhcwc2Zd9mpDU7KARkQGWb/tbFgWAVuJ59lSfRSRQ8f2nKO9Wmv9rMfhEnNJdTGGBzMHuDz13T675paHMjyqXIzbW93FbX+MwpI6SHPIckLapemQnsj1QZExNlRwsTWDE88jvQ/P6jnkKaefzJgbj9J/cylR2mqWv4bFRtT+nQd34jqfuoYKT4RuDRPAgw6kx3gQW3yWIH5Qm0gQ8cJkwfUhnET8DZmZmUj8VSpYrHfpVQ+FxBI5nN7KKhad3oKh46C0X8xA/Hlvx7y9LXMMdLHwZEHYtNe0XeraUjsAi8i8iQOA4VoVme38GGRhaJ27DKQNjTLm1Q3x+i0xTMiRdPIyeemRl2J0PEHlaC1FUd6kzHBi+T9GsfuaD+YKWox7dQaQjXFEII2yI5pnsFUgv46WUJ0nMPEuIM/NbR0fZ9n5E/RtVEVotOgP/slO+sZWqbu4ADW9KJC0aj5qhiiMuz+AZpka9NUrZrH2r8S5xy1vtEc/quNZfBQhEKTrNRCZjOiHd5Kr388TrYMHUp6/XM95Tt2GXm5MoyFpeFOvscDKepJ4jpfGqbN3odYdkxBDY+0+vU4N9zmnCacA/uabWfwvcdr7Q0pJlnkJTQdWWe3s2txVSizORNWHh9MgTgRGJxCauH9XyL7Y15ZaGEKoiyQJWK0PpX8Rc18kvP077rpat3ksF1GpZQHLdygNxkyV8p9xedbRAeN13osjxA/ta1zk7/mZSFhmNJcfd6f9zs6sEM528ceQBvSPSK3Qm0CSXuVXfOHlR8RKgv8OQLTvVrhVFvKd4RZH4C81czDJ8enxzMJxXL22AsBZadlEPVxIAWNutjsrtzS8BSxBBeISmByH+Lk4p+CK1VwIjORy0I5NbnMUCChPxTbjjrDj8o8HRDf7aZx/wd8bYxibW2YpS0XN0c2OQfBSKfiuidMm5olwA3cRvXZhwCPefxnHUscqwIz5VPjMqfRdyjyc954PT/L55+rzXdRXnwAXWw3iJv3mhUZLw9BYktsQYhmGY8ime8cKsxPtSLpQIFkEFKWY3WgHXhAjgefLC5SHzjldxVO8GzIxXea09JGnUc3j2ehepu6ow3amc+0VcOS+cVNoexdb/KxaVVsdZtN0zWIZPtPJ32vTgILH9tij8XG2jVLqWx4Y7IN60tJgPkRELHzGk3JwJ/of73mlM2j8vxWiNzGUrOGJZXFPnIlYoBvBd7/EDl1bMtkZGbg93M48WYNC+Sfrzi5qjXf9xh9eT3DJFFH5h1EzMn7hdOxwmxOeOoMQY6+jjIOFASBIiJfehM8z+l7Pta43SS0dG/mu4S8VrNmmUt/nTYxd0wnPuHP3kSGoNoRBbObuQtIPo8nzZgZHzwskSqOMokg4cbZbeNhmkcw/qmQSHteowmDcxlpo6/uFxU03UTSFbfm2SGlnM62lP20PcVPpifDILJjr3oHaKXBK7NgoexFY7RsAPdo1P6ZHGClMU2pBhnnLjNOfTt9VQIuT0e+83UJ+UWtJLuaRCpIPV3jQpCrwDXwrNYxITaw/df7MoRvaD6+c77wRGx0eTsawGqHBPiM4hADJXIlqg/JypPaoU91yby2QFloN/4zFKPFs0XwRLPv7VgAlfmys4J9sA7mWcz3madiyX0wuaHIv+K8oDrsBbXKUr9B4srZzVSeedidNlmOigKDdo8SMgPpHQO3zIR1+PvUKw5uOym7QQhsw7XvZeaN03OCjwuVTR/fFztQ1/lM14DDF0YXUHC3PMPFqAalqzzXKs/7l8rgZKruEuFYXkeZcfHjeF9ul6qMVYampX9tABGlHjOGHHlDrSnE/ffDokHCQDCc1U6LsbwVyJaKpL7/jxq6TvfidvwK3QezCbQyFD+Mx6QpPdAcUwxNAFnwa/4JTIFJSmWyxnmwwkNOg+c7gT3ruz/Vlyn094705ZVl4bFOHvh2hnFA7efCFvd5qAqjjbA/uodDEyNQK9RVQXrM8NXq7C6zll5lM4cR9D1kvuN1/Ie9do7mv2U9y8WDc31tBjkKhgyKBe3ZyqDr6rvUXy1NAeUrI/dQ63BX+4PDW0mRmkrToss6c/FqlE1mFjAY9Ab9G7S16CihT2vfkQ6e88aCFyvIwAPv4Lkix0hKba9rQ92JYDbFAXNLcxmd74fJEA8UCRy0vznGRRzO1QF60UTtwn8KG3Qkoki1pcxjmLHokqEGy7fRrbDAR9cfptN2M0bO5jvtQvv/H4kB/4g9Lm9EtbSGIiGhpXF4KAfK7z/RQ375yj6HwZ9Dknk25ISpuofbSrCydFl9Tt+udgEJjou1aKb9+5brT+4WeGU7Om62QQtkBjdjUDdCxWhR7nmzSnqiOFJNiwOGpypltvDfcgjsTQ5/msJVxE9D1O5gJMhmEYhh1yIxA+c9I47YP9B3GP13HpEnTFcNzmdqDZ8agVJFkUqNBIr95vQtl72pz1XQ9tXo+uekCq5kOsFm+KH9o5YRR9xDOcynYfCJFvJ1Wu/SxDk4wnkf2SsyzEBvOipr2SKD2Yze0evd7zzc/16UrROETBXHoKWBBAlIIzfiXClvO6XqVCjKg+t+OALS5bqurb9ep/yKp5dDEG5Ii+NITLfVsFdwX3HLkNTU4fMBpwI7ouhVsz8jlkzns8mW9PFEoQikpLltTPQnRfWjpHQz82Cqw6o9CQzv3cMmXkhXfimfxJfvHMq4tWdB6o46KwAjRxENkXT8fZ1z3pyMQ222Zx/4nXZMaFZ6DOlj4D2cgCMVnY3iFIR0t6QrFAy5w5S+NF3pNIWni0catsAUOif/wNhhlF+BeV/F67Dq3bgNqIC4aDhWAPMelMm87csSFi9KySwKiNzZUPrN49ut71AVU7GH73qkpKR/RgdBztVqUivlUT/g16yXOwwlxoBZLytIb3Ff2n6Erj7xlG/2SwlJHcfTOSbgU7g6gNxdsoMOJO1ZLukwcdcqW85kMkLlePL2iGjWZ9sdrJekhWbArRjKPAqk4QVehQ2RnyknE8rQ/1gPy/YOjMAx1HdGab+qJeHMh/8CbpZwdDSBWp37gaO7E0896ywanII3+DSuvm1B/IBm91Ze1Wrplg4Bic/biUGKBLH8qhnMFPxAfN0lCs3jYzYbA3xzO4J3qfp2xRJ+Fi8yzlvkMndguYs4goCfOEIpA0aWqzCz75EuiSaPpTxA1O/8UMc8Zr9T3OmccY2UTwiWG8RTHeALuuZOW8M7RdtPZF8fBvWqzvZ6sC+pwiOMPk25pQWUGWmZerDAs28tu1DJ1PCGWV3W5LCQFbt1uu9MQQLAZFlmADQnR7vzZHpdE+CgjyrdAGQ/Hc9JvqhcuHNyMwsCRqoMz/n99twobJRhv3W52+6Ea++RmADXOw+nsKVWdg9o1fuVsloyneEjWVwpKgILodOl6l5k/7OFfRD9xj/9RbvAHxX48NzKyEPgMiYdiQ3jP0OWOfT/FIJxl4BYYlqW8P9hdCm3IWviHEFAISZ8aDzTHDqt4ZX9L1JhGw1wUSBXSr4yHmOVvC8fzHkGFyUKDe6Cy7ZJ2tKrQTrxJtEeaJekxJ+EPC5HgKmEPMrjWgcT89mbyXwckapGSr+rYPF4m5PXqVIcLhgGBuq1UQgjNUlhgUVXQ3wadHDc/mqvLsW+jGVRXydEc0rau/j/wbgubMpeBpdNJT/KJ6Uf/b20FmyH6mbjFAG5e+euYdVR/X740x50olC77pEt2LNLrgN8Yz2sJ9zq9Rj2+Ri5muIxO8GeQ0m3r+4fPpomEYhmHYZ1pQBvODvFGlexxkLusL9rg54vHMWldE/81EvjXdiwFdC6PMEYsjXoxvzBkyIHIURDV9bsVOrjkL94cKdTMfufJV9wW68sWqhIVW6aP0nd3PJD2SjQY5KZpg2lVg6mh8Gu9BIRemtWV/XxVCW1wC0cYe5c2wfl7i6nJNS4AljJ9s3SzIL9Usq7mxy6cFsn+AdnF022CIoIe4QAqQuC0TE3/p/I+z508gSRtYI6zAludCODc+CLk34xVY1HN3PGXGLQFmFaBesEvOiBr6ZIANZWPm6uOnyVNa1TZCbe4gjbsItKVWUGIljce0woNf2XaOA815/Y6VqaPQZYOfaUGZIuxnGjWqKMM/lLfSEjdGWU5d/zshERS/soxyNyZUVG5Bj0zt2oEUcf7tpBPxRvaGSlCqAV2ExVjJ99jpXH+uQ4IBVylvy96r/N4cIrrgdnq3EnjzjBc9Zpp/iw+7HaWUBIFCGxH2DUkbohDdNMtjWHKHuzInpbGIFGDXPujj72NVMRNiDzZqf9jcMh5tdLIpv33UD3qzE1fNyURG9/CySSgkSqNFRyARV1GGJ5BNY3AZHm5/Z5gnbbD0noUDKmqd0De4FC7hm8ejk07UAOyZXlSIbT+dmvW7IMcBONw7q2pzRbTrKMrPduyGlhRLAhegmJtJBsZvN1zr3aNPzA/yxuLRIq+7owAvDLVGpEqoA/5n8Bx3PG9n43IJ3olvdVgw8nIaHvi6eczPxHZbggM73JrPzrT37c80YhqLu4b8y+YpqNRlcC2P+aZDdpsJqWUOgG4JCZyqV9CxWMNh6uFXz9a5BgWflocmKkhjoXZUJ/Xh77t6GkNC4E5tkELTSoQbRF/QkN6pziFz+zJwdJbh2wT+GbtL2pM9lC91vCx33uyjLcpv2AKT8wzOY5GdZHMEKOMtg7anQto9lV3LNyQBwfCKkaslpFuB920Zr1Dj8Pj50f/Jp7S45WBcQo11PwOWbwHFmerVispV7pXfX3Dk0kCkPLDtxzSyv9FwPZXuceCcvH7RoTs5fbVXjZ2itSeKEXGDDQ864tYCTOHFmfxlQMWBvQAKi7WiuV7xJe3g/PPS8gn86ZdIb91/KEbMzg+eXjhrFsNMLCTsHzvXbuFKUjk5mr5UVpi4zkj6M7GyVOm4iCHAhiUefJEL5JSEgXqDNpSmBCtiid8kOFbMrdKdRWuaa622tPGtjXAvICP3Sv5uzVX1PQIOYfvOt4tmKhGStbd3nXDhMM7G86fZxW7WVxMIB7T62ka2ZSfiOY+FguYgtp3nc+Dme6+4P5m+vzyM4wFeixRVHtGeDgnDiy66TF9CTwSwAEykK5UKI/+rbvdo2eL4G14rZCcS04IYhmGYS3/nNFvUTzm8MwOvHtHi8K8rilfGDAaLuSywq4ggzaJpTgC0nESb1CzY9hE1eAcwatoTtOLr8jeT5GWjgB3jGehGw94JQaUCZ/uxoqTJx2jnl6jOMlYUh0Kt/MvCPaYf3RUS0QeGE7xkyeQq6QAXlVD/HtKet+MOTl7lL2O+/ceS/mhzrj/nM9dkxmTugG/XEXhrXglTylJoPK3kNMlkqIQITPftHqKz8jcWG9gHQUm9SK57x0ITvm7dG+kfDexaT63qV1w6g9u7eSztGhpv+qhhTrVDRyvpvP4ZiY9qSCBMhSz2GU+S1yu2muAIMChSZhCamuWhHtcWz+rR6XUT27MWG25eOeWQLpNR6HWRH9mOb2vse6ZkzMn5RHGrReY9vH3iE/TWSxwNsaQoqNDnNhqBxmLJ76OsBy2VjDpMnlD/I+rlxPFlrZywRXiFHO9h0LTBwcKnQMYjpC9yfh9mP09Eh+uGwwIlmfmUBZPzg13wlC5BjVaxITUvGXRI9S74Bt+cdBVuG2vWAe7PU3CbkPkx9hcqP+vr9Zbt6yY8FHglfe/UUD3iFHjmglFfSujIL3hu9Lzxhmd7tyrD7Aea2bT4F5xZc2riKlns4nJLkzoLLOQuf/RBx86XiYuuDmt/sa9vsfE4x+4ou6tKpRpqVR3DSpB0zKxuA/6e74LTsz9DvBQrF2aBwwYPqQw76xMPZCklrmg+oiqffiE4zUIqWGVdIJc4XExra2xea6tsLjFqAyEnPslZTg+IdUJox5IGtv6kxy1VzQNuOsA1o1MRCtsqIc0SjcQxRa1TOe6hL7gZT8Mu6IbYR1rZdIvRccQK/1vwKkTqca1HBZQ/PzpSto7jeuLn5JSsmCYQglLUflSJsxrQjGElpOQoJf8U9Jc3QzKj/tMjIJKybMUElkSmO6fYp+zOU8IQ0WnU4IU/f93Gv5vBE70kwQFlLPY8wZxNbfuAjW9SIciYNU56xEinMmIJxmW/nyCBb7bVCa4GytNvSU1lMIPwLQjc+HgRv8Kk/5bUhH4FdYEHQJAXwKPxIJB8uXd9dZczAt+jm7Tx9xp0N5MMqWasZBONzCmoCZaAlisQBM+8yQ8u/cYddfTwKSUX9P6MOBY80xKikhgQ/cDcbph25gcnN7/4xuN7TBWRCP4RAZrXqEbf0CeSXFEkpXSAJPCljiK2uq/Wn05Bx2+v50vLWs7Ug/I18kxTuUxvLJNe7jYC+XL1TZ5YgTpXmDhRftfwZxMLJiYlK/1WcGEGMZ1Hc2MQDsOKICKktM1m+1zfp3tvtPsCiBxVzvFYSpcwfI16PhhJiRQuebA9e+jJfBxOoryRBxbnIcuNQxvqkvmtasrwJPUr1slfhmEItT+m1EsndTKmhEs6xWzG74tTNVAmh0s3dTomm8sItXDG0RMoRU+Y9eEONWvawZN8JVXagRNqZXXao4so1QsdEJUXODGHN7hlbhzhnjzzBRuF8h8uSHDARJIxxTesMg/4TK2c4UfmcIGfsjEBIaBZDEHZqlSEjojMCQPRpCRMuMoyp4RG5ZIysUN2lC07k46yZ5llgzVWKo/YghZ5xkVakwHXcJvlA5dZK33iRjbQN27KvdGID3SZfvDKg9IJdccOmlEP7Ixm1BOeMjgWHRPmgzoyw2fqhpn5E/XIb/wP9ZRzfCA1/KrZU7Zc4E/YRI4m/4tNwb/st+SRwfiNvMtD8gfqCYX532wCE3WfFAPfBo1nxrdywSLwafyHHxAy3AQ+gioxOOMDlxhD9NBW+BNNB4bklTPncODYuIaE45JL13ColywhXoK/Z+9MCNyjOKOgXXKX4ntghWiMBeNy28cjtK/ch7YDteTgOIN+ybNjDmdsKZhTcwsK/GBzw3nDgXrPr+xPWk84TF8Oqb7jt++7uDjgmpdbjjnewuuFSYhfoLpcnCLDy/7GN3LeBpAMqwH+bVsBvvMWqIc5cLeicG0NWA4lAAG22kAqSpAzpyKThx583ioavaClaFtJbr1Y55kcmRyZPGftL3zTw4LzN12wjd8WBkvfFiujk19f07XPp19fG2/F6X0ENGzjZTikthRtym2zK7e/OkC549Ct+OPQXb6abX/7bTHcucPXxXXciD9t+w9Hfm01k4dTn/7vd5VxejaCSqRI3Jkg6IXpbbg1Ey/Dsxw7pMUMGCsI4wVhzFRa1CiUgcLYuVx8DL+MfsW0BIJvgCDAIwreAHMm4HSlAIBMATZQLyfYYE90fOshEg1G0q/kD+Fyo411dD6U480tk8JkiTm3mqV4cVSNJ+bJpSmf+7W1iYV+wzBebpF8+k1yd5ZWceafejza2CaVK5fbe7aOa2/K8SrL5MTfZZpbW0jx35dqPG+ePHrgc0f2NiGbdEMYL1gkzx5Jbqu1ioOzevyVtejNu6neR2vVu+1d9WdRWyYz/7nSiLJGNd76VM1ZWPNk547P/fNiEyuvGybjFRbJtz8k92BlFRe+1eN/LkaGJHHqrqBnMMkoE07lCu2Ztq3iT2mZ+7NVjzdbxljqN47JUpTGy7ncl5Mq+fLbOu4589y9pXK8ez7O/bNMzu1sxqOly9UOG7qkdpXiXWaRe/esGu8XiRtv5smNJ6vxKj536qJOTv21iQ2zschtLDYU4/1w8ePLIvmxsR7Pk9yTD2Xy5MEqjs0tc8f26vEPk+c31C+yuqfwWlOVUC2fjHhDjqM1STq1OkRzdVoMbKWaermScuBXrZQur2vMpKMcD31LEj01h4Rq+MS4DTkGdyRprdURbNdp0iuVMfGwWJIsVdG5+QK99yfwvfqd40uUcY95PNthNeEc+1zV+PBJmX/0zn9V3zA3yrg91mzFr7C71oPG05vnssHyI2eP4lz+OEEf/BmMrzq39c7//zZkgljvODeFYN5oXKMF2l59g+8Pb++9h7fassX4e9M5rOy9rJzMrO8Fg9zUBjBIJ/+5VOE8UzxmMzN6At8TFRZqSdzabf/t1+ZuJl1Of5ev4YpU8dwo7nWr8mp1jEOg0qvtU64nEXX+ViCqfQoeEKZCHcu/qFMwgjCb3ZE2PSggx2Sh9d8Pe+sNf765SQoWnCnGlDdKZoFf7IyBkliMc1LIyTs18W5KZUmcTf6ZHvhptfLugB4AGgX167HG0QjkmUSjkzQ+2YG/m4V8YMRkz442vKhf3A8JS5/vhf00Tvb//BjUoKk8M62mKpxDocXCDE1rxVEPHCkVtbOjKEsGuiT2dD3UIh9l+y7K/6eBlMwYnyk948wZGRkbF8SYKK80GholqB10YsxwJjIj/E5wwIGdEvgnjffUvRU3LGw7yvIDhiIrp6gTtXfXyAuEB3cUVpcRFegZ2wABXEE2iEdUlwr5EUIy3FRJ9Xoi6gx9im3CUQ4BY0A+QNyDHpFXiNDhbsIqEKVCb5Qm/znZye+IMUE+QXRZa90K+RnCKdwGZIGIDUbAdkYTyxgdcoW4zYx4vUJ+h/AG91aJa2mIyqCP2P5DMOGakC8QT1lz8chTR0i06MurpDpORB3Rf7EdcBQbMV6Q2RF3iu6QPRMhce+FVQxRDtDvsL3hVCYHGGfIdx3xoGrvdsgvmXAD3CbIyIj4E8YC2wVNrMG4Ri5ZBNTZ/SNfM+FbuCclrN4QVQt9j+0LgjNcK+QxIx5Nc5kjP2WETHHrROvWEPUU/QjbKc9yGDH+Ix8z4t7Q18gfmQj/xL2wZwVRBvSt0mQ3WzkUGAfkQRFdVF0WyLMiXMDtBakhYsUQbNNOF2sxbpF7RdxGdXZHyG9K+B7ul0pYQ0NUPfQPbGMmeIPrHPmsiKeougTkB0VIo+rOMdULQ9QN+j9sv9kgNsF4Q26KuBvQS+RQIpxw/xRWB1FO0B+w7bN9+XeAcYF8r4iHQevdCfKrEm6C2xlyp4j4C8YK25HrYgnjClknB5cSdXb3yIsRPsG9UsLqDFEl6K/YPjLBAa4e2Qzx2KouNfKjIWSE27WitRqiHqGfY/vX2cohYXwhHwxx36IvkVcjwu9wP1FYRRFlB/1GlXiRv4RxinwyRDdVW7dBfjaE6+D2H1kMES8wamznnS7WYzwhV0PcTi28viK/G+EL3B8lrpUhqgL9B9tPJvgvrhvkiyGeps5cQJ4QgoXxJ3GtDVGDbthMNbEBIyMTcRfQQXaIAPdnYZWMKDP0FluvXuRvxJgi3yEegtq6LfILhMtwOyADInYYEVvRaGKK0SAXfHDrA3V278hXCK9wnyth9YqoFHqP7VMJGlwD8gjx2GsuEfkJQgxut4rWzUTUBr3AdtJ4lkOHMSIfIe579IT8AREm3GcKKxNRRvRLpcmfZie/CeMXeciIrlFbt0SeM8JF3N6QOiImhsM2azSxDuMOuc+I28bCq0d+y4Qf4L5T4homohqgf2L7VoKfcF0gnzPiqVFdSuSHjJCWRkdJdTJE3UI/wfanjmIFxh65ZcTdBL1CjkyEM9y/hdUpopyiP2J7V6dycoBxhHyfEQ8TtXfnyK+ZcFPcLpC7jIj/xFhjOzZm+QFji6yNDy4+H/gvocJ4oWemJnQS1c+VvtnNPqjUnHqbP82z+0g99I/OSDV9UafKmz3QGanJ3Jv0zfzSis5ovunv1Uv9nfVq6vLMYd6N3Z91bk7HjJ0yv7e82c0vY7rZ6HpnLtVsCqaYJ0XHN/thijbMfwX/f5uOhYXGJ9FQwmwGylg6chRt7LUpIs2iyqv0kuq0o+RSi6dyGaycSixxccoX6SGXfB2qBZpotNh1OKayUr5KD+fQmpXSl1q7k+tg1aa0wiI4i4Zdyen/xEovPItO7HMTL21pGoqiNh4o4RgasAAIBR4B4Ij/PoRjODKHCVXouMQmecTv5DmAtXbSCaxJBDZmGc9k06Pc0S3hw3NrNs8i4U8GN7AAaf9377bPBkYqAvNFA40EqW/7ZHFbk8SGHbYiuSO3adyeCD/Z0h1GPn4d+980HsZd0rRdoLuVkDFGSD0NdUZdBAA7KfAexKyEr+xaZDy2fVeNsOfWKRwBXlDvso9/LvXd//nRAWu30L+9qa/6X/+v1TEq5ZBAgsvFjvTju18bp2J//6vKtjnALl9duZLbNf6TyTC8bPIgh7lu+ltVhacmGk6/osLjs+uv/eFpm5WBgeu3KL6zZXPYHvD47OdVV3bn75unees07v+cU6i6yY7Ltu8Dx4P/DHH4dteFjevHj/J1/wIJmEyag2spGZwXj9xB8/IOqC1ap2A+xj4K/HBdsLMwjnQiI+dK5mWUG9W8+ieDuUJaeKEW/1rfXRpB7HF27YL04WvLEHCmS+7BitdpjaoFJXcVWszhAoF3kgNpd6P5BEXJmMOpsNvZ5hs+jas7rdYBEtVUXLOPgrVcYqbm25g8JB9PJ+KtOGsg8856TZUCrAovwHLWJnOo/3HEBoGfRZH4gg2UnU/WqRxtJ9lHxvgt/JpUlKk8qYtfzR65zH11rpENDsKfk8snAjbVoYr03D6JH3/Kg4kiJ7tnJqetUH4szr6YVny7DPmmaaMI2rU49itt2fbMbGTJHV6lEVsrFUFLnC6QlWQ0KnpnGitJ+4Ff5xkdmzyI7VWZ8RQ9iYNASBnsx8brQPajd2xqbsjDAuLPg+LHgt3NYdCEM811tOLLaJRLsnfG2Q2cD4mKX1LLVatHSFP4t/eDATc6a7i6hb8EJnovglLLj0f2ToZex8tEdl3XkdmlZYVkLh9RAgatiEjRZi1PPKKHnMd8J44GeWhpuHRtnGxs5ydIqJ5Z4lNz+f+FH3At6MabI0TXw8T2ZBWjIpknRHrNMuho2zSfT1q9Eu9Dtyb8JrAL25r2USbUpWSrSrfOVgf+CNM/vmAX8B6DLxWp6atha+XbA1gw+dHZxISg5WHWZX8FWAaP/PbXqCDXJEg4L3O5x+l+v6h2Wu5mdvb+uqLrW+UkamFFGkLlWxKBG2rRnGd/OnIR2wZfibOjrvjfyJNP79JoRgAS4UG5etGDyM88sKnK1LByMNnyJv30ywVMZSegQDVDB1Z5K9Zkzqcxm3dsTnb2ofQKScnachZyTGzSV61TPlAI3TDJ5C+ZwYofiNyEr0UNzlhujiJJPbBM8GKKQ89+1UyTmYar8SI+i/OEVUO+08t3pCmuqpNlT6xw7jjD8Oe6IknzanRa596aMK1STSpeI4qRlXNPiMUcXtmKlUbPbsXoIgBh+fqsoJEhVzuEVxpB8K77KrB1AkNcppFzFa5Fonmnui/c20pet2ZTyG9MK0fCcnkf4Ic3B5iN8jVh6SYDeYDjZY2YaMrZmBG6jWGKja5JmNo1wCJETa3JkfKJymaChCzfpthR7bT5We/BRS+2brMqnOzXubvSfZ34bRtcvC/hTM60JGyhqdQ17X4E9RRfbMZuKS3sd4ZmK6cy6vfxXTUS6GsZoARoCpUI0RSpfPKsDc1QDPUaCoMqgH9AMO4mSLmP8cVot3IWOOfF1/ddAG8YDK3izRm1a6IbzupWhS2ZtAbaDvJucrD12CVtNPJuzD3PmvK2sP3y6i/eA7DMs74t07LjdVG8wLranmdmmckj30sovjWzNk84T7Ld7GUXETDY/s+BcHpGeR8TYUXHXsQytLEOxi9LwF3CHjA1qRsBqpUr4viZ8EISgtGm/DRp0PjZV+Q7LGYYDgy6/KzMXBm5p3iGveNz1clwpPMtnMFyu+T/XUCW4UHxTzH+j96l2xaA768AmNBs3gtPTZpWr103MgDjKFiJ3mNd8wX+fdy84DkorqGmkgF9OttUC9nFU6Z9hRM+twH0TxoQlitII6K+sCUC13rKSWwaicC2m5dbj72IfSmTCzG+7N6HhrhR18o7hKRlm/16EduBgXb55V9/3+haYpzwqMxTU7Kd1zzQAfk1UAQ8fFPPBK+E1JrIC0AUcmJbUMjfEk3fDFZhSvctYMdMXs2BQnoGlvD4/nXp9Zcbt56v7D6eTNNnUuUuU3X0nDGyDFQ99/SlLr0vAzfLY5z7jV3zh9YU3LKwYS8yA0oBAQ1p3D9DstoONVp7vbXY0JUW9Qjn0dCZTnrBTj/tHWvgyi0Mk2JrOIg+/5M0veQVTaprdbdluun1GnqGBggPgcxo+9LISCKNTjXY05deET8m3jjCvlM32jF/1CdShnVGLXrPlk4JUw/GucxyAobtJhioIKTJyfvMAld0mKusXCGjzbMKyBzSzXIa1gxO5Xr63YuTuRcWj2Uny+pMZcRVW+yZUIVuHRQr9d9JJytk9QviRgo3XxnX7u0rZTWBTy8pvoPYKqto4gJAUmGcRlW3RYboDSeJTTD/O+2hZyjQwjoh/U2M0SZyaEqVb7t06HpqSvSB3qT/JOLsLb/Dp2DPPJjgYw2+uUYQ1e0SIbPoTPWnfuCEdxwjxSPVyy+FPUSBpaoj579belYIwEFWIo1im0EsdVHuv9lvBbZReEubZg4KSP92P2R7Ucw31i4d7b4ddkk1CKPnjLRlB2k8plnxMr9jkXNwQ5tpWryABJEO5qbtVbgLT3vtJ9fUaHzm+Ikjw6oXGqDzLEG0SQ39Cn+2v2nfU9nLXHziA83TEmzeCPgtxh0KGW1KA4PfjODv/NPjH5Gx5GZLUyR9n1ujBinuLD8z4SRjjuStCDsKeLuq2HPQ8vDx9lJipOg86HtCszQVHRIIaVeyeY49d+js8mIKh1sFFpz5HnM2UM2EHO3rq8fLzzIL1jz7ZvU97BgQPz7nCHY+iZWKenRpKPxsz0P2o3UU2I85w9et9JjNCLAxjiyEpQ/KSFWnwTArRyuSgcNEe3vSzSlVguRpqHEvFxe7aGJGieXQot8cA3WOyqGJ1O8NpxP/M/XDDuJw4PpwlK1+/bY8T3zvB/o8V83wW2t5+zYZmmiZUhenb+AJaD/zzV5Vh3Y6zk9E7YNfr9K/IUOwjq/E/tsKdHeDMb//fCw8izEwj3Dw5sT9OKoj7CwcMVHmEXZeWCJKPeboRQPXjODUeOcBeLQXC+8eDnu1ane0aERAcHyp8169ZHdPwv2HEh4EVTHrNpPP3yQ9W7nCFsvgVKYo+HV5Ygqxt5+1DCmu+tL0S1xHOgwVD0gAHBRltfbyGxvHb/ck13pq6k+cSuJpUB9GsdhFcmtN29GmlDvoz6pOz/Dwt9hjCOzJEdro/rTV+tY+iLhCpMmRDe+Yy7f7a1MbFW/Zi6H4YU//hSt+NmIrV6u/jtf7M2yiOBk5mn78/6Xfy162le5R7nmdJnrVHU4rYt8P2/DMqmJGfWJRygauw4OsRSmh+pkCIumgFwA0OedxPlr0RtUCYRu9JybYSBHsLjAmdxTV1vP0oikLgzFYvHA4NxM7lEyfNQdUBBNFRQjRhC9Sxz2Fb6KxrNjOy1GTnNqbwz7GYHc7P3j8JdqIzY/EL7JFapmpTMln7zeNM/dyvykhocYs943FAOYin2MOn/Jtlu54kzZa82THt9qBbmHPyH0W8kgpIH8vi02+lLY1+6+2yg0x3t5/MhNsqSMDZEWtvGE6BIMRkl2rmdCXWZwhZw74xN5QakiNmSK5oBKkz4wGz4wL9cZzNZXmZT6XTjF8bZQpvjpderTQ2ER9ZECLYoZonUVt7JGroxlBOSUYqPK+GVxS+95zBWnm5UDXejTL9SU9DZeLINPmHNFJWk0kDBRZy6QHJ6V+SMdm5PPmEZs4fe+hKlp0EIQeCSU7Q7JIsLfMXjFvmxLrIZ4HjpFCKj4ZUL+VAwbqxqbo7D7NZzPvIq1KKYMBd+xpGiAMGsfkpCAYv6VmCjoh19oVbuxqBRU/8AyDO0ld2U7pcOTLEgOhQd6qXkzRTVsNUI6ykxd8n1uWPItXhf3dyHn6WE92CcK6tufRVZIEiYCVPpJD36fKojbRdhWvlr4NzlMMsqUP4XFaY/cGuCOZ9DVzFkNhDeIA1LrYhBdweFwmkxW9MIUUqwp0STSTriEDqWUaME4rODX1ZoBrvos2iQw2sT0ZyvqTtWS3ciRlE7b+NBU2NjfvQaOuBkvZprtti2vePMhEI+YGduQQIq59KHpnUDLv6QeGv83z0b6FNmK6qZA79zSq4SBJIxsJADqRpuDFgscmI1sQ7TTHR5c/GxhIOe7X9wZN1rBg5KH9yRwPy9RWD778S6Ih7sCopX2smYhMYEu7Ynu7pJQR1KIKQnFuAMrSSuhbuLB/B1LLkWTQ8iPOQQQetrhgzYuxyGgN9EcaDP2sXc/+UVo5OsZciyDaEvHWvxMIu+/0CC/VYg74Q+thpZvSTMMx6m5rap7ZUyR/gYF0AvVS7iS50ueKFWSamqRt6jeSlpyk9GhpYVwQTlYuvSSyN5P3nJnJqf0vRBOJKEKjPqXfccDFxtfEzvesCY1Gli2ncSTuqENEMsyWoB9JtO2CGc79npTes825ji3RwYLhXdNHHafXUN5DT9EMYxDk3crhJYvztZZ4TKh2YJLO0ko4e2FqvdeXaaYpzExpPoqxVThj7/T8GLqlEGHdbZLK7mFHAkrqVqJlgswpP6gQOydvS2gGUNdtmykWoyCx/mdPoNYuVDfHyIRapoAQ2XHcYJQjih18icdQ9sZ1632qjNgf4WF9StNJ4vnVfPQU1S0IW2ZLe8LrGw/QKrU9XKQmpfB9thBHKyE0HaYVNdGt6rr49NM2f+soguYQktGUcAfsG0dloxzNHMk0FeWBTrgNoIiBRoyxNlFi0Mhz12OjKPLHNCJd6+owKKKvDVsHFwqP0Nkraq1o4yIDyEkmaeBrZyfh4B4hQROEt0ur2NLrFeLVefE2h7VM4Ip/ERA9087vZjLRNfFqFGsjxnbAQ6hjx0umJvuRwjx/sZdz9OB78HOm4Dm/RIcCgVHOJvMag+IauIEx0uUnXCP3aFN0ZnkBNEjhU3KAxdmnCZRCvJX6UMI7gK3eborqwb/0YClKNv0tQKqT5wcsbDTUZSSs7brNKUE5b5JjUCr4L5Os2E6cv6KVUSSbK5nTuZkurhe1/IvsrtMN5+bRVqoFi7Z6lOyiaBt9djy8GO8tpD78D1PfpZgRmBaz7yhb6+eF1jd9d3NiD6P9WIWqtqCpJ4UMppa3gV1x4PYdH20V6ZOkfemBEFt6Y03E9nusLhlOw/04Fez2OMbwICUeufcGwXo0WwKtJfnuqIbqpXCkZJbofl9Vm7FQ57Rm8X6eEqzcxTAVMiLVcySghn1eSGuEWzY+Dub6k1c3X3o6hlkx6p/0SN0/H4/CpXM6G4gxsFiTw0g3glFYzQrXZ2OKTUOougm6XhQ0XzuThMdOgCXzkkpUVx5NVTXlWO6c1IbH4aSmDmIxYbUv4HmFR3XTWeTDqqMz9RT7B2b6nfLWDnFYyaTkqEGH6KT+YM1l5XccV8AiAsdUu624cCTSWxnjcLIgiaNuToQGmPS+dVAkS954CKGuBX//UT+e80kxIK4JcbZv1VPyA+5sjhDwYxWJsLiXQ1xveIfJNVbpCxRorCIXxwS7J5GdrPIFbvdIT8Z62eBbYSzJhVO3b56aXhYuUE/xCtE3HwjVvUBIPPJ/bZa1jCCLyqspSBDUfeY8+VHzDPe1hIRtuV+8b53npDXwNJMCyTGWx/ew5h3LNciz/jqk5ao01Q6ib7yVtvhCJ758nSypvYglNEWZfVGrk8sQsJzUbivKG0ZQwfTC9WUUWnBr3UjkaoZbc7vanh/eph1IzWF5DQc8sPHwAE2ylPTb7XHZ+UaCQmNWFevm9DvlCax+d4R8hEKkGGqxQxxohmmm4/nhUhqsdRkUcCyC/JT2gGAsNOLLU0WWRDPHWVE/Zf19ntLvjoKCKKH95OzWn9dUvIRyujzHzPIgSsruZW71c8cOSNbIQ7KxSipepNSQW9IaWaa/u297kSxHhEEl7BieqXn+hN1yfNK4gUwrwORcGQElBuV95ATDFAvgg5QszJ/Q8i5Qcoubl5UslnmzqardCCOAjqAVtRBllPJHhqqsZB6p7yNc532DFB1fu69hDizXWm5U82HjY8RG1xog5ULZbcWBQPboQdSQyTaGl74wscLoC5NQsQ/AGcEZhtqcCY7vAgtmJV5a1acSPQyMInIw6EW3JHf2yyHKrD9lmntZxqA5lcmiLEv6QOtZt0UItULcbuSV3/gvgZ14+5wQsiBSCjceu9zcK+as86sQhBXac+/hE93WbNtJjGpaYVTYvCzcKCPrhKaylourScYNviqjgDih/Bpt44U9Xl/JNyOFPiy5lpV9HId+DreIikYApmXvCtpmdlDJcUfiptZKhxiJpFQaSVIt7+yN7JBpO8q5NhjmxyeKnis8kLWO5qBYdtWMnbgvhx0RAOWhbmjV2sRHme0tUPlPhsxvH4x2S1hxYEyR8HH2Jag9U16abmnar4n4NhFncq3Kqo9TiPLndJAtR/MJvccZP0MTjA/oaK/t4HqEDWLKIaV/hPtiF81Yz1chqCJB8ZRSyDtJs/Htkn3KrklbS5EGuGLcsCABsofY2Xq+26uF3GGnonOQ1jCZmq2dY3N/MM/X3cMtMLzUdp7M+0aoQm1+v0TosgSfBjDeefesCzQeEdS6MY7xQB90PDAJC6IiEFKXQuGn9DEwvl0lD1LHHNSCxkawf0U23xpwhh9xJ3npQ6YRW7dTa2MCvtu7Q2iSPNVlUoTnJTTRAUsncjNo5t7QGA8ahq9qcpaZ1QjescQYjoiuLCgn7HtA1rFWMNhI02n4jVAyw66gnpsb9dM2nX9adqYn4Z6rd0sSpi+003J5h10W96ik8QD36FU/GOeUyYkaHTVJ8eV84Js9k556TzlTFwN4xGgnASqbomH6GrGFXD6mmyEIWJ88cp+lPqZKT5q2n9Gr/k2Lr/lC22oNnsLM5cSrd5+tDyg2vmoZgy4T+Ho5fUkCY+MbapZPFGQQBieDJcDoAdVDQdbACAr9qkK5QF0xDcmlSOPOcvoIe9dDBk5LzA25ZP5RifdezPBrJAk89ZUu5okpin7LJqMfckYdOa4lmtkaajp1QoACmwgDS6mDBJ3S9cgvMoEt7S4cA/b7DDswNVzUWb+ZKAT3FLvv6LKlPUZ645XaVY9NDbenD1o0AU9G+xcwBktyeUzxQqKE/JkYm6bCb33iQylfC/anKXb5G+Y4mExM3FZUVj3nj1aPRgj7vNW93/Q4HorXMsY784K+kZTM5NHEZgthmL8S5cxkkZjxNMKwo827jLKnZZq5jHqG34A5VnUiJbdKfY3xMK7ZjSxlYmi/abB8usGg8g1Q1sesG6LCmNjJbNAWRlwn1Kx2YeRtKsTtioJet8weCOYHD74LzBi6ccnrUSWnH7tUm2Wdl/7ioD+2SlnhPYs9V9g4eVAQwexwCTRzeFfQ2O7fh1p4G2HH1mH4Ui6L8ZDRMLx+jRnjTym+9wlIUDoC+7G3AcMfts8WRQ9Qgk4nNrkw7DmxSgNi1jH12jkTYCZ0ze6NrtqzgQ3rmnifIyY9rmO/YQ1E+9azwBmsjN00en988DbesgA73S72aqG+O5de8AFtsMx037CW4OlihuRaRduMbYjembWFml+cIntg/rGerNQBibYUxrDSqKUHxUPDiNtr4LwLOfLxsjMvm+H0r8dW1FGTHzJGF3oSADqYPpa8uByxGkFigZTpx8rsGMUq6dKgV4LEhJ29EH3vH8ECGHE0xrREOOvtrfAJ2P4+Fs3SOSKRqsu7aoqKO5Xi+XOukEGsvQyZm6EkSft5i27jto2D7k3M3fycMnu9Zf6/GmFMkZ952ZvfD5yt9DZV2CEbSL3dr7jCsqFYLVCM9OMUMU9kK7de17/5az3CRY+/ZGWmr8KNayFzT4L2rRbtXTDT8HIdTvmhbqj/p+xkkYDApYvg0UVGOSN59z5I3o3n9uWI+pi31Aj251ueNA5y5MsVSyHbnqkLEaVr9BrdYU9SuFpTk8VUrfU4JjCuZE6Rs6o/nY4HF7Mfsxk0Tt/L/+R7vN2fK9nbI+E4jNu5MjcDZBskV72ufPCD6YU50xcRDPH4r4dR8lbkrwfFfBkZYb7Ria8hrnxjcoz/Qvl8lzfM2eo+avZbM/DE0ZTjYhWHmKedzeHZExkNHP/+qhyOcD7zZCTTjzegLgt5LZ6iVJLM/TY4QAxkoPyNKDXX1PHC4VzPDB6oivo4IqfJdIfTdbUEOF5Nr6ygkF/5+p7nK/yUpDVwD4wR37PpXPj3OVOmYySh3CS+ZM7R8pk7aG/Wa62L8idT1Mi7yvbeevXmqNSzmnCjabJ3WpYsnMmJSVNem1Mmo4nj4T2DGDxPqNhlGtRT8e2ryQeOSlUC7MBFmU/4yMMcnlD3Z2m9Mh52KJj9vvr9w3wZCkmv/Hhbi1znj6OfZqK0MTNHZRmU8xRFIEceU/Ja+AFndIEqMZDlLIuPK15OOI7NtI5+b4Rps8++VAuWJfNgLpRrdb0bVgtOMqXIxAbHUrV1N3LLofJZgVptqhAUFMwolAxBnaTmiGV231hhPXLj8zrQ++AVvcqqLd5wb5WxzgPdSTX7oRwyjlIr6GN8j06QD6/Bp9xB7ru05PTpzJgjL3Iw4YfcHSwhZ2uZ3IhTIfuwdFLsY3geaPFZaYBYnRrjDeiI4liipeTYgGeKMCG44ifj+UqH0hV4zH6DvbsCBpe7uq1pdULp2pq81+ePSq45mzBrZnbzF+8qw9LDhHNmwdlFlu14bQ2sUWMfMOlxQ/v18jMzWcvcfhyv5nU8nxzAIIvzXEX+KE0bJMFn2CvDQmsvohBbOV4IqpdA8yg01RmuVWWDX2lDNfOb1vLGe4T0KpUcyqenNC5xBFt0qJzYc4xqymPGItBgoBEKh4mXJbQXbC9AsmjkkfLWIGquqBFVMGYG6y+LuGmCy5kX3EH0P2sf9hLeN0+yNPV00AVQPeLKPGPFAHsF91TZlMpKjh+tPuDfFgo8Klmg46lJsB9EcWqpkKwBbtZJ0eQb9h/x0ipU0XITgiFrt4kZB18xsB403jh2TvUex2gzVaUpmIoRuyTq4ZjNO+L6f/Zre7MoQ1hnZYCs/oB3/siPCDJzP7l4bfq3I/jTPisb9REe/Xtc/+cL4zouCLZT/Df89kUAp746e+AP+7gY4rW23jz+lAXRbmMVxRYLjYiUPJ9/Ez0H2PpFcmufvYHKLGbb/9L1hjnZ6OOvxUqBfRWDodAoKJlrbDnBT1TLL0uPh5hj1QvbBfhtg9y0niuPwJx99DiFR5fdowOnXEg9ULHAouBuPSLawEE2sjih2ifTw3xsaxNn/CpoNs3DBDiNaZahVn0iGpNKhWdFRBPHlkZQEmL/i6NLbC2/mgQShZ2v5TaZTXItsAaGeuTobJsCw4ZPWbEMU5ua7edb+yuoohMtASSK5eeLT2NZ1lWfu9jX1rRrTQQH7D9iq2JoF8P8uaoNTcY6a9QhCJ1xtGxwZw7otB6VaqTu5A2ohdDKjP+XgkkhcL2q5ZZ8VAxYoZMizaXMH0Js7Cu8o//bg/OmNLqmQ+hseDurJg4zYZFaF7OPf/vjzIKcZYmHzrcZb0Fi6kcmnlVGEaxC7cjVGiXOcLxYGNqXLquAZAwjBmzhNA6VW5ryMEl4hSjNQgt2Zf/sGQphfCpeJvxf0Q4Y7tljHp9YYtucdVH9u03XfYwU52LvTKtvjz5ghuGVIxrLQNYXvJUXgmG/ksngUQolacd8O4WPqZRe3Usg1O3iY8y6IF/6l/MeYhINFCLNGWhgGh1cuBwmWyVFxTG8LUXDKfxLioEADAXq7NoPHBpAoCcP0mJcsCaHXhapHta/4QEYZ2B+RZZBK9o0sGXxXyWXnmbqgBKty041+ihmBheBztptXeL9FA+3BgS6ZzFYtjgY/YYAZwMEDzYdr63dnOPK6NtcFpYiLhdIgmiwbHGw9vk0WLd5+T3uVfLHVleZLDoNwWaPIHHMjo0tEWR//5bLnBl/ovgJyuPovIvK+K/MMx6zlyU0CCjG/gkgF9Bi+mfwRrCA/90OujN1ZPZn1Zsc5xpFQL/RyhGdxnsLENHVgRZDcUZVnZpQ6j7x6tmkZajukYFzaUsC02oycmNVzfZXO2vYY4Hh28zjHLKVz5WfcR5J6fPzrbH6bed2PiqCYY3O+dYQ2MP7YxDSqWgF7P/4FFOkquj7WZCPZ/r7E/3pmX5MWDl/HleGDlbUzS43T+EW+DEZRGLjYVgE+o9B1LH085DrG0YOsASPsCl23DXzBU1CI+DwK2U8QviAqNJxOOyrOMNwWY4IqdYQwnD4NIhzC3/f7M7zeJFiiMO6gdc1YvJzKtdnlAFj6Bz5xCkE8uYjgf6bdGhidGDHQ8KzbmP4zqSAxFRBXqbgcBOjTqKsjiEIUVUPKZ/pbLP/0tkkbMN0VzNR7RTwwToeDr2SEudzm0g6tMsiukTjoQVsP3bOrgfqVE8AYCmbY4QxmDvCr4/+Tac9eqZHBHd9FJMR6Hj+5QgUsKgoNkpY/XlyPe3BgV9i8kdt9+lmY7oRsflyoiM8+x7P7znLQkaGA21gAV6nxXHWjYfEgHwzG73rH2lpD24qsgsksv8V8BtUQSNc+ZknO9fnjWrkJKL5ujFRUEJvBbFXZusOlPphObAaH7Z6cJ1Us2VHU93O9yguXN53t3MExFQrTcUZQjK+3Re4cl7c16aURkvzm8yc3g4w54JGeIq94/1165NqM7X5DiZLPfTVTBsTGv+yrKa9xHBccQQuOwK8W1gqgIAwb6mhilAnQGA9JszSfcUui3Vjw7EFl4jgy8zGKkDX6tiGYOXsjVjcVWIERFp12mp251y2nUxOTOFUwKWgjkrBSj2WjB+O8t7oiSiz1pzFid1hf0FzHdjhCk5F9Z2RZtxdLLfzZ6Vk7BVpZGCHERw/asRIk0RUjMWGIqeJHhX52TeKBNaXmxauaCn08zaHATthwt1FW7ZGmiLeL8ONh36XgXjZXtW5sD18c1Q2/AwZFfiLTdL9rZ1QsfXY1NXVsPHZGNZEDPuwpbzAgGbUjF4jzo+JoKSxfi9Tvip3m375v1O/MU/W8+2Zwxf4S1FtbHqpQAO0VgXmlYK5bF6dRoDZin+a9IIRMOWzseAcYPnAN8JTWBvRGCI0vMCzGsepJhnkj4MsakosMOU1DcmwvMqqERtNMuBmGOFEO0jQ/h6qOOeLr4kCfGDb0yxiCQ9qv1mgB0EWJTWxgaVLj0j3lGReuZADa3+LXRujxqCRYTqb22hNS/RoMQaMew7Ve7WxOqCGaC1XewHqgMJEKtW0NmNJD2FySmle5/g3TTlD67VA1UzA5dSyX/p5oGjW2YxoJzJkMlOp+W64S1N3wcW731RzEC1F1eV2ziB8x2SkpI2g84MHGExop1zb1H1ON7G3G8fkC3FyVvTsLkXe8zxOqf8krh5PSmhbQKvmmkpOCP7UCpuwqmn/WyLF8zKMm8LLqbBtLzmtNv8zvUUq87chxquT4R6+Bi+tSy/LaMZ8YwH1u99JXoJu/o49NsLoK4TUtxl6nYltIlTS6YyOjAkMKpe/J3xfh+aZwGTcZOZUduxdWq7yJVe4jKopJfKTToPKBJcq8+S5i29Md9+pxFcLuJjWgEGvoW16wZ/1BH78lymMJKdwVNZ9r1XTQiTfa+LIrXbGj47W3vrWovEo12V8nxCo56jwqyNki2R19HI4RxGa8AuLbNhZSE6XktR2pkd1tII6fmfbaNBkDmP8qGaRbsuUn0ijGBTNFvhXKLA4FrPqLm1v3QJhBO67iC+KNmMTpr5BZWOMywQ3as9oFqh9vp1szRBaJryPkJP2dcHZFARFF5urd2NQ7W41poABLCs8RarawALwI4rxw5QLv2aK2Mbu3x7tacB0KHn0cruTMqnIs9K5iPQxw4zM6nJicnkIgqO6nCA+BuFW6h0a7VwUoHtWaWbrnLelOcLUmaClIBjegv0tgFaQ2LOr2qjl2bbhW8JqYmew8J0dQkhD2ieaNHR2w1T3JmOs6HMsghD8TaXUIhlz4g7HRQW+0yQkWonQREFaKS03IykZfQXt8wJH7lLhYESo4/Q3X3ITMW6xz/wuickYgpXIV4onOgzplqHZBvEIQviYCIrwPc8P8BRdFxpUOAzvSz4y9l/Fe0deS8yX4sTCAR/GKfw4Lk6K4Er0saxdBdDStPXhmR+Ztp4fFfhVlxSARCcRbFKgdTmGLe9/kgX9Js4jN58g3nn7V3JGmOSNGwO5AYcxfhH6CeQ2h479QwL8vl/ItjOlj1/3gmUgxIc6Z7Ysi1mFUV81VJtCX/vMorhNOmOwiSCJapWBE5vS1aoQ300IPFvo4nrnUfptFShiFSK9OWJm7DK9xRAL5EanMOlyrGiUja/k3dFtZQ7QGKzRDVKU05Uji6lIMLQ80IX6jsxdBilOI+28jKEuBv6ql3VNFj7HfCVFPe25gPMgw1J4KrEuS2QCESi86GEDZdldZKHCuNloEgd9Xkg6vEAz9z6mzNPAKpqZTucQHjsmFWYQwzd5lpFj1A9P7eLPObmLMT0ScHCXi9IkURrHvCn1DaIT0EDTeqxKXe7wRRsfzLyn+S8eDJ5eljDPOEHYCYlZ3xc+yM59H9Ob8sLpKQCIngUFrYSJ0q+GFnGwZ4uxQ4ihrlghjRV3sbT6HiGCHcgjeoq9OvhsSpGK2UpKbOw2of6gTkL1WJCUOtQN52qC8HDq2qIw87W8NJNBPWY2nbfuNWmecYmFUOcfRq//B0FOvWP/G/QQJ27FMfzCZaQdBKND8/3rAcvDLiUnPrPJrAmX7uXWpRpb0V7PjsClQn9MgDYfqizUFkYUM4PiisERWSxQupTvSWMbcZnHmgwypl2JtJdCez4Uz2xVhTHXgZ+ROvf5Jb0tuMdMsEGszK5lIdr/yW50/8eXl/fR2J2+HSlUOGFHJMQwQoZuQ4iowBf2qZPn1v1Y6T9QhuuM+yfvQOprvyMcReoX1t/qdrxP1NcgkiNHvLRfq6hNT/nlVzpZPOXXe8z0oqez0V7qwfrWNqGVgCxexOOGhF1VGTDv7a7vsDq3Dp0PeBXhX2IOrWKUYB7qLORi7l9qg3D4g7gcB6snorGPJJN7A3GXXskO3aNyzkjOmkGMzPCIRNyT8H12U1i7g/M0t/g96t5QBQZH6fMUw2sPv3+yMi9PHVn9qG4Oczlta2jDgeaa1m1aevWRPXSdcxRzCPJHDmTIM7b8xiKjvpguWcqyJPWpQ6PxsJnIiG0sQgaG05z0vAaMVQbdABvLXSIoCAv0udGqTHuIomEYuWz2/FtxgNrgewUqo1HtQMDAkhNHWE1L2YHWbmtrw705OgHemoU3dPO4DV6zVBdwyN46TrYJ8ii7PSugyVW6mp8VikOnoufPtU39XVlPKtudMMomUiWrGyXEZG8VRJa+iyvJG+7xGQdELnLeVqYqQe4S7YaSpeOi9aYq5+P3u47M/ZiQVTWNDAvXeg7oiBSrT4hWIoSS/LitbN7usWdumDfhY21ojxmEQ038EbxdCoYqCYsLZPp48Xf7SIRx/0HHpWTp59DZt3c9pjM2Zm10Wdoj8K794IGPLAlxuwgccrgTvCYnH51nowQ5CrAoduCSXG56cYjceT3ZvPIDIxZ5waXN5z3BF+93t4mvXVuPUrpapHQBhCh6DwgzXdeAPbg2QzKqXRD7OYzPG9gRdXYGhv1fQndO7jvmqhJS4cXnmvw/wFkAgTx1J9xN52nHzep3V24fwEjtzJdmL52xD3jJOqFqWaSYYvBQ/GqkfBIRt0nfRfShDl1qiTwUbZRALeSS7y0oBNBsqYqhEb2CJ+IB1RznSCDi/YGA37hDFlsyHyH1j0kHTtUWGJsRyE1p/9Jz2VAGKEw2yL+0Di2VZdB6vgbUaqRzcwZr72pbd0GPZuXdbJ1ULAoi2wFWmwRCctvU0CTVOohNdaRojwHBKi8j+CwB7lt7qHck/IpkvNihZpU4JOoeRZVsjZ5FLaICnirZg2PSkUCZ0qZisHyizExRPCNb+EJrUf8calZXmzRr6lBz85hcdV+KipgnAZ4J9q1uSLEeJTBUKaalwr4CaDa3BYmsw5kPDdB1+YZ1QmIybttO/2IhkuC1lDb1GjgN2vUzqu2Ly8KApFDrSGUXy0xFrRjRW/l+NgAPAe5Kj6dAY7wdT9J3BSEYcXalgdNYcEGmS2+b6+Sjm+/QV96zMwsDgwNfnvd+tM1eWpoeWFZdIWvZxXVjAhdau/voHaEr5WgfFDN+6J0e/VUYyJUIVu/k6xEaceh6eMQVGNKDMHzW06tYWsxouSgp4sRSplidpo5Tqah0DHCtnkr0k0XaEQsKqiWRY9GNOmQG86apynh0maSjUHxVbqs5+ByM0NcRg2KBOcdEEYElVb7CU+cbfwgmJ+alWbHIfoeekZl5YpJkpj0kIdV15o9pK75LGvBCixTFmbYi51Fb7Nc+IstZwSJwEfqp2bI69jRkjChGCHwXdHNfMVBJ0PwwIIkYMGRdDVIDRqQzGzvkbPsy/BXMtO78GQvfC1eUH3ebvwJIvkMlVzLtw27aoR1hDJqqTEmQQx8NY64yPBoXta8RwWZPxlX8Grdd2/CrBhCykzrbDsE51v6b3X2G5v9Uxd5ntutH8h3WSIJik0RpbOnDmKfMRYz7GnqvWM/YydY/Rt34mBaicLfgbMl8Sydq8ThOh0QXHWQ9vH+Ob2zEuuHA5QH4UfqhBvWXTESwYLW0FQd8ObQ9V91bXJZATvZavGuoB0frejZnYaDt1Cu6Qit+hCErHYWaLyJ+qx6EHGvmoRY7hbCvJbbE5sdQiXs2gCPTT8+WEMC1OkoXeDM8FDOxdSpgfcPLsK3IEDgzBVPlUkxoMgqUVxGzbkkGWMQcUgnlWuxuTketmnOAjL7c36ItUtAOIvKtXPykY9mcydzagglrMFc1yCtbR3wWWxi5c+l8pCO9YQjo+g0qJhr4B6RQUo/bBokvOkyPa3h32noRh06z9qjMY0VcW0ROS7kWPBkZBPhMA7764X06An4MIn2Px8ChywQ5PF6csggQDb1V23o5NNAZSLR39/udEk8Pqm90RwzvHgw2hcts82YHCYAYm2XDzelevt7vGiTXpNx4IdEsMgtdnJNEa/NfsCwkb6RDM1ogORjakQnke/Ipni95S5mOtYG4clNwasyTBcwr5KvAA2Ec3045ogTtoBvuz8jLANatZRlkmm6qLfVCdxG1gMDRgU2TjLYydok0cWXqOQMmI8r6YzBCCLQBbhhkkJfh3qqBOK1FPY4eJ0TZdCLjX3ADXyI2rwxcQJ+OWAei7tXr0r1olB4mkP6+zfA7ho8PI/MWDLb1SRIpeQKBM11/aXwHv1riXAmaDlLcb86LWvEeQTIYI/WJQsyT7J2rkfGzX3Gt/X7UjE2wT5zUjGdqOnnUwQhjzK02lyWN/5QcjFo6WfP3sNtd4it/CZZh7Bpyci7aAui0zTX7hweCxvTC06IraNEQbk3LNeGXtixXEOpYnGYy1WPLuWW8OEJYwxameHk+dEB0hlSiovwFgxiki/Q3gEl0vrbIaE3+XGuIa+hIDiRB8eaTi9pQ0romo+7fqJksHv+GwFSUx+yzeIPqKzSb7dxeWMAS8m1m9tggz522XRtUmrTQA98W7hn2HQR1t1bW+qTIjjkG3wHC+fqVXT6dGMBLLKVy6Q9Y8xV9lnQsS+jTF9x50yiUI+Rf1G4XNWvBI1e8a9EPAVE3/4yIO7P6wV0MRkx1YXctgEg8/VhUDdcmewCxjU0cH2f2Yc1P7Jwxke3oCobHBecG6X5dTVMurwtOE20/KrY729udPvgzW8PjTULJEl7HYz7Y0Ac/U5aWGqQnihQOMjFcGzFKQDJH+v+ljx1LH4LTqCOjcSYL0J8umtOZfZHZAB86mNfPcAg660CQlHzNUVHOs3r1VNofwnWTPv0T8/xo36JELFRCljouHed4vY8t3O+s8SfU5q7+jHaGzK5+vuprZy8g+h4tPqq68lwSZ7O9hZOeWbsSwtv5WbX5w23e8BU7KhJzWax+ahLUq7pIj/dPQ9zlHlcqqqcQxuATRf/hUkD0/EsYBHumJ6C2m1MFadPYaR5pOZcNr7vg5dQMgD6tM2HEF4qxKYQrxBwX5+mOLA5FoMFdPlF3YnK9AlHz9UgFyV6YewE9rAySjNF4kOfKnwiKiZo9ts2VZOxZ404QUYt79DHF4RIR4ikhCHtZEy0qnzKvO+KJQmjDtskDj1WB5L7uforEBh0ATby6bKo9T7BfrO/WEMvp71xwG0E0hEGU/A59r0ZJvtJCZj/f5ZVRYVjNShkIC67P5naaS0WAY7F8hAICs0fR1MHp+kp2zv7MBhvngSH+F937T3K6dNQAR14/7o7iHm0g0XGjYSOMs7NF6Kidut1M9025xOwe/XP6GP5jdf4YcROb74VHK6Me93C39+I0bB4Vrp9draAXAyKyL+QuqU/PhmzI9r5JSyxiOXjB4bFiNSuEp29zPVtdCGpCjgnsBPcsGN8/ULB6wnWbR4ovM+WjwUB/9LFLfJamGLlGns2BLjB0uDPHh7dG0Vc7eJi/GAxeIc3dMYOnV6SH/rcudrPB05kNjP+QaVvkAz0SlEY8bsR48iLmDj2vDZsANp2mv1FUU57jCxCPO5A4a85qCXmWWoSC9n0zX8V/5nT805jdZmwac3f7DnS1ssElZqYRIQnOGwS0WymI8e3TuFxujhusHpDWFZjfNlOeSuJN4ysnH1C5xEVhB4qI+xY7eTSsXsZFzf7knz9KP4Fp2UzPIeSgzZPFzVKyMF7HiwVh07DX+hP1jxD+S4+nfDJOXytY3oj5BUXmWfpHXT6peokmT7Qv8bSOu/acFC3O5K+rjX17uiraDeEDvqIhAmPYNXysZS1jr4QJgS7FYhZf0iq+cdWl8iTzcismIQNv/Gr14s0/QzvapEpywJ+xVkussPUJpAYnak+MrzYr2biHI22/xdFoXO/2SUWys56R2/UkriG8K79F081aFclLy3hsJM1MEci2Dvg6d0YchYtje2DU9mo0XWZmNJDH02jrfgrJyGGq5M+mpmc2GyhTFjeDQuKwV2ezKDEg9WUERTbQ9AuYDCIvCGLwW3df54Jf9SJetGePxhKvU1opbDVtGLWCd8XTBPZz72s70Y0+vlDOQ5KD5g6JrpPn+PbwWcUeEY1K8XxUIhGjf1fBUAwrP0Lpju7wG70w7UgLIAtyaIQRXOXnWsZVZ/BT44qdY3TPcigw4kJ994SdxFeYKt6lYutW8KWQ8FT5EBOFFiGynF3ZIlGoR6PYnKrT6T+aG7lOrsIzf14JjDsopdMBS8WvYgkZFLdRG/8ISjXFjVmZ1g08mPW0PudCDf8oJGYE+XvY2mc5ryM9Jt4tSP4ZFnrUvYuUoESYvJIbYXvLR3hIhQIHYD3Ba7oa5fHni+FYdC8iQDUSpT5pNr/3fyj1DV4DhMJxCz068wdnnmDBTOWHjdmJOv93paxc0o/593MOH3kT/KRY/cPmvsliI+XxFsXW2JkxSM3x9DAb7AFTuMmrkKxzi3cE+0rOSWz4wqN7V2U3VscVLragaD8eP6n2UG+XVDxBzOpnC5pQPdHlbbGdcpgYpoe7O8paNnQOQESKbfEQyVGScc+NUrjEObaVysiHsF9KLqHaz7YDOQTSU6ezS0NB7JqOq4hLn8cVl4YrafjE51nJe7jYcTQDsVQDe0gT+wnQrd0i5EFwbmNjiEnvdy6p8z4CZZYIadsU8NR8spWseSSIL5K7v69ldVyD7kaJPfNYO7wvOafvkJ5RsBWovTpr9MtlSiLfVYI27ZhuO9OreldT0cdBItei8yiBexQ7Dv4O5fiLHiPz37BuiBggamMpofyYiDMBxwuSf/kkYPKPEVrt+B9c3EcZNnOH3WsTKdyG5gxy/8rTm4oBYjXB6BW3XcKqfYEJQSuv6E09LxqBmDev393I0j/foOe4LpzAHKI7+yQ7RHdBApdnJVhZhYtwKeko5Ka4A1hNX+L4A3d7N5hb1X5wCcz5EwpE/aZfCawd3EYdYc5Nt35pMFR5dUsp7Bshge5SDjk9Ipu7JWkXyQTfMx2xCrwkoXDeXLHSkwpj0ZPstiraDQpiKqnzPXhw+TKSceEKPlp0tFft6LwXgNsuCEztjosHKVBDN5jRofV+bxC738G91Gb3qiIb5gDxbyXHj9xS6WAqyaIrQJJ9DRWSVJfq6Mv3QgQ5jQ2vGAAgHd/6WSnqpm04AwctJNbG5PD0D0fR1P3yS1ugSfIinSLv1xWkReVkUZy0JqCrqx9VilLdtz/Bu2r/3tuylh7s1zWf6MbNk48Z5hU7+0y/tiGXJucTlyPId2OtSoPOtrsJUjPaivOgiFyzA6I1zdHXVvX6XIRgN3pmPsvdahMGbVemn8jaITzx0hyS+Lo0o9xMOMOoiquaMmSCZo1K9yYa1EQUQJaipfpUNyWPb1FgF6PJmUh6Z59nPY3OKTaz+BCj+0xn6uz6OmbcuPP1WlBOzVu1+v5CZwOZ6EkLc79Ogi4/IfFrW0CmbgiZvE5PWxjjiphvtgHD87kex2uq1+9rP8vCyyRkVj7F3M7aw/E3/he9sKImhYK2z87b+cUuxgEUr+Fyy7aktCdoHpFiX/HcPzCs/PCTA1b3nRo1j7m6Gm+Ly3JlEbCF6Et1eKWTLVpyYdb5iVkCAnJHizUXVj/5SbugcoFg8Q16KFN5eVg8OlitJ64sRjP7dTtS9EDc8zEbdDVI2McHAWmFz0J9f/0hu23uKYKrneAGGc1Zwok5VGk2RAC1v2LZxvAkZ00eoVfVoAYF+3JCuCOrDO/GaVANLH5kAHPC4+WoIIY5rqOb4ugFWTHTCNHytDLCrD4UsbIyiGKO/PDjCiJIF0UyQDxzFFVf5ymRgua6iC2Cxhjj0Es9Q7fTjHh17HWuCRZEHk6MhuKNb9JJCenXXVcQGl9+rMCEMfhpR+9bl2vaYHAj95lMfAV1GJHzARdVhx9djDLepkROgzd3KsautpqS9hRgQIj6of1lBH5KqZ3r40reaRX1u+l0bjh5j9yBEQSkOyqJl1iTnrqOK11gYIa3eEwrdRR6gL4P1KpET3jlgCJcy6Aj3Q0ZJOMwLjPV8V2rrIN6W9m2RUM7SF+Sj280j4vHfXswC+ozF1iyWVVCaFUNfd6dsPcaSGo+g6d8GAaooWyfH9pp+r54ASg3cOnC/gMlIDAYAC3c7qxxw2Reym3Un+wDFxRnaEK2b9adIIH+1Pnkz6jSpzzAgAAsaV9c7FE+8UQHANQBcQBANaCBOMCABpIBABqo7+PMzmwqZeFxEVRbK4PpqLegr/LjfP+Ol5fFcJ375TI8aPQ+uubPsI/d76v/diDL7X0VlldKhsXdv8WUaFil89zuFJ/Ey5ZRqFkk55DZHVDyJgQO61uf7/e9+s/zZ8zZS+cOUCtm/DSm74WVnXAoRwWdUMKdqXy/3RxXg0+iHMxUYQgeXLn6vZP5V7X8DmRMk96Z43NEpk5hzFA4uhJEELy+SXWNDiqKFr82f1yGMh+lI/aPVW58N0R5vXt9INNEfEfXhsT1EmLYJljwotXHDv3LIwxkAYIK2FLKN6Xypkxxj4rwmmLOUrsOuBCv3RX+t3jUptlDKJoBPItX7O9o0aRnWB1L++D4tWk+YrfELEmSeOPfK/xOXewgNs+WuiwTltTIoQSwGDzIxyPPoNiME4lYIPD5Klf4qvcAzTk3JtTFrYjxM3GD61dnPYFBW94xc78M+dzbEvYXA6tAd5J2IhrtbsOGS1Xe6sbvYPdGY/DEnAPE5MziDOo26GY4Yar2SMH91mv2rlaI3oft67nBlKV35vziwob+RPkuIkkjDUYPt6phZiyNIgFGwrYp2LNXbCcxpdXbeqWAApZCcDqsImUXtpvgMvtKnrt9GFquJxAH9Y0QAMGfUMEjwHkTWlj6lkSWWWiMMgm6xEtT5nb455M0hX0QT2L3pyOhHV84iyAbsoLNtGbdOsM00R7fCojXUKeJ4/hMuXvWUEgHFMYRqwfbEgL+U2pjbD9fO/GV99eUCB6sRBcweGd3taLn81Z8/jRTQEKPJULh4yE+mD+A/Pw2MB44Sjj5kQ1YmzR2vKL5B2o/L1XUZyOdQgQutHiX3NzoMWqevzeHonwLS8tfwXy2iy9KViT2IRtCFoZzwlNf64KPgyh4gRiq/7iTfwzn6R/a5esgDn+8U0AUwFmh5/06TLVyxHhlhFkMTN3fluQ0Mwu1NXRL3yfAJNXT71gjczlYdmoRY3k9LZnafn7gRoVLVKZXROg1wqZSw/a+RIKR1HtLF994DsFTSO4W3SE7IwO/z/fvi26sMW5FfbguDC8QcMEAko7R3L/bjnpX5xEe1EtX7xYqCLesMsbE3vMUxnIsiapjtSEGHpLP1n2fjMYsV5tDOkrK75kwskbAe89OGqY5PhcZaiTxmGAIWRnug+uwprgpdPxU1rXnSlmY1E8JQ2bVvFkR+HFW8xhC148GBbD/kjCB6oeIVX8SVjzsyLLOPtttA6DXX9YgY22D5aF83OXIG0jTURpFoUPRUaw17mJvkgxAv5wdHkWYLNsaCC8bOuAFi1ZvUw13m12jxXZVsBFO3Az/JEqgoNLeGnP0aeUIxeRfBAWmdBJCE5J53dSIw4h3PjahmS/W6t8srey1BtlmzVoT1gIvwu3ta57d+rEKf9pLUFrB0FON4kEJaM6zaXx0VLSgVM0bZdBx0WpE3P20FxBdWPUdKDyXtYKQgmn8JM748GJNv+Y4jVkuJp1hco4wzTxGwkM8h8hOEivu7HcEN1brUDLlNdpUY7RPFUdGVpHh8J8/apP+ceBhKUhRMb/3o+7RdJ7YhtK5I/3KeQhv6sUPWtdmd/s72vhJZCRF5yOUiUdnpxDTX22sU0nVhUQrjTTCyEmtQZSdreRS7IT56TPRfwZX7Bbslmta0uzeaFd9hJms7DKzF97s2UnaXiyr5tL06ITCkItydqndr1fcuDRrWJFaGW+cQJyz+8EqJeYwrF3GQ97edJZu5vBZ0xmUIVuapnvsC/WOZFuNptN5W2qeqxcNEz01tIDN1bL+HU937Ulu4HbkOPIHJfpKfmfguXuQ0njsHZIv45oVrHbdCleY8JvmaUZteMP0Wg3CuNiGAwyo485+X1iDS64PUrP9BitS82rxi7Btx4aRSv+62s2ZUrDyqMu7ZRp58TtVW0BNnHUd6rumIHFIDlmJ69CXtyQdgtPSjzqfG2lEczdM+YyOBaLMStEkTmiab5YhjJTJS0YGpZdDpq8lg3ieUnwHIsvTpHvoxrLFBztrEtNe90ytZNlvKV7FfD8OdtOoNH/iBxC0DQSvFlALP6N3u6M92ISize1s+81HYUMwzWP2NmQ1zrLCNnGNFBxKxVpmUdKSTYu6xsaUQxrlmTBULh5esiEovq1oZaxiFOLTqhoHdveFEi0UHOGx6MgOx8Ez5SNMxI2+9q3+6CciP/eozWCTruriK2SefD7W3CLVjuWGMM5hIYB+ZZn75+9/AO9d7ax/3831Kht/9oygGiK5E+N/l5I3FopQRHy+T0o/saTcAN1+KkF057UAUXWMbN6OYM+0I/xSegiwt9JQ2DxoS2gmXu14meO3uDFMzd4OeO2uIcjqZVB2wRu5JxbSjAfU+Xn77kk0glmZe9ob9QLhocd2bTUyX0+iRO6oNGzTc3ysIxdXCPw/iQJH2XSaGRyYq33B3dVKxDN7PmagDenOqU/RkMuDJzDwhBVkuz6VBKh16y9tAyLsHnqzHuXQmKKM67oPOmEIBuFJN+HsT9wAMfc2zhQlwd/jmmDpkplLkiiZtFKygxdvSnH/TCsP7EBB5NKNFkFU3diBCTk0hMoyPS2PAH+NqvISeRVfC+WGZcNbUCHAgtYbfffUDuo8qzxHiQ87pkQqVum5yWdDzm9dyYGO6ysk4eUdwxJeg7d2EFAHFGZ5FPL3miiLsi4zwBOz+n24l3yRxrSW51xd2al0yRXAmHh26a3/Zr1gNRTvj5yM0XOohZpoH80B6zTJSFRvsuqbxnzx5zYyWtVZcfcLMDIdlzreY13U5uPi2BzjYq/pJ7D3N9oC3LheEFhXpWNOfKpNDCnTeLSvbxKDQWJf+YV6Cfz8jkzwx62O65zf+3wk7e2MMYN2Jj5Sznf7Z2Qyghp7vmUFrbc//comaduthUduOrXseMYL3/Dn1tqU7nZ4g6q+EdPZrHRLQpgwlufJfqJjWPsOm4EI0A4/7wzgVPi4Ks6yKUbUtRAVBJI0W+lxmAQVEkME4YPNSI7W1RjZuxF4QcFhgrzqtjnSL07ocD1QWPdosuqYc2ou55CVa3CmbNP1ZFdKKlQk/NH7ab6uAA6sSZCgE0DK+bd0IDKz6ceHACq5Kio2xSPMiks5/0WzxSNdFB58dpCL3GnrUuZkJAzxWCGPRPOVGXfmWrrjwUGGnRDXTq8WWsyXpp+bxMN7x8ar2bVc0ns7TomisxUNU30EmMK4aglB8ZWQ/5snZbOgDw8z8LlkyTKWzvv7VXmn75XxtKOrlZp7lHZsNrS7Ljr/F2ONjuch/HPsQHPYiOSIntexPJ3SeOlRQkX/viZ3/R8fCkvw5x8yiLVMGxYNp7sCr32j0Y7QZvevyJdlTJ8CLAbu8QZdP4VdojrZMy1wU8q5h48kDLusrd36DL0uPgE3HPXkK1PQfkb/Et1HUvQ4WWlePo3546mfa8anb3qzWTwxzEG6r+jsm96rp292TbNaePN5NV+kWH/asulkH+qLdsasn+g7jeMk0T9HxZeGAUaDKX/GV2IwQgbu6IMBLxGx/bKQDV/6kjU6+WOQl58VvLDSfX9Ej5nnjL9fuSxkTfHBG4ujAqqLq+oO69DcMl5mdOkIIiv8CldYx3e41IIwXGJ93UcftwpBNU2XV0uW9zcX1i9HWE2WIy7E47HWpn9c5Q89yOxghoOAVyGFZaoBVXynw3tz8+HMnEDitx/shORzGpjxXKbz0aCShaR9eUXBxIYqiZATbJwj2yEPKESbmL0FP3lJ6cVKu0+2Wbkg/+wELMRevdzsoQnvndeqE3hJGZkzWcQp81sM2Und1xp+1NLJt5FPdf9t6GMfAHZvaTqLNtAcRZQN+iqdv5XXXZZIjrvpIknMVtqqcx5dKOxqncbFEySkJk7Cj4Qs4vcQtPOqTc/oUR9jTvdcP/zxYfUhvAYEk/7dOBgijubIdqPISsa3un644Sh7+8AVH+fc41gYtDVjhpTvyJsCd8DDMIZmtCJaKnIecuPKj02hdwUM8YITkPsFw0zq8+Htm4/o16Gmi2bqj2LF6mu1bnwqWP04MeixO2lag2KK5S3SnNTInT9goK0ldni2Q9FwduviNT835Y5P6JXE0vfxs0+/vLPNZhSG9g7V844yaCfvTPfHuGOU7qOV1WMtxA68cDysj1xtvpTvgsdnHGt0jDcLm0JwlbAcavEj7dCJHBhnPqPJATpSf0dvT6QXzoIA0Jm+DnES8MwIg0qPjRYCOE/N0N56lsr2qjxHMbvVwvL2w2l1PQZmd1ebrt/gPB1Cc2fPNml2E0ux8DnPxDM65gkUF5mIULIUyAzFiup5VTb107N3jwJuVm38SLmvxEWYjlvVY4I531Q2ndBOEEXjuzW3pessITkXTMSCSFFWkhCGesVefRs306RIx1c9iHhFt3fukJoR7XUEuj4iI6wO0+3T53iBXDwKMGln054+0Km40GT9JN0RGTxEGW/fjlH4jL1oAtUtlXC1fuaCzydnQItoVu01g0i1wkLgh3nMd5g7/BU1aGf79+Fke2JBp+hpn4rlfJi93MWPEKYM5n0S8/+CvBSRZ3Wif2lfHEmSIDNPa9VRPC5Qx//tjSeKfpwrOIJcXa7Knzvi6vkBK+zv5LhgvnW81sAXrbpiN+WcsPyFS8RcovbmIyoDQxWbdXHhMiRtQXQ8up+nX/sp9MU2P+peJR5X6wvvYoT8e2C1+VrHZmT4zJsfF/lt0cg+nGKmsZN2V3kjL7gWwCqXjqT9uH8hLwTKMBTVZi5Z/7jIz7mpw2rFqJG2zUVFV9jlJWDWLnEZWhl9xDxmGhyMwlnujZ5/04rIHlf3bJUd1j/mF/LhVZzHT82GDFCHkdBE9xgyrTeadvCfd5md6rYvT9GKjS1IXamlVgQChphEeSLj9yyYrvSPmxCPsdnsfdssXr53UvY78cQcSd94rNzyk/GgzvbJAIFfum8boqbwZFhPOBsO5cC5+akr+YPpoxpOG+3zbmeXInjB8IDobAW1aoPDcn7UIWHASbxrQ5c8uvLP0vSLS3H6Q0ixtNKwOnXoDBE9E7f0JLdhZBvmzar75CP+XVquv60gbVjPVg1hIf0jDKw/l348YMrQ/5AZxF4T4HzadiCC7DUS9gvltpdyMmE452UgQodx4yaBU9io6QS62AAtNTQeN1gUfTwix3iWHdNkxhvWq9/GYzK9x69qB6OHRV0hcpBfGDjEZUyb+20q+yO+v5rU4Cwl+74/86tKz4hvnFNZoRLmdJTg4bWy6V7uKZ6+KwVkr0vR1ens6FqXo6crirvM6TBdyZZ0v+Q0MIo9gYrf4yc+oM0QV6UhklkoIw4xVk7Pu0cbDisHZRLmIsGntTYF6uOHkn9Fddihk+6lcmG8Iz33bY0kWtmFdMFDjmL5xbCZ4CeFc5HcL3TBbsVA2GlkkO4TiFCgjHJ+4ucJfIx/nhSvI98DqcAbf4tbGs6rl/URPEBjFEJ+s3vJBn3R/3vqWAxDP0m5ZogqNrEyYGRU9PjNK3cU0/LwK+f63gQcUvWKd4R1gCl5uW9yBne7VsTz+CkoMFj7vshnMez9+Dd51YzoPkEptZVUn4S9kgPB3jgTIqszjkvcIyBEcu20Ts9B4kq9+BGPt189+xe/hg098a1kSn+0yWnwcckWUfSWdyVqntMdgLq5hpY5DU49OhyTOj3++q562l9JuaKE8NK72Nq6rN68d2DcVYIdSWBrPzijGdzw6seCPMtSkDLjqd3f2tnLRtU5C0H6otdzSntJh4ewIeBFX4MyD4HiOpOBfcwhR3/Zz9ro7mmajWy63DcaMvL149qLVPpv0ISifF493RfX4e+GLzxzOjGaE/fnbyhoxXh77DDMoDk8QWNUDqgxwWpfsABE5ueum05fu0MvhJS+nYVvUj8aznJheFBnGuPvuB50skWRky7TGYVYAkWl3RR1D5KBjOYNKDlBnvpi6/52Lw613ooU0lpchOOQD0GpjnV+HB/f/BNT73HR99i/dh5/pn9KDT0dobrBsKZfCEdXPjjXr07/uDw2ej7h0c/4YmqnNot9Zq6Nw/eqWX9aA2564afbMYTrEZSSg2C+P7PX4zZtJ7tL4eU0dvnFrUvv/nVw6Pka0YHbLQd1cQ709WhBPaaw2AFYyl95/jLK2+v41ScuRgmbWgODCbNQdgmcQwxQgLoJn5stP1Wtk+ccH7C731lKHD61jzf55S2GbK1t7XoKzouTgYYlAyor56PJAosb2Zh3eACJJt4+LBOh1iY6TE1t8Y45WNmWQ/8KLyiNcbguyH1YW0UBBa+l+PTimjrg0sVatHd/+WWMh1+qWhoStsIBugxQzpDqMsfiNg28PLwqWiIQ5tPmhM6sd5kOBx1wCbWfokZj4C144U7uJZwcFqAtbAL1X0jLqCyftF6fi5MPviF+BhROh1v15kFtCEP49rkSxJhQciacwYlgxLpGD9/39QRBOJNCMZcLNdO7FlQnb+o/fJF37AagBVTz0MaYiUk/A63I1P9Aj82mmAIDsjtK4Z3mrq/OJ2yYD1FrE96/efbAH5cbTQnKXnHpce1WpUwpDLpBvyHhHRtWYXXSh24VeTgT9N2Xwua2lblHH69dy5fa3y+mshXfTumuOmT5AuBA+a2uC2/HMjTyCn1c3hTk+ewVi/3/KsU/3ZKsqJpumJbtuJ4fhFGcpFlelFXdtF0/jNO8rNt+nNf9vN8PwQiK4QRJ0QDonE4dVwGKAyseBDZn27m7nP5sXg24Bh/rUTOdeWVeD7jxMIjlWJTwGurxd3cU+Vv6/VvMv+3Xh+GjsmGjxlt3NPkQkxiYTZWQ7QZqcf9J8Mf23iGs9AaRKJ7uq6f7+um8Ucq/0ICIJDSd4/h8c3RVFVypPT55BftUj4ozjeDJ66vKb7l+4npdaXPF7AGukzzataNLFaQoxGcHGw1C1MxNns7Zl3Jr4NHHn6U313K9bvW+uMbhi2wXjF7w0wu2rfNSFA+bz3ZBD71eVamanLuO0lNZOcs+2iwkFPFAt/nlzV7pRnAiauXjPBIul0QTDuasuuo9bNu1tu0ClsnY3yS3eUKD0Q76420lEivcdsmc9YCBG4zS7DgVijUJGayYgPVEGzqttqAE72yxVXgqrKVMaeKoIHUxnwa+nsxNiw2oPWlaqFvR2swFl1Vo7fee95W+FXfEhe2kIhY7Icv0S0g2FjiejYKN2vxX/hD/TYK0w2dZev8/HoRA1JxPd+8PIBGcK4mdDyHIhyr2igb4UMsuwuK43FsHP7FfKdz0M68PCF8e83pkd8Ku5G46mu9lfL+bi6BfnqrOHQJfSnm6XbY/UcZT0oJ2OWuvTnnSbG2vXHkSA74u5dPBsh1bcJ4I27Rz7dTvtwXpIS3i6TTwHkjUnYRaOrX82ytrxaasm1MPjDOkwJYJNAh5vBcRY7j/L2REGBqlgWSG65zXNB43hxZy6Jome8qjmiHdO6bXdtCddglHDw6+tntJHuVacO/s1/ZCM1NYKz14+NpePlCX2lbhO8dTvsIVnQon3Trntb0+dg55zR/vDTwqi2dB66bMSaGSBraC0jHfmuoHRmotSKqQ/zje4cX82V8iXah82/cIKpEt8ZwJV3zggP+WNZZJ5MtX+/iuoaVmDUjmuFz106/Naq1EPHKVz7De97SwXn4J33ZlClpTBeNd5cvdN3Ze4sb3K75yknmwA5DEJdMjv6n5UN86JOYjcpX1MdZusGpdOOJcpcKixAzl41yYor0IOhfK12SnZ/7V3cC5/m40a/SpLp9O//H5a7iqx1QS5+9XXTOVpUYEI57j8FTf65klkjpuV/shq4PIiHiOw+qffaAOi8R0jJ7q1309lf8LLQFLcsf1Kr+FL/4MmwkVSf3Hq9zWuk/Qq/xLUdnsTMq3mGjFLFI4xqfLsiC2AQfxb5PPlH1NFUalVRUfCGEc69VZUA/YTtJj12QnZc2usFSeArgGrvObiO6UfOpQ55q0ZI6jG5qS1Cux6Nbbr6H9cjsHsdLi7E/9d2mI0eIs19BVKThanOWp7/QAoAJcc+Apd105Hz3UyDEi7S8XHBuqdOtIXiXVdYPsgOAo0OgoOOva94qenuwi8OoqpuXIpYrirCBwrgWhn5/TH0jn6I7mt/m/O4UfqAV3jtTVlB1JcoSYDrmasf9KDrjmwBXnjHYZmRDN0biyD3PHZeaiO++62qDTmhIdxHKOK6O9zPjoBI53fsxU5C5JnnL50LD103apQDc51Pap0lRX2wie6G/1O7XoyJo5GNl28/zSMSY+qaKthiRH5F4O0QvULk5koaetg1D/ycTEOYz40xPbeOzsibKe2RlnjTVrLuIM+jhPUvHZjIVk6PMXIoMMdsERh3Bp2iG2wEDIQt9IZiSfzHWPzmujfn6Pxcz3KOMqG+C+UeYH6tH8H137Zr8brkMq3O0GK643f4iLes4bBc1B2F1s/bXVw7uZMQ0BJiZPNQaCbJ5rnGqMjA7pIZlRITXqAFc2eqnh0sU1omGNtohOmAZacsF97rhgWmZs86XocxfllnO15Mwp2uZC0WfFqq23716HaBVz1agt/IcT+IFQvtw/MlvYL9rM7qWpgn6VyiIweyy/aFPKGY2JA1Zd+yu+m+TD/90is3qVGRbzrMeuQ4IOmVFHx7eetm/L/kPOc8HF/MuC0K81nLr3BViPP5yR5WgIF/1Ine5zg6Ua7GxGMAQC2oxn2dG+YM00+1MrW1FIk2Jxg+7geeohRiJqPHJZOQUPhzJjOjJiQVwWnwjrbcdHd1c5rcyCfIeMf0+TB0Gl2W6heLPoGLfO6CTAjf9KIvhdr1QfXUEVic0+/+KzaIi1yaz0wJIFkO/6ykTu/2iTdiqGL52HLbrKYBWIW+fhrjiP1ouYgrcjCO5W0u2iJ0c/DJbU0Np1KSxgy6DUZtHSJDqEzmRiHT9Z+cHGjnOA8i0L4rmL1bQUeFSJMaZ9CfjMFYJhc/IV8CbHfU3tt27zxrLksqQz8UJnQrZvhlHxOzvcCOMxmkaH/Fv1c/km8hfBMkVZJMdcwLCPl2WEByc1UgM0ixynfaRWwe32fdwaI5Ofn7Nsi0FLKsPAkzXTmJstT6v4PK9F37YOfcZvUsQeKQSfuJ0zGEm6GD93TUgF1ZlwFKjsiLrckxENT7efjm330CHosejkwl2A0yQQ0js3H7IBJG+IWz9KtF/lVsPAdYRtEsZpgxtZIyVATX7kIokMOljGM1ipoF3EXC6pbFissayhNYqx/Qzc2ieq9YY2zQvX/7YYDBDw9IOSHybb4HGbURaTL8/NbBahWQ1NONsXN+sYhfyhEhtdmWfnhfXBpKbIySbRnClb3TNU/uGfkt0axZJga0UJgMWm3xnNMK2sTMvVJJr5v3/rWiKfSVAH2zMq93MOMI2e5Pn3ZZBAxEV033NSFXK4jPJj9YtLRZRORJkpS+HjnowgvrOW7Ya1umazi1Vy/d5s6+N17Unxo/TQ7jbxuja2ShrZpi15q7FF5VUGgfOuyrzSoo0M4I8nic1DLwSFTAfoS3hsYZBLpncToXFrACUfomSI6z63JjRcMs+O7pFSuqv/hIdGHFr8vCVHxxGYf/wVX+QFTs79LLtVzeS6RpfwrByYtEVJyou2wn3uW8h5087zOFtQ45v9MndMQtcZFJ67V3arVI6urT3swCB8F+jyLtn+yYbsU2xC+wpImdQk82el2YWBPwAY2TnO71XUsFyagnH9ZIj9dSpf6y9nQ1jLAlM1wkoqswV6YELF3ekEB0oJIjhEys7bBfG8swpp3XEyaLGLPqtscgHy8fK6BCvisyVsWOi1RB/rNxsm8JgBoo/ye2w9xoqwLT0wYh3RGnG6aNgXUgO2D0lD0ZlZtRFJ+xk3alH9nGTtNo7iPr6Wp+vM1jqOt71I1l8ZbfqoT5V5v9nAXNl71qKyudX8lVk+S++uBW124v8r7qqDDGWCJ88ZcYyM1HZFtQU67xbO822fLMtxjTQjP4v5es9qS8e1dmaU784+dGv7qcr/yrC26k4kcbM7voGmNbQxTE6R4j27Wh1yE9qRNQJ2hG9jqztaGOaLIpKYPI1ez6gfTTGjIsgNtraBnVKY1jrxcvXhVE9MLgsShNqN0YXKtqKFpGXkSbKJq6Gx5QnfJwcz9wNX0ZecyZ6d/9ATYFibQuFbaKmbN2WqRwat5XwkZgG1D2huaM4eCXK/t1/dRi9Nkofv4Yju/a06BFfBvUx42e1pXwbTzd5Zwa+SothELu5vqgAzO1s68p82C0kqG/NNxD7ICvsSH3hLIUwTaDvS5VHQLaHreOAoPRGR1E9hkhUUKc40IzzLsSUo5OHjh2MUUsNsqGPhyyUSzXoorasFmgS+Hl4YKDTBIvOFdzH2dUq7+PbZ4vT/e/24Ykb8FX38moLGs2bzRw1XZAw+Q6StGAfFt+My314qn9qgbvr8FdX454T7HlPeI9j4yHSoizE+htXf4NVXc11auz759L5Okrvaj+IieM2Ooh32S89h8AmF/kRe86FHH/581c88PpPrwwkRmsnTN1+sLW/P8nLjmvcZYuRtXys7PFVdNEYeeUQ9x2rZJyeWNGnfEy8j9PeDizCAq/wyXhyrRyVCEBISqxI0Yt04I3BkyfU/JxTAZIwFA9uJ6AW5rilfiCxuC++x6zp3owhje+ZUp07M3TrYjDzy/R+x2OyInFhX/I5GOz0XdmbbIsY+wZakGFdMABESZaiTRDe/tbpxYiHDzH6rxpP1whftHQbwITNmq08MezuR6sRHDnZhXrKhCtume5R8Ml8YnSBejlSRxgPDZRP/EV3kDMmk1Q6rHvzKW1feG8KzeobyTbZPyzPEx2o882DGjwzRiD+9BI/dxrc9HLcY1vQh/pjzPgHnxlg5vN2Wfq6vlvVZ7HCs0rJq+c4b3GHTxh4OVK2OI9dFazPucLJvETCh0oCxUUDvgg+Nm6Atq1cEcr0w+dwNwzUtm1E/CF4lERIU1hP000FLKX04LM5n1ti3T6u0tRmj4GFTeAQIRBqrTid4QupBAC5HqqqW93I3MvNp3m+OYtVUge5J7vvCnw9b3Ocd3T0UCxBnOl8kvAZ4Q1maAcZIBp4v1pdmQnh14E5rZ59vsKPuPDCYYsMWCyHY9BNIRFXihm+zlk6Pmnmb6eCYZiienGU6OqLf7bUBr4D2ZBptQuNVjKuNmrpw7DwTexIFGqz504xN761XKLxjjnGNXs4jDI1hVkamGvprz6ltRNJYlKawKAN3Ri4j1KYdU0Uaj5wHUdt51AjDMBvaUq4piUzsiSAFrBZSaQB28r+mkkSQaId7zBUj7U3I+CvX+qGpaHjuwIH1n1/kqvKDkpKnNsm73yHk+hGqHX3G6c2NfJKEPdCs0xlzhwue1b2MVhkytT7AWTN468+lHB2dG6qzr8LJ2dH78xcY/ZOAkePyEIeZqGk8VVr2clPnw3dReevGHr9KRWIuIVSfjzcHPoLZG7be2c4loJO8S+djxWWmnYeoqJ6FJz35K4aI/CKJvzvhdtftt/SgiQiK1SAtwrTG8m6iKggBjWNsrd3ilULuNLlhZe0NpdlyRlo414xOVMUliXCz9KpkdAQWiq9xeOUfrNJVZiiVEnitMKIh2i+RhGNwPlkuz5PhXKoOS9klyXlhv2gGverL0dsleV7FH59m+teK+AJ7gF9jGsMN3Koa1b1I3PpDydLYsKs9cCjx9tay9LsiXPSSVJGHwFtSuh0Z7g5QtfcVyryPSw8oXSWHOLe+rhyAuItsFj73kFy7PHuKOASUuoAIKc0BYzSq4HVypZLDVo6Moe+HwkzKBhwZ06CUgdB12+rLD/UePNS6TyZ8wO4sK9D9Ub5s0Znare+xdhAO7jH9+0fmDz+7Fh0y7rQ607FGx4FfSVWQLycgQxj9vuZ36xINsoZau37Iko2nfE2Askc7PdT9jK59Yx1dREwwKHcEpbmCDtyRAtIhQ1GpOMZDevogRvv4V0rop303YH/FfIkTyRZSBddjMgrb5N5gRFivwka+dkDjbpv4HQ7GQYftuC494NKHsdsFz8PM+nlm5o+o+kq5e5XUG30ps7HjGim/hFZneYm+jkJ61a5ZimJmhQ5jU4SMFJUks0XeIRwDSynoQovWTq+sLgy/wZvhb5PprrufSgRztqj+nuzDuECblgCEZl6gWJTkfyfFdevHUzL6bXiZIL/cncZcTAiNv4ugjQ6duDuQTLSMp4KhATeAoaIoxTM7SNNF7Q8tZRiJVmfrNYlTUvelcFrcdRyShYdC70vre6h5aryTWPYnwt1Z6wj4sHHEo/PaST0J/BwC2jydoeLtXTKqBkuV3g8sI+4ipNLjtnGiDt+zxpPCLYzSEFIFpXlcdBPoLmMdfrQ2jh215PdrC0RsOHszq8rMj9vqMIu4pGSYUP9Xf8WYi/WDt1cFZQe/sn29lqk1s6YnGSR1MybOgBSF3I4lC/LAeM5F+j0ZYuBiZikRozfE74/gqlkGOAqqKu1F1EAXe3V6z4vwEW8dVadwNr29D13fbKTsgYem9aGoncPekHCau6d2XycfYxhBcaxgtZPL/I8Mf9bU7vjt8UiwzmrCwNFQ++dIch28wgeL1wUt9CdjnRbR+MZ9ZyyLfuSR5ldZDbKMtDtkbW0IwgyncsM+m3jE9Iddt7DWANRtMciUjPb9AGbxV68jvh3QQTsIat4y5evJStzRgJPXMQMX1uNThOsufAKLuR3EmxOBhzmrJNnB4SzsG1aX2qxST91k/tJX71i/7eqR7n/f9wjRwNfRg/kk6X4cjIZTook3vOPG+vXpWtPC0b46SUoHsv8MAfX7RxiiA2n1e92tE6xy4BkXmoV47n0dPYxgZZpGkbtDUl9jIdYZVodjkLQOaP6I7R7laGtjXGZ6yF6vpWvBG7Vz2DiZk473Tn7FTDA9XRJ9jxyz7ztUBqeNmGA5rkNcP2JDVM3qbKtGZ9OpF526oe+GpO2LRUz+KB00msA0GHeY8Fctam/Gpd8187Ygsx/10uOaBYa1n+v7+ISYKh42qiw66vWY3IfckzGn8/Pth3O4y+Ll4VOMU1wNNIWZwyCJYlqLu4qVORchPv8Ar8ets9zBxMLCAjoTGsN2LpmcGY6My9gNiUqiaifBfkEJ4LVqW7+fPH5nnfYoehidksQOLEXnIgmPoCGEH5/oyL5l5HbMJTxUrsdIdJQW+gGoBT1/XeMrGxN2EHrV/xyE/JUYt47ZjrxPhDjKaoztT1VsHN48KZeMJ1TI6FDyxvpYSSxgDjtXiWUq1ZH2BpqXyK+KmYGJ1Km0UgbTItWuiANRzkPx5AwTbrkdmgA9De3RjJDXUoK1x3Sp8TtnyU0CnpKPGE+mEIq6HGdpVXTvzzM4XQoljce302VLhm7+zpDMSfmCZEWmQxE02Nmv5OGnPe4aY1/mupEL/kUHC/MfdplsieE+VX0wTnfsNRhBbJKDLeyEi54ewQ8qXmyFMtGT4ETp4QhrCQZ7L2bi8oQ7IlOV0lg6PDX2NlZImIKkKy+GPpptnU/flhYQsdFnaCUv5hlHtTSDzs86evbhaqf4rABG5HjRDpFTzp+QkqrXzUNPZkOyYSewyZdx18wg2OuuHemE5pd8z81sbJWmrRPbyCM98gaCorxcJQbXbQy7iRZEpASOqmXLc5GUjX5vkMu+nBc/6Bisk9lZ4S9BnI710JKaGdRU8iqaSPsf6Gd4R0+cw916e24/ZK+hT+KPHnP4X4/0DbNeg3iF6vnMdGq8dc87hsLmMz9/opas0x1sWQkZExzH6GNpgJ9SPR6PmAXTsEZ65lYtTvng1NgwFd6LcbdBMbIEcRffeHA3gLI+vscgRx3sfqn4AubqQ3r/7Hvx/ajeBXtdnz7zhjOGfXcL4XbCL9sZSyzUN2ohHS06lzGwWfzYFxPbJHHZO3kvB7CZmDGP6FQR19dMbUxRQzVDzvHYezOPyxPZXML/+4dtdF8f8ROifzHvo70YWDUbF8RFKE9A+rr5OcCfa/ijvJZmZgvbE5onScAnJbinJShRC8cuEtWK5pULBAgsc4Ks2yklWbwIYP00GQ4w4+tqQE6aF9EfTumo7FeneB2+N5hsrrUnyISLajqa0s9q7j+VspxIL+eqHwo60cluo+4/WhXsM6G8X/ebrMfmMq5CwXnQrnzfzj3UhSqoP5wocuC92qn3dXSETKvMhaqAmUCMXl+ogTa/Q6OZIbxOT2YX+Eab8gMcOGTvVO3FicL+aZu9pcf4jvdWOxo5QajrTvS88PjAd8wp3Fs7uW7K85f7Rpp/P/WMomxX8VI5UfvGlxVh/PnTSK8XgMByS3ErOMw6zfpZW3rPBzPm277xM9L0iL6ODl9/7kMbLI6BPn60+s2xLmaNaBR/bYbnXs5mHO9ti5f2ySbHpdAa9X0bG8Vs0Ys4uD2eumSrLidfIRe7yTaKR6Hy7iWwS3Bhz9Z/f+DbBq9qUn/1p+rQTAD2zuSPwDw/b5DEfh5DHyjz6mluJf8UAlyKzX/krR9IMtpbtqpb2YdtetSbg32mqjFqbdlkGCC9ocOnMj87EuaT20nGevjaORIgkGmY0bkLn31ywUUbN3OWPlfyq45nZmpZTAgeiDM7wlKhYJEwihTcg9JHvb6Z6YjND6ZIskZDVhOsB0Lwy+qJfXiGaK7us8QiI+kP419+S9dw3UIQDOr8XtiY/oBKfP9/hcyxsZmPuwU5kCWkAcZBpeQDTvrSNfS0dVf1Y+GX2sZJcOpAbv48sasZFn465LiShEQ+AWRHZNv5VRT9B1u6Lfgee+x+uQzrPKK+KqKwL31sp7gSB6P0ME7/c1cQ4KrUqttU+Ixh9kUfks/y/ALNPtij6I/PFR9R0s5pke0mc+qEpAnZ2WBe73OxNrKR5FIkhru4fto2vSgzrOS0K1VfKJq0OaP4li+6pi6cdIgmk8hdIPPFlsR5ZzRxfhfEvjIcrfhdbj9e656lUL8x2nNye6YS90kEhzAt6SABFJzQAoJ5isHc3tMalxk6fh7iJf8oa37B7xyjzByzc51mv+KWXspJ6Q4R55sWja/DGyA6dQK6hKv6mIAhlUvdyqd8/6crFQzCAjsXHjR/K/ScgWUosW9ROut612MmZIw7TZ0RxiOuFUePehtMpGKbpWph2J6Z//NkX6/+vzoWFGCk1s5qX26eQmkPKwmVHpsKLWzLp8Qc3AWRnpFpHXK39vS30cB8rMzOgFoMD9RKBhAhdgw4MqtjkoChchMut21PpuqNu9bHIGq287T2RT4TsXDWXbfqCL9I4S2cnTPFPPQwjoKidXi0Tqeu33Iz8XZxNHQDxzz/3tcp3GTRhTFxFka7BzbxR9B/+QnmrWmHYd7jyNuHH5wPEMXR8Xze8pPP/avNNUjpkVVdZOXuy36/pt5YZsz7c9rSrAEJ2svI32iXGpL8scT3hllm8dZJi7SCjaMRVxauJz6EjRqfU0n622HgY3I2Zd0y1T5a2GwxOmg9bosDVonH8ThQdctj1Kccvh9IZwmgWU5APB/UveyB7dweIiid3WOHLz9uBI7M6OFom7luPEzs0WdNkNlVArVL7REJ3yCb9bqlK7miH86HbDSneSW1iza8r40LLPZvSl6gcvo0BdmvtHcbCQ94EmBPm8nbvfWxwk9mN8SuPsS+XeqIpl8qDu7RqQtdUIfA8CTwRs9nrrs9Jx87AfRyxE/bNwiGN8A/cAdxepMfyApPYre5ypsr5sxw1jigHQLgSYCEl30W5NnM1YPgl/YbsqY+xCE8xvG9obhXhNDJi53Mh/CjL+HJBVtPDje6w4o/+sOgNXoUODm44En4VKjUST4I498t+XHwGQHZPOC/dk99v0UiCQZ73rSDrP0kmx3mL5ry2D2/4UVU36zIyFIZmzM78zgtSEMJTVxFkvsymrAw8Fis3KM9RxmzZJ9zCfLczPN3ywjBDf1XVD/ygL5wcBl7Y/V8XzTxfwg0KWGDtk2/+Gxd45VBYhI/aFdW5fOUWGUran9l2Y6Xfiyx5JoNx8kqg2cDOCRmtVf38Biv1+/ML4Eg7vOSPmeLX5Epc4YL3+p0CJMM+8ZnTlzEltjpYU9oQlwRRjsbmVYtU64Zyhakh9AcHrUiAu2Cu9W1uqMYk5yUpG1OvXLKt1WEXdD4K6d0ByjKSApzkLNUYxh0hGPhh6XCmKyFfI8eV+EN2XpdSn9OYc3Dl0MRYY68TbOyjI89sAmNIAvb+sZbeIaZEUNLVa9C/ZIO/WxCXFI5ihd/hkYG564p2KFz1r8yjX/2zHyrANq8Kwq1KikhkzTWV2xoWZDyVKpt2qZtsE1b+KgRd/KcGo8AU81j2/ZvH+rfyXg7T8JoOINvzMraz+gXnAcbZFrVVd9EMpe/szpybrAkYqdO4ldOCQfLmxfmMZ06qFE+TnKNAtJYW33f2vUoj5R+74orZ03eGGftV096XjlrEE00iHiU+mxuEbipq4CsDoRuLpweoTDhZTnENgnbgtoH3vUNxBPc4B5UrMdDywPGoyXoHUujuZ09SJdH8eX9XxaG8EH6nyuw8TNZpuL2EWceEAwx/DB2L0eRNWphy+wyjJd75/xeOp2MB1WcRl/B8gZF3edc/6AGPpnkZzr1K6j5/XumIt+aQ5Icw+qKcKPvdgySIkLsuZjNEavpw7Mb0dV8owT7UodFxs+JlB0QWXhLgxEaiUTVVE04wrXMvg9RnUZbE2H1w5u4s7AEb4LEIYRQidYcyPkcqht3IQtHaXxq0Il/j02CZGvPH6CCxbzsJTxjHlhsVvyA9ks/9LkUfiyriDrBu58QkHpDYiGFyeY4hSCxhJeKMq0zLFs8uWlaDqOaHCs/JPvdYxQ9gAVqQekfB3m/Lv0DikXTrY3QpQWVh6s2l9sVC7eHEqHtMhLY7f8Xke3+0Lk57ca/AGCAoSMQLBd8hmSblf72pk0Bi6kaLVZZ5+gFkKFAbZ3fAKDtVR18h2Wcqo8HbvT3CmjfFlkzjh64S/DM6sHukhWodXcWhgiktOx8V8k+N019GdJ7a6idvbFN0eMikT9k8CEmk9fVZb2/h/I1gUhoSIpz7i+QrPfbNK5oCcxyD2CuSiC0Prw01GHDm3L76bvhFq1gc0TGQcguiKfmSiCYVTv/fOGFsHFDspDxtVa0K5u2QUq9pqoFNYwvSL1Zbw6mjAAubgf/Je1gd23YIWahHbTT7eiBv1RjqLHyOvJ3a8Yl1kIFoiww63us3gBsfTQZXy9gJSrUhm4kMlRCQnjPkHIakaKji1TCUy/861O/4Liyg4GPUPubHPu/pQb7dDoEPhXonTPvpg3vDGN45dEH9BkVL8uj90raJkLSOnttNI8Ozmv4XN226CQxGNvIVfah+fcrmcUJQUvGEljOYwqYKraArBVjxK4o8ufn4N+m2646HHWdW20DkdYJXCTQEQghV6hQ0CfUblVW1wtvXik2740+1/e/6WWejw0gf9nETxU0lr/VPxcnnAnPVXV6AFZvkYvzrwTvpSEn+M+FZio3bHNM/FrNFN4yBMRYsKEClQd/SFl80Kj0w1T1s9tF2Ncc5cUwlk0XCX8T6nOZEjQ2h9fjgOnDtah81cQu0Ahd6s2vhlmwQGW5oE3jS5wrihe3eE0c7umuCaqRAEEpiEEaZCrCZqkgan0gmTwhlXG6XK/bRpWH8QWKuFlxw20Lu0wLSath+XZcJr0b4X6BLGD0qYSlfu8GKXOR3im0qXEoYCiXzXZ5xl8gK8WFNjdIEk0Qv+206/W1YmzURXJf8fDeeLmRQ+zYZHIWAFDzg+keG6/0GpHeOyEuEvWbMCfoIhQU4oMdgAjITDZ4j8gHnn2xCmiCPl2bW0Pmy8lFn63zHRjC/Hs6jMoAn8VyPD5j/cI1wFrAcrLm509k5tw7k9+TZ5+LHRXuBjrtZO4r+pFnG4dpTl11Pti7zg9usoF/MwA34izz+TlPH8Z94HBnXFBYE4vzm8RbSx8p61hGz35qzmVjsnl6YYnN6L7b0jlXcX7MpGZgFXEgMlN/nN6TTR78BK4Awlk16EkPGLeClRVhskIiY4OSGj//pHdATlyyiUJgVOHkvXjtORGkaC6L+gEikGhpUH+mgg7LiCRcriukHh+4sP5gDQSgDIDsskBzn3r1n2MBUhVASyRo0KCGWVFhB7i5Aye0HGBQAMe/F6H3ZsLwpzTn0lxGZyPE95xEyc0zfvYBsWKvApad5KPMHXJnDUgADwAFigYiaI5jLeyK9+xnB7w7d+Oi53tUCAj9znh/dC1M+1b9r+OM2bNufU8M56uL0FUJunyE4v1itQXEOiCDnu67Guek1ir7rLJAoqFcoJncr5Q5qkBV9ydloUxjKnh0upxhdQ7JfT0hAUDcWd+3U4s2ZUhKgIcSkXs21va7ZOUAcp31/SwZEeQ69gc29dU0mX64C2FcCVCKO4s66OkybUkUgFyqnUil23XfLs0ZXkOVH7PHABwClPW7YoHMRLgmTGXfqFzBKnTVXUeYNYjju/JuzwBwaJDfrYMBiOMB+VkaMpwCVHZWYL7ONAGywVIJmSBJCdDIdOZ3HMClNX9QWuY5W3jY4+mwfBgP6SboqaTgzeRiYaB0nBINcc+2dRN898oqRJe3DPTdoBm3g1OsJyznNxjE++DR+BA4gge/ToJjckTVRzKKKBMdJQ413qHQTdeJiNPOmq4m2xij/zS5U7PwG+yX9pL+8BftiLR92e7eEWce9uKBH3WCxDZh78cgRhfUV8OHe54BFuqB7VW8vosDE9vyuPEsmRi/bGe72jg5ZFtxsIK5seFmyLVg2bnlRqMJ+D3dWc8jsYeOFiGtMmK+UxA44gj3w6hqTwXNODCf2QCUNMjv+EDCZiSEy0gGOyf4uanAJHZKABsARb2+MwLzBtD86zshAABIZN75gFPw/KQS+u/ZXy0zkeNcyhccLMvwXNSrYCwdCN+Ce1O1Bc+W7i34Jto0HobrNpHgwsOt4yvtgp9UlaGQbbzf6mYMRMOKlbGD99rMYbIb3stIkb3ixkKV7Be6XrFB0XBhwxUQ/M0Xe+awONnfc7YZxvszazEwAeve/0/6WuLfirGpvAU1p/jUdrEOmkJc/o3gPQZ83kvRa8q2m2yxftli17HYfUGinLz4Ro8MRi8BO2nk1+LNboh+0Hq8oO+pJLpBZH03gHgyjreBjq3/m7buCAMJ0UdCvK3nS3fSyR6dBT9OEZJ6xyiawni6y0nVFl8GAJPC9MNW7hFhdT8jZ35KbF/gRyYTZW+P85tp585x8UjdufSrQ/XZBEye9PKpoEl2syL9x4LNMvMLn1a5qibQKiGyL+IEpuDbatx3G8QtvBEFjZfFC2rSZrexSZNRy1yiC6BrE+XYZvbH5OU7fvuCiRFG6JeJiGla3aEORuiuW/Zkt/o8oVIdSldHBKRQu4keMi9HA8PbowHvzHPcF/huMccZFz4mq+LwFpFFxl9bKmhRFe78tJ4HmSRxrx7gHSJHcydv9oxiqQsVqQB3FwddjAQ8ihAPT1JeaZqzDk7mSm8ntMqMDzkp3EI2gNf9bYRN1wu1qhLIyWS9F+Y6SUUdas+xHPiRjXOta9hIB15bbI+7HXcMWOEUjFrkp8S12EhwPvZzoEYfapav+MACM9liu5wnVjFvpcUuEFESQBslOTXodnJpYlFPWmsAFZlJQazIHX4PuuF93Pp6tNUn/Q8z2dWNFImwyKDfIBuTtXlefQ16Yi/bfTFp7yTGvJ4iDOyFcfhRNrCzxvzDb6CQC63GgIQKAXLrMPHuYa1fKu7AjBiztaFP+M0E91Gp+5LGi+5/ecaJ0x2cfytUnu2mQwAWJFe9b9dUwqB2HkoSoapZiR/4+BV4Vuf8ESyA1/0YFkbqB5zZfB/d3UaboPU6QGYejl/7dbGVrPUCrAk4778Unv+DPdQifD+Sx/ltPVpd92wsJiZ3mcTtRdqb1/idmMIk9J4CmPr47luI5ZicBMh6L/5F2XPN+uxx3KiEtTa9/dz8SAchd/BUGp4R53d9qRuntvb6f/IkuvXfxWdn1e501W4tzoomQqW3CP4cayxCvCCXjBaB/qeJmwCTZVEDE3cqFsG+RvoWxCYmwHC+iDRZOo6WzJRgT/3iBqT1kJx5OCjrbJg8CCLCrr3VX3S71adbTHAItOnpdSGCfFJo2d6DhRp9pJ2So64lySBySJPdKtEtlEEORnY4/uz3XypLCFUcEfYQv2JcxbhPRKaYF6huQTSf+yLGRRHOr4oslcVJxYabOrXhOfYb7e7RV/MCu+ezYqLrIaOHu5cDP6wGDKDZ9/cmzxNW2uDEfju768MP7BuI7fkpJg0eBU+zPvt8MdXEDD33TzvuusdCs6uQXKsZXmJiad662gx43QBeDuNhZSTMNIzEMol1vqIzWegwj8JTxzyxPffErBHp0gNd4UTK4SCL20yFW0vxdXFzRMxjW6Ei2lTV13c1IiG/aiKDieP98cBaP9w6HtEGTnsSGzLEuxUeJFSaXefEExHcAH964UFIHPJzPuzxRDgAHObzq33ftGuTf+GQ6KCDGHjo1gg/rFp2v2lHmrO+VPDU6SlrXVqjSszi7/PRKewC+7GvraYC/V7OYw/SPdjBYTAVhHTnsNO/7knYCxd8+Pf940cKykoh76AeBqzDzV7zl+PQs9whilRnw5v3on2e3NWd8ZkRDBITPEaLycxZw8yktYuZtQbXnq61jpm4W5Fr/3rtXz+ur7WX939BkkrJAqXCpDkSDnnMag6RaIncHlPlYIFDJo+LgscUzNMiIGJnedEd59DhyxXzpi8yhw5fROZV6xyKd3PG49WhwIIUoSLMWoTU5jNK+prxCgcWDAC4K1gqXXtCrfHPI5+e2SJ5toHgy77qW7IiYBywY0iCKbhueUzCYgFfIpfNmp/kigoHpZQNxPYTGbNngiO6Ha4MfyA18OCDviWTSJ3GNwQDXjZ9p8UQZfRVH32vL92n3Y8uG0arIcs1lGP/GTgDEQdSd/isdvCofp+Uo/JW4h+YAMChAiHPqqTtb/vTZdhqT3VWAFuAPvgUiFjwEyknPg4q4kifemZriSrS5AvzgjhAN/6emOn1mwdT/zFstlp3mJY2rDn1Jup0MqpyvTKJ3h+mdfghISBS6ligFcpXOdalL+v7kn5zf7IePB2daH3c6anrj7uONbYCs6bJdEXfadbaI2U0XR5q2VcLk9dn5Ejb32y9eQWVzPRMuUiCGH1kWPnGmm3u8oxamNmxscu+XIt2/FosKXPCo2zq8vST22ABXeAnd3ACukBWYwSJFKuLXFWJJEliDiTLmiXpBTd9pFBeJANs7Sf+aREZoBOwBkiEKJ1ILBOSVMTro4eaImjIlj6iqF/XnlDPAIJtXciCmuFxFfLZpfvb+t5cr77nTvI96OsA7PYn9fqa7OxrIQnK3JrSJ/FV9h/P/ir1x1GzOCEN4hR0DntC1/EkIHuJTo7atSXfxOJcgBOD+Bs6JE3OyUM7KY4WqcDeKmCh3cAjOE2mbQsry83L3oltVDfJozmBoZzCsDV7FicogKdKSGC4AYxtePIn/02+Eb09l7Eh2BgRWxiBTFJY4IIXhbGFcPp1kCQRBbSTb7R2sqAwzWlaxZHdHJM1XnmPmUBsnxOYXPi6/e71p1vOBxzHkLYhsddd9pT7NFt7Dml0GCuPGj/x+FM0CsdaItVsWXshpHenUAYzI7ctJELd2OsGY0FEBO2w5nrPfSkBO1PhlcjTOTUr6kILt24rq7OmvXDmNd6Istw3nQPMQjs7jM8SCVbON7EQPAiuLDyuggk6BGCgRtIoGnTTtmbK0IrM7N1nWcr73Q9RTBvA93+BxWhZdmrr0B3B/pQ7GT8oYZc++6yZiI09RuxQnPYcKk0TrXLR12IiLPR0x0IzX0j+rx4rQl9RpJ/5lcDlVGis7A1UIuHkt3M4+Y/06Mg6ap/GWZgs9yVvJ2Bo6u8EC3GiVWRGfJbY68wgUBOVJ69jfLgd8yc97X1P27EWtRWb40RYy0ROBAb7gnAqH/1U4tkKjOV+/lEfiqu3VIIVZIaWatSa+CFwSbKbIVlPvCFaPVfl0ST9ff4xuU+hws+bdhI4o//rvrLk3c/BUvhyzzGWYNoLAEA+JOaBHQuyKYZJYkECVMI30Y3ycW2Y5ManxaU0+WqE7+PZiYFGOnn5E6Zdg5maMjHmM9Ei7MxEB65uNQoB2wmPiaAKvz6rcPkyqXCMBf0+BmxH+ckyYt/jyNKMszGlj7CiqmAM1oX2LmH1nCZxZXYJ/I3piUjC98Vt/Dh6yeCip61ZkMYiegrThBP4UXidjE1SuM0QMSl2WsApZracT5UGIZrMuyNOF2KVyJ9ALrQ9T3gcL9WHvmBFx03MbNkO+0OJ8nRWyLMjWoCYknqjyq5AlTorDKZIJ6pC/BC30zl5Qg/IVkiwkcvuOm0OwATuTrx6zeYi2uE9jVwxk809bkGSdb3+ZazcB7QKgbFJl5Y1wyCj/gmdWKQpOwRU77NMT5fHOaSZABuLGyDHjZKNsUgU2uSYlPPSdZ3QPBgpglfh4BtLdEqmanaFqDvzooqudvmbmaGMroZAdgNv6pBQ0+Jj26K5EsGtymSZNGRoprrJjv274M0A+saYhiqoLWTH8IpzRrH57S5erPyI1oqrtAu2MzvlNWugL8brEVT0KvRC9KvRsYP9dRRGt0lDnq8oNKfnklELCtBkn0xHrdcrMrCF+9QOpacOxvR/LjOUAN53dTEqEtCBOL3HOfCP23DO+WqNKCfE+NATutPekP2+DHdbQkwNJIBdMijHpeZZRF6i5eb5NRgWy30DFtVnikV80u2IDvHMSwmQaokhyqnmvfI4vHhZY3olr5RUX1xRPrKUR2foX8uai/lKAsDdAT+h8SvcXBzhPAGXxq818CvdktQTSwoESrFN5HHjfPtw7FkpUmZNUZZWVgbQc5l753mC6octOjc+UhDpkNgXOIRgckoWMLJlogSrYm3KPa0IudP6nPHBRWQM5gmJeLhHD5OXyGJn8H5/ehsqlcWaWwvTlQeeqE/BcukMRJldmiJahAfrPHCxuOF6U1VufX0Um9+mpnhfeXF8Xo3uyAFWkfuomZN2nn82d/CXkzEF+Edp62gvjv7GkKiue4ClycnpKlssrrS/UBQPc7y5QChBS+ZB2nk8f8l3IV7rIO5YeFVdDDR4OVUbnm7COlsLBZSCEvbvsuSidTzlE7R7CAfgwAKctAGYVGJ7/Ql11h4rpDMlD1XD+a0LnGrXrVF9ltmHOIT1GRLtzqpzVYEftapVkp2SS1EZt9PH7+9a4l+3mNp+5ObV0Qs3AyTF3UWXyeDiVnovhjk/gciKxYaW1e578ZqbKsrLTSqhdFW0o+9Grpm5XVnffE5SEqedFlfbbCNe7SPCIp6FvJkCwdMv5lW9Qa0OJR8wHm/LZmg0nHZlTsyyyOkflB5j4M0G4CT7NQG0pMu5ZzVJY+y6tnLa4l2fOzGfGHRhAW/VzSQK1YYubnYX2l0ciNOkqeoFpwMhcPq0YBJaC9awKhPHrGM1WA3PCgvOopbQvchUs/rWUQh3K81GG/XnExGQIrzbNboI867BvnBK59Ai6XMf4FXEf9EYCFJaVZT+xmUUZjN9Q4dQcXoKm8yJcLH6uLK0HhIdZhzWcjBQwSu7q+AWVtwltAq/qj3poa8cowY3HBNeRU7BhTu2JM2H3ak6YIvydp7qrp8cy/m2Fx/tIyf3hzTgcvP3fIP/znWs3NTigGetzflE/kyMgg/1IcPh04J9ihgtXRLj/JiW0BEHBky6hbaDBZw+CN7UNUsV3ZMZnF1xW9lWQZwOQbeLFkXUGugCOXpicBsKXXhXqS+vh4fKiA4c8baiKXxNq4dxPhzdks7N14zESLHSyVHcGCutS3lkDvoEG1uUL09kr5sxhWed0RBPBBPQT0ZgKQ9I3hDQaSx19rwuGtmG9HcO1oOE9CqAyQs/uPfOOSCcyNqnNS9sG9f/pcMUnQm49GDW0/EfRcKfL+Eyf56Il/BS78GL86rrhy0aLb1fiZFN+t+cj+dbF/COg0Z6zUPpcseiIIclaYRkSBtZ/YBncyIWhm+azAdekmDI2iUk7HQ2OPeBvSExkfZX4C3Txt5SqRnz3uHWSsvsryV03D0AHTqKVEzxtf9oyxwdMoK4mozSi18OU1C1u0lugt6cDqcbgfILWe1l7MyLqQ7mHaViZ1zvaQqdMUoWtiVbdoRvaj/4HQItBHq3w0VVuG+XFZyFGU0ryAVbN0BHSHN2fYHhjY081qqqs0ZPlbY64Iz6rFXEW4y/37DNNKGH0SL1qMImmjUeSBci2XvwyGxOEjYB9ocgI5f1NFlQbMzGhkRvZOigTaGSRF0tC+RPeEzLG2X4MvlqrFtqTVJZgx1XBQVMmjh7c8du87f/LRNN1Sd7Ua+dtZ8TTVY8JTJsChoezyvH9g9LhVI0Or3yVjxgv9qBoW85xfbiYe+MqwBICOIpTVuWeSWRhUvuJacOzBBf3jTxCAuNYdClmGPowt7EPA5yj8QVGJQ8XGunJUteVcrnqQiGEWhrFWlAfaxZ/kNWMNtoY0RSdZWCXIvb0YMUglOArfi4ZO6w40oMbXi/MOylkcVOQcQaMzry19ILY55oEjTixKgCtnbcr9oRag0YQy5/Leawa3vPF/TL7Mr1/y1IM3OFHSlu2sCaXDNxsb7DFRI5pyW5KL7BvotKerQQvHBXz2w/QFEWCYwkJ7tKpVgIExAYPi6xWW+PQjiK9PBlCzPZSJQsdB5j8mHJYonMzeQY0YXyfz7dRDd99DMkeL0UFSHc0bUj0q+ooFxTo9KwBaYz2oCAGX1sm075ndcZUZpnrijJU5c2AwlNFPcyhRLWzu0RiCRmTBwjZ/ejZmm4u/STLTmS7C5mzIRkKuPVesrpCE7NW/1L85q8YUqcvhb0hgbOduucAIYj9ZViXRktJfWNnoBIbXxd29+uN8mcU6jTfSpiFQt+UGnm0nVZC8diiUgSosnrDe3c1YZXIoXVY23IgBV99JGTTL4HqJW1cU1yuSFh5P7OapXt/s18doWRgMU4ZgN3AmnRPRsWO8NWlc9sZOeyvUG7TvYL6hixzskAEuO9Qy/UVOVrhv8QDn3r6Q1JJ4NZP/7WEdvUB88ZnqcNrjVgkXq19cO5Su4vm/gihsnRwxTnc58B3R7JHkhATdEZ5+f1SmircirJFe8s+ffdFuYAzz5NEbaOa68tGO9rIz/bzmaWI8LNfYJ1BVhNf94/Mzq79dRDl8b1M3JXLKYMt/Hp07yVMTmTDzxx0gxso04ovUv1WJS0Nui5xfjZuaq1xKpfrLUHjFNQxAJN3vtV4VNcPFcRQT57Zb8W/S7xOxgbP/7RuI0DGEfcS0c3jKwzJi0CzR621DpvtjmAzNzOLt7E9XF8ycOeqL4WALnYIN5KIORijbeMcNhc2qJJsOmtWVgyFu2XuNC5LQs6a7g4M4gdspr43nS5pgHAojbYZqLiGxSDMz1LAWncI4h6aRiA30IrfsiXzzfzoYiUd4tPHpBokCvlsHWj4Wu/NPO5eIJoZrPgbXSVoh8TLPohfA+QBwFzGz1hPizi3EwA3upsBqwffvRq7PbHbo4ZSuMXwDXbP2ta36kwY7TTC3EfYGhiDi3uXYswsosGUVL6U6HjkPpAjj2GFSt3CA3r/bxaF8f/LiG2gPybSbKexZDg37bisCGBvyZqj2N1o5YRL2xxSjh69OG0uT52d8xlnvQSOmGJo+Fx/8RhTwvqNbkN1PcdD46z4I9ER3yBUIaM3QBOGS9obb+GdjsBAD+zTq4XNcPTsrHdgP3kzdXNTf1GgBHu/UtB0hTTNJd7X605ZIhHFP1Ebje2yAYryNHPyvBFr0osGOpu7/0f9BmHx4IzDnxacHUduaJNgfQ6a0a52jigvkZwMaHgHIfuk3whm2LgXDgA56IKLhi3XMgJCb+WYhE3vJfH4pzTEZGGsb+sh+BarrcSCsJLJ0HXiD3bVcqucUCHklzxASgVtFlS0WXjMIvsDQ0zdIRPZkdDzf2i55xJfXLt/C6sfslIJxQCkGReNszIlESkKb/Mdg9y7wR/mwiUAWr3SCn7mbpWn6Hi03XBJauPypiJ+tRokNFynQ3KGnFTlruyRtAPIXCIWxiRxwn7c7XfdYHP6tvKa9HNkK2tmprtq6BvQrqjf1jFW/84RW5CIDTvzmePhDny8PNAkuoBhxDDQT7LWT35z/DxJj5SZmsdV7kJlaJn53By5npYUMgGip9jE6Fz1cdKmM9FyXGDiuatvOifrlnQuWCrqOLJ5YIxagutlYUVbLbFgh53q68VV3OtcL5PxzVBQETrFTUZRTQlCa0XKTqb4O0J3ucV0hnONygcPYjIXQ15oVdlR+dMwWRz685OGltNv0kl1xkYqLTWLOLhotVeRiwxIYFvOF4TEgNXHS+3ZaeimjBr+njuNNvw9AiLUxjwO0ihVg5dnx/nPQYkc5qb0OA4wmajVy9BNe1rKkwAXyGzItHOUR07jdxGe5ZPUGAYHIPMjkapLje+sj07ujZ2VfPUe9sz8yI5+DJhTzEdiDVBSAczVeaOALiFaUfVc3tEjGwcBbSZ4EmiU9nk+0rAH5+6t3pCo+h8D81y5HgvWqOJFVBekohXZAt1JrnvsdQMvz8utfx4HiirLhnieFhJG4jkaykMt9PvkbD+RAmTT6TQaycjuZurRCvqX41JC5BUx6ug5ur1KRiHs0rdqSOOy8SBGye96fy9kRxGneR+MMOQ33Lz2q/hiJT4U1EGdyb7FyvBnHts2JNUResHJFrDDd+Z1uBTmsdvosfEooxlLm9lrPDfJ2G4P1Y8c1QRgSQtU/4ypAa6dZ1RxgJmXYDTruhaxLLSBnckkbsiHSypWiT//uw7hIv6TN3eNT9D+QLl+3j+qhPfe1nRna9G+UW+eHZfeCOegHqXTPVFfZ236Ui4fgRHf/A0Dk8Fg3Aifax3Ydvxf3pn3j0sLFb6uHPHoPA0bGqJvv0eesLGEGTNjXJ04oz39ATair0QTR7NkQv7RXYXCLF+wXEnjEhgpHJJJBgKGS14gmyHZ9/5u4j3ZrgAeoH7jdJ3C5JwAJzb2vtY9AfDXRQmXi00VnOwRhPEtCZKtDd9KF6WFLl9P+ZWVCd2cymfYnPlaqwNgldIeRVsnfeHU+v+mWfFcRkrLCuYluAKQh7bsTXgpzEzXRHiWtr6cONcOi4r7QklGAuHt/BLETWFou78n+nEZRQyNpzrMxriQUCtJOjYuJS8OA+wVmaU/pUIgnfUdDlRzEGXbxmyr56Kr2O/vhclAgbRimcJPByGYWs8nPzbu0/Ttb4AEN0jJkieTm5HC+A3Bi0njKDK1uH1IQiL8aboyUBH1HjTtkSA+f3q8gKzPDP9Qkew12ecME4BgVEDFkqTJGFllZuwSwUmq6RM9XZGG0Pt1Nhi90icxPKSuVnrV9WocuDFQFqEqRiziRh4/XEhfiNWPADvETsAtsQujEfZm4TfaRdiju1CC0k9z1BRhIf+by+8v7GdveiSPQ+IcW/nvgjYnaRDBXXjamD3PzPt2ywD0iF2BSRXLSek7zXPHRn1x2bSOyaX0tFcthe7cF29IMe+cXbR5Sq1IHy5q9nBdatf9aEDelRqFrw6uGs9DEzw3rkOfULj/fgStwa/h7nqdtl1/7wTLjnKgJLwxAEPj9KhC44LKSlAW7zSPVgK4MxlMJYqfMHi/LrwifcrcQHJx5W9Z3MmK1/aPNQc42B6L48J7cPD6IpxT1citkuh+PjqmuOfznxj90BNtX+pWuWw/yOLj2kVy/0lGzc2vmiIweq8DOK6+gl/OU71gFrETJHmXqB+ftDGsfpsxNB0vssXlsYkAQZheHK8Q5rXOzcL0eCtk3lyDAUFeewsNZxVoWABGIaOwlBjk5/fjxx6kXQbu569VqthKi3ur/a6ZP6kbqd30W013MH6ExL+JCTA+x7CakOaHiVLPtL2LGuHP0d1hNJNt7MtWHxQr+DCyHVhzOT+tniiHRrK3P/bhc5XWRoq1/yNJDF2ubqm9JLn9d5ZkCtgwNOAoviuSURzWuuWBxPXYXf3CXnM2kvYXuDugD+ZEHpaiA2hqEyaQnPxVDLXa6BzWlBkng8SsWyt83inh550ouMDw9nvRbUd+2N+oGaCr+LDjTjT4qbxGZy+ydku8srsF4POPi4zlSGyRKuG6plDnBw3UjZqNqLJxzaHvyEx7aq2+RofzoRfJtJjmjABBeNy8dmb7g7/RP2JKNVt7iCfH+aFWbzme8W48ZUX2I0W0Kh/7+c9b/bgQuMK/y3lV8L2+7vJxFZ1q0s4wjQFZnTlZ+V/UjjCXdINmUYTwQYe8ibzJAhFqdpbRCIYRF07t1YzD5tgRkoZhsd64TSFomf6obBkbYDT3X25dOB8Ot7jrQPaqcaGwr3SUY50cjzGuMZ/MCxGCWw/OcaO41UZW1LQlHmAQjWByGrRCtsJWbhGC9ZldqT2j+34YDEzuOlbtqapS39V/N1h84EPmvj/tovmNcvWzcc8vPTYtmjy469BHfDfLODazuzFtrnB5bJOBz8M0x1HvUXfbVyZfpog3f6oH8sXwFvw0h3ntDvc3byMpW4tBHeMT+64LfO539alcZaXG6UnpKWdQTr9cvybm9PzcjoMEmQoeTDRpXbooyyfHcCGwHuW7c9Whe2sOjptVrHD7o+4UUAHtLbfAsIMSupxkKcINpBg8jx+wK8Td4t41zXoEVFq4CaesbaE/c51c42L33hg/HRrt2LSbeKeQKa6mvm3/s5qrcUqyHY7EfTx7eIwz/SHriSYHt0gkqls29zNl35rJBM5dl6VkJFfdmfrZkCl7wxPZ/Hb1io4KXHRoQKByXUZJvHwW2we/LSkAmMiA85lhKJ/abzvTbYFsKHYS+StHdbnZ8Qeu5uQJEOG6E7ImBrz5M3OclmXLxz4gdfGf0eYJv5aZ/4oxcXW5rh/F0Ax8o/reiPHdtQOd4NeJEeKVhxjRvb+ryKznJvaAXKnC3GP/lZ/A+AzRG91/ZtpWjIO+hOatFMVtGeCPMkU2MibdklN2gLQ8+Wg4wT6rg5cyeEdTAmX/igocVga1+hCgiRmGg85ikrHP7Ch7pvUZEacYlbz8G+sKR1VbhFx+fbu2x77EFxs25BgsJNLlAXlhFzy+dm4S0KvbpTEvF+E4biD9jswnF0EPDVfeaaz+HdhKvJNinsA2xJf8HTg2sYzAk/bF6kXbHBj85OuoHhzC2SzqrqQ/3K5dZStasxDtcX6jRGGkksu9OSO2ur4Ge/jbVvvQWCp4zECi51Puv4NdXAbbx5rHhkxc+LsuYEn1AAkTa4dxxZVyoaC3MCty3FzZ04f4wkLIHFSY2fJy7+g5Vz41ngR93sGI/8KwCqv3GjFfUY/hEaePjUOZin1V4BsNJjWroGDlrGRv9SNuCcbyBIZgLGMXDOGahigw4uJjRPr0lHxkKW4NdcKNITkUk3qI4eFw1Zs8JCRnf7A35vp9OCeim6K6nCGfu7LEemdGX4eYsM3yMaP+fTcRrtnvGvXduSvDUWs8kQvAYW/JDZ7PnfWtHOFmiUjvR+MepvggBB7KHg3td7TO38jQjx0dWvzLwFLZidVA6xNysM0xtFQEs9D5i+8pZvSwcQgQhb0F3EP+0mWORaQaBcVPUElz9t/smVef4D/OSEgnwICSyIAif2VwdWBFFRgA/eFesHWGbjNu909kT4Ih7bNjjYb31k3ffJdoz2eflkZeEh9zkIcgrRpKVx5jmu1OEkLyvm4N8N/M/Hdt5Ydo7aoLTdsXVw4b4bpmOXt+7y5iWE0nP73f3HyUD5C4vquvKD53fFxLEHQ7i2kUdq7xnrxLSS2ye4ZNm36zTHnl+EcPENogbKL+Cp2JDX1UmgiC6VJif8GsIbYBeySm2K5gJc+AIWQhDJFmenlEeLyXFljYLPCXW1bF4Mblgk2SF9m214mo/PLap2DRdN9Wz1CyRJwfpMNpuXbB2IVyc326IfjWmNm2QrgT6pIJP+SotoFv3y/PFbnk6PnKzwq/eihdPlQzs3JMqHWhKlyxhcxGv1LFb7uqawJXE07hp/Tn6C0xDO//HL1Kaa4OaUddeS2SB9IgDys02I+CfoLrlmue9vSAvfbARInOdxdNv1Hyf+NCypdPL/1Ez7W0oL/yRih/6IPFGNyspPz0ym46eFUD4Dh1TM0s8K5Up+Mp68P0yUrob5opOZ//5OeKA0WH5IMtsiXwdrS9T2fr0OFP3TQvrW2eKILzWO8HKf2fvUYhC2TJaHioZzPTRlfRJKOYqhPvH8BYZoJ0PqSZFiJp8I0iINeeVIVxj6bajQE7MyItzniMMZSBgYyPcmQ/2cOkWGgqkJQ59DSD3i5Hpoq7gAEZ1PFF0uFFqdV+Z31K5MIjfS23LnNuEHAM3kfFt+xMzgkUpMTAojpzNgVNgKjVp51s/A5n6ct5ib+Vm3Q71+XlxDwraG5uHjTSmhD84HJJWiLmw8bfmy0iZfJiGs3oYRSKKV1kIMXNydyU+1itR3wM6ljwTtbpNPFzb7MEmhDc4IQS5CA+4FI+5iBz1JfpmTbwKV+tgnRFS+wyrK66YZwDqvE5LjRtZfV44Qf+uq4Pithc8xCnV06sDoGO2jX7S94xQD+9YA/4ushMe5Epv6/lwv4nlwmQjTNhSP/ronmwXV1cs/tVDSJvlIHH5BEe+DZm5OD2L1LTiXR9/y3O2d/QRyyQiJi1hDCBxpRlkNgh9Haug1Yq6MtGTAPZP/OGcUL3+cc9ZKzNfEUX203mjAB5LO2LOOTprREkzwjnB5oC00mU+g/gRJVK7xlb0HcQ0CuDv7twCzjuGlBc+9V2Mud2Ai0tmIxaZQ8I5rBFzGYQyTs3KnHh1JL0mEIrqhUGzOAF9F3LsDt945QDwOG7Q7IqzTx2yH4Ny6TaiwMjZP3aPSQCP+11i81NpHKbUG24w4cGlsnc998M+fN1jJHGJ7mJpgZvB6lxMeU62WDVuw1XeyI9lytaUp4YfDaHGuLv9oTrTEDDJ9uzOZzs/HuqMftb94ftcwD4jqwWGBuX1yzt16BjWt8U016lXBNVqs2OvsrAPwK3tsPiavnoG3Z0zG85SqOa0myPhaQ4SYmEQ7JTRm0nYns/SsgzTLN0/pW96rlAg9RbcRxcU8fWZCOORODLZkAt7zGLDiEX72hiikSLdEwgwRueY15wIhq0uXZVZwY3LVZq8Mm1yGJoYAhS6t3hu2l4o1hFSD7bmhgheIUo9gnNfPcI0SpNYOOd9eiMF7rqwJdwo1zCeUxsk6zms+Obs48SM48JDRAkYWhld85GJaI42eQvjPwDf+TD07nikiAal8vI2XKA2PMZRZCUDz2KEHsD/mmny+LepVhoURQng9sMwk0z5ImUYf2R7fMU74ptuGcA80yGIwT6uDckEpEyUew96pD3HK4uGsOHk6cbnvQ2v57cbDkiGbAdbyy7R6Gvsp8WJsRHijp7WgTAx5/PMTV7WYcCDWMa/pMSaMR4bqeIF0FxBE6xHnkWJVRNPJaJgFDCCtxw2YD4Fg31L3LIjdqcYOboVDPLAJJFaN004Sgihb1/G2gX/eDhCLBw47NrrJBC7oEHUlqvaAKMHPEybZNfo+l1fyi0n+y4wxGGWcf9V6g96LhwElvqCWTvxvZ2c2MHtLGOkjqZ+6rXPXeO7ByOSXnnhZljI5rxnXR3kY0DjO6mGX+zX1Ihl3Pg8j6/rJs5yNYGVReK0EQqK4aDOFvzOL0wOeHWL+RFPkZ+AzwstkGCchFCMBCSl36DbtB5RGOJT3rBbyVKQaky1CNCLYLiuHNwdCCuegfPogP0Xlvjai+8C2vdRFc72ZGIeEAs14VNq9ehWu/ys8Fx6IPq8LqyL3qqLPp9goRB3wvnRgBeRJQzd/jgr0lkkcyAdTHK5kwGiUD2wagZ3jfwc6UFu9T84knyMXsz2CdJfX5e1EhOVcOg/RXjB59y3/FaWnCA4Z03ScjX7CvU9OB3sBPyqnvN2X13GjGepk2Mghie+CtBtZnEGJRuDdh8iJA4XtAWTMuNf9ltAmODCA09vYO6zUr+FTGMfPQISx5OYb18azYr+JgYaGyUSNcqzEabOqdxEI74/eckn6YpUkvW+fqIpQ0XLL0RuybREtxJIHq+s6yBl2QBKwnnnI4ecKtjtBVRej2CbpdEbq6COlbQiwax5L7MgAsGTBf760s6i2CSykAB58f47cuWDSeXRKsFNdgCyB4R267UB/nmlNtvIOL37/x4SDicQ8GyhVn1DhL4DccVxAMYF3wsNLP+YqO7735JwrS8R7Llvfjz8ut95vifcD+YBXl9EG/zbwE7tz81Qs4/PXZb4rj9Na9N9M15D18SigKfP9MKb97xkqUiBgBeztXA/w9+0Udq5XxCaV0UnTWWzDe3P7ZnBxyas+qbWZEAgWj6kZfNQ4TWXCbc3S4ZJiHHx1rwmKcdAcd8W5goY4jG1LD9Ov8XffBLJP4EpO3OHDy7nAAsaF0yOwh9dOs+H1Lym32FT57D6Ur+Cj5JuTia+WBK8MzgjxWzHv8oxKU3ec93Mv54x8eitqdaK+TLz5UDHOE6lV5Y8pdk3maZscbrFLBL8qGZogg4+9Nith361RyQDkQ6PjIqEBvhcf1loB40PPRNTJc9ASx0m+ATbIqHkO48kA/7MkdJtpmiGmeFThyAjMshRWhfOgPM/+efE0iw2EDNeBxaqT/oPM6BEZ691b590wSMRf0T80Znp0zFxABARjMnY7VTMrGqddNPdOaC6mJ1Opalot0Cq68rq85dYI9w9ec/BFl4k9WsDSuCkZqiiNrU5vqTCYnhammXE1Wsn46slb2YVCZQeoyjfgkdEvXzQRxWaT0V1s/oHnQyJkfrr5EOIKwuJ6ekUUoobtWHCDqZANZFreDe7YdpBa1g+eCdvCL2/3D8yyqHzPWi5gCBMX6VxnRKgAsagHIu0F8mJ5F49QvxzLaBWcGDuHh2wzVa97Jr1gXwCsecv9dWxY1Bsl9FT0Ay3hvjO5zLUBcqgFziIP/MEuOY3BfEvwsae4+1wLMpR78bGiO34ij7PiwX9NeJRZJcKfQwbBoCkv1EbtoEnAJKzUDsPIGuvoVmdZn84AS6xiD5g2Q9/JM67O/V1ihTmhBGuS/htO8pMBv+GtcjvRgnXRN1Glwgdgr/7o3srnNOfRECIBwndNaHtQEU51NlPBBbiZF/DWlRrPJjcRc/FM4FjSSfMrQj8L8g1nGjIFzkIOpEkL4qgjzrL8ojvFYrPJIQuoRCFjugkCLN+QAXhEBtyhiHtdBwKMeAX2NxK/Jv2isOoQvE7fgOQPM2n+Z+3oNKyGlMc0CIsHki8jX+xEcfMN2meA6f0Po8JzC3f962erDA1xSZBRAX0zdpAYVr6Xeb4JLQH74BgIqkvbERSUWorZROSfy3yefdFTIcooPQFbNlbacjaoT4wIz92Ei8sdsKqanyDjf1aFBT6wdB3fvAfNXiIAXZ3Uyw30Y0WDm5J1ibva0COwUDrcbMnXGyUWe+yuE5s2c0Lce3oMwJvEMYPCQFk2bq5yPhsB1wb3y/euOh+99tdsFL5Owra/pUcN8qLkynaeV42NzuiL8Hrt3dlbYD+rORRlvRsTIdphpoKC7r/h2Ll21rg238CKBcICgAJ6q2FmIzj9Dw0fUqwbVdrZYAs5ZwFwFRwn8ruf4yr63U/3j7XILPn3rroGN5q8UTrwfpMs9VCILM5cMWcBzpGKAXfj0EufleBlN+ykJcPQoNya93KyKINC7WJ8IaK/w41zgirig3v6lER3jrBcqAecfko3AvU1+sZLN8f0G7uqVDg3+h0FIBclGPPoHL6kCuj5h0XeKNkWVd1bDmHSGy5kwy0Z7S6YFeFHsNV3Xg3bng08lifYR40er4nQfJoaTXxg5YHCpHGOfKoyk1lYWvCYTg03IyQpzG2JC+VHlE0zWM544zxu5ZwmKTc3e4AaVOzYYbJwpx1LDMvX2NuZly3UJmqJmzHhA6t82oum2vlADuy9B+0k1s/JALIMXSbAdzOwQ1q4mENBhfX/LJ28vHDv8vD6Ps0F1T4nhlvJOx1NNT2CcNEFAvJMXmqioze/fVZPhs3Z0G80Opv6q9J5RlSpntNUR9SCQSQFzFgqAsc236eMi7GNZwEwokLRbaI5vE8/mmDCtuG0yTs1xdDp3B0Hqf94OBg3TMtk7eB4zEuzI7JxO/sqlFQGBwsGHFNrBIPCYXyXdzPaRnDPBayK36m9r8RvQsqU7C1PbhI/oXirRme83OnDKC7YM/T8Y1pW8CGHL943Sishs/5MFIMx5kaRbWUOPGi0BwH6ViIfR0fgc/Wbk81lc7pcDFhN0QQ2pfSnUpH71BZASrbYFTpOF9GvlNrG0TXl5dTVExIIsxXg1ST+2J0/rv40Xv2/ZKH3X7RHZ3ERi9e1FrMafZRgvJrrhJ7pVmMP1AARfoH6vY11RN6bnSYpdwgHxOS9/9yFViU+eAaYyQf8ab2sMnqio6lymqj1gJcEMWYfFq5JrvC7wZ9Z6SpHdfWIGwjz30IpafW2oAy1gde7it83j/z3McLENtht7cYLs5c0bElN3aqauT9HJU29pO2RFwtLGxv+ylGx7hXHPB/hr9dMmf7Aj2SRmI6sTNr7smRj4lL3mIbgBwLZp8adTeGT3EyerX3+VBLyb45mE/jMU2ydJJlck4PbSG8e/+zB1XiHd9Tnxdvlgv6LE67TLA2ir/cNGrH6xN4FsH3Zaeh1yX+QAV4J4vaHcDLRdTqL1OtaOGglQ+EoF3F56enN1pXVlEK+TDv4T7gI9gPFE1E5K+u9QAo4rYni9jvtqzN8uM2J2q2xfpVmYfIjXZ+dKvClMrhhRayQ+9z7gyx4xu+EdH2N/ATMaU4bdrakt799Mr4jVC3QwI6jQoOiu35jWLmBCc6K7XtD+a+ci61cYcPup3US3tF0RovY68J+zwr/4Cgl6Af5/+jIhiEkrYPbG0QOGEc8foRF7EMDLhQC9K07Ufo3Jf5QHpo+gXI6I2w3r/wEIAknqWYbdXwREdVwuuh3m0H9CZ7BT7+iuFzzDE7VdUeL1UfH32Y1//c3qpwAvS60AMxulYCHAb+laSIgR/TZNE+SWereacJ/vbae77qs6In46YQ+ehbkOQm8VbHDaOBCRrVNOOVn5t81K33ft9tpH+IuPvYSLSwg+1cesUVLHbUz3SC7j94/iiivyUTZ6kmKeynsRiKe1NwPNLcqFQoAYedDdvnB+LlTBh8s8QXud19LJCIz/rwM1J9HbYMOD/dg5hSp5/m+Zv4u0ORhygGgSYZFPcB8QQMN4j3i4rEn0nnx247+7ocP+eldVZWfJHORqF3J//zZJ5Acgl07g53k2SQbvzXvC8K+TVIBT2sQhNqFAaNW1POgBubp/nWS77Z486KTH89HDdkiiaNAZSNDB6JPsgnUnEPAnuQSNL9tkVCsw0v/mJJZZ+AlInJz8a4LEpAzgjYIzD7FRHaBbj43gQLhN7Am/898LWe+NZk665C9GYohfjHLIvpgws5Dwc3oi394GV2nhcCy/yvc2dH5KbGLaNhanWBxSqDNeCyj+luNAUpbQB3H8ZbxCNZnZjReKgCO2F8oEJn7zCCw3X6vVxErwADVK4+XZkHpcLS/dDNQ2CCV5ik3N4sZlLDKGC9qbByW9wLKj1sJTpDFVS21BFYGvhGN5B1J1kxgGazlF8nuT5foedGsYf4DWCCvfxKXmOydF19XO8wulnqOLDRlFg9cGgAa5p0D0oQuXbruLTfJmcyQ+D3fZtRBbROhpAaOLFRETMtm+qqbxfuJEELQLcJrv1JxeHsjivv7pMO4LpY5/HcCkO2mtz6sbsbvd/l/Wp0Q/Skd7BRU4QG2eNInSXK9Llxo09h/d7uZ0eZ5DBEpyha3I7wzPXKud0cygqBO98WcmkZ02S0xViBPBUED+TOPfYrjtxB5TRiDgLQ4T9M5C3Z6kwJmc5I9CQ6/8l4rwE9rIgO/SNB4FdNFFA8ImCn8e7yD39lYO0ixOoEtJAFl1ZJJcjdNwbE9jf+/PvZaGL+xRNb+9k2PTLAFRxa6ZQd7eGU6RLRmWO6dwDsxUQ4hOhTYqDwO+qp95UmVAU9SYXCKHLpZDXL7WLncNG6RRu3TD/kom4PGUrZG1hsTsfU8WJN/tYQ78UCth5O7eaxBhU9MsAGIiv0ellvQJpaYbzz5wSDtTukwOeeQ7Tpr6lwhIrK8el7GwlpmySxFbRas+GJ3+OEsX4LNfav0sxHy5YojO+4qcphLnXcoNWfIJoYpaFvcGpZ3giLUAwiQ7NwhzDBs0/yb/GGusZXZm4lxnP7ks+5p+BmDyTGnfQqJ75WooOkfnaZelB+ZrlwHztOeK01SDxvG7Apop3vP06MJ61FSomGbX45d/dc0QjLCXRVufs/kUKPPmPaei+m9qU8TWMFGqCouqXjjrrn2P/2vXBMYXsmX1sYgRwyC51HWtehXG1aE4tmMgI6j4HqvNsYH5Kjv76Mi4IjWwJwC+Gu6nmqkVHg/66LS5WsDlq6GJwjY2kWd9NIJe9TA9z0Vw+MJSwxSSPuncfjt71HHegutnfCFSiqkkrl+/5LAhubrdzVjt89UN2VsXF5NSufRriGEwLhEBcED5kAb9BLuKMzorH4nfCuz56IvUB5/dklsq1MgsyLw+IjDSYaCJ8HbHBvNOStj409x44G277bklgjDZ1+Q22as2+Nu0HMszELsSFNakoh/sHldqucES2PuLCnA7aRXEvLUqgcQ37YuZVvCLHUo3wPNfzXVqA2x/pqLaYxSoo22gj3i9QqLoxvXV38uRO3FXL2yPmLgMjQnO7eYyQBcBXXSZi1st1gN+3E4zIGIursGV2YMHatm7sjsph+QxiMkSh4Z6QdhcHsTQ0TgI6CJDujychgv1IFApXXJdbvwf+aZbHw439qmuXhUzampV9Pu9164u+j0pcWfh4Vj8/ybzcHLc1JahsrpGeBqhTpTMaXVAbI9VjPVHzVkPEZs4e011ceP2ADhmpaqKWwSzhZjr7r+zH2W6AghuyK2wzdfSmRJ+yaltF8Y7vB+eQcIpcoiYqkTb74e/DqHH6jYqMbPzbNMPm2y1H+DDRKAR+lv5y6G2Vam3UUzvGDExljTieBonezDWXOF86cnRC5tWAVN11w5a/tTsbHruDH27usG5TTgB9kolEW2ezpcrdOMXUPDGJEPIIWmJ0lHxn0WfHTlArWxs0YQYYYylylgHOwv0xm7Z20AUvTISVtwlqbsD5121043lmYGkBMA6mJl0S9bU9+HHizn8yro9Kv5/bf4IY+w7si8f71fAB6KlPnFJODMbfefII6WyBjheJmQNhPOsv9Cv68K3x4r3S9m88//7b/HR++Kq5FIl6Tyv+VnRLubfpzWHE/r56qEsnxtg5/ery/WWNFEl66ru6t9eUvcDryj4WAmyysFQOD3o4fEcPw/FN7Wp6Qne5PiWaD3tgeZYFiauP7TSkmzUZjO0nmEOMV94p9l6XKeo7EsMzBXAFKDcEycyW7enTlTNHxjd/awAe8SmZeJ6Tq/UbcnAVDnPmZMCmyM2mlJpN6IgtENr+aFA+L3DFx2qaLhoHavAivPiFNJ5r4cJs4UflaiYeFvp34YviEeHA6WdFGEiXdwst6nksSSokANBAK/HdxRk+ukqHEFSsooPBx9ZRmQpWEX9MAPsoBg4weE82eR+Hzz/o8eXVx3qSqgqNv6IJVMHORq5MpXDibKD47Hgrf98482ZvS0lx59tFZyBiEhB7xA2nXxOmVsh3FrdlWSHUp3tjhewjNcdR9HPYF+3MDtictvZjI1Hd0gcgsxuqe3h1esIUBaCJDi3KJHKfYhEcgA0SbOuI6zPe4WSYAM0Utn/vT7cUt3R9kuHHXGpU+mVbZoPXq/mBEn/CKXzjT8PT9Svw/l52eGiuYs4ZVm2QMAnHOypgTfr+1POY4SXsxwaRtutaLITZoeD6zh7vrdtqoejrqBXMQpyTgpLKkIbmvd8Qh2KtqAg2NGTyBwEF5P1iDR6yPhmBxFO/Kl2iUU2yKG7x4vrjOrLQVOMW02NdsI7Wkyn1R0w8apJqoQpILNuXnt0pEvqo+hAzFmxycM6ydhLbo7my5eNbYJ4FtDOH/eSlmZDP6K+0jCNkRvP2qrjmaiocH27ZoXSxSMtslj6Y8F20A6rj21g7reB97VqwVQzt8+hx3BkBSZ+W3nr4JrtvzVmuh+X68t1nnRzd7ny7WFvODwK6sb1teynpytcbof/66OJj+eSANIfNAuDw78Z73pSVvDt7nSxM/N97I9P5mHs4RjKeqjvH3hLQ9B2yuRxYrGCzSdk8NhXziUmS+40ZxeZGx2efTBe4uU5XKcfbfJIcbF34LYFTvpx4GXNGuVT89iK2DBUjJil2bROk0rX2g4gAOW+vNFwh5zivwjZs3y65c1OxyaElPd1uV/HQvNB0FseOPz5Yw29W0cTw062TL+guzI319PP7GEtjeSU0nDK399wA6wzZXN0EfrDC1ZYmfKJEZtiG8psYTOBEZPNc/cA2AAlKQxjx3s+sVk+js19Nrzvr5LVBeoZPpNDtUp8DfF5XaAHucOMtqFNqcdSUf9ZfNiTv6ZftxvjQH1Wk35qqQU0sgo9BoZiUE+P8nHOX+1cQssXP8OUSLxAs7dImVgwIbjBV+B+jeARJLoIAdr+kr/1xrdiCH3V230h1vTecWw0Qu4i2G4HIcejk7KYOccC7jKWMVFnt1G4vIXKtyOKo0IynU95wSA3EZTWl3P3qt4w49DlFuYJpzFfA+jA9QAEM5Td1L2JMb4hgIxhwIsG5eY0Pqk939q323C4no9Yc2MmAA7UxOyzQzZv3TFMWSifSbJs7aDwnKUxul5SMWUuG1xYj00q6UMD/a4ZBbCyWzkzyJ6tEDD5JOtUnU2a1Mu6y+MoI25gJY4pwsVWnVt8mB3nminEJ0R9fekUcwdsl+UL6FVFYYXSQa8DAUFuPFfzH/ZVFblEZpjt8PEfBocArDoIZ/qWTyHeaMhafok1oYXnWO93vmkMJd/m9ACcRsAWN3MlvDujUpE43/sGHXcW7dQR7o32gwZ8qm8uPxC4xVkds3huA7w4BGpI3Snmv7X392uDNRobqxn6ZRL/RmcHS/PDdCB0M7Tv1Lcv1ALdDwSiGioaLi+RxOgHU/Rz+dzI0cb4n6R3u1+42txSApp89rOsXyd+Ecjq5117y8LiFyxszav6TdQFKwoAYglhcxlbzpGxO2523XPSqu1a9ADbI0SuNkbNEbffwjYbGrHhri8fESfYaJBiIL4k5BuKf3P4meSmn+JyG6ebbW1uzzcPT+pc87PtMlyMKtwTK+4EsJSvY0nXUe7V4ebiPUkORppbNt/z7JeIXkpR6Jzy1Ehbm7ss++XbNmCUmOMwNQDY7kvg4gHgeHamSTJxdLEenPBllLe6OIIvqPOiSSCMH/05TlO52wsvHMWItFBCwCv88mREWqv0G5+OdDJMNOrChcQE+b+3rGW7P0rGz64FweMbfzV+c2mNV6M+cIVp4s+uDAW1JYdPJvQk9rPxh1NtQuLyKS8k7LampyT0l8z+gh622DMAG4LRzJ/sxt2XqL1edRGGytU47lbrPOzIQ5SDz0V827Dd5qDbkYTj7Q9+5h2fp5sb/+9M0+gTJKwoVbpSVfO2feBvNwPZth27Xvff8dKpyoWC7dpxrB5vhgs+M2Hd/vDYuuCd+ibU17PfrMTpPqUQFjpU+pj8at9+6IXec4tW7U4fh5EKOQj39XZo61zg2ghEg6XdmNK7Wg1+4PO1OgsoIojQY/YIJz4CvimNLmA3cPCWTquiqXQVFMkhVx1FDtEDKEH7REeBwIzzQhqm2aBR+mp38LRqbrqlbDKLPaqxQWAXdPm+dJbfKst+PkRbjJ3+EIsyZxAiv6h8ldy8TusUEtRxTij1bZoVFP2L541fA2cbYPGMy5g/z0SaEgPoXmzO8RE483Pi5QbphhbbJRZnddgmM6AMwQHLHQ+MeefxtlVWzUNM3LGDBgdv1vkBvt5mgjib1x7r173VeiA67bNwbk8ZI711/z4T/c5DrDP208QROYQtKhAWMjqoNqoAjCKgm9aBMdi2xJxB6K6y73mICf9pCZ+S0RBoYSdjx3M5HL/H1CZa0ZE2dnc82yej/0VZWxyKx3aFZgU3+fRA10wNTHgT+9zkd9bBgQpR/lil/l5b25HYDfMKmiEpwaZbf6+Z3Lk9QPAlZfL+gQD7gQyDSQxRD0isVsUdG3+oooZds3ZTtCB05YN1qpRRzdefM4Q6qa/0VNqZMKkNeEszL7L2wfh0ZvQMC4wd+phBZDNlxrAvhEaNEw9IDHQXChXY//5WxSZurV9rKeWdTde7TC4jaS8H03uWLeioLTAdb4VNzHom1gRTBS/CwFyJQQ5veSUpZVLO6Hj6liMwjrzB9nzzz7Y4L30e470/lLYRZu1P1i0ZxvJkO7i2rQbISw6cMYAL4aC3FvU0aYmm75G15A+7fpBhaSiPCxSmN78yVnnDm189H8cdD34NVNOWS2m727eFlkBuydXP+yo9oNuYzcK+fsSd4lotQqqUKADZS/G9YS2+tK2sIJ9QfG9twEBZvIg/DrdXuPEgIepncJuvDZdt1gOotJjvYuNiN4u64HYDfbag5RQaCmqVyNkBEPkG7nNiYRbItaXaR8ZAMivdmVhBXR1Tv4K4Iqgs2l+X2UgTd2sZ5sMkD9cZWBT4ovi55/xecpojzLAcCuR8G5OSI5fG9tXtH/UKsyGXLMyyN5g70bXFFXIdFjP+fJF03E3Dty/e7O0rNOBZIF+HzAj9JVdLL+Q6wy+BnkFQIywjXl+gbyBiyJ8HyWh6Wi3IWroVMFtD79aWl1sSSPyTevD2kWCHPHm7cwwUNqEc9RkVmNkIz9YWbH065pmHvRfboJsXbmt3nEjcXh3vDp7+mXarm5GgwDGkAM5dehM2E+31OscWfkOTnZODJND0v58H8nZ46wMJTXOttE6fifzd1UzSrNzWfznxbyghQw3Ern0wGi1c0R2ogCUbGdH32kLYUBBLs4t3K+oi+YzVLsN06MyBW3lqq+STkLjrzLer0Rpgxqv+XpUPIZdkzCE7XWcaCSGCovWG7Hs6v032SGfKy32gEcoSXlzRYrta0hrod3TN6X7vL2ajTu6PFgTz7iZmz4K4oomus73pY/9xW0gO/jr4aYor01bQHwSEcER9uw5lDIEKdIjULjh+nSxdahd8JqBV9+gTsucWWkUQNwgT/rYQC0dLkkr88vJmDMFwmpylG9qe9Gm3v6kdYOMIh5QPtFCH768g1LYkNQxrCSlnIYurLA93cayyiemnt8NdHrvhuHHNDXv3vydcJhaFvp3YeN04wGGFrmndi1Zhytyl1cB9pYPYE5frBST+JHtevh546+K6j2pNcJ2PuP3kdyNAjRDyJrWhxJPm1VYbCgguuUhjQBz2BHXdvbu/j3pequKYjEjyvSpsHRRhNE9qOSxhf0CfqEUAVQJj/MxqY3s2mCi9ZBOlgmtzTvIvvfSDzl5MYppNX1bvXB/XgKpXlizDJ/isYlr7BsOEQTykjo7hwln250ahZ2O4yRGCwPwshHLxryhDV2TgDd1C/zCTzZQSBDgNj9kY/24zSO4DQ7skCMJFPd6X8hGRWz679wa8NsAOjN/2lm7n7y3qyqt/i8owA6cpLvCr322C58lE2zA2PEBch/eQmGkYbl0KTNSJdmIjVLTqH6zlvjlprgm5gs8LIndqq3SzlN7nVqlmdIh0wL2aUrn3mwQfPBpuvTpTFbkd1wnxevW8VXkOLEmXopyJT5Lv+9aveeqKSgUeR1B+ia3lWIFKf6Qatz+0Al+WphfecQO2ytqPe/Rs1UwDwNzzVe6Gl/PAu/qVRGZn2wb3ViXTgRAeNUhgVokDDasrtu4OTXfy/Y/zMc2AxDakaCwyyGTzyMRybDfVaIdZgYFmnpi0t1pcWE1CPs7pQJJ8SqtMZIsqNq+bRICGoNtsE6vqthh2iVPrLK7ustoYnMKCgcnJ8DJ/NliLvsrNRG2YoaHWJKpdqO+5b9wz2o0py7QgELNe6VH8kMgR9y1EKAtvW9TtMz0A8ZrC8XdnwNyKR0MwR41TEjceDnMxdQeWf86D0m2We2KJA5Hq9jT+U14LpFvikirwARos9deS7/AwcTQ8+bLdYrYOyb7jvjKcfZnN9xgNOZz4/8sz2xqD5242+3hCZ+PnT59AejUKJ9H412ahzqJbcXFNOq9bV+bbDZY/OAdPy67YEfSwrDIzaxNzx7Lsv9oiDiGfjLoIQaRJEe9svwnrFvE1h7bRh5R252yCUz49qBDsvbi0hdMdcljIKdhHdxxAyoHu7ec633aj/lCfQ26u0OKt7tLhXxKKB+v/nbQ9NslVIevKGLZ35+8yd5oXa3aJIU5TbbpMkZKMFfcwsj0vrE3nxjz0HNGQr8NN/haWoZ52yXU6wqn02MqwcR28Fta0r446T49FQnaQ6guU56vQsPOY+bHvMU8md7mp24S0B2dKlfv8ZSYgmhNVcG3kjTlwPn51Ad3+iqorQir13f4Wg1LsqmocCKfJ7XK9jX/5ZPGkE8f7eGdRdq/ZAs4kN+u9ruwQf3dT/hxQtjXL8wAnrI6YOh98gZOv+J4GHIjPjicT5VHZWyNMipiF53n+qT2PMRfruKm1qBfWKx4O4aZJNa1o/bOJ5lJ+7iMZzdKIuVzLkQ8otgMK3q0g71XtFHIzxtCAB4pW1joLWXJJJZJMLsML4hccbXZSpImLlGJhwat6YjmFoxN5PYzL4HMIxHqCuKF5njlmNI14B762hCVcPv8mOlB2lSiNGZn0slBQ3SrWFCpyH8keOGyp75qgoMeQ3ch2ZlKhzgP4Rtex81VfSSU6aAOAO1h3yuYOH9/etSqiVNoaUeg486ifALBdUZSLhDRcooPrHDgpB6c3i1t/byhJs5IOe/iC57Sdzp01MfCsN7aDe/xf6+7wkwkQK76vvP6JpaUmGtREiHeRJ4GfuY6OeocGEAIjZ/TSrplepqIymqorkHTVOAHAjk0T4Qz1gMSqcx1F9DW2qUW1KKurEjSFEav+hOTbpYmYJyt+ZNv0FrBBQfh7T9e/wEMHFpG+iF2bV87JGAS17MGbbORJkGmf2nPV4GuXRddslXEucZ00FthlGTrZJfPnUjdAVBuoqL5tQ7ZfqGgxuDwWl3But2k03jC/Wmvzh59rsH67Hjhsl8x3ucRJd3rFWZQTP8mMqO0Sn2Mz/61v0EYzMVuxnj0tEVZLkwBQXZFW/+JE+fTDNcPrLEuMcfQzFBFBmZqI6ajeWnsEW0SUfdHE7djITuoMwWLLiK1GcDgOGh940twilbnGFPONIjLH1cqT8UAHn1Rhz/0pZnjvZXnECaW4/NPjnn94aYWa78xiq5sOE+xZ/1A1/lMb0HgnnZHMoJg2a8sAroUW0hWA7VYHeP3pM++wh9NzfctR52vZq4cwVp3vM1IeThmWoppyfU9zf8JMAyxeBFvwCakC/gtvXNPjqWMvXtuYba9kespryrOHjEJphnmwlJmohQTcg7JCLu+pWXKtZBDqFRcdDbtEmVQyHqsshBT1WYw+xIx9frl8hs1lOQzrRw4GsLrRW8wXXlzrUZlyqnakrGsVFCxQjRAGvUEN+pTUZKitIijoJ1JUKLG+XaTf6klddNQdwMd53OhSYNGwSK5ofvUGbI4krJaLstBEJ73WHajk2HRhTU//4Cf0IZPYKHuF3yR8NdWJBkrMIruBD8ryEScTUYRkxNa2D/Hb3A5Hcc9ObMiciIkim+MYQr67racxY/WiG/5xO/z8w+Pc5sqN6UZY7+UZBpl0OdPy0m1RSgRFJPtZN/y7KDl7o00fFwFQ3QCoUI/7ezth+k88e4o0FpU2kUeD121q5iuFhpR+R2jqqpQnBVhfgLL+uHmkba97cj2kLlelbhycleR84YO0ZPlbhxmsLgAMKnJjQNLxbPnZX0KrOqef73iby774SZnX+/5mZD1m9bVjjP2rQIdvwU1QKs2TsmlL4cGwolpan9vHcDB6TJRgoDTrNYYiCumOXnWfHkt6Bj4R5FUpopBPlNv7isFpEbyzgkzlxLokigPKxaX9csnlmHlFNMyAuS31EjHFWXBMLC/2U4dBShFMFJctrJ7MpTTYKW2tgnAmJYxbawdV+fjvrz7lEyKGhSoe7l6WoDQ5VKG4OlckPlHuGJqkErUKPwph8FwNb78n07Nisu0796BVGJAYxwXz3Kz7lQLJDuYX1AwbvFrhXlYu96yjd2y55JU0H9xD9ToCoARJNHBHgbZijFgbPiuWAH8QqOMNYTy+bE/RCA/lhU/2+8F76wrU1IREovETktomDYF1+5uMsYEgPJuN+l+XU1daQ10y45JzlkmPOyFNIpl2vbQixKb0CwiSsuH2/7v7NNXN0WyPl7CQOKjl9Z7R4962ndK3RVC9WpdPa36BM2U6FXyF8meX+OkLevcJskoqoVjR6N4VwrAFTKfqNZU6JMt5qAvNBOkahCurMits8KMDEb7WV4UntA5IiGlInHbGcJQdEoFyNQbRqUOYcjYJZVKZTx05eUGk9zHHh7t9fDnTjIeBpMd+rJte3LLCH5qHncecHqur3hXgfGLCwm4s/6oEQMNHPLkjddN0Y/aE4pjUWr717wow8z8syn6lrqR2ePTOmV5W9OTU76jxR889IATosVSy0vvL/rE/BSiTAEX2mPO/JbHOw6TfUBS7Gfb/vBjCsZf9tTYfKPTH1mFyrNBMJW3Hm2Lg/s40AIwm44yfZjpkHpth9Elv2lpiImKwC6y/AE+ACpUZuaChTfPoQkPUhhCai3mtmcwmYb3jKbkoKex2rmIquUh+6CnaZYGYP0qiGSEnAQJkeG9MaB4sYo8/YARdKG7FM/fxqtbFddhVjMGiQjWL9Ebhhu/JWXu98gzsV/abe8fXSezlgYOxPR11tcFWBtYJYbOGz7bhnbA890KAAAvvOn1TaNN+euKVqFHohOs3JJa2EQnFw5mal7kRTuQMuLwsQZLUKcTaRtAXcVs8O3biSQbYZ4RflZ+SWOVL5TcwLJUksTSFOmRQciWBbALfcobSJMZaOMlwAuw9t8BXmEoJc6o5+5Qg3rYVrjs1pj9niCJjX1QKbE/q7JRubBAWL3esilb1YI8srNjedYKX1LBkJbCJIl2nQdjmDVeaweGP+stay5GnQR6Um7GnCR/GAy15L/XOlSpH9a9J4DjNkaU7a2EolIhjujxblyrqPLaJ/6hwBgfoFBpUOlKqsFSHD1Ck2ptNOkE/nQL1RW4bTqFaG66eAoIFHcA2nmqv/2CC6m/st1clJ6RrPKaEYnYgAvtNBRKvynfgLMGzxkVSSA/mmWGmChUtKlhLFIImfwMA0l8GDejR/zo9MdNvyrvNWmOIVc/iYOhQyi0K038hsS0gvTYTosQWL0HBcqY1xUOUDcOBsHotS5DDrNZOoYsVgUQM1RpG/HmsB7xA002QMHrFURWx48nj0QBiPmqlopBewO9Y9g67pvR4J0YWYYr+NUauKaIb6bb0Ig/SoxzEDkL9z+YBLLAPfydRrT4JQZnAKPQRrTTUtoSm8zQzCNeA0cvvirzLhAdV6jXDmMRhirDDsd7GFF3NJ4YB+rc9RjV1HILnVJbFDNgd73FUxQY3GZgVFW4leWozICcuIh6a2QmRYw9qn9xS9z+ETPKmvOjliE8MmjY4wambJS8GbubmIJuVsNwJkuDwtFhzvnYh0812rMeqP0RrE61MDiZ3yA6xB76GH3T68r+Wjq4AxMP2njBFLA0AlaPmJrU8m3qwAHOqFU5VnCl02OACTewEw6Kg//Q+eFNIp03DAQVXKqvSQ7jeY1XTCJ4QIUM2PeE35L+GnhnmhJRfJycXLJzeIMyrXEhKZqVyV0E5yiSepP2ZH0qEimdjik7LpK2W3Tdk7Plcedm9i2YrPtT6lw04UapXYVsIDnSMPWMYNRSbB1OxrIZCdWwz7D7cdYJW3iAFz/rneLzppfcZJVJi0X/eS21UBN1Nlf5I5wdOFPdnlv77T8RYxuXmRBpKYHGGJvTiECHWeOKKP4cNCqE4YfKfX9UUg2WJxU6R/9vFH1JvX4E9qQk63lix/p4kHPehjeeqoeyGQzLFLRuB+BeQU0eIw32T0G/P8DxMJWa/1udR3elC/q0Lt6xXu2LPWKAw+Tv3OwxFciVxVQM3nDG1b+uWyq3F0Y2Y0XHs2IA342nMZQvlVuWbD8SiKpyTmESowBX03tt+8n+zgvrcccvSWI6ynAarB/mahhWmrh8PMI/ZP/+lq6lR+MZ9in+SjtznR13CP2dQgNhm7owqBCkkGxgCzWMVWZ58OD7FGs1nZWaabV/CaEl8qRqx0ZAM5eBrLs0nQnFF1jXMLvr8U2PbBXAA/4MQ80WPCORJV8GH3BuA7Xf9NU3vbVETPn823dqG0ElwGXDQFPSsGYrczCj3n6PFIPBZB7r7ag/ci9rZC0hMnWZQKtl0afWYQRq0m3Y/sSFtQ+vmnOyYOzvYOxi+ATdzmKljt3P6f85buX/vOUKCqdGe8IcQ/0TtOfzT6gnv4I4kEQWFxt9YRmoUt3zhBbuM0CrJ2jJBPYAIyRujzRW3WO2S4kE5cFdGGqY8FxwCefke0TfozQjgA22Y45D02h+7bb8ZZwL+EsS4bYt14LvlG4VRkNU6VH7T4Au+V0uXdYhL0LQnNuPO/GdV9SCKQs0GEQR/l+Wxa3n16nb5bwJIwku0SabWIChPn0IO1SGI9CEZ/sdw4oezrRE9iFOx89urnjFBT9ASlViYvCqXQW10T5ln9zZcy5oPRVgNknr2xTKs15nBxKdoWAQuo0F3+/+3kTIxbBATzayN8IUJqiex4Gp8E7O9C3h/q9eEMUfwTiu6/aVZDS08hTY26Ogu0aHrGnSXR75kTjTQNQWftQPaW/sWgR0aeGGm9YGY6NrYrRvlXR4yWqQwTN7Aev8zLbErbl7YXVrRXPAD6Zq6B70wvqVIsckg6wo2kFkojm/Eohc2KH/qv2unJ6on6iea5Xb6BnFI/6voUhVe/m/4p9jxg8TaTeWgtKurcOa8XMBZpZ+rVZeqgOUf3e1ddbb846hHNdS/xsOoax2RP2CzOYZsxUPXPvx+/L+udScJD+D3FSjYBolK2MgjzrSp7bD6kPzfrKif864scl+B/6+uTlQ1wNQSr6me1XUd/IbheKV/+SevhNtrLvZqpZ0P69u5TxPv6WwGacdiIQ8qU7lq63atQn441VIILzPcXp2WLud3/TDjv/y4fMOeyZjts/uvUbO6IXgx99n8gnEbAXF6f3RxqTOjZv+cOtKTJhign099u5yezkSMaKxMVIsosiC9Wk+Ae6Js/zt7o6bGJbutTKn/1MLiLP+EGH+6+pO7TC7wmpq2Jp9XSl94tfaJdqmkF9a5ogFrNxZFxmgUKFCC6rSv71mLLzS7rwhogoEgvsbEJGabfnKbNsA+u1k3/6AWtCqHoxBIAPDjUzHdlUui5gpLskFvO7EPR9PfDfS6Q8vQFDRimXsDoh3TZk3fi0gJ2JyudkdatXxZN2bIE1UEzhCUgWc/LbApUVeD1pXWSWoCVmb78dFQK5qbmcz9KgVVBllgbVrzfGFhpT8JrjlJMbJtqJxRJzAuNuRVoqDmenUsUpVAzRhYAi5xj62CwLcPzJTkiy0k5dW8hFd++rtkL5iqqhh2D4DKqare+x5xdtLgzqmJgsZ4s3FGrI1NetBw+YbFpgpETd3zxoAyHyv28DR6hezZLIJdAopwAGyuINpyYV6dtk56pBGjVrv10WygL7/Xhd4hWHSBl9iHVsvQ31bb68dzpDuF89kmxGCFI6D9JRJPKdRwj23DJAmYujac4h1vWIsLNj3hUYh1uFQ4SsRZqcBbuhIKxZeGqpexKrbWYHV7yGwtxCL6D/OlCh32sIEvBrDiXAh5apCx/3rJhvYd6G7JaAGg1Cc8SUpofewzk22+ZKwB455CXTtbeNEsJMsFS2qwvLtTEJAz05W0nSEN1sxsXOr3QByRLcv1pxbMrctEk7DHVfaumq8lAWuFmHTnRqoDopX5kjeM+alIHpq2csGVr4miQ8o3fCO69BqHFaDJVTQ1bBJIP3E8eKmGlRl263S0ayxN71gzBhXWwV8V8M09fIu0HdKa1lzQzM4YxXQXHkrjOqgtlrk+v4+BzQ00COExOB56K+HZhVKzutMZ3+3U5FOLQ74NmgCD3c6Es6zrGTaL4V7ofLJFYws9ZrYanBaBHrogQ0pfb7ybQ4buXN0LbSYtWcFje/BF1Hvz+q1MHLjf73qa0/6GkME1VpzObe4cKbTUSGSrc5vAkDkx8Jw2wqkqJZK8sehWJeN/RL4kDveEfhUx1Dez0KmtbaC19dRJMrQKwiZwGFqYZFXZYhCUkkzITbCakEq/T4vQ2o90lYTOMbpqWedgcjDYTD75G4UWn3QIm/LeM8dFKjS3QE2/aj+ALZlIFS1fuPClcesmMqAIg4gvINS3LFhWBv+s0sAUYrCEeZaXKN4Kzck0nymvqZGs6T/3D9+gfoq9EXV29Fijn2GZz13d1mffySUt73UOTFb6dIPxViy3sjoQGxeGqI4iPQXz+B0/5hh+9yYSyjgmC+JrWzUsOSqQFb9qEvp1YriLFdhvY/VAdAqlfpA3xz+oGOwR5m9pNM/tHoDM5+zzSxFTlkBFw/tPW4+Yo3RviApbMVAmjU1OZKjnZLtiEw/9Hr7CpPb0Z4PPPwnps+HkffpFFMUmB8l/UZxI9h87yZlO4fdE9BrUVRnwzQ8GY2TdSa3iJ9ZEhS2XuH77p4LF0+rsHyDPEZx43D07TYRIrEXGRdAYIedUBcsEWAKiKgyKco65sm4LFsuOwmYU17xcgQM45xB2AGVcxocNPW/qZ8l0jkHS4dtPLaKPR1I5lEBiSLppCNBks4rIlHt5mXiL0yk7rursDrft+YsGiIb7LGWlVIxNotDCRYsU/2B1UN1uIoWCUuLsr9/O2CgPtw4d4Es9f5oiLi2lspuViyr/S3Ky6RkuBGHIL6aaMVxB1Rk8ThY6ndhiZ+gkBIXPjWweFAPgiUd0n4UprLMxKayDGRx6RXwxLQso11aWc0Z5WdlJBvsLwuPzBD76Bn0jtHPsJZaWHkWtJmzqPCQCWgO/ZSycxAsTwnz1AYC4QgKot7Mjv2k9FR9XFK1N20FQJpgDxWoCGULpGnGdo5RHUIFsPF/kcJQ9Z/LWeT8NPfjUbRrPLZR1yMnO6HY93fLcUIh2+5OW+Cor1rJ90P1yUSibXAJRUcy1g4TsKQmasnjzbWdJrkmrRqkOezvZK6RdGAUfZzPP9wJEQOv0Z+ufW2lszROJCDC0dZwbtFqYf9MjIu7siFddz5LLxnygugpACnZ8I5yeiMInIA/sfWjjz4hAYymFC/1yI9U1RIXBl1RANRcy3l09C2Dl1hXpnfqUmxOYagYDmVhyzV7nYxyMDrcja1g0svyxvFeUsTZIngPMrNK4Ginr7JFY+NvuU74kk45IqVqP2h3atAIIQArre6cd1R/Rwtw2+GceEUldnYLxvkDBfKAVHpiiG88muEhYzSACFYBeVatmKk3UqwCx8KlSn4dn650+QEcgTgYTQSHcT8o9yVjqEzJ3p4Us4yIpjKGjAPJ39JAbxE6iBc/CfShTpHBgPfI5FCFa2p43Hf8k1pMajVbVGBsJJXok1pGtX1AmPOGA2GifXM2bHK0fKj4a/54gxJSqFbKjEm/TPbXEm9Q27uMtqka1doc9a0QwNX8nKVaxgh5sogBtqQsbcdSa75wrdOY8+3uVVvtV6AdOUeedfWk9z5lwEJFnBWA5rcQ9rWx8JlDrOOLyzrd2Xy7gucAQ43YUiJRFWOJHu4sdieGgE0saswpWrHV3W7772IgeO6s6hruONbg8u7i/uLMHqKJAvQzAIvkyzyJEoY/4KFBsyK+Q+3RwJYoPOLAXHf/SVjC7+TWWoYKX7NXMZ1NyrXE+D+oMXcHqFrvKns1XGP3N32xss9eyPanDpCDuYm1697YPQ1Ul4h6lZlCy80hxZsqEu43PTLDe0JTJ0VBc1Mo5v2TBO7r1Dkze7TPkrH8XstmR0oU8coNv3GlSHSVCZdRX9cWvRqefThkFFapEi6IMRq01OyqaNvFgKgxKekeZdyVqJYK4TnOTXpbpUHNBcD1lhxg8SvAjdLvNjLtshGXJtRXVmBEGIbCScZqhTxwSpYcHPipM8lv8mqDE4zOPQARtTSM2uN9BL/HnwgFfxsanvPx3ra8BCzg/DmleK7hn73Bn8pXJtxAoewoTUA1Sc1qITWTdYRqnJhHrz8SpehxpFtmLyxxtsIrBbOV8ecS5CqxgwQgpvNrvJkrwAw0Wqp4/g+lM8S9RsmmnVVBbh9sZunWFRbIeE06DZheV5iFK775rTQBpAVkJOpJfU3NzziQrLKNdRpi9jRZ2ZLf0LrkdcFcITQk6sdHsbiGB5j2PSxFc3RZycMGNRo2pQB2Cg5YmjeotN7sirCrzWCt91MiDMYYuH5o5RxHp1OqorI+1rlrd11KrFGItnnvMYpjPpEYqElGsUuRB1qF2SJ2X1UJSgrVN37Y5LQywjjKGGUuHZLuRuqsDvXJQDYF6ZE40E2YasVPQv9jEsdCBmmN+RZPvHSP+ZGPPnIZdE9tV4EDEPr2eAjci7uTh17NJaLRaDamsez1N9bIsulqd6nj6VjeCg3uZK1nSFEZzowOnv0hqrPc243msgZMIQWKl7/Sbbx7jbJwkhwHLiFkWCkhRw5gEhH4OxSDJ8Ym0RCGPA39JNW0r8Pl2XUrR1pX0DQ96kFz5noD1IVs4ATYPrTF3HUfFlYY+ofrru4Q7RwwSXP4U75wZI0LjlS5GGwocaSR7DuU5nS7gRBn0R5a2Fn6DDmh4bkalPfVQ1Gq3NRbJLIPGqkrwnQOLLGzDumv82cr3/DlwMGIKTkPlSa8XsTLDjg35Jzc7RU7Gb+mOo0HZpuLWVqa5SovXFkd7YO5Ye9rJwkN3aInJithmtCkBFEKdWE0tY51mLOM+Zmii2Rsc/vvowDSS4mYv0k6wsRETZO9TtP4qsojHFV7+4foZdcCHJkNbESsUa5bjAaRFxlWltaJX9OhA3zzI90zW9EcRx/BAWaN/IBnnPyUVSk5Qlf3RDwM+dHXLI1GR0e56bTPYlsOZyNtbHKn2EuoBRXBajMi5BuyPzOLABvjkFQ4gLVu5LBtDPMF+aXQ8GnDeWwdTPZ7vE0zdz9h34dAdE3vygMpBkglDiZ8Om2R4hzF1k/Io5oVClie14XZc0kPd3qletGIqa7GL2klNSSKG7lZG69w2k+P6ZHYXoJ9mVDWAgp3FE/Y3rVIRMtvgH5DrbQPn4aaiPGttK7UhP9oqG57l1QwRt4AVihpzvvGibwJTOTLuGKVRTWhAyXY5xAfB4fN2LW36bw7STfAy38kNaRnksu8uIZ4xv6MciANe57lbra6ZjTYxiK0YoBXvuuceQVaVot3u+eFtOKuPCbtm7bGPCuzIRi0VoVd7rvSRmRrBQIhQWZnMoUM6IIQpD8uFPQQxzhcDuCB3gKZDkLQ/X+666lUtRi26Z358KxqgimZhGMD6rProXcJgX/w6jDylN+61aZ2h+bVYqCwfxEKK8LcjkSOJ8uAAmaNctH9ESjhlgp7Sc4LifPMyDi9nTm+OG7CiFd7h1ZaHDwrRqsUbHaCU6JT8OMRuEutc4dMO7p1A4SqEf8U6uiBu2B0ZWkoMDxY+qI97hybqsq8Ry7wM+oCttZ9v0KtvAa2ho5swOw/6tk9HuYAoS8abhnGyUSDTKSAigvxbQrsAkM9MIejr5JG/dccoYcjTVauQaW0m1lhM4xhG57tOuzVh5UWkpdpg/sKjc0PttCBaClXbSuXuaps1NjyrVEoK6Ps8X9wgyj3EnMSfYOp2E4id+bf5+ycO/tN8TpnM8TV0rDkFyyQE8lF09CdmTpy0zengvKS/fO8Pp3p4pPt5fJyFi2x6t4EkgWXhmXsz/PRSWXc9aFU4r+5bh7ImyVyzbworOMXhopSeP1FzLfHW+ZHz1zBZpqUMhWOQsG/ks0x0bWMz/KO/Dco0qVOtib4wrITO+DTrsdg+IrwQxYHbe4zdVNhi4+Ok0B8qYuGH6Kxsb05LFyT9eQmZ4/Keq6NnXv7xezz8ePhx3bNku8O5SgbxnPuLh67IA/+yPeBjv9wviAtCLXoDo8kvZkG4pCp7AkTXx6FIMSFxn1/b4f2Az5pBErxV/3PurU7ObDK4HR1jBFZ6063vcODZl2ga39Sn+yqHoaFEGIjYNHYVaSBwIqvUIHzcNy0/Kg85l2K36IR5kw7egcObNHnnECzEeJZXiQwmo/slr7NTEywQ+4EnSVAUpgKARNReLWR5hDVSSpoEp9gbODTJnqHCYE+LSI0ultz7G/WEN+4gNOLnB0mEYcFi8Ona38DxVO0bFASNSfM4ygYKTH5wB22QbteOua1Yf1dTnIO2CmtX1KrIx74l7fyJjY2hLCVH43tSGtlMbGoGeNeXRrtvB26r6MiunbTNiErTsmp+rE0QQsraOfD2uEqKRXoCdR0iUMm0HKXGg42Y4cgUSlCnvkYF7fqzLt62ZGLAmlxhTcs5Z02W4kqHvCnl4nDA/ym9bQ4LbDFGGxrFTqdli7bZ6hvvQGF8Ews1jb0ni2vV9EEHbgQQI55Z3ypQo8ISS+TqjoPUzxWXgv4u1q158VfjtybzKIAB8jO3UQpqMQR4sZg6u3uewQzOIDYSuhzPXwwgLcjTJ/pVi6c5Hk+p0lxC0FTjraKnIVHAooE9yocT8nWRdMxripUXl3Svj6ZwlGqBoprDrUPe0C1tHOx7PtRnE9vrD1bYNFdpvDQg6b9iQZuxHbEOewrCSnTMDJfb4VIM/ChJMwvvbwKzjBaZEUF4lDRH0qisJrlHrebzh2I2BrEa6LeiZm0isLHhKSE1oN9bPD0squgRluRyshRNtHxi0ZVQHjqc7TEzIxSeJadQHqfECo3P2DmX8sgHhK7Rt0WOhHHtZ+wanOfMKnQyQ5NQpGosW4VnqXpQbvo1RJ0HizkAN9fWIRXMiPqIJcZRTItyizKhPyESGMRHlGnpabaC4N9naepcUWK4+T01JVZxmo4ux1v2APFherMc3WMRuSWIGof1wEv/UDxw5pSzTE78QojaJQsx/xfhwaFbotZOPfteserKI5mPIO9WEYfO/bcBpXfbHnv0xPz/R+DdHu47mt7KD0kMzscPGpbe4l316h//z33cSJJjg6ykWZuCxlFcsKBCcKQK8ayQxTPxk21QN2tMLzov0XxFK/Asq9MPdSX1TlSt9uWp5Mxia8rQMSh4HHusG+w+rvjvfP7Hn6cR9Wz5ge6knR/YX1oCN0dCFgKbf/JwuKgckcChfmmsvQh8MfsgyPzmhK8mufEKzpOdyEiVuaZTZhJJWDvlURbEWdWtJ8vo4y1odSzpvrzaHXTjLbByI1ig5KpV5KyEx10YLSf8SC5DKHfh+yKWTHQ5v4js8J11/f2bLZddW8v/Fr6Zc7/4icCB0RN9zWM5yliRKcH+sPe/B83+1e9I/k8Duz869AzCNyUBHVPdh1G81plHzt555T0X40faN7wPYxxniwhYUpr2ZKw2QJ4rnj/kzg/qFhr2dALzoY6QTCkFDWzaq5GkmzzcR2oXamM416pC+c5tp+B+asnG41ZPEI0Tz8vtPZmxldCvwpBfDxZ2Tv7tN5VsaGCkTHKasyXy5i/NYlKCTleRJw5PoXSB52cUQ3upLoqDNKXf7rhwl1aTOcogCt5pLgjq/sN4uXO9P5kWlg0ZpoaRDslj3lXR6nH4nOQXelLekAPVzU7oXv3mhN0BuPsqwBfBwtGsa56TZUos3EkD5phijf8Adx5wUeGLi0+SYD6XGIP6GsrjMvaZfyW9WklqLXWsUzjOspYfVv/LeAxPjFn9iFUyPREJa3TtkJNt8NSbxugPPkMf1sAMFTjTQbe0ulaN7UZSQobGoQT1ecDuIKt53+F+MPpaq9oY/OXhV3I2JDSHtJbz/Cs291d4ZxXgwqxYgTOv/d4Lo1C1l9pJXiU5g161MJXe59nInjsiyENqp8KsmV1kwDkrvWNUsCF7fGM85825LS5Z/P8JghNedWSrzVWFxumN1n7a4C41XuwHWGouZiuH0IVHaGBRw+Jp/+XMwXST5qt1e0zfh13WnbZ7qleRpJN6q8Z7vFcEqeQKZyIL8gEsMHniPY/8nuPx9P8PHCIyq8TRPSTLiYEAQzZWHnAPazhO7SvSxK8GENtHstKBSLdqWN6scfFc4zM/frgU/aMob3WFqg12cZni3l4pZ9occI9qFRARcqyKZ5FOXUE9BxpjkPykqOXNP9ads4hokChXl1oa0tJKmuAMwth25/rrzVGmgl+Ksn9u3qBtju2GOamQAjg1RbFMShgHcCYcDxrZBBrxkghsMRtyIsA9Pq5P78wPtnTn+R5CU7eixkD0esPIB+q0BwdUjJFS+TSVBWOEAZiP5+0/g9yV5rhRc8ubtrzrF8SZDTBsTnZITMqQCjd7/LOYBhajyFNTZzMKL3WAbsiUsx/7Em5PCfqHj6tN86CCGxg9pN1tMDnhJHeEFOQSI1EBcwJSEhWiTu5jcxdbFQKmgcAx02BhWP9YP1hhvss/4qt0EnbvyYwK2h4JIMUcOFgST7tDM1IYKYyqIebYZ/jR6c43g2pUH+HvWmtk/6t3hLV9OPmrsgohPJ7/1eA4jQeTXrGI3/x0Evv/eZMmN4wSylyobSzLNE37o0uH9iRY8luN+dH8yEVMitQNmvV3ezSkMBLdQN8jQ9EyD4yVwKwB4dy/py3B79sDiLQcL7PBqEl9xIyx29xsm6gK741BhGl1EqZWH1YpM296HF2+eafxgdRp9Pw6oXtEQZHMx/hZZNQlOLnerG/0d4ekQhGGKZm+hIqGU1UdRB8i6DoFibJMm2v2i1jcaJ5NhH1dL8GjvhagLvmjSkjX67/HuabVT6uYO4rPB187KAY7I+d5SDl4Dosyy83qpQBzKetsrX6yL4lFMJLOTnoGYp9R9CZmd+e0kG+9VADKDu6613GZU6djGwjAN1Cec5FLPMqlVTEAONIvh8W2ZsFJp5z5f9ZOckuCPWht22VzMXS0oLBq+ycnhRs0Ym59KoryWEiftz89UPOBmvV10UyrKkr17+7T2cTTZiQHdWjr/tRDVTTiOVTBrOXTQI86E/m+apVUp/vIXkIFDtliyzUuIXY2HxqXNOGqXe8pavOPzWAGEUWEmlhOfd06S+VX5G7XUn2dThuYSOEWAOoYqRxIhy/87WiPQ9XIS14iZHuYe/wBE4wPU4DQ9FLEWTEStUywtMBLVDkM95DaNJlldkTnxGaXBLdOVC2k3fYfybLPrSTprjYgImo16w0rqWZUcX+NO1MAxSX1QX9XsrDWgJFQRJNGOdoR5wAX1j8WXQ+2XYFlCQccx+M8+RUFw9EjnH5zS5FOSVjqiRmBXD+U+JhxOcT18edomJrILZwS1yCGEnkzERnoASHF7cffMLB+AxqgvrtGlZVxrPfsEeT8Bm5l/PDvz8UrJeaP+deszJqnZr+taydn4I4uQp52+2Qdl6kwRdRWrlHd1WyNQaLNAOffLon9YtesXTc9f6IsQfA6gqNdGjIimjPyHpfJTG+h6TVLjQaZX0+ysHDTsW3HzZT9NTn4qMeIaXG5hLdGYj/A9v3SztLjYeWQdji6AKnu+9Z8xxnk0LBL26dJfNQdQqGgc/w48WiymGU9QO+pFZdYkq4Rqnzx+prvbZLXK3ArlY1hq5xHav+98mdAIbYB1uuy4xVKuuhs62lsoUHupTVDdxA5bbP+5b4Vi9FZkP/8UFv2HRz9DA9Go7h6a+Vg9pnlxt21dvnyqBLDXFsQZPppG58rl0w1jw0/0JVh7em5eXNCq0C755Q8UcMQYMhJgkLa0Tih1NME0OQbKiFKGO6cu2c/Lmr7ktUg2SWXC9v4xKFiGNZt6e1iBm79bpkAhgZ5MUemnthi1q8IPwh4G/clg/Qs5HyF2CxRsv8Cpnsu/5H1sjeAngI/JPjY20568yjYp8CwiuPjjBiKaopH3lS9Kk3+ymjkhtWrLMrS5TxvGsVm5lRhM9/wN1ZDjXjWFuNlNA2KgLYe/ZGcBA/0krYFPv0EFli1C7WknSgz5t4l99zmv2lgfJMR3fgM2U3VrGukk7+wHf6ECWo6QFIFldby7oQ4FxgJ/EISzxvDbdiTS+QcMXN8e1tMq406l2v3uvW04YPiZh9QxJF3dWx338FjZ8HnnG7bf0dHsDpzE8c6XcuXQ2zOh2GdjhnpJZ8qK6LGhPZA4GpTEd/eGqCZXMPHCnXs1yxxPg+8ONigbq3xogrHaNGHL4oi+63MV0z7MhFRTKK7DstsVpH4mEKpTRirqDKy07ktGnhPwCV7LkmOtBT23uA2gTKz31j62lYaescTJSZdPfWTLN0K47TLPM+jyRl4KxWSOTdgjH1vmfpfT5Kb9+05wl8SXdkE2BCR75FgHPEeDmpsgX5QaF3spS+0MU5Lq6OFaqlzR6+dztbQFGuZwQoh78WIAuMSet8FiBAvt0mQaBfHJ75KJ9ebEEDUCnApgdLujXdtScVOAGHfGPBe+BBcb+vwQQO9a1anoqIiTnvmnPQXoBnpQCMXzx5+2FvtMwb3bWOk7uBapwtK/ZHHS8qGDQL2Nyx8y5BwgG2TQ08tHC+kE2sQW1sAd2psA7f/6YhIhtkDlR7mlSjAHlZ6LZ/qTSbfhmPXbsHz5F3nGEdjchgn6aBEs8Ke/HaoGunPcXFtlI69qLegrISVJVVT8L1ZaKXu+mK+AhPi3YduyMnoLH6sbQffE4NChr+tnXMhn38DkcJKbUKQYcMX4cvun9TjMfHAjazDRH6aRyrYr8+d3vNJaNsSjTGqaxPmpXtkowebRwctehKbeT3TTC+k1iWZzNHDQVPpYUtU5XNd1VvbOJ5VRdFFvwBRIcKgxuXzLEQG47k4rXeceiZE4V/lobPhJSgziDNSYlDCpCZeIfAw4BunxuAcMKuJT6TQVs0rqehonJv7bsE7BxbALffIhmZm3vzn8Hez40C8UqPZ4XM2NhULSFTJlozyzdm4Rm3QhawoUjAaNmHdMzYVlaM6MVuNiE+NNCkQXsQmYbpWTASWXrByaM9UNHpC7aJnLVuaugTMRyg7QOQxPt/FYmsD09+c1kF+mk3zOl/v3NoUS4YnMGYSKTJ3siiXLK2VfmczIFW8mLSvIDXDU0ljX3auWyFsW8QP4xUdPk0U81g1kJml9G4NRAZ7c1zbhrR8M0oUUIeSdXPwy86BzyQexMbYm9SaaQPIrfwg8u0R3a9KURHrTyuBHSv1iO8cLOXoxTPG8qX14NNzSi5aMCo8SIvBeiccuPO21lqamCpamXskFFtGHEWDHF8fQi5r68RtZ7VhZnh0th8d280pMWIFxG2wzJNLrtvi1/gxiTZrvRsgLET3BAihnCPJiwv+yzKZLCi11AW1mm/Sp4Fh7XoO7qGECbBjnN0cWYYba2PZF47NqzYyRcmrNB+HMXAQsenDZtJJqWWtnxncUC33pD1nk7ITtwN0+4xHx9rt3KDHujatbQO2Y/AzJvqd5u56qvzPqTQdVplzJ8rhcMmV4eUKk3oXWSe30Z+mFkUrj65mhkdvFhQaP9qMIp2oFdWalk5gL4+m91OP1Kb2yg8kdmqj59aWw8Ecg+rGnS4Jm6SyswobqNOwiI8l3JiwHeUldFRrJJmeeIsj1bOp60lbwGFo+G7mcxq4uxrMuTNIE4D9wxL+XqS1PjqwUH0Sl53JwLb53lflHwWW+UifWrwfAEWJk/TdOnxk3oO3S2uxHIFovxx5nNGnBqITh3xcuEvLz+9FJbwlRKwz2kasmk/Q1bOYL7yOheR14xB4Hrj/o24KyTaT2oTB/zvNN+kBS0c0az5+Dwc3QqW8kb/v/g494aJXZU+ikv4Bt/efbwreM5DURtjLGLuPh8Mr8Y/pukoIvINsj+o6xGobt3MCJ1CMpFYvaQfEUCkAHHdKG2naXUQ91xouSsiGQmrb9bxYFfwcQ6iCxx+IwM7dlGHgZnhxtXr4z3Lga/x7zBJquMwXS4wdx4HswKGpHqPPvG0RYhMrOUfs6U/riWRF8MO21wqvGKSO1Xkk08HfxaQb9B69clyEorTUG1uyyVBfsRqmltf4CCwx/TYvXe/zB3P9aIr6dyzXufkNPl4Uc/XdUDjrCywVM9Nn0Zn9VNZu+89x71cA+cgC1yXlCZremcn+D9wJZz+4v3j3/9KEqul87dklTfICvP4J/tkKSYAkp6S2/qidd8o1EXNSraYXIZ+UN9HAMg9ezqYizSLSrkVKC4HZ+JfExqOVGA7xLxxd97aN4YoNmCpcmk2o3CPoNTbJl6HSQHJaIVhyMGBVSGTANcrmCfvo754uZcA+lavfki67M584Fn1L5bcwncusGNdCe2OqVzreua1K0pRsJ3z8W5aOrhR7Ra+7qEXhdAw=","base64")).toString()),VL)});var $le=E(XL=>{function pf(t,e){if(typeof t=="string")return t;if(t){let r,i;if(Array.isArray(t)){for(r=0;r0)return(f=pf(n[g],u))?f.replace("*",c.substring(g.length-1)):Gc(i,c,1)}return Gc(i,c)}}function l6e(t,e={}){let r=0,i,n=e.browser,s=e.fields||["module","main"];for(n&&!s.includes("browser")&&s.unshift("browser");r{var eT;nce.exports=()=>(typeof eT=="undefined"&&(eT=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),eT)});var gce=E((aT,AT)=>{(function(t){aT&&typeof aT=="object"&&typeof AT!="undefined"?AT.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window!="undefined"?window.isWindows=t():typeof global!="undefined"?global.isWindows=t():typeof self!="undefined"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var dce=E((Dxt,fce)=>{"use strict";lT.ifExists=E6e;var mf=require("util"),Es=require("path"),hce=gce(),I6e=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,y6e={createPwshFile:!0,createCmdFile:hce(),fs:require("fs")},w6e=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function pce(t){let e=P(P({},y6e),t),r=e.fs;return e.fs_={chmod:r.chmod?mf.promisify(r.chmod):async()=>{},mkdir:mf.promisify(r.mkdir),readFile:mf.promisify(r.readFile),stat:mf.promisify(r.stat),unlink:mf.promisify(r.unlink),writeFile:mf.promisify(r.writeFile)},e}async function lT(t,e,r){let i=pce(r);await i.fs_.stat(t),await B6e(t,e,i)}function E6e(t,e,r){return lT(t,e,r).catch(()=>{})}function Q6e(t,e){return e.fs_.unlink(t).catch(()=>{})}async function B6e(t,e,r){let i=await S6e(t,r);return await b6e(e,r),v6e(t,e,i,r)}function b6e(t,e){return e.fs_.mkdir(Es.dirname(t),{recursive:!0})}function v6e(t,e,r,i){let n=pce(i),s=[{generator:P6e,extension:""}];return n.createCmdFile&&s.push({generator:k6e,extension:".cmd"}),n.createPwshFile&&s.push({generator:D6e,extension:".ps1"}),Promise.all(s.map(o=>x6e(t,e+o.extension,r,o.generator,n)))}function R6e(t,e){return Q6e(t,e)}function N6e(t,e){return F6e(t,e)}async function S6e(t,e){let n=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(I6e);if(!n){let s=Es.extname(t).toLowerCase();return{program:w6e.get(s)||null,additionalArgs:""}}return{program:n[1],additionalArgs:n[2]}}async function x6e(t,e,r,i,n){let s=n.preserveSymlinks?"--preserve-symlinks":"",o=[r.additionalArgs,s].filter(a=>a).join(" ");return n=Object.assign({},n,{prog:r.program,args:o}),await R6e(e,n),await n.fs_.writeFile(e,i(t,e,n),"utf8"),N6e(e,n)}function k6e(t,e,r){let n=Es.relative(Es.dirname(e),t).split("/").join("\\"),s=Es.isAbsolute(n)?`"${n}"`:`"%~dp0\\${n}"`,o,a=r.prog,l=r.args||"",c=cT(r.nodePath).win32;a?(o=`"%~dp0\\${a}.exe"`,n=s):(a=s,l="",n="");let u=r.progArgs?`${r.progArgs.join(" ")} `:"",g=c?`@SET NODE_PATH=${c}\r -`:"";return o?g+=`@IF EXIST ${o} (\r - ${o} ${l} ${n} ${u}%*\r -) ELSE (\r - @SETLOCAL\r - @SET PATHEXT=%PATHEXT:;.JS;=;%\r - ${a} ${l} ${n} ${u}%*\r -)\r -`:g+=`@${a} ${l} ${n} ${u}%*\r -`,g}function P6e(t,e,r){let i=Es.relative(Es.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=Es.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=r.args||"",l=cT(r.nodePath).posix;n?(s=`"$basedir/${r.prog}"`,i=o):(n=o,a="",i="");let c=r.progArgs?`${r.progArgs.join(" ")} `:"",u=`#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") - -case \`uname\` in - *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; -esac - -`,g=r.nodePath?`export NODE_PATH="${l}" -`:"";return s?u+=`${g}if [ -x ${s} ]; then - exec ${s} ${a} ${i} ${c}"$@" -else - exec ${n} ${a} ${i} ${c}"$@" -fi -`:u+=`${g}${n} ${a} ${i} ${c}"$@" -exit $? -`,u}function D6e(t,e,r){let i=Es.relative(Es.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=Es.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=r.args||"",c=cT(r.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${r.prog}$exe"`,i=a):(s=a,l="",i="");let f=r.progArgs?`${r.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -${r.nodePath?`$env_node_path=$env:NODE_PATH -$env:NODE_PATH="${u}" -`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -}`;return r.nodePath&&(h+=` else { - $env:NODE_PATH="${g}" -}`),o?h+=` -$ret=0 -if (Test-Path ${o}) { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${o} ${l} ${i} ${f}$args - } else { - & ${o} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args - } else { - & ${s} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $ret -`:h+=` -# Support pipeline input -if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args -} else { - & ${s} ${l} ${i} ${f}$args -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $LASTEXITCODE -`,h}function F6e(t,e){return e.fs_.chmod(t,493)}function cT(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Es.delimiter):Array.from(t),r={};for(let i=0;i`/mnt/${a.toLowerCase()}`):e[i];r.win32=r.win32?`${r.win32};${n}`:n,r.posix=r.posix?`${r.posix}:${s}`:s,r[i]={win32:n,posix:s}}return r}fce.exports=lT});var PT=E((fPt,Nce)=>{Nce.exports=require("stream")});var Oce=E((hPt,Lce)=>{"use strict";function Tce(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function e9e(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return iQ.alloc(0);for(var i=iQ.allocUnsafe(r>>>0),n=this.head,s=0;n;)o9e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(a===o.length?s+=o:s+=o.slice(0,r),r-=a,r===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(r){var i=iQ.allocUnsafe(r),n=this.head,s=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,a=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,a),r-=a,r===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:s9e,value:function(r,i){return DT(this,e9e({},i,{depth:0,customInspect:!1}))}}]),t}()});var FT=E((pPt,Kce)=>{"use strict";function a9e(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(RT,this,t)):process.nextTick(RT,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(s){!e&&s?r._writableState?r._writableState.errorEmitted?process.nextTick(nQ,r):(r._writableState.errorEmitted=!0,process.nextTick(Uce,r,s)):process.nextTick(Uce,r,s):e?(process.nextTick(nQ,r),e(s)):process.nextTick(nQ,r)}),this)}function Uce(t,e){RT(t,e),nQ(t)}function nQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function A9e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function RT(t,e){t.emit("error",e)}function l9e(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}Kce.exports={destroy:a9e,undestroy:A9e,errorOrDestroy:l9e}});var VA=E((dPt,Hce)=>{"use strict";var Gce={};function Is(t,e,r){r||(r=Error);function i(s,o,a){return typeof e=="string"?e:e(s,o,a)}class n extends r{constructor(o,a,l){super(i(o,a,l))}}n.prototype.name=r.name,n.prototype.code=t,Gce[t]=n}function jce(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(i=>String(i)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function c9e(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function u9e(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function g9e(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Is("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Is("ERR_INVALID_ARG_TYPE",function(t,e,r){let i;typeof e=="string"&&c9e(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";let n;if(u9e(t," argument"))n=`The ${t} ${i} ${jce(e,"type")}`;else{let s=g9e(t,".")?"property":"argument";n=`The "${t}" ${s} ${i} ${jce(e,"type")}`}return n+=`. Received type ${typeof r}`,n},TypeError);Is("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Is("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Is("ERR_STREAM_PREMATURE_CLOSE","Premature close");Is("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Is("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Is("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Is("ERR_STREAM_WRITE_AFTER_END","write after end");Is("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Is("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Is("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Hce.exports.codes=Gce});var NT=E((CPt,Yce)=>{"use strict";var f9e=VA().codes.ERR_INVALID_OPT_VALUE;function h9e(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function p9e(t,e,r,i){var n=h9e(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var s=i?r:"highWaterMark";throw new f9e(s,n)}return Math.floor(n)}return t.objectMode?16:16*1024}Yce.exports={getHighWaterMark:p9e}});var qce=E((mPt,LT)=>{typeof Object.create=="function"?LT.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:LT.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var _A=E((EPt,TT)=>{try{if(MT=require("util"),typeof MT.inherits!="function")throw"";TT.exports=MT.inherits}catch(t){TT.exports=qce()}var MT});var Wce=E((IPt,Jce)=>{Jce.exports=require("util").deprecate});var UT=E((yPt,zce)=>{"use strict";zce.exports=Sr;function Vce(t){var e=this;this.next=null,this.entry=null,this.finish=function(){d9e(e,t)}}var If;Sr.WritableState=em;var C9e={deprecate:Wce()},_ce=PT(),sQ=require("buffer").Buffer,m9e=global.Uint8Array||function(){};function E9e(t){return sQ.from(t)}function I9e(t){return sQ.isBuffer(t)||t instanceof m9e}var OT=FT(),y9e=NT(),w9e=y9e.getHighWaterMark,XA=VA().codes,B9e=XA.ERR_INVALID_ARG_TYPE,Q9e=XA.ERR_METHOD_NOT_IMPLEMENTED,b9e=XA.ERR_MULTIPLE_CALLBACK,v9e=XA.ERR_STREAM_CANNOT_PIPE,S9e=XA.ERR_STREAM_DESTROYED,x9e=XA.ERR_STREAM_NULL_VALUES,k9e=XA.ERR_STREAM_WRITE_AFTER_END,P9e=XA.ERR_UNKNOWN_ENCODING,yf=OT.errorOrDestroy;_A()(Sr,_ce);function D9e(){}function em(t,e,r){If=If||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof If),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=w9e(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){R9e(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Vce(this)}em.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(em.prototype,"buffer",{get:C9e.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}})();var oQ;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(oQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Sr,Symbol.hasInstance,{value:function(e){return oQ.call(this,e)?!0:this!==Sr?!1:e&&e._writableState instanceof em}})):oQ=function(e){return e instanceof this};function Sr(t){If=If||Yc();var e=this instanceof If;if(!e&&!oQ.call(Sr,this))return new Sr(t);this._writableState=new em(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),_ce.call(this)}Sr.prototype.pipe=function(){yf(this,new v9e)};function F9e(t,e){var r=new k9e;yf(t,r),process.nextTick(e,r)}function N9e(t,e,r,i){var n;return r===null?n=new x9e:typeof r!="string"&&!e.objectMode&&(n=new B9e("chunk",["string","Buffer"],r)),n?(yf(t,n),process.nextTick(i,n),!1):!0}Sr.prototype.write=function(t,e,r){var i=this._writableState,n=!1,s=!i.objectMode&&I9e(t);return s&&!sQ.isBuffer(t)&&(t=E9e(t)),typeof e=="function"&&(r=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=D9e),i.ending?F9e(this,r):(s||N9e(this,i,t,r))&&(i.pendingcb++,n=L9e(this,i,s,t,e,r)),n};Sr.prototype.cork=function(){this._writableState.corked++};Sr.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Xce(this,t))};Sr.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new P9e(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Sr.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function T9e(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=sQ.from(e,r)),e}Object.defineProperty(Sr.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L9e(t,e,r,i,n,s){if(!r){var o=T9e(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length{"use strict";var j9e=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};eue.exports=Mo;var tue=HT(),GT=UT();_A()(Mo,tue);for(jT=j9e(GT.prototype),aQ=0;aQ{var lQ=require("buffer"),qa=lQ.Buffer;function iue(t,e){for(var r in t)e[r]=t[r]}qa.from&&qa.alloc&&qa.allocUnsafe&&qa.allocUnsafeSlow?rue.exports=lQ:(iue(lQ,YT),YT.Buffer=wf);function wf(t,e,r){return qa(t,e,r)}iue(qa,wf);wf.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return qa(t,e,r)};wf.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=qa(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};wf.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return qa(t)};wf.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return lQ.SlowBuffer(t)}});var WT=E(sue=>{"use strict";var qT=nue().Buffer,oue=qT.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function J9e(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function W9e(t){var e=J9e(t);if(typeof e!="string"&&(qT.isEncoding===oue||!oue(t)))throw new Error("Unknown encoding: "+t);return e||t}sue.StringDecoder=rm;function rm(t){this.encoding=W9e(t);var e;switch(this.encoding){case"utf16le":this.text=V9e,this.end=_9e,e=4;break;case"utf8":this.fillLast=z9e,e=4;break;case"base64":this.text=X9e,this.end=Z9e,e=3;break;default:this.write=$9e,this.end=eVe;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=qT.allocUnsafe(e)}rm.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function iVe(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function nVe(t,e,r){if((e[0]&192)!=128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!=128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!=128)return t.lastNeed=2,"\uFFFD"}}function z9e(t){var e=this.lastTotal-this.lastNeed,r=nVe(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function rVe(t,e){var r=iVe(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function tVe(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function V9e(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function _9e(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function X9e(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Z9e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function $9e(t){return t.toString(this.encoding)}function eVe(t){return t&&t.length?this.write(t):""}});var cQ=E((QPt,aue)=>{"use strict";var Aue=VA().codes.ERR_STREAM_PREMATURE_CLOSE;function sVe(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";var uQ;function ZA(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var AVe=cQ(),$A=Symbol("lastResolve"),qc=Symbol("lastReject"),im=Symbol("error"),gQ=Symbol("ended"),Jc=Symbol("lastPromise"),zT=Symbol("handlePromise"),Wc=Symbol("stream");function el(t,e){return{value:t,done:e}}function lVe(t){var e=t[$A];if(e!==null){var r=t[Wc].read();r!==null&&(t[Jc]=null,t[$A]=null,t[qc]=null,e(el(r,!1)))}}function cVe(t){process.nextTick(lVe,t)}function uVe(t,e){return function(r,i){t.then(function(){if(e[gQ]){r(el(void 0,!0));return}e[zT](r,i)},i)}}var gVe=Object.getPrototypeOf(function(){}),fVe=Object.setPrototypeOf((uQ={get stream(){return this[Wc]},next:function(){var e=this,r=this[im];if(r!==null)return Promise.reject(r);if(this[gQ])return Promise.resolve(el(void 0,!0));if(this[Wc].destroyed)return new Promise(function(o,a){process.nextTick(function(){e[im]?a(e[im]):o(el(void 0,!0))})});var i=this[Jc],n;if(i)n=new Promise(uVe(i,this));else{var s=this[Wc].read();if(s!==null)return Promise.resolve(el(s,!1));n=new Promise(this[zT])}return this[Jc]=n,n}},ZA(uQ,Symbol.asyncIterator,function(){return this}),ZA(uQ,"return",function(){var e=this;return new Promise(function(r,i){e[Wc].destroy(null,function(n){if(n){i(n);return}r(el(void 0,!0))})})}),uQ),gVe),hVe=function(e){var r,i=Object.create(fVe,(r={},ZA(r,Wc,{value:e,writable:!0}),ZA(r,$A,{value:null,writable:!0}),ZA(r,qc,{value:null,writable:!0}),ZA(r,im,{value:null,writable:!0}),ZA(r,gQ,{value:e._readableState.endEmitted,writable:!0}),ZA(r,zT,{value:function(s,o){var a=i[Wc].read();a?(i[Jc]=null,i[$A]=null,i[qc]=null,s(el(a,!1))):(i[$A]=s,i[qc]=o)},writable:!0}),r));return i[Jc]=null,AVe(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var s=i[qc];s!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,s(n)),i[im]=n;return}var o=i[$A];o!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,o(el(void 0,!0))),i[gQ]=!0}),e.on("readable",cVe.bind(null,i)),i};cue.exports=hVe});var pue=E((vPt,gue)=>{"use strict";function fue(t,e,r,i,n,s,o){try{var a=t[s](o),l=a.value}catch(c){r(c);return}a.done?e(l):Promise.resolve(l).then(i,n)}function pVe(t){return function(){var e=this,r=arguments;return new Promise(function(i,n){var s=t.apply(e,r);function o(l){fue(s,i,n,o,a,"next",l)}function a(l){fue(s,i,n,o,a,"throw",l)}o(void 0)})}}function hue(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function CVe(t){for(var e=1;e{"use strict";due.exports=kt;var Bf;kt.ReadableState=Cue;var SPt=require("events").EventEmitter,mue=function(e,r){return e.listeners(r).length},nm=PT(),fQ=require("buffer").Buffer,IVe=global.Uint8Array||function(){};function yVe(t){return fQ.from(t)}function wVe(t){return fQ.isBuffer(t)||t instanceof IVe}var VT=require("util"),Et;VT&&VT.debuglog?Et=VT.debuglog("stream"):Et=function(){};var BVe=Oce(),_T=FT(),QVe=NT(),bVe=QVe.getHighWaterMark,hQ=VA().codes,vVe=hQ.ERR_INVALID_ARG_TYPE,SVe=hQ.ERR_STREAM_PUSH_AFTER_EOF,xVe=hQ.ERR_METHOD_NOT_IMPLEMENTED,kVe=hQ.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Qf,XT,ZT;_A()(kt,nm);var sm=_T.errorOrDestroy,$T=["error","close","destroy","pause","resume"];function PVe(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function Cue(t,e,r){Bf=Bf||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof Bf),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=bVe(this,t,"readableHighWaterMark",r),this.buffer=new BVe,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Qf||(Qf=WT().StringDecoder),this.decoder=new Qf(t.encoding),this.encoding=t.encoding)}function kt(t){if(Bf=Bf||Yc(),!(this instanceof kt))return new kt(t);var e=this instanceof Bf;this._readableState=new Cue(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),nm.call(this)}Object.defineProperty(kt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});kt.prototype.destroy=_T.destroy;kt.prototype._undestroy=_T.undestroy;kt.prototype._destroy=function(t,e){e(t)};kt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=fQ.from(t,e),e=""),i=!0),Eue(this,t,e,!1,i)};kt.prototype.unshift=function(t){return Eue(this,t,null,!0,!1)};function Eue(t,e,r,i,n){Et("readableAddChunk",e);var s=t._readableState;if(e===null)s.reading=!1,RVe(t,s);else{var o;if(n||(o=DVe(s,e)),o)sm(t,o);else if(s.objectMode||e&&e.length>0)if(typeof e!="string"&&!s.objectMode&&Object.getPrototypeOf(e)!==fQ.prototype&&(e=yVe(e)),i)s.endEmitted?sm(t,new kVe):eM(t,s,e,!0);else if(s.ended)sm(t,new SVe);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||e.length!==0?eM(t,s,e,!1):tM(t,s)):eM(t,s,e,!1)}else i||(s.reading=!1,tM(t,s))}return!s.ended&&(s.length=Iue?t=Iue:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function yue(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=FVe(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}kt.prototype.read=function(t){Et("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return Et("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?rM(this):pQ(this),null;if(t=yue(t,e),t===0&&e.ended)return e.length===0&&rM(this),null;var i=e.needReadable;Et("need readable",i),(e.length===0||e.length-t0?n=wue(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&rM(this)),n!==null&&this.emit("data",n),n};function RVe(t,e){if(Et("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?pQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,Bue(t)))}}function pQ(t){var e=t._readableState;Et("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(Et("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(Bue,t))}function Bue(t){var e=t._readableState;Et("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,iM(t)}function tM(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(NVe,t,e))}function NVe(t,e){for(;!e.reading&&!e.ended&&(e.length1&&Que(i.pipes,t)!==-1)&&!c&&(Et("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(m){Et("onerror",m),d(),t.removeListener("error",f),mue(t,"error")===0&&sm(t,m)}PVe(t,"error",f);function h(){t.removeListener("finish",p),d()}t.once("close",h);function p(){Et("onfinish"),t.removeListener("close",h),d()}t.once("finish",p);function d(){Et("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(Et("pipe resume"),r.resume()),t};function LVe(t){return function(){var r=t._readableState;Et("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&mue(t,"data")&&(r.flowing=!0,iM(t))}}kt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var s=0;s0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,Et("on readable",i.length,i.reading),i.length?pQ(this):i.reading||process.nextTick(TVe,this)),r};kt.prototype.addListener=kt.prototype.on;kt.prototype.removeListener=function(t,e){var r=nm.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(bue,this),r};kt.prototype.removeAllListeners=function(t){var e=nm.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(bue,this),e};function bue(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function TVe(t){Et("readable nexttick read 0"),t.read(0)}kt.prototype.resume=function(){var t=this._readableState;return t.flowing||(Et("resume"),t.flowing=!t.readableListening,MVe(this,t)),t.paused=!1,this};function MVe(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(OVe,t,e))}function OVe(t,e){Et("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),iM(t),e.flowing&&!e.reading&&t.read(0)}kt.prototype.pause=function(){return Et("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Et("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function iM(t){var e=t._readableState;for(Et("flow",e.flowing);e.flowing&&t.read()!==null;);}kt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(Et("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(Et("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var a=e.push(o);a||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(a){return function(){return t[a].apply(t,arguments)}}(n));for(var s=0;s<$T.length;s++)t.on($T[s],this.emit.bind(this,$T[s]));return this._read=function(o){Et("wrapped _read",o),i&&(i=!1,t.resume())},this};typeof Symbol=="function"&&(kt.prototype[Symbol.asyncIterator]=function(){return XT===void 0&&(XT=uue()),XT(this)});Object.defineProperty(kt.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(kt.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(kt.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});kt._fromList=wue;Object.defineProperty(kt.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function wue(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function rM(t){var e=t._readableState;Et("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(KVe,e,t))}function KVe(t,e){if(Et("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(kt.from=function(t,e){return ZT===void 0&&(ZT=pue()),ZT(kt,t,e)});function Que(t,e){for(var r=0,i=t.length;r{"use strict";vue.exports=Ja;var dQ=VA().codes,UVe=dQ.ERR_METHOD_NOT_IMPLEMENTED,HVe=dQ.ERR_MULTIPLE_CALLBACK,GVe=dQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,jVe=dQ.ERR_TRANSFORM_WITH_LENGTH_0,CQ=Yc();_A()(Ja,CQ);function YVe(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new HVe);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";xue.exports=om;var kue=nM();_A()(om,kue);function om(t){if(!(this instanceof om))return new om(t);kue.call(this,t)}om.prototype._transform=function(t,e,r){r(null,t)}});var Lue=E((DPt,Due)=>{"use strict";var sM;function JVe(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var Rue=VA().codes,WVe=Rue.ERR_MISSING_ARGS,zVe=Rue.ERR_STREAM_DESTROYED;function Fue(t){if(t)throw t}function VVe(t){return t.setHeader&&typeof t.abort=="function"}function _Ve(t,e,r,i){i=JVe(i);var n=!1;t.on("close",function(){n=!0}),sM===void 0&&(sM=cQ()),sM(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,VVe(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new zVe("pipe"))}}}function Nue(t){t()}function XVe(t,e){return t.pipe(e)}function ZVe(t){return!t.length||typeof t[t.length-1]!="function"?Fue:t.pop()}function $Ve(){for(var t=arguments.length,e=new Array(t),r=0;r0;return _Ve(o,l,c,function(u){n||(n=u),u&&s.forEach(Nue),!l&&(s.forEach(Nue),i(n))})});return e.reduce(XVe)}Due.exports=$Ve});var bf=E((ys,am)=>{var Am=require("stream");process.env.READABLE_STREAM==="disable"&&Am?(am.exports=Am.Readable,Object.assign(am.exports,Am),am.exports.Stream=Am):(ys=am.exports=HT(),ys.Stream=Am||ys,ys.Readable=ys,ys.Writable=UT(),ys.Duplex=Yc(),ys.Transform=nM(),ys.PassThrough=Pue(),ys.finished=cQ(),ys.pipeline=Lue())});var Oue=E((RPt,Tue)=>{"use strict";var{Buffer:_s}=require("buffer"),Mue=Symbol.for("BufferList");function nr(t){if(!(this instanceof nr))return new nr(t);nr._init.call(this,t)}nr._init=function(e){Object.defineProperty(this,Mue,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};nr.prototype._new=function(e){return new nr(e)};nr.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let i=0;ithis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};nr.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};nr.prototype.copy=function(e,r,i,n){if((typeof i!="number"||i<0)&&(i=0),(typeof n!="number"||n>this.length)&&(n=this.length),i>=this.length||n<=0)return e||_s.alloc(0);let s=!!e,o=this._offset(i),a=n-i,l=a,c=s&&r||0,u=o[1];if(i===0&&n===this.length){if(!s)return this._bufs.length===1?this._bufs[0]:_s.concat(this._bufs,this.length);for(let g=0;gf)this._bufs[g].copy(e,c,u),c+=f;else{this._bufs[g].copy(e,c,u,u+l),c+=f;break}l-=f,u&&(u=0)}return e.length>c?e.slice(0,c):e};nr.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let i=this._offset(e),n=this._offset(r),s=this._bufs.slice(i[0],n[0]+1);return n[1]===0?s.pop():s[s.length-1]=s[s.length-1].slice(0,n[1]),i[1]!==0&&(s[0]=s[0].slice(i[1])),this._new(s)};nr.prototype.toString=function(e,r,i){return this.slice(r,i).toString(e)};nr.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};nr.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let i=this._offset(e),n=i[0],s=i[1];for(;n=t.length){let l=o.indexOf(t,s);if(l!==-1)return this._reverseOffset([n,l]);s=o.length-t.length+1}else{let l=this._reverseOffset([n,s]);if(this._match(l,t))return l;s++}s=0}return-1};nr.prototype._match=function(t,e){if(this.length-t{"use strict";var oM=bf().Duplex,e7e=_A(),lm=Oue();function Oi(t){if(!(this instanceof Oi))return new Oi(t);if(typeof t=="function"){this._callback=t;let e=function(i){this._callback&&(this._callback(i),this._callback=null)}.bind(this);this.on("pipe",function(i){i.on("error",e)}),this.on("unpipe",function(i){i.removeListener("error",e)}),t=null}lm._init.call(this,t),oM.call(this)}e7e(Oi,oM);Object.assign(Oi.prototype,lm.prototype);Oi.prototype._new=function(e){return new Oi(e)};Oi.prototype._write=function(e,r,i){this._appendBuffer(e),typeof i=="function"&&i()};Oi.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Oi.prototype.end=function(e){oM.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Oi.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Oi.prototype._isBufferList=function(e){return e instanceof Oi||e instanceof lm||Oi.isBufferList(e)};Oi.isBufferList=lm.isBufferList;mQ.exports=Oi;mQ.exports.BufferListStream=Oi;mQ.exports.BufferList=lm});var lM=E(vf=>{var t7e=Buffer.alloc,r7e="0000000000000000000",i7e="7777777777777777777",Uue="0".charCodeAt(0),Hue=Buffer.from("ustar\0","binary"),n7e=Buffer.from("00","binary"),s7e=Buffer.from("ustar ","binary"),o7e=Buffer.from(" \0","binary"),a7e=parseInt("7777",8),cm=257,aM=263,A7e=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},l7e=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},c7e=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},Gue=function(t,e,r,i){for(;re?i7e.slice(0,e)+" ":r7e.slice(0,e-t.length)+t+" "};function u7e(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],i=t.length-1;i>0;i--){var n=t[i];e?r.push(n):r.push(255-n)}var s=0,o=r.length;for(i=0;i=Math.pow(10,r)&&r++,e+r+t};vf.decodeLongPath=function(t,e){return Sf(t,0,t.length,e)};vf.encodePax=function(t){var e="";t.name&&(e+=AM(" path="+t.name+` -`)),t.linkname&&(e+=AM(" linkpath="+t.linkname+` -`));var r=t.pax;if(r)for(var i in r)e+=AM(" "+i+"="+r[i]+` -`);return Buffer.from(e)};vf.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var n=r.indexOf("/");if(n===-1)return null;i+=i?"/"+r.slice(0,n):r.slice(0,n),r=r.slice(n+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(i)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(tl(t.mode&a7e,6),100),e.write(tl(t.uid,6),108),e.write(tl(t.gid,6),116),e.write(tl(t.size,11),124),e.write(tl(t.mtime.getTime()/1e3|0,11),136),e[156]=Uue+c7e(t.type),t.linkname&&e.write(t.linkname,157),Hue.copy(e,cm),n7e.copy(e,aM),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(tl(t.devmajor||0,6),329),e.write(tl(t.devminor||0,6),337),i&&e.write(i,345),e.write(tl(jue(e),6),148),e)};vf.decode=function(t,e,r){var i=t[156]===0?0:t[156]-Uue,n=Sf(t,0,100,e),s=rl(t,100,8),o=rl(t,108,8),a=rl(t,116,8),l=rl(t,124,12),c=rl(t,136,12),u=l7e(i),g=t[157]===0?null:Sf(t,157,100,e),f=Sf(t,265,32),h=Sf(t,297,32),p=rl(t,329,8),d=rl(t,337,8),m=jue(t);if(m===8*32)return null;if(m!==rl(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(Hue.compare(t,cm,cm+6)===0)t[345]&&(n=Sf(t,345,155,e)+"/"+n);else if(!(s7e.compare(t,cm,cm+6)===0&&o7e.compare(t,aM,aM+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:d}}});var _ue=E((LPt,Yue)=>{var que=require("util"),g7e=Kue(),um=lM(),Jue=bf().Writable,Wue=bf().PassThrough,zue=function(){},Vue=function(t){return t&=511,t&&512-t},f7e=function(t,e){var r=new EQ(t,e);return r.end(),r},h7e=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},EQ=function(t,e){this._parent=t,this.offset=e,Wue.call(this,{autoDestroy:!1})};que.inherits(EQ,Wue);EQ.prototype.destroy=function(t){this._parent.destroy(t)};var Wa=function(t){if(!(this instanceof Wa))return new Wa(t);Jue.call(this,t),t=t||{},this._offset=0,this._buffer=g7e(),this._missing=0,this._partial=!1,this._onparse=zue,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=Vue(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(Vue(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=um.decodePax(r.slice(0,f)),r.consume(f),s()},l=function(){var f=e._header.size;e._pax=um.decodePax(r.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=um.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(p){e.emit("error",p)}if(r.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=h7e(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,f7e(e,f),n);return}e._stream=new EQ(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};que.inherits(Wa,Jue);Wa.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};Wa.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};Wa.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=zue,this._overflow?this._write(this._overflow,void 0,t):t()}};Wa.prototype._write=function(t,e,r){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(t.length&&(this._partial=!0),t.lengths&&(o=t.slice(s),t=t.slice(0,s)),i?i.end(t):n.append(t),this._overflow=o,this._onparse()}};Wa.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};Yue.exports=Wa});var Zue=E((TPt,Xue)=>{Xue.exports=require("fs").constants||require("constants")});var ige=E((MPt,$ue)=>{var xf=Zue(),ege=tk(),IQ=_A(),p7e=Buffer.alloc,tge=bf().Readable,kf=bf().Writable,d7e=require("string_decoder").StringDecoder,yQ=lM(),C7e=parseInt("755",8),m7e=parseInt("644",8),rge=p7e(1024),cM=function(){},uM=function(t,e){e&=511,e&&t.push(rge.slice(0,512-e))};function E7e(t){switch(t&xf.S_IFMT){case xf.S_IFBLK:return"block-device";case xf.S_IFCHR:return"character-device";case xf.S_IFDIR:return"directory";case xf.S_IFIFO:return"fifo";case xf.S_IFLNK:return"symlink"}return"file"}var wQ=function(t){kf.call(this),this.written=0,this._to=t,this._destroyed=!1};IQ(wQ,kf);wQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};wQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var BQ=function(){kf.call(this),this.linkname="",this._decoder=new d7e("utf-8"),this._destroyed=!1};IQ(BQ,kf);BQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};BQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var gm=function(){kf.call(this),this._destroyed=!1};IQ(gm,kf);gm.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};gm.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Oo=function(t){if(!(this instanceof Oo))return new Oo(t);tge.call(this,t),this._drain=cM,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};IQ(Oo,tge);Oo.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=cM);var i=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=E7e(t.mode)),t.mode||(t.mode=t.type==="directory"?C7e:m7e),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var n=this.push(e);return uM(i,t.size),n?process.nextTick(r):this._drain=r,new gm}if(t.type==="symlink"&&!t.linkname){var s=new BQ;return ege(s,function(a){if(a)return i.destroy(),r(a);t.linkname=s.linkname,i._encode(t),r()}),s}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new gm;var o=new wQ(this);return this._stream=o,ege(o,function(a){if(i._stream=null,a)return i.destroy(),r(a);if(o.written!==t.size)return i.destroy(),r(new Error("size mismatch"));uM(i,t.size),i._finalizing&&i.finalize(),r()}),o}};Oo.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(rge),this.push(null))};Oo.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};Oo.prototype._encode=function(t){if(!t.pax){var e=yQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};Oo.prototype._encodePax=function(t){var e=yQ.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(yQ.encode(r)),this.push(e),uM(this,e.length),r.size=t.size,r.type=t.type,this.push(yQ.encode(r))};Oo.prototype._read=function(t){var e=this._drain;this._drain=cM,e()};$ue.exports=Oo});var nge=E(gM=>{gM.extract=_ue();gM.pack=ige()});var Cge=E((oDt,fge)=>{"use strict";var Pf=class{constructor(e,r,i){this.__specs=e||{},Object.keys(this.__specs).forEach(n=>{if(typeof this.__specs[n]=="string"){let s=this.__specs[n],o=this.__specs[s];if(o){let a=o.aliases||[];a.push(n,s),o.aliases=[...new Set(a)],this.__specs[n]=o}else throw new Error(`Alias refers to invalid key: ${s} -> ${n}`)}}),this.__opts=r||{},this.__providers=pge(i.filter(n=>n!=null&&typeof n=="object")),this.__isFiggyPudding=!0}get(e){return mM(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[i,n]of this.entries())e.call(r,n,i,this)}toJSON(){let e={};return this.forEach((r,i)=>{e[i]=r}),e}*entries(e){for(let i of Object.keys(this.__specs))yield[i,this.get(i)];let r=e||this.__opts.other;if(r){let i=new Set;for(let n of this.__providers){let s=n.entries?n.entries(r):R7e(n);for(let[o,a]of s)r(o)&&!i.has(o)&&(i.add(o),yield[o,a])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Pf(this.__specs,this.__opts,pge(this.__providers).concat(e)),hge)}};try{let t=require("util");Pf.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch(t){}function F7e(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function mM(t,e,r){let i=t.__specs[e];if(r&&!i&&(!t.__opts.other||!t.__opts.other(e)))F7e(e);else{i||(i={});let n;for(let s of t.__providers){if(n=dge(e,s),n===void 0&&i.aliases&&i.aliases.length){for(let o of i.aliases)if(o!==e&&(n=dge(o,s),n!==void 0))break}if(n!==void 0)break}return n===void 0&&i.default!==void 0?typeof i.default=="function"?i.default(t):i.default:n}}function dge(t,e){let r;return e.__isFiggyPudding?r=mM(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var hge={has(t,e){return e in t.__specs&&mM(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Pf.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};fge.exports=N7e;function N7e(t,e){function r(...i){return new Proxy(new Pf(t,e,i),hge)}return r}function pge(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function R7e(t){return Object.keys(t).map(e=>[e,t[e]])}});var Ige=E((aDt,Ko)=>{"use strict";var hm=require("crypto"),L7e=Cge(),T7e=require("stream").Transform,mge=["sha256","sha384","sha512"],M7e=/^[a-z0-9+/]+(?:=?=?)$/i,O7e=/^([^-]+)-([^?]+)([?\S*]*)$/,K7e=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,U7e=/^[\x21-\x7E]+$/,on=L7e({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>H7e},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),zc=class{get isHash(){return!0}constructor(e,r){r=on(r);let i=!!r.strict;this.source=e.trim();let n=this.source.match(i?K7e:O7e);if(!n||i&&!mge.some(o=>o===n[1]))return;this.algorithm=n[1],this.digest=n[2];let s=n[3];this.options=s?s.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=on(e),e.strict&&!(mge.some(i=>i===this.algorithm)&&this.digest.match(M7e)&&(this.options||[]).every(i=>i.match(U7e))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Df=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=on(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(i=>this[i].map(n=>zc.prototype.toString.call(n,e)).filter(n=>n.length).join(r)).filter(i=>i.length).join(r)}concat(e,r){r=on(r);let i=typeof e=="string"?e:pm(e,r);return Uo(`${this.toString(r)} ${i}`,r)}hexDigest(){return Uo(this,{single:!0}).hexDigest()}match(e,r){r=on(r);let i=Uo(e,r),n=i.pickAlgorithm(r);return this[n]&&i[n]&&this[n].find(s=>i[n].find(o=>s.digest===o.digest))||!1}pickAlgorithm(e){e=on(e);let r=e.pickAlgorithm,i=Object.keys(this);if(!i.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return i.reduce((n,s)=>r(n,s)||n)}};Ko.exports.parse=Uo;function Uo(t,e){if(e=on(e),typeof t=="string")return EM(t,e);if(t.algorithm&&t.digest){let r=new Df;return r[t.algorithm]=[t],EM(pm(r,e),e)}else return EM(pm(t,e),e)}function EM(t,e){return e.single?new zc(t,e):t.trim().split(/\s+/).reduce((r,i)=>{let n=new zc(i,e);if(n.algorithm&&n.digest){let s=n.algorithm;r[s]||(r[s]=[]),r[s].push(n)}return r},new Df)}Ko.exports.stringify=pm;function pm(t,e){return e=on(e),t.algorithm&&t.digest?zc.prototype.toString.call(t,e):typeof t=="string"?pm(Uo(t,e),e):Df.prototype.toString.call(t,e)}Ko.exports.fromHex=G7e;function G7e(t,e,r){r=on(r);let i=r.options&&r.options.length?`?${r.options.join("?")}`:"";return Uo(`${e}-${Buffer.from(t,"hex").toString("base64")}${i}`,r)}Ko.exports.fromData=j7e;function j7e(t,e){e=on(e);let r=e.algorithms,i=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((n,s)=>{let o=hm.createHash(s).update(t).digest("base64"),a=new zc(`${s}-${o}${i}`,e);if(a.algorithm&&a.digest){let l=a.algorithm;n[l]||(n[l]=[]),n[l].push(a)}return n},new Df)}Ko.exports.fromStream=Y7e;function Y7e(t,e){e=on(e);let r=e.Promise||Promise,i=IM(e);return new r((n,s)=>{t.pipe(i),t.on("error",s),i.on("error",s);let o;i.on("integrity",a=>{o=a}),i.on("end",()=>n(o)),i.on("data",()=>{})})}Ko.exports.checkData=q7e;function q7e(t,e,r){if(r=on(r),e=Uo(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let i=e.pickAlgorithm(r),n=hm.createHash(i).update(t).digest("base64"),s=Uo({algorithm:i,digest:n}),o=s.match(e,r);if(o||!r.error)return o;if(typeof r.size=="number"&&t.length!==r.size){let a=new Error(`data size mismatch when checking ${e}. - Wanted: ${r.size} - Found: ${t.length}`);throw a.code="EBADSIZE",a.found=t.length,a.expected=r.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${t.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}Ko.exports.checkStream=J7e;function J7e(t,e,r){r=on(r);let i=r.Promise||Promise,n=IM(r.concat({integrity:e}));return new i((s,o)=>{t.pipe(n),t.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}Ko.exports.integrityStream=IM;function IM(t){t=on(t);let e=t.integrity&&Uo(t.integrity,t),r=e&&Object.keys(e).length,i=r&&e.pickAlgorithm(t),n=r&&e[i],s=Array.from(new Set(t.algorithms.concat(i?[i]:[]))),o=s.map(hm.createHash),a=0,l=new T7e({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=t.options&&t.options.length?`?${t.options.join("?")}`:"",u=Uo(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),t),g=r&&u.match(e,t);if(typeof t.size=="number"&&a!==t.size){let f=new Error(`stream size mismatch when checking ${e}. - Wanted: ${t.size} - Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=t.size,f.sri=e,l.emit("error",f)}else if(t.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}Ko.exports.create=W7e;function W7e(t){t=on(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",i=e.map(hm.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new zc(`${a}-${l}${r}`,t);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Df)}}}var z7e=new Set(hm.getHashes()),Ege=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>z7e.has(t));function H7e(t,e){return Ege.indexOf(t.toLowerCase())>=Ege.indexOf(e.toLowerCase())?t:e}});var Fd={};it(Fd,{BuildType:()=>Gn,Cache:()=>Qt,Configuration:()=>fe,DEFAULT_LOCK_FILENAME:()=>DR,DEFAULT_RC_FILENAME:()=>PR,FormatType:()=>ps,InstallMode:()=>li,LightReport:()=>Fa,LinkType:()=>gt,Manifest:()=>Ze,MessageName:()=>z,PackageExtensionStatus:()=>ki,PackageExtensionType:()=>oi,Project:()=>Ke,ProjectLookup:()=>KA,Report:()=>Xi,ReportError:()=>nt,SettingsType:()=>ge,StreamReport:()=>Fe,TAG_REGEXP:()=>Rg,TelemetryManager:()=>Rd,ThrowReport:()=>ei,VirtualFetcher:()=>dd,Workspace:()=>Dd,WorkspaceResolver:()=>Yr,YarnVersion:()=>Zr,execUtils:()=>hr,folderUtils:()=>Pb,formatUtils:()=>ue,hashUtils:()=>mn,httpUtils:()=>Zt,miscUtils:()=>de,scriptUtils:()=>Kt,semverUtils:()=>qt,structUtils:()=>S,tgzUtils:()=>Ai,treeUtils:()=>Hs});var hr={};it(hr,{EndStrategy:()=>Pn,execvp:()=>Nhe,pipevp:()=>to});var ch={};it(ch,{AliasFS:()=>Xo,CwdFS:()=>Ft,DEFAULT_COMPRESSION_LEVEL:()=>pl,FakeFS:()=>eA,Filename:()=>wt,JailFS:()=>Zo,LazyFS:()=>oh,LinkStrategy:()=>eh,NoFS:()=>bE,NodeFS:()=>Wt,PortablePath:()=>Se,PosixFS:()=>ah,ProxiedFS:()=>fi,VirtualFS:()=>Pr,ZipFS:()=>Jr,ZipOpenFS:()=>Jn,constants:()=>mr,extendFs:()=>SE,normalizeLineEndings:()=>ul,npath:()=>M,opendir:()=>wE,patchFs:()=>pb,ppath:()=>v,statUtils:()=>rb,toFilename:()=>kr,xfs:()=>T});var mr={};it(mr,{SAFE_TIME:()=>tb,S_IFDIR:()=>zo,S_IFLNK:()=>_o,S_IFMT:()=>kn,S_IFREG:()=>Vo});var kn=61440,zo=16384,Vo=32768,_o=40960,tb=456789e3;var rb={};it(rb,{BigIntStatsEntry:()=>Xf,DEFAULT_MODE:()=>_f,DirEntry:()=>uO,StatEntry:()=>Za,areStatsEqual:()=>nb,clearStats:()=>pE,convertToBigIntStats:()=>dE,makeDefaultStats:()=>Zf,makeEmptyStats:()=>Jfe});var ib=ie(require("util"));var _f=Vo|420,uO=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Za=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=_f;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Xf=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(_f);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(kn))===BigInt(zo)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(kn))===BigInt(Vo)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(kn))===BigInt(_o)}};function Zf(){return new Za}function Jfe(){return pE(Zf())}function pE(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):ib.types.isDate(r)&&(t[e]=new Date(0))}return t}function dE(t){let e=new Xf;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let i=t[r];typeof i=="number"?e[r]=BigInt(i):ib.types.isDate(i)&&(e[r]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function nb(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,i=e;return!(r.atimeNs!==i.atimeNs||r.mtimeNs!==i.mtimeNs||r.ctimeNs!==i.ctimeNs||r.birthtimeNs!==i.birthtimeNs)}var mE=ie(require("fs"));var $f=ie(require("path")),gO;(function(i){i[i.File=0]="File",i[i.Portable=1]="Portable",i[i.Native=2]="Native"})(gO||(gO={}));var Se={root:"/",dot:"."},wt={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",rc:".yarnrc.yml"},M=Object.create($f.default),v=Object.create($f.default.posix);M.cwd=()=>process.cwd();v.cwd=()=>sb(process.cwd());v.resolve=(...t)=>t.length>0&&v.isAbsolute(t[0])?$f.default.posix.resolve(...t):$f.default.posix.resolve(v.cwd(),...t);var fO=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};M.fromPortablePath=hO;M.toPortablePath=sb;M.contains=(t,e)=>fO(M,t,e);v.contains=(t,e)=>fO(v,t,e);var Wfe=/^([a-zA-Z]:.*)$/,zfe=/^\\\\(\.\\)?(.*)$/,Vfe=/^\/([a-zA-Z]:.*)$/,_fe=/^\/unc\/(\.dot\/)?(.*)$/;function hO(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(Vfe))t=e[1];else if(r=t.match(_fe))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function sb(t){if(process.platform!=="win32")return t;let e,r;return(e=t.match(Wfe))?t=`/${e[1]}`:(r=t.match(zfe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t.replace(/\\/g,"/")}function CE(t,e){return t===M?hO(e):sb(e)}function kr(t){if(M.parse(t).dir!==""||v.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var EE=new Date(tb*1e3),eh;(function(r){r.Allow="allow",r.ReadOnly="readOnly"})(eh||(eh={}));async function pO(t,e,r,i,n){let s=t.pathUtils.normalize(e),o=r.pathUtils.normalize(i),a=[],l=[],c=n.stableTime?{mtime:EE,atime:EE}:await r.lstatPromise(o);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[c.atime,c.mtime]});let u=typeof t.lutimesPromise=="function"?t.lutimesPromise.bind(t):t.utimesPromise.bind(t);await ob(a,l,u,t,s,r,o,n);for(let g of a)await g();await Promise.all(l.map(g=>g()))}async function ob(t,e,r,i,n,s,o,a){var f,h;let l=await Xfe(i,n),c=await s.lstatPromise(o),u=a.stableTime?{mtime:EE,atime:EE}:c,g;switch(!0){case c.isDirectory():g=await Zfe(t,e,r,i,n,l,s,o,c,a);break;case c.isFile():g=await $fe(t,e,r,i,n,l,s,o,c,a);break;case c.isSymbolicLink():g=await ehe(t,e,r,i,n,l,s,o,c,a);break;default:throw new Error(`Unsupported file type (${c.mode})`)}return(g||((f=l==null?void 0:l.mtime)==null?void 0:f.getTime())!==u.mtime.getTime()||((h=l==null?void 0:l.atime)==null?void 0:h.getTime())!==u.atime.getTime())&&(e.push(()=>r(n,u.atime,u.mtime)),g=!0),(l===null||(l.mode&511)!=(c.mode&511))&&(e.push(()=>i.chmodPromise(n,c.mode&511)),g=!0),g}async function Xfe(t,e){try{return await t.lstatPromise(e)}catch(r){return null}}async function Zfe(t,e,r,i,n,s,o,a,l,c){if(s!==null&&!s.isDirectory())if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=!1;s===null&&(t.push(async()=>{try{await i.mkdirPromise(n,{mode:l.mode})}catch(f){if(f.code!=="EEXIST")throw f}}),u=!0);let g=await o.readdirPromise(a);if(c.stableSort)for(let f of g.sort())await ob(t,e,r,i,i.pathUtils.join(n,f),o,o.pathUtils.join(a,f),c)&&(u=!0);else(await Promise.all(g.map(async h=>{await ob(t,e,r,i,i.pathUtils.join(n,h),o,o.pathUtils.join(a,h),c)}))).some(h=>h)&&(u=!0);return u}var ab=new WeakMap;function Ab(t,e,r,i,n){return async()=>{await t.linkPromise(r,e),n===eh.ReadOnly&&(i.mode&=~146,await t.chmodPromise(e,i.mode))}}function the(t,e,r,i,n){let s=ab.get(t);return typeof s=="undefined"?async()=>{try{await t.copyFilePromise(r,e,mE.default.constants.COPYFILE_FICLONE_FORCE),ab.set(t,!0)}catch(o){if(o.code==="ENOSYS"||o.code==="ENOTSUP")ab.set(t,!1),await Ab(t,e,r,i,n)();else throw o}}:s?async()=>t.copyFilePromise(r,e,mE.default.constants.COPYFILE_FICLONE_FORCE):Ab(t,e,r,i,n)}async function $fe(t,e,r,i,n,s,o,a,l,c){var f;if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=(f=c.linkStrategy)!=null?f:null,g=i===o?u!==null?the(i,n,a,l,u):async()=>i.copyFilePromise(a,n,mE.default.constants.COPYFILE_FICLONE):u!==null?Ab(i,n,a,l,u):async()=>i.writeFilePromise(n,await o.readFilePromise(a));return t.push(async()=>g()),!0}async function ehe(t,e,r,i,n,s,o,a,l,c){if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;return t.push(async()=>{await i.symlinkPromise(CE(i.pathUtils,await o.readlinkPromise(a)),n)}),!0}function qn(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function IE(t){return qn("EBUSY",t)}function th(t,e){return qn("ENOSYS",`${t}, ${e}`)}function $a(t){return qn("EINVAL",`invalid argument, ${t}`)}function Hi(t){return qn("EBADF",`bad file descriptor, ${t}`)}function bs(t){return qn("ENOENT",`no such file or directory, ${t}`)}function eo(t){return qn("ENOTDIR",`not a directory, ${t}`)}function rh(t){return qn("EISDIR",`illegal operation on a directory, ${t}`)}function yE(t){return qn("EEXIST",`file already exists, ${t}`)}function ln(t){return qn("EROFS",`read-only filesystem, ${t}`)}function dO(t){return qn("ENOTEMPTY",`directory not empty, ${t}`)}function CO(t){return qn("EOPNOTSUPP",`operation not supported, ${t}`)}function mO(){return qn("ERR_DIR_CLOSED","Directory handle was closed")}var lb=class extends Error{constructor(e,r){super(e);this.name="Libzip Error",this.code=r}};var EO=class{constructor(e,r,i={}){this.path=e;this.nextDirent=r;this.opts=i;this.closed=!1}throwIfClosed(){if(this.closed)throw mO()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e!="undefined"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e!="undefined"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}};function wE(t,e,r,i){let n=()=>{let s=r.shift();return typeof s=="undefined"?null:Object.assign(t.statSync(t.pathUtils.join(e,s)),{name:s})};return new EO(e,n,i)}var IO=ie(require("os"));var eA=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let i=[e];for(;i.length>0;){let n=i.shift();if((await this.lstatPromise(n)).isDirectory()){let o=await this.readdirPromise(n);if(r)for(let a of o.sort())i.push(this.pathUtils.join(n,a));else throw new Error("Not supported")}else yield n}}async removePromise(e,{recursive:r=!0,maxRetries:i=5}={}){let n;try{n=await this.lstatPromise(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(r){let o=await this.readdirPromise(e);await Promise.all(o.map(a=>this.removePromise(this.pathUtils.resolve(e,a))))}let s=0;do try{await this.rmdirPromise(e);break}catch(o){if(o.code==="EBUSY"||o.code==="ENOTEMPTY"){if(i===0)break;await new Promise(a=>setTimeout(a,s*100));continue}else throw o}while(s++{let l;try{[l]=await this.readJsonPromise(i)}catch(c){return Date.now()-s<500}try{return process.kill(l,0),!0}catch(c){return!1}};for(;o===null;)try{o=await this.openPromise(i,"wx")}catch(l){if(l.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(i);continue}catch(c){}if(Date.now()-s<60*1e3)await new Promise(c=>setTimeout(c,n));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${i})`)}else throw l}await this.writePromise(o,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(o),await this.unlinkPromise(i)}catch(l){}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} -`)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} -`)}async preserveTimePromise(e,r){let i=await this.lstatPromise(e),n=await r();typeof n!="undefined"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,r){let i=this.lstatSync(e),n=r();typeof n!="undefined"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},gl=class extends eA{constructor(){super(v)}};function rhe(t){let e=t.match(/\r?\n/g);if(e===null)return IO.EOL;let r=e.filter(n=>n===`\r -`).length,i=e.length-r;return r>i?`\r -`:` -`}function ul(t,e){return e.replace(/\r?\n/g,rhe(t))}var $c=ie(require("fs")),cb=ie(require("stream")),QO=ie(require("util")),ub=ie(require("zlib"));var yO=ie(require("fs"));var Wt=class extends gl{constructor(e=yO.default){super();this.realFs=e,typeof this.realFs.lutimes!="undefined"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Se.root}resolve(e){return v.resolve(e)}async openPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.open(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}openSync(e,r,i){return this.realFs.openSync(M.fromPortablePath(e),r,i)}async opendirPromise(e,r){return await new Promise((i,n)=>{typeof r!="undefined"?this.realFs.opendir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.opendir(M.fromPortablePath(e),this.makeCallback(i,n))}).then(i=>Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,r){let i=typeof r!="undefined"?this.realFs.opendirSync(M.fromPortablePath(e),r):this.realFs.opendirSync(M.fromPortablePath(e));return Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,r,i=0,n=0,s=-1){return await new Promise((o,a)=>{this.realFs.read(e,r,i,n,s,(l,c)=>{l?a(l):o(c)})})}readSync(e,r,i,n,s){return this.realFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return await new Promise((o,a)=>typeof r=="string"?this.realFs.write(e,r,i,this.makeCallback(o,a)):this.realFs.write(e,r,i,n,s,this.makeCallback(o,a)))}writeSync(e,r,i,n,s){return typeof r=="string"?this.realFs.writeSync(e,r,i):this.realFs.writeSync(e,r,i,n,s)}async closePromise(e){await new Promise((r,i)=>{this.realFs.close(e,this.makeCallback(r,i))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createReadStream(i,r)}createWriteStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createWriteStream(i,r)}async realpathPromise(e){return await new Promise((r,i)=>{this.realFs.realpath(M.fromPortablePath(e),{},this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}realpathSync(e){return M.toPortablePath(this.realFs.realpathSync(M.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(M.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(M.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((i,n)=>{this.realFs.access(M.fromPortablePath(e),r,this.makeCallback(i,n))})}existsSync(e){return this.realFs.existsSync(M.fromPortablePath(e))}async statPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.stat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.stat(M.fromPortablePath(e),this.makeCallback(i,n))})}statSync(e,r){return r?this.realFs.statSync(M.fromPortablePath(e),r):this.realFs.statSync(M.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.fstat(e,r,this.makeCallback(i,n)):this.realFs.fstat(e,this.makeCallback(i,n))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.lstat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.lstat(M.fromPortablePath(e),this.makeCallback(i,n))})}lstatSync(e,r){return r?this.realFs.lstatSync(M.fromPortablePath(e),r):this.realFs.lstatSync(M.fromPortablePath(e))}async chmodPromise(e,r){return await new Promise((i,n)=>{this.realFs.chmod(M.fromPortablePath(e),r,this.makeCallback(i,n))})}chmodSync(e,r){return this.realFs.chmodSync(M.fromPortablePath(e),r)}async chownPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.chown(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}chownSync(e,r,i){return this.realFs.chownSync(M.fromPortablePath(e),r,i)}async renamePromise(e,r){return await new Promise((i,n)=>{this.realFs.rename(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}renameSync(e,r){return this.realFs.renameSync(M.fromPortablePath(e),M.fromPortablePath(r))}async copyFilePromise(e,r,i=0){return await new Promise((n,s)=>{this.realFs.copyFile(M.fromPortablePath(e),M.fromPortablePath(r),i,this.makeCallback(n,s))})}copyFileSync(e,r,i=0){return this.realFs.copyFileSync(M.fromPortablePath(e),M.fromPortablePath(r),i)}async appendFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFile(o,r,i,this.makeCallback(n,s)):this.realFs.appendFile(o,r,this.makeCallback(n,s))})}appendFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFileSync(n,r,i):this.realFs.appendFileSync(n,r)}async writeFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFile(o,r,i,this.makeCallback(n,s)):this.realFs.writeFile(o,r,this.makeCallback(n,s))})}writeFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFileSync(n,r,i):this.realFs.writeFileSync(n,r)}async unlinkPromise(e){return await new Promise((r,i)=>{this.realFs.unlink(M.fromPortablePath(e),this.makeCallback(r,i))})}unlinkSync(e){return this.realFs.unlinkSync(M.fromPortablePath(e))}async utimesPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.utimes(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}utimesSync(e,r,i){this.realFs.utimesSync(M.fromPortablePath(e),r,i)}async lutimesPromiseImpl(e,r,i){let n=this.realFs.lutimes;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);return await new Promise((s,o)=>{n.call(this.realFs,M.fromPortablePath(e),r,i,this.makeCallback(s,o))})}lutimesSyncImpl(e,r,i){let n=this.realFs.lutimesSync;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);n.call(this.realFs,M.fromPortablePath(e),r,i)}async mkdirPromise(e,r){return await new Promise((i,n)=>{this.realFs.mkdir(M.fromPortablePath(e),r,this.makeCallback(i,n))})}mkdirSync(e,r){return this.realFs.mkdirSync(M.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.rmdir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.rmdir(M.fromPortablePath(e),this.makeCallback(i,n))})}rmdirSync(e,r){return this.realFs.rmdirSync(M.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((i,n)=>{this.realFs.link(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}linkSync(e,r){return this.realFs.linkSync(M.fromPortablePath(e),M.fromPortablePath(r))}async symlinkPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.symlink(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i,this.makeCallback(n,s))})}symlinkSync(e,r,i){return this.realFs.symlinkSync(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i)}async readFilePromise(e,r){return await new Promise((i,n)=>{let s=typeof e=="string"?M.fromPortablePath(e):e;this.realFs.readFile(s,r,this.makeCallback(i,n))})}readFileSync(e,r){let i=typeof e=="string"?M.fromPortablePath(e):e;return this.realFs.readFileSync(i,r)}async readdirPromise(e,r){return await new Promise((i,n)=>{(r==null?void 0:r.withFileTypes)?this.realFs.readdir(M.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(i,n)):this.realFs.readdir(M.fromPortablePath(e),this.makeCallback(s=>i(s),n))})}readdirSync(e,r){return(r==null?void 0:r.withFileTypes)?this.realFs.readdirSync(M.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(M.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,i)=>{this.realFs.readlink(M.fromPortablePath(e),this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}readlinkSync(e){return M.toPortablePath(this.realFs.readlinkSync(M.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((i,n)=>{this.realFs.truncate(M.fromPortablePath(e),r,this.makeCallback(i,n))})}truncateSync(e,r){return this.realFs.truncateSync(M.fromPortablePath(e),r)}watch(e,r,i){return this.realFs.watch(M.fromPortablePath(e),r,i)}watchFile(e,r,i){return this.realFs.watchFile(M.fromPortablePath(e),r,i)}unwatchFile(e,r){return this.realFs.unwatchFile(M.fromPortablePath(e),r)}makeCallback(e,r){return(i,n)=>{i?r(i):e(n)}}};var wO=ie(require("events"));var fl;(function(r){r.Change="change",r.Stop="stop"})(fl||(fl={}));var hl;(function(i){i.Ready="ready",i.Running="running",i.Stopped="stopped"})(hl||(hl={}));function BO(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var ih=class extends wO.EventEmitter{constructor(e,r,{bigint:i=!1}={}){super();this.status=hl.Ready;this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=e,this.path=r,this.bigint=i,this.lastStats=this.stat()}static create(e,r,i){let n=new ih(e,r,i);return n.start(),n}start(){BO(this.status,hl.Ready),this.status=hl.Running,this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(fl.Change,this.lastStats,this.lastStats)},3)}stop(){BO(this.status,hl.Running),this.status=hl.Stopped,this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(fl.Stop)}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch(e){let r=this.bigint?new Xf:new Za;return pE(r)}}makeInterval(e){let r=setInterval(()=>{let i=this.stat(),n=this.lastStats;nb(i,n)||(this.lastStats=i,this.emit(fl.Change,i,n))},e.interval);return e.persistent?r:r.unref()}registerChangeListener(e,r){this.addListener(fl.Change,e),this.changeListeners.set(e,this.makeInterval(r))}unregisterChangeListener(e){this.removeListener(fl.Change,e);let r=this.changeListeners.get(e);typeof r!="undefined"&&clearInterval(r),this.changeListeners.delete(e)}unregisterAllChangeListeners(){for(let e of this.changeListeners.keys())this.unregisterChangeListener(e)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let e of this.changeListeners.values())e.ref();return this}unref(){for(let e of this.changeListeners.values())e.unref();return this}};var BE=new WeakMap;function QE(t,e,r,i){let n,s,o,a;switch(typeof r){case"function":n=!1,s=!0,o=5007,a=r;break;default:({bigint:n=!1,persistent:s=!0,interval:o=5007}=r),a=i;break}let l=BE.get(t);typeof l=="undefined"&&BE.set(t,l=new Map);let c=l.get(e);return typeof c=="undefined"&&(c=ih.create(t,e,{bigint:n}),l.set(e,c)),c.registerChangeListener(a,{persistent:s,interval:o}),c}function nh(t,e,r){let i=BE.get(t);if(typeof i=="undefined")return;let n=i.get(e);typeof n!="undefined"&&(typeof r=="undefined"?n.unregisterAllChangeListeners():n.unregisterChangeListener(r),n.hasChangeListeners()||(n.stop(),i.delete(e)))}function sh(t){let e=BE.get(t);if(typeof e!="undefined")for(let r of e.keys())nh(t,r)}var pl="mixed";function ihe(t){if(typeof t=="string"&&String(+t)===t)return+t;if(Number.isFinite(t))return t<0?Date.now()/1e3:t;if((0,QO.isDate)(t))return t.getTime()/1e3;throw new Error("Invalid time")}function bO(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Jr=class extends gl{constructor(e,r){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;this.libzip=r.libzip;let i=r;if(this.level=typeof i.level!="undefined"?i.level:pl,e!=null||(e=bO()),typeof e=="string"){let{baseFs:o=new Wt}=i;this.baseFs=o,this.path=e}else this.path=null,this.baseFs=null;if(r.stats)this.stats=r.stats;else if(typeof e=="string")try{this.stats=this.baseFs.statSync(e)}catch(o){if(o.code==="ENOENT"&&i.create)this.stats=Zf();else throw o}else this.stats=Zf();let n=this.libzip.malloc(4);try{let o=0;if(typeof e=="string"&&i.create&&(o|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),r.readOnly&&(o|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof e=="string")this.zip=this.libzip.open(M.fromPortablePath(e),o,n);else{let a=this.allocateUnattachedSource(e);try{this.zip=this.libzip.openFromSource(a,o,n),this.lzSource=a}catch(l){throw this.libzip.source.free(a),l}}if(this.zip===0){let a=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(a,this.libzip.getValue(n,"i32")),this.makeLibzipError(a)}}finally{this.libzip.free(n)}this.listings.set(Se.root,new Set);let s=this.libzip.getNumEntries(this.zip,0);for(let o=0;oe)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(r,r+e);return Buffer.from(n)}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw IE("archive closed, close");sh(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let e=this.baseFs.existsSync(this.path)||this.stats.mode===_f?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,bO(),{mode:e});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof e!="undefined"&&this.baseFs.chmodSync(this.path,e)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(e){return v.resolve(Se.root,e)}async openPromise(e,r,i){return this.openSync(e,r,i)}openSync(e,r,i){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:e}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(e,r){return this.opendirSync(e,r)}opendirSync(e,r={}){let i=this.resolveFilename(`opendir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`opendir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`opendir '${e}'`);let s=[...n],o=this.openSync(i,"r");return wE(this,i,s,{onClose:()=>{this.closeSync(o)}})}async readPromise(e,r,i,n,s){return this.readSync(e,r,i,n,s)}readSync(e,r,i=0,n=r.byteLength,s=-1){let o=this.fds.get(e);if(typeof o=="undefined")throw Hi("read");let a;s===-1||s===null?a=o.cursor:a=s;let l=this.readFileSync(o.p);l.copy(r,i,a,a+n);let c=Math.max(0,Math.min(l.length-a,n));return(s===-1||s===null)&&(o.cursor+=c),c}async writePromise(e,r,i,n,s){return typeof r=="string"?this.writeSync(e,r,s):this.writeSync(e,r,i,n,s)}writeSync(e,r,i,n,s){throw typeof this.fds.get(e)=="undefined"?Hi("read"):new Error("Unimplemented")}async closePromise(e){return this.closeSync(e)}closeSync(e){if(typeof this.fds.get(e)=="undefined")throw Hi("read");this.fds.delete(e)}createReadStream(e,{encoding:r}={}){if(e===null)throw new Error("Unimplemented");let i=this.openSync(e,"r"),n=Object.assign(new cb.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(o,a)=>{clearImmediate(s),this.closeSync(i),a(o)}}),{close(){n.destroy()},bytesRead:0,path:e}),s=setImmediate(async()=>{try{let o=await this.readFilePromise(e,r);n.bytesRead=o.length,n.end(o)}catch(o){n.destroy(o)}});return n}createWriteStream(e,{encoding:r}={}){if(this.readOnly)throw ln(`open '${e}'`);if(e===null)throw new Error("Unimplemented");let i=[],n=this.openSync(e,"w"),s=Object.assign(new cb.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(o,a)=>{try{o?a(o):(this.writeFileSync(e,Buffer.concat(i),r),a(null))}catch(l){a(l)}finally{this.closeSync(n)}}}),{bytesWritten:0,path:e,close(){s.destroy()}});return s.on("data",o=>{let a=Buffer.from(o);s.bytesWritten+=a.length,i.push(a)}),s}async realpathPromise(e){return this.realpathSync(e)}realpathSync(e){let r=this.resolveFilename(`lstat '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`lstat '${e}'`);return r}async existsPromise(e){return this.existsSync(e)}existsSync(e){if(!this.ready)throw IE(`archive closed, existsSync '${e}'`);if(this.symlinkCount===0){let i=v.resolve(Se.root,e);return this.entries.has(i)||this.listings.has(i)}let r;try{r=this.resolveFilename(`stat '${e}'`,e)}catch(i){return!1}return this.entries.has(r)||this.listings.has(r)}async accessPromise(e,r){return this.accessSync(e,r)}accessSync(e,r=$c.constants.F_OK){let i=this.resolveFilename(`access '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`access '${e}'`);if(this.readOnly&&r&$c.constants.W_OK)throw ln(`access '${e}'`)}async statPromise(e,r){return this.statSync(e,r)}statSync(e,r){let i=this.resolveFilename(`stat '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`stat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`stat '${e}'`);return this.statImpl(`stat '${e}'`,i,r)}async fstatPromise(e,r){return this.fstatSync(e,r)}fstatSync(e,r){let i=this.fds.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let{p:n}=i,s=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(s)&&!this.listings.has(s))throw bs(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(s))throw eo(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,s,r)}async lstatPromise(e,r){return this.lstatSync(e,r)}lstatSync(e,r){let i=this.resolveFilename(`lstat '${e}'`,e,!1);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`lstat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`lstat '${e}'`);return this.statImpl(`lstat '${e}'`,i,r)}statImpl(e,r,i={}){let n=this.entries.get(r);if(typeof n!="undefined"){let s=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.stats.uid,l=this.stats.gid,c=this.libzip.struct.statSize(s)>>>0,u=512,g=Math.ceil(c/u),f=(this.libzip.struct.statMtime(s)>>>0)*1e3,h=f,p=f,d=f,m=new Date(h),I=new Date(p),B=new Date(d),b=new Date(f),R=this.listings.has(r)?zo:this.isSymbolicLink(n)?_o:Vo,H=R===zo?493:420,L=R|this.getUnixMode(n,H)&511,K=this.libzip.struct.statCrc(s),J=Object.assign(new Za,{uid:a,gid:l,size:c,blksize:u,blocks:g,atime:m,birthtime:I,ctime:B,mtime:b,atimeMs:h,birthtimeMs:p,ctimeMs:d,mtimeMs:f,mode:L,crc:K});return i.bigint===!0?dE(J):J}if(this.listings.has(r)){let s=this.stats.uid,o=this.stats.gid,a=0,l=512,c=0,u=this.stats.mtimeMs,g=this.stats.mtimeMs,f=this.stats.mtimeMs,h=this.stats.mtimeMs,p=new Date(u),d=new Date(g),m=new Date(f),I=new Date(h),B=zo|493,b=0,R=Object.assign(new Za,{uid:s,gid:o,size:a,blksize:l,blocks:c,atime:p,birthtime:d,ctime:m,mtime:I,atimeMs:u,birthtimeMs:g,ctimeMs:f,mtimeMs:h,mode:B,crc:b});return i.bigint===!0?dE(R):R}throw new Error("Unreachable")}getUnixMode(e,r){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?r:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(e){let r=this.listings.get(e);if(r)return r;let i=this.registerListing(v.dirname(e));return r=new Set,i.add(v.basename(e)),this.listings.set(e,r),r}registerEntry(e,r){this.registerListing(v.dirname(e)).add(v.basename(e)),this.entries.set(e,r)}unregisterListing(e){this.listings.delete(e);let r=this.listings.get(v.dirname(e));r==null||r.delete(v.basename(e))}unregisterEntry(e){this.unregisterListing(e);let r=this.entries.get(e);this.entries.delete(e),typeof r!="undefined"&&(this.fileSources.delete(r),this.isSymbolicLink(r)&&this.symlinkCount--)}deleteEntry(e,r){if(this.unregisterEntry(e),this.libzip.delete(this.zip,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(e,r,i=!0){if(!this.ready)throw IE(`archive closed, ${e}`);let n=v.resolve(Se.root,r);if(n==="/")return Se.root;let s=this.entries.get(n);if(i&&s!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(s)){let o=this.getFileSource(s).toString();return this.resolveFilename(e,v.resolve(v.dirname(n),o),!0)}else return n;for(;;){let o=this.resolveFilename(e,v.dirname(n),!0),a=this.listings.has(o),l=this.entries.has(o);if(!a&&!l)throw bs(e);if(!a)throw eo(e);if(n=v.resolve(o,v.basename(n)),!i||this.symlinkCount===0)break;let c=this.libzip.name.locate(this.zip,n.slice(1));if(c===-1)break;if(this.isSymbolicLink(c)){let u=this.getFileSource(c).toString();n=v.resolve(v.dirname(n),u)}else break}return n}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:i,byteLength:n}=this.allocateBuffer(e),s=this.libzip.source.fromUnattachedBuffer(i,n,0,!0,r);if(s===0)throw this.libzip.free(r),this.makeLibzipError(r);return s}allocateSource(e){let{buffer:r,byteLength:i}=this.allocateBuffer(e),n=this.libzip.source.fromBuffer(this.zip,r,i,0,!0);if(n===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(e,r){let i=Buffer.isBuffer(r)?r:Buffer.from(r),n=v.relative(Se.root,e),s=this.allocateSource(r);try{let o=this.libzip.file.add(this.zip,n,s,this.libzip.ZIP_FL_OVERWRITE);if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let a;if(this.level===0?a=this.libzip.ZIP_CM_STORE:a=this.libzip.ZIP_CM_DEFLATE,this.libzip.file.setCompression(this.zip,o,0,a,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(o,i),o}catch(o){throw this.libzip.source.free(s),o}}isSymbolicLink(e){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&kn)===_o}getFileSource(e,r={asyncDecompress:!1}){let i=this.fileSources.get(e);if(typeof i!="undefined")return i;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let o=this.libzip.struct.statCompSize(n),a=this.libzip.struct.statCompMethod(n),l=this.libzip.malloc(o);try{let c=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(c===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let u=this.libzip.fread(c,l,o,0);if(u===-1)throw this.makeLibzipError(this.libzip.file.getError(c));if(uo)throw new Error("Overread");let g=this.libzip.HEAPU8.subarray(l,l+o),f=Buffer.from(g);if(a===0)return this.fileSources.set(e,f),f;if(r.asyncDecompress)return new Promise((h,p)=>{ub.default.inflateRaw(f,(d,m)=>{d?p(d):(this.fileSources.set(e,m),h(m))})});{let h=ub.default.inflateRawSync(f);return this.fileSources.set(e,h),h}}finally{this.libzip.fclose(c)}}finally{this.libzip.free(l)}}async chmodPromise(e,r){return this.chmodSync(e,r)}chmodSync(e,r){if(this.readOnly)throw ln(`chmod '${e}'`);r&=493;let i=this.resolveFilename(`chmod '${e}'`,e,!1),n=this.entries.get(i);if(typeof n=="undefined")throw new Error(`Assertion failed: The entry should have been registered (${i})`);let o=this.getUnixMode(n,Vo|0)&~511|r;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,o<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async chownPromise(e,r,i){return this.chownSync(e,r,i)}chownSync(e,r,i){throw new Error("Unimplemented")}async renamePromise(e,r){return this.renameSync(e,r)}renameSync(e,r){throw new Error("Unimplemented")}async copyFilePromise(e,r,i){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=await this.getFileSource(n,{asyncDecompress:!0}),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}copyFileSync(e,r,i=0){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=this.getFileSource(n),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}prepareCopyFile(e,r,i=0){if(this.readOnly)throw ln(`copyfile '${e} -> '${r}'`);if((i&$c.constants.COPYFILE_FICLONE_FORCE)!=0)throw th("unsupported clone operation",`copyfile '${e}' -> ${r}'`);let n=this.resolveFilename(`copyfile '${e} -> ${r}'`,e),s=this.entries.get(n);if(typeof s=="undefined")throw $a(`copyfile '${e}' -> '${r}'`);let o=this.resolveFilename(`copyfile '${e}' -> ${r}'`,r),a=this.entries.get(o);if((i&($c.constants.COPYFILE_EXCL|$c.constants.COPYFILE_FICLONE_FORCE))!=0&&typeof a!="undefined")throw yE(`copyfile '${e}' -> '${r}'`);return{indexSource:s,resolvedDestP:o,indexDest:a}}async appendFilePromise(e,r,i){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFilePromise(e,r,i)}appendFileSync(e,r,i={}){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFileSync(e,r,i)}fdToPath(e,r){var n;let i=(n=this.fds.get(e))==null?void 0:n.p;if(typeof i=="undefined")throw Hi(r);return i}async writeFilePromise(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([await this.getFileSource(o,{asyncDecompress:!0}),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&await this.chmodPromise(a,s)}writeFileSync(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([this.getFileSource(o),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&this.chmodSync(a,s)}prepareWriteFile(e,r){if(typeof e=="number"&&(e=this.fdToPath(e,"read")),this.readOnly)throw ln(`open '${e}'`);let i=this.resolveFilename(`open '${e}'`,e);if(this.listings.has(i))throw rh(`open '${e}'`);let n=null,s=null;typeof r=="string"?n=r:typeof r=="object"&&({encoding:n=null,mode:s=null}=r);let o=this.entries.get(i);return{encoding:n,mode:s,resolvedP:i,index:o}}async unlinkPromise(e){return this.unlinkSync(e)}unlinkSync(e){if(this.readOnly)throw ln(`unlink '${e}'`);let r=this.resolveFilename(`unlink '${e}'`,e);if(this.listings.has(r))throw rh(`unlink '${e}'`);let i=this.entries.get(r);if(typeof i=="undefined")throw $a(`unlink '${e}'`);this.deleteEntry(r,i)}async utimesPromise(e,r,i){return this.utimesSync(e,r,i)}utimesSync(e,r,i){if(this.readOnly)throw ln(`utimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e);this.utimesImpl(n,i)}async lutimesPromise(e,r,i){return this.lutimesSync(e,r,i)}lutimesSync(e,r,i){if(this.readOnly)throw ln(`lutimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e,!1);this.utimesImpl(n,i)}utimesImpl(e,r){this.listings.has(e)&&(this.entries.has(e)||this.hydrateDirectory(e));let i=this.entries.get(e);if(i===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,i,0,ihe(r),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(e,r){return this.mkdirSync(e,r)}mkdirSync(e,{mode:r=493,recursive:i=!1}={}){if(i){this.mkdirpSync(e,{chmod:r});return}if(this.readOnly)throw ln(`mkdir '${e}'`);let n=this.resolveFilename(`mkdir '${e}'`,e);if(this.entries.has(n)||this.listings.has(n))throw yE(`mkdir '${e}'`);this.hydrateDirectory(n),this.chmodSync(n,r)}async rmdirPromise(e,r){return this.rmdirSync(e,r)}rmdirSync(e,{recursive:r=!1}={}){if(this.readOnly)throw ln(`rmdir '${e}'`);if(r){this.removeSync(e);return}let i=this.resolveFilename(`rmdir '${e}'`,e),n=this.listings.get(i);if(!n)throw eo(`rmdir '${e}'`);if(n.size>0)throw dO(`rmdir '${e}'`);let s=this.entries.get(i);if(typeof s=="undefined")throw $a(`rmdir '${e}'`);this.deleteEntry(e,s)}hydrateDirectory(e){let r=this.libzip.dir.add(this.zip,v.relative(Se.root,e));if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(e),this.registerEntry(e,r),r}async linkPromise(e,r){return this.linkSync(e,r)}linkSync(e,r){throw CO(`link '${e}' -> '${r}'`)}async symlinkPromise(e,r){return this.symlinkSync(e,r)}symlinkSync(e,r){if(this.readOnly)throw ln(`symlink '${e}' -> '${r}'`);let i=this.resolveFilename(`symlink '${e}' -> '${r}'`,r);if(this.listings.has(i))throw rh(`symlink '${e}' -> '${r}'`);if(this.entries.has(i))throw yE(`symlink '${e}' -> '${r}'`);let n=this.setFileSource(i,e);if(this.registerEntry(i,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(_o|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=await this.readFileBuffer(e,{asyncDecompress:!0});return r?i.toString(r):i}readFileSync(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=this.readFileBuffer(e);return r?i.toString(r):i}readFileBuffer(e,r={asyncDecompress:!1}){typeof e=="number"&&(e=this.fdToPath(e,"read"));let i=this.resolveFilename(`open '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`open '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`open '${e}'`);if(this.listings.has(i))throw rh("read");let n=this.entries.get(i);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,r)}async readdirPromise(e,r){return this.readdirSync(e,r)}readdirSync(e,r){let i=this.resolveFilename(`scandir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`scandir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`scandir '${e}'`);let s=[...n];return(r==null?void 0:r.withFileTypes)?s.map(o=>Object.assign(this.statImpl("lstat",v.join(e,o)),{name:o})):s}async readlinkPromise(e){let r=this.prepareReadlink(e);return(await this.getFileSource(r,{asyncDecompress:!0})).toString()}readlinkSync(e){let r=this.prepareReadlink(e);return this.getFileSource(r).toString()}prepareReadlink(e){let r=this.resolveFilename(`readlink '${e}'`,e,!1);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`readlink '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(r))throw eo(`open '${e}'`);if(this.listings.has(r))throw $a(`readlink '${e}'`);let i=this.entries.get(r);if(i===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(i))throw $a(`readlink '${e}'`);return i}async truncatePromise(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=await this.getFileSource(n,{asyncDecompress:!0}),o=Buffer.alloc(r,0);return s.copy(o),await this.writeFilePromise(e,o)}truncateSync(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=this.getFileSource(n),o=Buffer.alloc(r,0);return s.copy(o),this.writeFileSync(e,o)}watch(e,r,i){let n;switch(typeof r){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=r);break}if(!n)return{on:()=>{},close:()=>{}};let s=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(s)}}}watchFile(e,r,i){let n=v.resolve(Se.root,e);return QE(this,n,r,i)}unwatchFile(e,r){let i=v.resolve(Se.root,e);return nh(this,i,r)}};var fi=class extends eA{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,i){return this.baseFs.openPromise(this.mapToBase(e),r,i)}openSync(e,r,i){return this.baseFs.openSync(this.mapToBase(e),r,i)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,i,n,s){return await this.baseFs.readPromise(e,r,i,n,s)}readSync(e,r,i,n,s){return this.baseFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s)}writeSync(e,r,i,n,s){return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}async lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async chownPromise(e,r,i){return this.baseFs.chownPromise(this.mapToBase(e),r,i)}chownSync(e,r,i){return this.baseFs.chownSync(this.mapToBase(e),r,i)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,i=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),i)}copyFileSync(e,r,i=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),i)}async appendFilePromise(e,r,i){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,i)}appendFileSync(e,r,i){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,i)}async writeFilePromise(e,r,i){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,i)}writeFileSync(e,r,i){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,i)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,i){return this.baseFs.utimesPromise(this.mapToBase(e),r,i)}utimesSync(e,r,i){return this.baseFs.utimesSync(this.mapToBase(e),r,i)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkPromise(o,n,i)}symlinkSync(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkSync(o,n,i)}async readFilePromise(e,r){return r==="utf8"?this.baseFs.readFilePromise(this.fsMapToBase(e),r):this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return r==="utf8"?this.baseFs.readFileSync(this.fsMapToBase(e),r):this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}watch(e,r,i){return this.baseFs.watch(this.mapToBase(e),r,i)}watchFile(e,r,i){return this.baseFs.watchFile(this.mapToBase(e),r,i)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};var Xo=class extends fi{constructor(e,{baseFs:r,pathUtils:i}){super(i);this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}};var Ft=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?v.normalize(e):this.baseFs.resolve(v.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}};var vO=Se.root,Zo=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.resolve(Se.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Se.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(vO,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(vO,this.pathUtils.relative(this.target,e))}};var oh=class extends fi{constructor(e,r){super(r);this.instance=null;this.factory=e}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(e){this.instance=e}mapFromBase(e){return e}mapToBase(e){return e}};var ze=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),gb=class extends eA{constructor(){super(v)}getExtractHint(){throw ze()}getRealPath(){throw ze()}resolve(){throw ze()}async openPromise(){throw ze()}openSync(){throw ze()}async opendirPromise(){throw ze()}opendirSync(){throw ze()}async readPromise(){throw ze()}readSync(){throw ze()}async writePromise(){throw ze()}writeSync(){throw ze()}async closePromise(){throw ze()}closeSync(){throw ze()}createWriteStream(){throw ze()}createReadStream(){throw ze()}async realpathPromise(){throw ze()}realpathSync(){throw ze()}async readdirPromise(){throw ze()}readdirSync(){throw ze()}async existsPromise(e){throw ze()}existsSync(e){throw ze()}async accessPromise(){throw ze()}accessSync(){throw ze()}async statPromise(){throw ze()}statSync(){throw ze()}async fstatPromise(e){throw ze()}fstatSync(e){throw ze()}async lstatPromise(e){throw ze()}lstatSync(e){throw ze()}async chmodPromise(){throw ze()}chmodSync(){throw ze()}async chownPromise(){throw ze()}chownSync(){throw ze()}async mkdirPromise(){throw ze()}mkdirSync(){throw ze()}async rmdirPromise(){throw ze()}rmdirSync(){throw ze()}async linkPromise(){throw ze()}linkSync(){throw ze()}async symlinkPromise(){throw ze()}symlinkSync(){throw ze()}async renamePromise(){throw ze()}renameSync(){throw ze()}async copyFilePromise(){throw ze()}copyFileSync(){throw ze()}async appendFilePromise(){throw ze()}appendFileSync(){throw ze()}async writeFilePromise(){throw ze()}writeFileSync(){throw ze()}async unlinkPromise(){throw ze()}unlinkSync(){throw ze()}async utimesPromise(){throw ze()}utimesSync(){throw ze()}async readFilePromise(){throw ze()}readFileSync(){throw ze()}async readlinkPromise(){throw ze()}readlinkSync(){throw ze()}async truncatePromise(){throw ze()}truncateSync(){throw ze()}watch(){throw ze()}watchFile(){throw ze()}unwatchFile(){throw ze()}},bE=gb;bE.instance=new gb;var ah=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return M.fromPortablePath(e)}mapToBase(e){return M.toPortablePath(e)}};var nhe=/^[0-9]+$/,fb=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,she=/^([^/]+-)?[a-f0-9]+$/,Pr=class extends fi{static makeVirtualPath(e,r,i){if(v.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!v.basename(r).match(she))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let s=v.relative(v.dirname(e),i).split("/"),o=0;for(;o{let r=t.indexOf(e);if(r<=0)return null;let i=r;for(;r>=0&&(i=r+e.length,t[i]!==v.sep);){if(t[r-1]===v.sep)return null;r=t.indexOf(e,i)}return t.length>i&&t[i]!==v.sep?null:t.slice(0,i)},Jn=class extends gl{constructor({libzip:e,baseFs:r=new Wt,filter:i=null,maxOpenFiles:n=Infinity,readOnlyArchives:s=!1,useCache:o=!0,maxAge:a=5e3,fileExtensions:l=null}){super();this.fdMap=new Map;this.nextFd=3;this.isZip=new Set;this.notZip=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.libzipFactory=typeof e!="function"?()=>e:e,this.baseFs=r,this.zipInstances=o?new Map:null,this.filter=i,this.maxOpenFiles=n,this.readOnlyArchives=s,this.maxAge=a,this.fileExtensions=l}static async openPromise(e,r){let i=new Jn(r);try{return await e(i)}finally{i.saveAndClose()}}get libzip(){return typeof this.libzipInstance=="undefined"&&(this.libzipInstance=this.libzipFactory()),this.libzipInstance}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.saveAndClose(),this.zipInstances.delete(e)}discardAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.discardAndClose(),this.zipInstances.delete(e)}resolve(e){return this.baseFs.resolve(e)}remapFd(e,r){let i=this.nextFd++|$o;return this.fdMap.set(i,[e,r]),i}async openPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.openPromise(e,r,i),async(n,{subPath:s})=>this.remapFd(n,await n.openPromise(s,r,i)))}openSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.openSync(e,r,i),(n,{subPath:s})=>this.remapFd(n,n.openSync(s,r,i)))}async opendirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.opendirPromise(e,r),async(i,{subPath:n})=>await i.opendirPromise(n,r),{requireSubpath:!1})}opendirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.opendirSync(e,r),(i,{subPath:n})=>i.opendirSync(n,r),{requireSubpath:!1})}async readPromise(e,r,i,n,s){if((e&$o)==0)return await this.baseFs.readPromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("read");let[a,l]=o;return await a.readPromise(l,r,i,n,s)}readSync(e,r,i,n,s){if((e&$o)==0)return this.baseFs.readSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("readSync");let[a,l]=o;return a.readSync(l,r,i,n,s)}async writePromise(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("write");let[a,l]=o;return typeof r=="string"?await a.writePromise(l,r,i):await a.writePromise(l,r,i,n,s)}writeSync(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("writeSync");let[a,l]=o;return typeof r=="string"?a.writeSync(l,r,i):a.writeSync(l,r,i,n,s)}async closePromise(e){if((e&$o)==0)return await this.baseFs.closePromise(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("close");this.fdMap.delete(e);let[i,n]=r;return await i.closePromise(n)}closeSync(e){if((e&$o)==0)return this.baseFs.closeSync(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("closeSync");this.fdMap.delete(e);let[i,n]=r;return i.closeSync(n)}createReadStream(e,r){return e===null?this.baseFs.createReadStream(e,r):this.makeCallSync(e,()=>this.baseFs.createReadStream(e,r),(i,{subPath:n})=>i.createReadStream(n,r))}createWriteStream(e,r){return e===null?this.baseFs.createWriteStream(e,r):this.makeCallSync(e,()=>this.baseFs.createWriteStream(e,r),(i,{subPath:n})=>i.createWriteStream(n,r))}async realpathPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.realpathPromise(e),async(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=await this.baseFs.realpathPromise(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,await r.realpathPromise(n)))})}realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSync(e),(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=this.baseFs.realpathSync(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,r.realpathSync(n)))})}async existsPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.existsPromise(e),async(r,{subPath:i})=>await r.existsPromise(i))}existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e),(r,{subPath:i})=>r.existsSync(i))}async accessPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.accessPromise(e,r),async(i,{subPath:n})=>await i.accessPromise(n,r))}accessSync(e,r){return this.makeCallSync(e,()=>this.baseFs.accessSync(e,r),(i,{subPath:n})=>i.accessSync(n,r))}async statPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.statPromise(e,r),async(i,{subPath:n})=>await i.statPromise(n,r))}statSync(e,r){return this.makeCallSync(e,()=>this.baseFs.statSync(e,r),(i,{subPath:n})=>i.statSync(n,r))}async fstatPromise(e,r){if((e&$o)==0)return this.baseFs.fstatPromise(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstat");let[n,s]=i;return n.fstatPromise(s,r)}fstatSync(e,r){if((e&$o)==0)return this.baseFs.fstatSync(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let[n,s]=i;return n.fstatSync(s,r)}async lstatPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.lstatPromise(e,r),async(i,{subPath:n})=>await i.lstatPromise(n,r))}lstatSync(e,r){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e,r),(i,{subPath:n})=>i.lstatSync(n,r))}async chmodPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.chmodPromise(e,r),async(i,{subPath:n})=>await i.chmodPromise(n,r))}chmodSync(e,r){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,r),(i,{subPath:n})=>i.chmodSync(n,r))}async chownPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.chownPromise(e,r,i),async(n,{subPath:s})=>await n.chownPromise(s,r,i))}chownSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.chownSync(e,r,i),(n,{subPath:s})=>n.chownSync(s,r,i))}async renamePromise(e,r){return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.renamePromise(e,r),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(i,{subPath:n})=>await this.makeCallPromise(r,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await i.renamePromise(n,o)}))}renameSync(e,r){return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.renameSync(e,r),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(i,{subPath:n})=>this.makeCallSync(r,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return i.renameSync(n,o)}))}async copyFilePromise(e,r,i=0){let n=async(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&await this.existsPromise(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=await s.readFilePromise(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}await a.writeFilePromise(l,c)};return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.copyFilePromise(e,r,i),async(s,{subPath:o})=>await n(this.baseFs,e,s,o)),async(s,{subPath:o})=>await this.makeCallPromise(r,async()=>await n(s,o,this.baseFs,r),async(a,{subPath:l})=>s!==a?await n(s,o,a,l):await s.copyFilePromise(o,l,i)))}copyFileSync(e,r,i=0){let n=(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&this.existsSync(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=s.readFileSync(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}a.writeFileSync(l,c)};return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.copyFileSync(e,r,i),(s,{subPath:o})=>n(this.baseFs,e,s,o)),(s,{subPath:o})=>this.makeCallSync(r,()=>n(s,o,this.baseFs,r),(a,{subPath:l})=>s!==a?n(s,o,a,l):s.copyFileSync(o,l,i)))}async appendFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.appendFilePromise(e,r,i),async(n,{subPath:s})=>await n.appendFilePromise(s,r,i))}appendFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.appendFileSync(e,r,i),(n,{subPath:s})=>n.appendFileSync(s,r,i))}async writeFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.writeFilePromise(e,r,i),async(n,{subPath:s})=>await n.writeFilePromise(s,r,i))}writeFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.writeFileSync(e,r,i),(n,{subPath:s})=>n.writeFileSync(s,r,i))}async unlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.unlinkPromise(e),async(r,{subPath:i})=>await r.unlinkPromise(i))}unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e),(r,{subPath:i})=>r.unlinkSync(i))}async utimesPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.utimesPromise(e,r,i),async(n,{subPath:s})=>await n.utimesPromise(s,r,i))}utimesSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.utimesSync(e,r,i),(n,{subPath:s})=>n.utimesSync(s,r,i))}async mkdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.mkdirPromise(e,r),async(i,{subPath:n})=>await i.mkdirPromise(n,r))}mkdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,r),(i,{subPath:n})=>i.mkdirSync(n,r))}async rmdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.rmdirPromise(e,r),async(i,{subPath:n})=>await i.rmdirPromise(n,r))}rmdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e,r),(i,{subPath:n})=>i.rmdirSync(n,r))}async linkPromise(e,r){return await this.makeCallPromise(r,async()=>await this.baseFs.linkPromise(e,r),async(i,{subPath:n})=>await i.linkPromise(e,n))}linkSync(e,r){return this.makeCallSync(r,()=>this.baseFs.linkSync(e,r),(i,{subPath:n})=>i.linkSync(e,n))}async symlinkPromise(e,r,i){return await this.makeCallPromise(r,async()=>await this.baseFs.symlinkPromise(e,r,i),async(n,{subPath:s})=>await n.symlinkPromise(e,s))}symlinkSync(e,r,i){return this.makeCallSync(r,()=>this.baseFs.symlinkSync(e,r,i),(n,{subPath:s})=>n.symlinkSync(e,s))}async readFilePromise(e,r){return this.makeCallPromise(e,async()=>{switch(r){case"utf8":return await this.baseFs.readFilePromise(e,r);default:return await this.baseFs.readFilePromise(e,r)}},async(i,{subPath:n})=>await i.readFilePromise(n,r))}readFileSync(e,r){return this.makeCallSync(e,()=>{switch(r){case"utf8":return this.baseFs.readFileSync(e,r);default:return this.baseFs.readFileSync(e,r)}},(i,{subPath:n})=>i.readFileSync(n,r))}async readdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.readdirPromise(e,r),async(i,{subPath:n})=>await i.readdirPromise(n,r),{requireSubpath:!1})}readdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.readdirSync(e,r),(i,{subPath:n})=>i.readdirSync(n,r),{requireSubpath:!1})}async readlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.readlinkPromise(e),async(r,{subPath:i})=>await r.readlinkPromise(i))}readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSync(e),(r,{subPath:i})=>r.readlinkSync(i))}async truncatePromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.truncatePromise(e,r),async(i,{subPath:n})=>await i.truncatePromise(n,r))}truncateSync(e,r){return this.makeCallSync(e,()=>this.baseFs.truncateSync(e,r),(i,{subPath:n})=>i.truncateSync(n,r))}watch(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watch(e,r,i),(n,{subPath:s})=>n.watch(s,r,i))}watchFile(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watchFile(e,r,i),()=>QE(this,e,r,i))}unwatchFile(e,r){return this.makeCallSync(e,()=>this.baseFs.unwatchFile(e,r),()=>nh(this,e,r))}async makeCallPromise(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return await r();let s=this.resolve(e),o=this.findZip(s);return o?n&&o.subPath==="/"?await r():await this.getZipPromise(o.archivePath,async a=>await i(a,o)):await r()}makeCallSync(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return r();let s=this.resolve(e),o=this.findZip(s);return!o||n&&o.subPath==="/"?r():this.getZipSync(o.archivePath,a=>i(a,o))}findZip(e){if(this.filter&&!this.filter.test(e))return null;let r="";for(;;){let i=e.substr(r.length),n;if(!this.fileExtensions)n=SO(i,".zip");else for(let s of this.fileExtensions)if(n=SO(i,s),n)break;if(!n)return null;if(r=this.pathUtils.join(r,n),this.isZip.has(r)===!1){if(this.notZip.has(r))continue;try{if(!this.baseFs.lstatSync(r).isFile()){this.notZip.add(r);continue}}catch{return null}this.isZip.add(r)}return{archivePath:r,subPath:this.pathUtils.join(Se.root,e.substr(r.length))}}}limitOpenFiles(e){if(this.zipInstances===null)return;let r=Date.now(),i=r+this.maxAge,n=e===null?0:this.zipInstances.size-e;for(let[s,{zipFs:o,expiresAt:a,refCount:l}]of this.zipInstances.entries())if(!(l!==0||o.hasOpenFileHandles())){if(r>=a){o.saveAndClose(),this.zipInstances.delete(s),n-=1;continue}else if(e===null||n<=0){i=a;break}o.saveAndClose(),this.zipInstances.delete(s),n-=1}this.limitOpenFilesTimeout===null&&(e===null&&this.zipInstances.size>0||e!==null)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},i-r).unref())}async getZipPromise(e,r){let i=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(e)});if(this.zipInstances){let n=this.zipInstances.get(e);if(!n){let s=await i();n=this.zipInstances.get(e),n||(n={zipFs:new Jr(e,s),expiresAt:0,refCount:0})}this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await r(n.zipFs)}finally{n.refCount-=1}}else{let n=new Jr(e,await i());try{return await r(n)}finally{n.saveAndClose()}}}getZipSync(e,r){let i=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(e)});if(this.zipInstances){let n=this.zipInstances.get(e);return n||(n={zipFs:new Jr(e,i()),expiresAt:0,refCount:0}),this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,r(n.zipFs)}else{let n=new Jr(e,i());try{return r(n)}finally{n.saveAndClose()}}}};var lh=ie(require("util"));var vE=ie(require("url"));var hb=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return e}mapToBase(e){return e instanceof vE.URL?(0,vE.fileURLToPath)(e):e}};var ohe=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","chownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),xO=new Set(["accessPromise","appendFilePromise","chmodPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]),ahe=new Set(["appendFilePromise","chmodPromise","chownPromise","closePromise","readPromise","readFilePromise","statPromise","truncatePromise","utimesPromise","writePromise","writeFilePromise"]);function pb(t,e){e=new hb(e);let r=(i,n,s)=>{let o=i[n];i[n]=s,typeof(o==null?void 0:o[lh.promisify.custom])!="undefined"&&(s[lh.promisify.custom]=o[lh.promisify.custom])};{r(t,"exists",(i,...n)=>{let o=typeof n[n.length-1]=="function"?n.pop():()=>{};process.nextTick(()=>{e.existsPromise(i).then(a=>{o(a)},()=>{o(!1)})})}),r(t,"read",(i,n,...s)=>{let a=typeof s[s.length-1]=="function"?s.pop():()=>{};process.nextTick(()=>{e.readPromise(i,n,...s).then(l=>{a(null,l,n)},l=>{a(l,0,n)})})});for(let i of xO){let n=i.replace(/Promise$/,"");if(typeof t[n]=="undefined")continue;let s=e[i];if(typeof s=="undefined")continue;r(t,n,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{s.apply(e,a).then(u=>{c(null,u)},u=>{c(u)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",i=>{try{return e.existsSync(i)}catch(n){return!1}});for(let i of ohe){let n=i;if(typeof t[n]=="undefined")continue;let s=e[i];typeof s!="undefined"&&r(t,n,s.bind(e))}t.realpathSync.native=t.realpathSync}{let i=process.emitWarning;process.emitWarning=()=>{};let n;try{n=t.promises}finally{process.emitWarning=i}if(typeof n!="undefined"){for(let o of xO){let a=o.replace(/Promise$/,"");if(typeof n[a]=="undefined")continue;let l=e[o];typeof l!="undefined"&&o!=="open"&&r(n,a,l.bind(e))}class s{constructor(a){this.fd=a}}for(let o of ahe){let a=o.replace(/Promise$/,""),l=e[o];typeof l!="undefined"&&r(s.prototype,a,function(...c){return l.call(e,this.fd,...c)})}r(n,"open",async(...o)=>{let a=await e.openPromise(...o);return new s(a)})}}t.read[lh.promisify.custom]=async(i,n,...s)=>({bytesRead:await e.readPromise(i,n,...s),buffer:n})}function SE(t,e){let r=Object.create(t);return pb(r,e),r}var kO=ie(require("os"));function PO(t){let e=M.toPortablePath(kO.default.tmpdir()),r=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return v.join(e,`${t}${r}`)}var vs=new Set,DO=!1;function RO(){DO||(DO=!0,process.once("exit",()=>{T.rmtempSync()}))}var T=Object.assign(new Wt,{detachTemp(t){vs.delete(t)},mktempSync(t){for(RO();;){let e=PO("xfs-");try{this.mkdirSync(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=this.realpathSync(e);if(vs.add(r),typeof t!="undefined")try{return t(r)}finally{if(vs.has(r)){vs.delete(r);try{this.removeSync(r)}catch{}}}else return r}},async mktempPromise(t){for(RO();;){let e=PO("xfs-");try{await this.mkdirPromise(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=await this.realpathPromise(e);if(vs.add(r),typeof t!="undefined")try{return await t(r)}finally{if(vs.has(r)){vs.delete(r);try{await this.removePromise(r)}catch{}}}else return r}},async rmtempPromise(){await Promise.all(Array.from(vs.values()).map(async t=>{try{await T.removePromise(t,{maxRetries:0}),vs.delete(t)}catch{}}))},rmtempSync(){for(let t of vs)try{T.removeSync(t),vs.delete(t)}catch{}}});var vb=ie(bb()),Pn;(function(i){i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always"})(Pn||(Pn={}));function dl(t){return t!==null&&typeof t.fd=="number"}var Cl=new Set;function Sb(){}function xb(){for(let t of Cl)t.kill()}async function to(t,e,{cwd:r,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":dl(s)&&(c[0]=s),dl(o)&&(c[1]=o),dl(a)&&(c[2]=a);let u=(0,vb.default)(t,e,{cwd:M.fromPortablePath(r),env:_(P({},i),{PWD:M.fromPortablePath(r)}),stdio:c});Cl.add(u),Cl.size===1&&(process.on("SIGINT",Sb),process.on("SIGTERM",xb)),!dl(s)&&s!==null&&s.pipe(u.stdin),dl(o)||u.stdout.pipe(o,{end:!1}),dl(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))dl(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,d)=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1&&p>0)&&g(),p===0||!n?f({code:kb(p,d)}):h(p!==null?new Error(`Child "${t}" exited with exit code ${p}`):new Error(`Child "${t}" exited with signal ${d}`))})})}async function Nhe(t,e,{cwd:r,env:i=process.env,encoding:n="utf8",strict:s=!1}){let o=["ignore","pipe","pipe"],a=[],l=[],c=M.fromPortablePath(r);typeof i.PWD!="undefined"&&(i=_(P({},i),{PWD:c}));let u=(0,vb.default)(t,e,{cwd:c,env:i,stdio:o});return u.stdout.on("data",g=>{a.push(g)}),u.stderr.on("data",g=>{l.push(g)}),await new Promise((g,f)=>{u.on("error",()=>{f()}),u.on("close",(h,p)=>{let d=n==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(n),m=n==="buffer"?Buffer.concat(l):Buffer.concat(l).toString(n);h===0||!s?g({code:kb(h,p),stdout:d,stderr:m}):f(Object.assign(new Error(`Child "${t}" exited with exit code ${h} - -${m}`),{code:kb(h,p),stdout:d,stderr:m}))})})}var Lhe=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function kb(t,e){let r=Lhe.get(e);return typeof r!="undefined"?128+r:t!=null?t:1}var Pb={};it(Pb,{getDefaultGlobalFolder:()=>Rb,getHomeFolder:()=>uh,isFolderInside:()=>Fb});var Db=ie(require("os"));function Rb(){if(process.platform==="win32"){let t=M.toPortablePath(process.env.LOCALAPPDATA||M.join((0,Db.homedir)(),"AppData","Local"));return v.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=M.toPortablePath(process.env.XDG_DATA_HOME);return v.resolve(t,"yarn/berry")}return v.resolve(uh(),".yarn/berry")}function uh(){return M.toPortablePath((0,Db.homedir)()||"/usr/local/share")}function Fb(t,e){let r=v.relative(e,t);return r&&!r.startsWith("..")&&!v.isAbsolute(r)}var ue={};it(ue,{LogLevel:()=>Ts,Style:()=>Gl,Type:()=>Le,addLogFilterSupport:()=>Cp,applyColor:()=>On,applyHyperlink:()=>Ku,applyStyle:()=>Py,json:()=>Uu,mark:()=>xx,pretty:()=>Ve,prettyField:()=>Yl,prettyList:()=>Kx,supportsColor:()=>xy,supportsHyperlinks:()=>Mx,tuple:()=>jl});var pp=ie(jb()),dp=ie(ml()),o3=ie(Nn()),a3=ie(gU());var z;(function(te){te[te.UNNAMED=0]="UNNAMED",te[te.EXCEPTION=1]="EXCEPTION",te[te.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",te[te.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",te[te.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",te[te.BUILD_DISABLED=5]="BUILD_DISABLED",te[te.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",te[te.MUST_BUILD=7]="MUST_BUILD",te[te.MUST_REBUILD=8]="MUST_REBUILD",te[te.BUILD_FAILED=9]="BUILD_FAILED",te[te.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",te[te.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",te[te.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",te[te.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",te[te.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",te[te.REMOTE_INVALID=15]="REMOTE_INVALID",te[te.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",te[te.RESOLUTION_PACK=17]="RESOLUTION_PACK",te[te.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",te[te.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",te[te.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",te[te.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",te[te.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",te[te.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",te[te.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",te[te.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",te[te.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",te[te.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",te[te.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",te[te.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",te[te.FETCH_FAILED=30]="FETCH_FAILED",te[te.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",te[te.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",te[te.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",te[te.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",te[te.NETWORK_ERROR=35]="NETWORK_ERROR",te[te.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",te[te.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",te[te.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",te[te.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",te[te.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",te[te.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",te[te.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",te[te.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",te[te.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",te[te.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",te[te.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",te[te.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",te[te.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",te[te.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",te[te.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",te[te.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",te[te.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",te[te.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",te[te.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",te[te.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",te[te.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",te[te.INVALID_MANIFEST=57]="INVALID_MANIFEST",te[te.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",te[te.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",te[te.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",te[te.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",te[te.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",te[te.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",te[te.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",te[te.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",te[te.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",te[te.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",te[te.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",te[te.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",te[te.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",te[te.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",te[te.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",te[te.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",te[te.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",te[te.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",te[te.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",te[te.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE"})(z||(z={}));function KE(t){return`YN${t.toString(10).padStart(4,"0")}`}var de={};it(de,{BufferStream:()=>OH,CachingStrategy:()=>Dl,DefaultStream:()=>KH,assertNever:()=>Lv,bufferStream:()=>Cu,buildIgnorePattern:()=>DEe,convertMapsToIndexableObjects:()=>aI,dynamicRequire:()=>mu,escapeRegExp:()=>SEe,getArrayWithDefault:()=>hu,getFactoryWithDefault:()=>na,getMapWithDefault:()=>pu,getSetWithDefault:()=>Pl,isIndexableObject:()=>Tv,isPathLike:()=>REe,isTaggedYarnVersion:()=>vEe,mapAndFilter:()=>kl,mapAndFind:()=>MH,overrideType:()=>Nv,parseBoolean:()=>Hh,parseOptionalBoolean:()=>jH,prettifyAsyncErrors:()=>du,prettifySyncErrors:()=>Mv,releaseAfterUseAsync:()=>kEe,replaceEnvVariables:()=>Ov,sortMap:()=>gn,tryParseOptionalBoolean:()=>Kv,validateEnum:()=>xEe});var vh={};it(vh,{Builtins:()=>Iv,Cli:()=>oo,Command:()=>ye,Option:()=>Y,UsageError:()=>me});var yl=0,Eh=1,Gi=2,sv="",hi="\0",Au=-1,ov=/^(-h|--help)(?:=([0-9]+))?$/,UE=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,fU=/^-[a-zA-Z]{2,}$/,av=/^([^=]+)=([\s\S]*)$/,Av=process.env.DEBUG_CLI==="1";var me=class extends Error{constructor(e){super(e);this.clipanion={type:"usage"},this.name="UsageError"}},Ih=class extends Error{constructor(e,r){super();if(this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===r[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} - -${this.candidates.map(({usage:n})=>`$ ${n}`).join(` -`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: - -$ ${i} -${lv(e)}`}else this.message=`Command not found; did you mean one of: - -${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},cv=class extends Error{constructor(e,r){super();this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: - -${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},lv=t=>`While running ${t.filter(e=>e!==hi).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`;var yh=Symbol("clipanion/isOption");function ji(t){return _(P({},t),{[yh]:!0})}function so(t,e){return typeof t=="undefined"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function HE(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function wh(t,e){return e.length===1?new me(`${t}: ${HE(e[0],!0)}`):new me(`${t}: -${e.map(r=>` -- ${HE(r)}`).join("")}`)}function Bh(t,e,r){if(typeof r=="undefined")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!r(e,{errors:i,coercions:n,coercion:s}))throw wh(`Invalid value for ${t}`,i);for(let[,a]of n)a();return e}var ye=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(typeof r!="undefined"){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(Ss(),lu)),a=o(n(s()),r),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw wh("Invalid option schema",l);for(let[,g]of c)g()}let i=await this.execute();return typeof i!="undefined"?i:0}};ye.isOption=yh;ye.Default=[];function un(t){Av&&console.log(t)}var BU={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Au};function QU(){return{nodes:[qi(),qi(),qi()]}}function nCe(t){let e=QU(),r=[],i=e.nodes.length;for(let n of t){r.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=t.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)r(a);for(let[,{to:o}]of n.dynamics)r(o);for(let{to:o}of n.shortcuts)r(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=t.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};r(yl)}function oCe(t,{prefix:e=""}={}){if(Av){un(`${e}Nodes are:`);for(let r=0;rl!==Gi).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===Gi))throw new Ih(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=aCe(a)}if(i.length>0){un(" Results:");for(let s of i)un(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else un(" No results");return i}function ACe(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,hi)){for(let{to:r}of t.statics[hi])if(r===Eh)return!0}return!1}function cCe(t,e,r){let i=r&&e.length>0?[""]:[],n=vU(t,e,r),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let d=t.nodes[p],m=Object.keys(d.statics);for(let I of Object.keys(d.statics)){let B=m[0];for(let{to:b,reducer:R}of d.statics[B])R==="pushPath"&&(u||l.push(B),g.push(b))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=t.nodes[l],g=ACe(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==hi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===Gi)continue;let p=lCe(f,c);if(p!==null)for(let d of p)a([...i,d],l)}}return[...s].sort()}function gCe(t,e){let r=vU(t,[...e,hi]);return uCe(e,r.map(({state:i})=>i))}function aCe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function uCe(t,e){let r=e.filter(g=>g.selectedIndex!==null);if(r.length===0)throw new Error;let i=r.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new Ih(t,r.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=fCe(c);if(u.length>1)throw new cv(t,u.map(g=>g.candidateUsage));return u[0]}function fCe(t){let e=[],r=[];for(let i of t)i.selectedIndex===Au?r.push(i):e.push(i);return r.length>0&&e.push(_(P({},BU),{path:SU(...r.map(i=>i.path)),options:r.reduce((i,n)=>i.concat(n.options),[])})),e}function SU(t,e,...r){return e===void 0?Array.from(t):SU(t.filter((i,n)=>i===e[n]),...r)}function qi(){return{dynamics:[],shortcuts:[],statics:{}}}function bU(t){return t===Eh||t===Gi}function Cv(t,e=0){return{to:bU(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function iCe(t,e=0){let r=qi();for(let[i,n]of t.dynamics)r.dynamics.push([i,Cv(n,e)]);for(let i of t.shortcuts)r.shortcuts.push(Cv(i,e));for(let[i,n]of Object.entries(t.statics))r.statics[i]=n.map(s=>Cv(s,e));return r}function pi(t,e,r,i,n){t.nodes[e].dynamics.push([r,{to:i,reducer:n}])}function cu(t,e,r,i){t.nodes[e].shortcuts.push({to:r,reducer:i})}function ta(t,e,r,i,n){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:i,reducer:n})}function jE(t,e,r,i){if(Array.isArray(e)){let[n,...s]=e;return t[n](r,i,...s)}else return t[e](r,i)}function lCe(t,e){let r=Array.isArray(t)?YE[t[0]]:YE[t];if(typeof r.suggest=="undefined")return null;let i=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...i)}var YE={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,i)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&fU.test(e)&&[...e.slice(1)].every(i=>r.includes(`-${i}`)),isBoundOption:(t,e,r,i)=>{let n=e.match(av);return!t.ignoreOptions&&!!n&&UE.test(n[1])&&r.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&ov.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&UE.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!UE.test(e)};YE.isOption.suggest=(t,e,r=!0)=>r?null:[e];var dv={setCandidateState:(t,e,r)=>P(P({},t),r),setSelectedIndex:(t,e,r)=>_(P({},t),{selectedIndex:r}),pushBatch:(t,e)=>_(P({},t),{options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,i]=e.match(av);return _(P({},t),{options:t.options.concat({name:r,value:i})})},pushPath:(t,e)=>_(P({},t),{path:t.path.concat(e)}),pushPositional:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:Ln})}),pushTrue:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>_(P({},t),{options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let i=_(P({},t),{options:[...t.options]}),n=t.options[t.options.length-1];return n.value=((r=n.value)!==null&&r!==void 0?r:[]).concat([e]),i},setStringValue:(t,e)=>{let r=_(P({},t),{options:[...t.options]}),i=t.options[t.options.length-1];return i.value=e,r},inhibateOptions:t=>_(P({},t),{ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,i]=e.match(ov);return typeof i!="undefined"?_(P({},t),{options:[{name:"-c",value:String(r)},{name:"-i",value:i}]}):_(P({},t),{options:[{name:"-c",value:String(r)}]})},setError:(t,e,r)=>e===hi?_(P({},t),{errorMessage:`${r}.`}):_(P({},t),{errorMessage:`${r} ("${e}").`}),setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return _(P({},t),{errorMessage:`Not enough arguments to option ${r.name}.`})}},Ln=Symbol(),xU=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:i,proxy:n})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===Ln)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Ln?this.arity.extra.push(e):this.arity.extra!==Ln&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Ln)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Ln?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context=="undefined")throw new Error("Assertion failed: No context attached");let e=QU(),r=yl,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);r=xs(e,qi()),ta(e,yl,sv,r,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=r;if(a.length>0){let f=xs(e,qi());cu(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=xs(e,qi());pi(e,l,"isHelp",f,["useHelp",this.cliIndex]),ta(e,f,hi,Eh,["setSelectedIndex",Au]),this.registerOptions(e,l)}this.arity.leading.length>0&&ta(e,l,hi,Gi,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&ta(e,h,hi,Gi,["setError","Not enough positional arguments"]),pi(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Ln||this.arity.extra.length>0){let f=xs(e,qi());if(cu(e,c,f),this.arity.extra===Ln){let h=xs(e,qi());this.arity.proxy||this.registerOptions(e,h),pi(e,c,s,h,"pushExtraNoLimits"),pi(e,h,s,h,"pushExtraNoLimits"),cu(e,h,f)}else for(let h=0;h0&&ta(e,u,hi,Gi,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)pi(e,r,["isOption",s,i.hidden||s!==n],r,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&pi(e,r,["isNegatedOption",s],r,["pushFalse",s]);else{let s=xs(e,qi());for(let o of i.names)pi(e,r,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&egCe(i,n),suggest:(n,s)=>cCe(i,n,s)}}};var kU=80,mv=Array(kU).fill("\u2501");for(let t=0;t<=24;++t)mv[mv.length-t]=`[38;5;${232+t}m\u2501`;var Ev={header:t=>`\u2501\u2501\u2501 ${t}${t.length`${t}`,error:t=>`${t}`,code:t=>`${t}`},PU={header:t=>t,bold:t=>t,error:t=>t,code:t=>t};function hCe(t){let e=t.split(` -`),r=e.filter(n=>n.match(/\S/)),i=r.length>0?r.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` -`)}function Vn(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` -`),t=hCe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 - -`),t=t.replace(/\n(\n)?\n*/g,"$1"),r&&(t=t.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` -`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` -`)}).join(` - -`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),t?`${t} -`:""}var bh=class extends ye{constructor(e){super();this.contexts=e,this.commands=[]}static from(e,r){let i=new bh(r);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index!="undefined"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: -`),this.context.stdout.write(` -`);let r=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` -`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}};var DU=Symbol("clipanion/errorCommand");function pCe(){return process.env.FORCE_COLOR==="0"?!1:!!(process.env.FORCE_COLOR==="1"||typeof process.stdout!="undefined"&&process.stdout.isTTY)}var oo=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:i,enableColors:n=pCe()}={}){this.registrations=new Map,this.builder=new Qh({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=i,this.enableColors=n}static from(e,r={}){let i=new oo(r);for(let n of e)i.register(n);return i}register(e){var r;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[ye.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(r=e.paths)!==null&&r!==void 0?r:n.paths;if(typeof a!="undefined")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:r,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case Au:return bh.from(n,r);default:{let{commandClass:s}=r[n.selectedIndex],o=this.registrations.get(s);if(typeof o=="undefined")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[DU]=a,l}}break}}async run(e,r){let i;if(!Array.isArray(e))i=e;else try{i=this.process(e)}catch(s){return r.stdout.write(this.error(s)),1}if(i.help)return r.stdout.write(this.usage(i,{detailed:!0})),0;i.context=r,i.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(s,o)=>this.error(s,o),process:s=>this.process(s),run:(s,o)=>this.run(s,P(P({},r),o)),usage:(s,o)=>this.usage(s,o)};let n;try{n=await i.validateAndExecute().catch(s=>i.catch(s).then(()=>0))}catch(s){return r.stdout.write(this.error(s,{command:i})),1}return n}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:i}=this.builder.compile();return i(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage=="undefined")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category!="undefined"?Vn(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description!="undefined"?Vn(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details!="undefined"?Vn(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples!="undefined"?i.usage.examples.map(([f,h])=>[Vn(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return r}usage(e=null,{colored:r,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage!="undefined";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof ye?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Vn(l,{format:this.format(r),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` -`),(c!==""||u.length>0)&&(a+=`${this.format(r).header("Usage")} -`,a+=` -`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(r).bold(n)}${g} -`,f.length>0){a+=` -`,a+=`${Ev.header("Options")} -`;let h=f.reduce((p,d)=>Math.max(p,d.definition.length),0);a+=` -`;for(let{definition:p,description:d}of f)a+=` ${this.format(r).bold(p.padEnd(h))} ${Vn(d,{format:this.format(r),paragraphs:!1})}`}if(c!==""&&(a+=` -`,a+=`${this.format(r).header("Details")} -`,a+=` -`,a+=Vn(c,{format:this.format(r),paragraphs:!0})),u.length>0){a+=` -`,a+=`${this.format(r).header("Examples")} -`;for(let[h,p]of u)a+=` -`,a+=Vn(h,{format:this.format(r),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(r).bold(n)}`).replace(/\$0/g,this.binaryName)} -`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(r).bold(n)}${l} -`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage=="undefined")continue;let p=typeof f.usage.category!="undefined"?Vn(f.usage.category,{format:this.format(r),paragraphs:!1}):null,d=l.get(p);typeof d=="undefined"&&l.set(p,d=[]);let{usage:m}=this.getUsageByIndex(h);d.push({commandClass:f,usage:m})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel!="undefined",g=typeof this.binaryVersion!="undefined";u||g?(u&&g?a+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} - -`:u?a+=`${this.format(r).header(`${this.binaryLabel}`)} -`:a+=`${this.format(r).header(`${this.binaryVersion}`)} -`,a+=` ${this.format(r).bold(n)}${this.binaryName} -`):a+=`${this.format(r).bold(n)}${this.binaryName} -`;for(let f of c){let h=l.get(f).slice().sort((d,m)=>d.usage.localeCompare(m.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` -`,a+=`${this.format(r).header(`${p}`)} -`;for(let{commandClass:d,usage:m}of h){let I=d.usage.description||"undocumented";a+=` -`,a+=` ${this.format(r).bold(m)} -`,a+=` ${Vn(I,{format:this.format(r),paragraphs:!1})}`}}a+=` -`,a+=Vn("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return a}error(e,r){var i,{colored:n,command:s=(i=e[DU])!==null&&i!==void 0?i:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} -`;let l=e.clipanion;return typeof l!="undefined"?l.type==="usage"&&(o+=` -`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} -`),o}getUsageByRegistration(e,r){let i=this.registrations.get(e);if(typeof i=="undefined")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}format(e=this.enableColors){return e?Ev:PU}};oo.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr};var Iv={};it(Iv,{DefinitionsCommand:()=>qE,HelpCommand:()=>JE,VersionCommand:()=>WE});var qE=class extends ye{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};qE.paths=[["--clipanion=definitions"]];var JE=class extends ye{async execute(){this.context.stdout.write(this.cli.usage())}};JE.paths=[["-h"],["--help"]];var WE=class extends ye{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} -`)}};WE.paths=[["-v"],["--version"]];var Y={};it(Y,{Array:()=>RU,Boolean:()=>FU,Counter:()=>NU,Proxy:()=>LU,Rest:()=>TU,String:()=>MU,applyValidator:()=>Bh,cleanValidationError:()=>HE,formatError:()=>wh,isOptionSymbol:()=>yh,makeCommandOption:()=>ji,rerouteArguments:()=>so});function RU(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i!="undefined"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function FU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function NU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function LU(t={}){return ji({definition(e,r){var i;e.addProxy({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){return i.positionals.map(({value:n})=>n)}})}function TU(t={}){return ji({definition(e,r){var i;e.addRest({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){let n=o=>{let a=i.positionals[o];return a.extra===Ln||a.extra===!1&&oo)}})}function dCe(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Bh(g!=null?g:c,f,n.validator):f}})}function CCe(t={}){let{required:e=!0}=t;return ji({definition(r,i){var n;r.addPositional({name:(n=t.name)!==null&&n!==void 0?n:i,required:t.required})},transformer(r,i,n){var s;for(let o=0;oJSON.stringify(i)).join(", ")})`);return e}function kl(t,e){let r=[];for(let i of t){let n=e(i);n!==LH&&r.push(n)}return r}var LH=Symbol();kl.skip=LH;function MH(t,e){for(let r of t){let i=e(r);if(i!==TH)return i}}var TH=Symbol();MH.skip=TH;function Tv(t){return typeof t=="object"&&t!==null}function aI(t){if(t instanceof Map&&(t=Object.fromEntries(t)),Tv(t))for(let e of Object.keys(t)){let r=t[e];Tv(r)&&(t[e]=aI(r))}return t}function na(t,e,r){let i=t.get(e);return typeof i=="undefined"&&t.set(e,i=r()),i}function hu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=[]),r}function Pl(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Set),r}function pu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Map),r}async function kEe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function du(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function Mv(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Cu(t){return await new Promise((e,r)=>{let i=[];t.on("error",n=>{r(n)}),t.on("data",n=>{i.push(n)}),t.on("end",()=>{e(Buffer.concat(i))})})}var OH=class extends Fv.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(e),i(null,null)}_flush(e){e(null,Buffer.concat(this.chunks))}},KH=class extends Fv.Transform{constructor(e=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=e}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,i(null,e)}_flush(e){this.active&&this.ifEmpty.length>0?e(null,this.ifEmpty):e(null)}},Uh=eval("require");function UH(t){return Uh(M.fromPortablePath(t))}function HH(path){let physicalPath=M.fromPortablePath(path),currentCacheEntry=Uh.cache[physicalPath];delete Uh.cache[physicalPath];let result;try{result=UH(physicalPath);let freshCacheEntry=Uh.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{Uh.cache[physicalPath]=currentCacheEntry}return result}var GH=new Map;function PEe(t){let e=GH.get(t),r=T.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let i=HH(t);return GH.set(t,{mtime:r.mtimeMs,instance:i}),i}var Dl;(function(i){i[i.NoCache=0]="NoCache",i[i.FsTime=1]="FsTime",i[i.Node=2]="Node"})(Dl||(Dl={}));function mu(t,{cachingStrategy:e=2}={}){switch(e){case 0:return HH(t);case 1:return PEe(t);case 2:return UH(t);default:throw new Error("Unsupported caching strategy")}}function gn(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(r.map(o=>s(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function DEe(t){return t.length===0?null:t.map(e=>`(${FH.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Ov(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...i)=>{let{variableName:n,colon:s,fallback:o}=i[i.length-1],a=Object.prototype.hasOwnProperty.call(e,n),l=e[n];if(l||a&&!s)return l;if(o!=null)return o;throw new me(`Environment variable not found (${n})`)})}function Hh(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function jH(t){return typeof t=="undefined"?t:Hh(t)}function Kv(t){try{return jH(t)}catch{return null}}function REe(t){return!!(M.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}var S={};it(S,{areDescriptorsEqual:()=>i3,areIdentsEqual:()=>cp,areLocatorsEqual:()=>up,areVirtualPackagesEquivalent:()=>XQe,bindDescriptor:()=>VQe,bindLocator:()=>_Qe,convertDescriptorToLocator:()=>By,convertLocatorToDescriptor:()=>WQe,convertPackageToLocator:()=>zQe,convertToIdent:()=>JQe,convertToManifestRange:()=>ebe,copyPackage:()=>ap,devirtualizeDescriptor:()=>Ap,devirtualizeLocator:()=>lp,getIdentVendorPath:()=>Lx,isPackageCompatible:()=>Sy,isVirtualDescriptor:()=>hA,isVirtualLocator:()=>Io,makeDescriptor:()=>Yt,makeIdent:()=>Eo,makeLocator:()=>Vi,makeRange:()=>by,parseDescriptor:()=>pA,parseFileStyleRange:()=>ZQe,parseIdent:()=>En,parseLocator:()=>Hl,parseRange:()=>Tu,prettyDependent:()=>Nx,prettyDescriptor:()=>Xt,prettyIdent:()=>Vr,prettyLocator:()=>lt,prettyLocatorNoColors:()=>Rx,prettyRange:()=>yy,prettyReference:()=>fp,prettyResolution:()=>Fx,prettyWorkspace:()=>hp,renamePackage:()=>op,slugifyIdent:()=>Dx,slugifyLocator:()=>Mu,sortDescriptors:()=>Ou,stringifyDescriptor:()=>In,stringifyIdent:()=>St,stringifyLocator:()=>is,tryParseDescriptor:()=>gp,tryParseIdent:()=>n3,tryParseLocator:()=>Qy,virtualizeDescriptor:()=>kx,virtualizePackage:()=>Px});var Lu=ie(require("querystring")),e3=ie(Or()),t3=ie(wY());var mn={};it(mn,{checksumFile:()=>Ey,checksumPattern:()=>Iy,makeHash:()=>zi});var my=ie(require("crypto")),Sx=ie(vx());function zi(...t){let e=(0,my.createHash)("sha512"),r="";for(let i of t)typeof i=="string"?r+=i:i&&(r&&(e.update(r),r=""),e.update(i));return r&&e.update(r),e.digest("hex")}async function Ey(t,{baseFs:e,algorithm:r}={baseFs:T,algorithm:"sha512"}){let i=await e.openPromise(t,"r");try{let n=65536,s=Buffer.allocUnsafeSlow(n),o=(0,my.createHash)(r),a=0;for(;(a=await e.readPromise(i,s,0,n))!==0;)o.update(a===n?s:s.slice(0,a));return o.digest("hex")}finally{await e.closePromise(i)}}async function Iy(t,{cwd:e}){let i=(await(0,Sx.default)(t,{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),n=await(0,Sx.default)([t,...i],{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});n.sort();let s=await Promise.all(n.map(async a=>{let l=[Buffer.from(a)],c=M.toPortablePath(a),u=await T.lstatPromise(c);return u.isSymbolicLink()?l.push(Buffer.from(await T.readlinkPromise(c))):u.isFile()&&l.push(await T.readFilePromise(c)),l.join("\0")})),o=(0,my.createHash)("sha512");for(let a of s)o.update(a);return o.digest("hex")}var wy="virtual:",YQe=5,r3=/(os|cpu)=([a-z0-9_-]+)/,qQe=(0,t3.makeParser)(r3);function Eo(t,e){if(t==null?void 0:t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:zi(t,e),scope:t,name:e}}function Yt(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zi(t.identHash,e),range:e}}function Vi(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zi(t.identHash,e),reference:e}}function JQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function By(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function WQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function zQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function op(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function ap(t){return op(t,t)}function kx(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return Yt(t,`virtual:${e}#${t.range}`)}function Px(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return op(t,Vi(t,`virtual:${e}#${t.reference}`))}function hA(t){return t.range.startsWith(wy)}function Io(t){return t.reference.startsWith(wy)}function Ap(t){if(!hA(t))throw new Error("Not a virtual descriptor");return Yt(t,t.range.replace(/^[^#]*#/,""))}function lp(t){if(!Io(t))throw new Error("Not a virtual descriptor");return Vi(t,t.reference.replace(/^[^#]*#/,""))}function VQe(t,e){return t.range.includes("::")?t:Yt(t,`${t.range}::${Lu.default.stringify(e)}`)}function _Qe(t,e){return t.reference.includes("::")?t:Vi(t,`${t.reference}::${Lu.default.stringify(e)}`)}function cp(t,e){return t.identHash===e.identHash}function i3(t,e){return t.descriptorHash===e.descriptorHash}function up(t,e){return t.locatorHash===e.locatorHash}function XQe(t,e){if(!Io(t))throw new Error("Invalid package type");if(!Io(e))throw new Error("Invalid package type");if(!cp(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let i=e.dependencies.get(r.identHash);if(!i||!i3(r,i))return!1}return!0}function En(t){let e=n3(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function n3(t){let e=t.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,r,i]=e,n=typeof r!="undefined"?r:null;return Eo(n,i)}function pA(t,e=!1){let r=gp(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function gp(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid range (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Yt(Eo(o,n),a)}function Hl(t,e=!1){let r=Qy(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function Qy(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid reference (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Vi(Eo(o,n),a)}function Tu(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let i=typeof r[1]!="undefined"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&i!==e.requireProtocol)throw new Error(`Invalid protocol (${i})`);if((e==null?void 0:e.requireProtocol)&&i===null)throw new Error(`Missing protocol (${i})`);let n=typeof r[3]!="undefined"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&n===null)throw new Error(`Missing source (${t})`);let s=typeof r[3]!="undefined"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),o=(e==null?void 0:e.parseSelector)?Lu.default.parse(s):s,a=typeof r[4]!="undefined"?Lu.default.parse(r[4]):null;return{protocol:i,source:n,selector:o,params:a}}function ZQe(t,{protocol:e}){let{selector:r,params:i}=Tu(t,{requireProtocol:e,requireBindings:!0});if(typeof i.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Hl(i.locator,!0),path:r}}function s3(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function $Qe(t){return t===null?!1:Object.entries(t).length>0}function by({protocol:t,source:e,selector:r,params:i}){let n="";return t!==null&&(n+=`${t}`),e!==null&&(n+=`${s3(e)}#`),n+=s3(r),$Qe(i)&&(n+=`::${Lu.default.stringify(i)}`),n}function ebe(t){let{params:e,protocol:r,source:i,selector:n}=Tu(t);for(let s in e)s.startsWith("__")&&delete e[s];return by({protocol:r,source:i,params:e,selector:n})}function St(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function In(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function is(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function Dx(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function Mu(t){let{protocol:e,selector:r}=Tu(t.reference),i=e!==null?e.replace(/:$/,""):"exotic",n=e3.default.valid(r),s=n!==null?`${i}-${n}`:`${i}`,o=10,a=t.scope?`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`:`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`;return kr(a)}function Vr(t,e){return e.scope?`${Ve(t,`@${e.scope}/`,Le.SCOPE)}${Ve(t,e.name,Le.NAME)}`:`${Ve(t,e.name,Le.NAME)}`}function vy(t){if(t.startsWith(wy)){let e=vy(t.substr(t.indexOf("#")+1)),r=t.substr(wy.length,YQe);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function yy(t,e){return`${Ve(t,vy(e),Le.RANGE)}`}function Xt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.RANGE)}${yy(t,e.range)}`}function fp(t,e){return`${Ve(t,vy(e),Le.REFERENCE)}`}function lt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.REFERENCE)}${fp(t,e.reference)}`}function Rx(t){return`${St(t)}@${vy(t.reference)}`}function Ou(t){return gn(t,[e=>St(e),e=>e.range])}function hp(t,e){return Vr(t,e.locator)}function Fx(t,e,r){let i=hA(e)?Ap(e):e;return r===null?`${Xt(t,i)} \u2192 ${xx(t).Cross}`:i.identHash===r.identHash?`${Xt(t,i)} \u2192 ${fp(t,r.reference)}`:`${Xt(t,i)} \u2192 ${lt(t,r)}`}function Nx(t,e,r){return r===null?`${lt(t,e)}`:`${lt(t,e)} (via ${yy(t,r.range)})`}function Lx(t){return`node_modules/${St(t)}`}function Sy(t,e){return t.conditions?qQe(t.conditions,r=>{let[,i,n]=r.match(r3),s=e[i];return s?s.includes(n):!0}):!0}var gt;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(gt||(gt={}));var oi;(function(i){i.Dependency="Dependency",i.PeerDependency="PeerDependency",i.PeerDependencyMeta="PeerDependencyMeta"})(oi||(oi={}));var ki;(function(i){i.Inactive="inactive",i.Redundant="redundant",i.Active="active"})(ki||(ki={}));var Le={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING"},Gl;(function(e){e[e.BOLD=2]="BOLD"})(Gl||(Gl={}));var Tx=dp.default.GITHUB_ACTIONS?{level:2}:pp.default.supportsColor?{level:pp.default.supportsColor.level}:{level:0},xy=Tx.level!==0,Mx=xy&&!dp.default.GITHUB_ACTIONS&&!dp.default.CIRCLE&&!dp.default.GITLAB,Ox=new pp.default.Instance(Tx),tbe=new Map([[Le.NO_HINT,null],[Le.NULL,["#a853b5",129]],[Le.SCOPE,["#d75f00",166]],[Le.NAME,["#d7875f",173]],[Le.RANGE,["#00afaf",37]],[Le.REFERENCE,["#87afff",111]],[Le.NUMBER,["#ffd700",220]],[Le.PATH,["#d75fd7",170]],[Le.URL,["#d75fd7",170]],[Le.ADDED,["#5faf00",70]],[Le.REMOVED,["#d70000",160]],[Le.CODE,["#87afff",111]],[Le.SIZE,["#ffd700",220]]]),Ls=t=>t,ky={[Le.NUMBER]:Ls({pretty:(t,e)=>`${e}`,json:t=>t}),[Le.IDENT]:Ls({pretty:(t,e)=>Vr(t,e),json:t=>St(t)}),[Le.LOCATOR]:Ls({pretty:(t,e)=>lt(t,e),json:t=>is(t)}),[Le.DESCRIPTOR]:Ls({pretty:(t,e)=>Xt(t,e),json:t=>In(t)}),[Le.RESOLUTION]:Ls({pretty:(t,{descriptor:e,locator:r})=>Fx(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:In(t),locator:e!==null?is(e):null})}),[Le.DEPENDENT]:Ls({pretty:(t,{locator:e,descriptor:r})=>Nx(t,e,r),json:({locator:t,descriptor:e})=>({locator:is(t),descriptor:In(e)})}),[Le.PACKAGE_EXTENSION]:Ls({pretty:(t,e)=>{switch(e.type){case oi.Dependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"dependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependencyMeta:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependenciesMeta",Le.CODE)} \u27A4 ${Vr(t,En(e.selector))} \u27A4 ${On(t,e.key,Le.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case oi.Dependency:return`${St(t.parentDescriptor)} > ${St(t.descriptor)}`;case oi.PeerDependency:return`${St(t.parentDescriptor)} >> ${St(t.descriptor)}`;case oi.PeerDependencyMeta:return`${St(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Le.SETTING]:Ls({pretty:(t,e)=>(t.get(e),Ku(t,On(t,e,Le.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Le.DURATION]:Ls({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),i=Math.ceil((e-r*60*1e3)/1e3);return i===0?`${r}m`:`${r}m ${i}s`}else{let r=Math.floor(e/1e3),i=e-r*1e3;return i===0?`${r}s`:`${r}s ${i}ms`}},json:t=>t}),[Le.SIZE]:Ls({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],i=r.length;for(;i>1&&e<1024**i;)i-=1;let n=1024**i,s=Math.floor(e*100/n)/100;return On(t,`${s} ${r[i-1]}`,Le.NUMBER)},json:t=>t}),[Le.PATH]:Ls({pretty:(t,e)=>On(t,M.fromPortablePath(e),Le.PATH),json:t=>M.fromPortablePath(t)})};function jl(t,e){return[e,t]}function Py(t,e,r){return t.get("enableColors")&&r&2&&(e=pp.default.bold(e)),e}function On(t,e,r){if(!t.get("enableColors"))return e;let i=tbe.get(r);if(i===null)return e;let n=typeof i=="undefined"?r:Tx.level>=3?i[0]:i[1],s=typeof n=="number"?Ox.ansi256(n):n.startsWith("#")?Ox.hex(n):Ox[n];if(typeof s!="function")throw new Error(`Invalid format type ${n}`);return s(e)}var rbe=!!process.env.KONSOLE_VERSION;function Ku(t,e,r){return t.get("enableHyperlinks")?rbe?`]8;;${r}\\${e}]8;;\\`:`]8;;${r}\x07${e}]8;;\x07`:e}function Ve(t,e,r){if(e===null)return On(t,"null",Le.NULL);if(Object.prototype.hasOwnProperty.call(ky,r))return ky[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return On(t,e,r)}function Kx(t,e,r,{separator:i=", "}={}){return[...e].map(n=>Ve(t,n,r)).join(i)}function Uu(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(ky,e))return Nv(e),ky[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function xx(t){return{Check:On(t,"\u2713","green"),Cross:On(t,"\u2718","red"),Question:On(t,"?","cyan")}}function Yl(t,{label:e,value:[r,i]}){return`${Ve(t,e,Le.CODE)}: ${Ve(t,r,i)}`}var Ts;(function(n){n.Error="error",n.Warning="warning",n.Info="info",n.Discard="discard"})(Ts||(Ts={}));function Cp(t,{configuration:e}){let r=e.get("logFilters"),i=new Map,n=new Map,s=[];for(let g of r){let f=g.get("level");if(typeof f=="undefined")continue;let h=g.get("code");typeof h!="undefined"&&i.set(h,f);let p=g.get("text");typeof p!="undefined"&&n.set(p,f);let d=g.get("pattern");typeof d!="undefined"&&s.push([o3.default.matcher(d,{contains:!0}),f])}s.reverse();let o=(g,f,h)=>{if(g===null||g===z.UNNAMED)return h;let p=n.size>0||s.length>0?(0,a3.default)(f):f;if(n.size>0){let d=n.get(p);if(typeof d!="undefined")return d!=null?d:h}if(s.length>0){for(let[d,m]of s)if(d(p))return m!=null?m:h}if(i.size>0){let d=i.get(KE(g));if(typeof d!="undefined")return d!=null?d:h}return h},a=t.reportInfo,l=t.reportWarning,c=t.reportError,u=function(g,f,h,p){switch(o(f,h,p)){case Ts.Info:a.call(g,f,h);break;case Ts.Warning:l.call(g,f!=null?f:z.UNNAMED,h);break;case Ts.Error:c.call(g,f!=null?f:z.UNNAMED,h);break}};t.reportInfo=function(...g){return u(this,...g,Ts.Info)},t.reportWarning=function(...g){return u(this,...g,Ts.Warning)},t.reportError=function(...g){return u(this,...g,Ts.Error)}}var Zt={};it(Zt,{Method:()=>Jl,RequestError:()=>z8.RequestError,del:()=>pxe,get:()=>fxe,getNetworkSettings:()=>Z8,post:()=>iP,put:()=>hxe,request:()=>xp});var q8=ie(zy()),J8=ie(require("https")),W8=ie(require("http")),tP=ie(Nn()),rP=ie(G8()),Vy=ie(require("url"));var j8=ie(require("stream")),Y8=ie(require("string_decoder"));var nt=class extends Error{constructor(e,r,i){super(r);this.reportExtra=i;this.reportCode=e}};function Axe(t){return typeof t.reportCode!="undefined"}var Xi=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,i,n=new Promise(l=>{i=l}),s=l=>{let c=i;n=new Promise(u=>{i=u}),r=l,c()},o=(l=0)=>{s(r+1)},a=async function*(){for(;r{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),r}};var z8=ie(zy()),V8=new Map,_8=new Map,lxe=new W8.Agent({keepAlive:!0}),cxe=new J8.Agent({keepAlive:!0});function X8(t){let e=new Vy.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),{proxy:r}}async function uxe(t){return na(_8,t,()=>T.readFilePromise(t).then(e=>(_8.set(t,e),e)))}function gxe({statusCode:t,statusMessage:e},r){let i=Ve(r,t,Le.NUMBER),n=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Ku(r,`${i}${e?` (${e})`:""}`,n)}async function _y(t,{configuration:e,customErrorMessage:r}){var i,n;try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let o=(n=r==null?void 0:r(s))!=null?n:(i=s.response.body)==null?void 0:i.error;o==null&&(s.message.startsWith("Response code")?o="The remote server failed to provide the requested resource":o=s.message),s instanceof q8.TimeoutError&&s.event==="socket"&&(o+=`(can be increased via ${Ve(e,"httpTimeout",Le.SETTING)})`);let a=new nt(z.NETWORK_ERROR,o,l=>{s.response&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Response Code",value:jl(Le.NO_HINT,gxe(s.response,e))})}`),s.request&&(l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Method",value:jl(Le.NO_HINT,s.request.options.method)})}`),l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request URL",value:jl(Le.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Redirects",value:jl(Le.NO_HINT,Kx(e,s.request.redirects,Le.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Retry Count",value:jl(Le.NO_HINT,`${Ve(e,s.request.retryCount,Le.NUMBER)} (can be increased via ${Ve(e,"httpRetry",Le.SETTING)})`)})}`)});throw a.originalError=s,a}}function Z8(t,e){let r=[...e.configuration.get("networkSettings")].sort(([o],[a])=>a.length-o.length),i={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0},n=Object.keys(i),s=typeof t=="string"?new Vy.URL(t):t;for(let[o,a]of r)if(tP.default.isMatch(s.hostname,o))for(let l of n){let c=a.get(l);c!==null&&typeof i[l]=="undefined"&&(i[l]=c)}for(let o of n)typeof i[o]=="undefined"&&(i[o]=e.configuration.get(o));return i}var Jl;(function(n){n.GET="GET",n.PUT="PUT",n.POST="POST",n.DELETE="DELETE"})(Jl||(Jl={}));async function xp(t,e,{configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o=Jl.GET}){let a=typeof t=="string"?new Vy.URL(t):t,l=Z8(a,{configuration:r});if(l.enableNetwork===!1)throw new Error(`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!tP.default.isMatch(a.hostname,r.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let u={agent:{http:l.httpProxy?rP.default.httpOverHttp(X8(l.httpProxy)):lxe,https:l.httpsProxy?rP.default.httpsOverHttp(X8(l.httpsProxy)):cxe},headers:i,method:o};u.responseType=s?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!n&&typeof e=="string"?u.body=e:u.json=e);let g=r.get("httpTimeout"),f=r.get("httpRetry"),h=r.get("enableStrictSsl"),p=l.caFilePath,{default:d}=await Promise.resolve().then(()=>ie(zy())),m=p?await uxe(p):void 0,I=d.extend(P({timeout:{socket:g},retry:f,https:{rejectUnauthorized:h,certificateAuthority:m}},u));return r.getLimit("networkConcurrency")(()=>I(a))}async function fxe(t,n){var s=n,{configuration:e,jsonResponse:r}=s,i=qr(s,["configuration","jsonResponse"]);let o=na(V8,t,()=>_y(xp(t,null,P({configuration:e},i)),{configuration:e}).then(a=>(V8.set(t,a.body),a.body)));return Buffer.isBuffer(o)===!1&&(o=await o),r?JSON.parse(o.toString()):o}async function hxe(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.PUT})),i)).body}async function iP(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.POST})),i)).body}async function pxe(t,i){var n=i,{customErrorMessage:e}=n,r=qr(n,["customErrorMessage"]);return(await _y(xp(t,null,_(P({},r),{method:Jl.DELETE})),r)).body}var Kt={};it(Kt,{PackageManager:()=>tn,detectPackageManager:()=>a9,executePackageAccessibleBinary:()=>g9,executePackageScript:()=>Uw,executePackageShellcode:()=>rD,executeWorkspaceAccessibleBinary:()=>qFe,executeWorkspaceLifecycleScript:()=>u9,executeWorkspaceScript:()=>c9,getPackageAccessibleBinaries:()=>Hw,getWorkspaceAccessibleBinaries:()=>l9,hasPackageScript:()=>GFe,hasWorkspaceScript:()=>tD,makeScriptEnv:()=>Vp,maybeExecuteWorkspaceLifecycleScript:()=>YFe,prepareExternalProject:()=>HFe});var Fp={};it(Fp,{getLibzipPromise:()=>$i,getLibzipSync:()=>v4});var yA=["number","number"],nP;(function(D){D[D.ZIP_ER_OK=0]="ZIP_ER_OK",D[D.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",D[D.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",D[D.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",D[D.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",D[D.ZIP_ER_READ=5]="ZIP_ER_READ",D[D.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",D[D.ZIP_ER_CRC=7]="ZIP_ER_CRC",D[D.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",D[D.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",D[D.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",D[D.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",D[D.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",D[D.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",D[D.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",D[D.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",D[D.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",D[D.ZIP_ER_EOF=17]="ZIP_ER_EOF",D[D.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",D[D.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",D[D.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",D[D.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",D[D.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",D[D.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",D[D.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",D[D.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",D[D.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",D[D.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",D[D.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",D[D.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",D[D.ZIP_ER_TELL=30]="ZIP_ER_TELL",D[D.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA"})(nP||(nP={}));var $8=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:nP,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,open:t.cwrap("zip_open","number",["string","number","number"]),openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...yA,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...yA,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...yA,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...yA,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...yA,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...yA,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number","number","number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...yA,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...yA,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}});var BP=null;function v4(){return BP===null&&(BP=$8(b4())),BP}async function $i(){return v4()}var jp={};it(jp,{ShellError:()=>as,execute:()=>Fw,globUtils:()=>bw});var Hp={};it(Hp,{parseResolution:()=>gw,parseShell:()=>Aw,parseSyml:()=>Ii,stringifyArgument:()=>SP,stringifyArgumentSegment:()=>xP,stringifyArithmeticExpression:()=>uw,stringifyCommand:()=>vP,stringifyCommandChain:()=>rg,stringifyCommandChainThen:()=>bP,stringifyCommandLine:()=>lw,stringifyCommandLineThen:()=>QP,stringifyEnvSegment:()=>cw,stringifyRedirectArgument:()=>Np,stringifyResolution:()=>fw,stringifyShell:()=>tg,stringifyShellLine:()=>tg,stringifySyml:()=>Qa,stringifyValueArgument:()=>ig});var k4=ie(x4());function Aw(t,e={isGlobPattern:()=>!1}){try{return(0,k4.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function tg(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:i},n)=>`${lw(r)}${i===";"?n!==t.length-1||e?";":"":" &"}`).join(" ")}function lw(t){return`${rg(t.chain)}${t.then?` ${QP(t.then)}`:""}`}function QP(t){return`${t.type} ${lw(t.line)}`}function rg(t){return`${vP(t)}${t.then?` ${bP(t.then)}`:""}`}function bP(t){return`${t.type} ${rg(t.chain)}`}function vP(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>cw(e)).join(" ")} `:""}${t.args.map(e=>SP(e)).join(" ")}`;case"subshell":return`(${tg(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"group":return`{ ${tg(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>cw(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function cw(t){return`${t.name}=${t.args[0]?ig(t.args[0]):""}`}function SP(t){switch(t.type){case"redirection":return Np(t);case"argument":return ig(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function Np(t){return`${t.subtype} ${t.args.map(e=>ig(e)).join(" ")}`}function ig(t){return t.segments.map(e=>xP(e)).join("")}function xP(t){let e=(i,n)=>n?`"${i}"`:i,r=i=>i===""?'""':i.match(/[(){}<>$|&; \t"']/)?`$'${i.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:i;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${tg(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue=="undefined"?`\${${t.name}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(i=>ig(i)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${uw(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function uw(t){let e=n=>{switch(n){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${n}"`)}},r=(n,s)=>s?`( ${n} )`:n,i=n=>r(uw(n),!["number","variable"].includes(n.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${i(t.left)} ${e(t.type)} ${i(t.right)}`}}var R4=ie(D4());function gw(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,R4.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fw(t){let e="";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+="/"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var Qw=ie(w5()),b5=ie(Q5()),$De=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,v5=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],HP=class{constructor(e){this.data=e}};function S5(t){return t.match($De)?t:JSON.stringify(t)}function x5(t){return typeof t=="undefined"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>x5(t[e])):!1}function GP(t,e,r){if(t===null)return`null -`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} -`;if(typeof t=="string")return`${S5(t)} -`;if(Array.isArray(t)){if(t.length===0)return`[] -`;let i=" ".repeat(e);return` -${t.map(s=>`${i}- ${GP(s,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let i,n;t instanceof HP?(i=t.data,n=!1):(i=t,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=v5.indexOf(l),g=v5.indexOf(c);return u===-1&&g===-1?lc?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!x5(i[l])).map((l,c)=>{let u=i[l],g=S5(l),f=GP(u,e+1,!0),h=c>0||r?s:"";return f.startsWith(` -`)?`${h}${g}:${f}`:`${h}${g}: ${f}`}).join(e===0?` -`:"")||` -`;return r?` -${a}`:`${a}`}throw new Error(`Unsupported value type (${t})`)}function Qa(t){try{let e=GP(t,0,!1);return e!==` -`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}Qa.PreserveOrdering=HP;function eRe(t){return t.endsWith(` -`)||(t+=` -`),(0,b5.parse)(t)}var tRe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function rRe(t){if(tRe.test(t))return eRe(t);let e=(0,Qw.safeLoad)(t,{schema:Qw.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Ii(t){return rRe(t)}var U5=ie(jb()),H5=ie(require("os")),Kn=ie(require("stream")),G5=ie(require("util"));var as=class extends Error{constructor(e){super(e);this.name="ShellError"}};var bw={};it(bw,{fastGlobOptions:()=>D5,isBraceExpansion:()=>R5,isGlobPattern:()=>iRe,match:()=>nRe,micromatchOptions:()=>Sw});var k5=ie(gy()),P5=ie(require("fs")),vw=ie(Nn()),Sw={strictBrackets:!0},D5={onlyDirectories:!1,onlyFiles:!1};function iRe(t){if(!vw.default.scan(t,Sw).isGlob)return!1;try{vw.default.parse(t,Sw)}catch{return!1}return!0}function nRe(t,{cwd:e,baseFs:r}){return(0,k5.default)(t,_(P({},D5),{cwd:M.fromPortablePath(e),fs:SE(P5.default,new ah(r))}))}function R5(t){return vw.default.scan(t,Sw).isBrace}var F5=ie(bb()),Bo=ie(require("stream")),N5=ie(require("string_decoder")),wn;(function(i){i[i.STDIN=0]="STDIN",i[i.STDOUT=1]="STDOUT",i[i.STDERR=2]="STDERR"})(wn||(wn={}));var sc=new Set;function jP(){}function YP(){for(let t of sc)t.kill()}function L5(t,e,r,i){return n=>{let s=n[0]instanceof Bo.Transform?"pipe":n[0],o=n[1]instanceof Bo.Transform?"pipe":n[1],a=n[2]instanceof Bo.Transform?"pipe":n[2],l=(0,F5.default)(t,e,_(P({},i),{stdio:[s,o,a]}));return sc.add(l),sc.size===1&&(process.on("SIGINT",jP),process.on("SIGTERM",YP)),n[0]instanceof Bo.Transform&&n[0].pipe(l.stdin),n[1]instanceof Bo.Transform&&l.stdout.pipe(n[1],{end:!1}),n[2]instanceof Bo.Transform&&l.stderr.pipe(n[2],{end:!1}),{stdin:l.stdin,promise:new Promise(c=>{l.on("error",u=>{switch(sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),u.code){case"ENOENT":n[2].write(`command not found: ${t} -`),c(127);break;case"EACCES":n[2].write(`permission denied: ${t} -`),c(128);break;default:n[2].write(`uncaught error: ${u.message} -`),c(1);break}}),l.on("exit",u=>{sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),c(u!==null?u:129)})})}}}function T5(t){return e=>{let r=e[0]==="pipe"?new Bo.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}var Os=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},M5=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Gp=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:i,stderr:n}){let s=new Gp(null,e);return s.stdin=r,s.stdout=i,s.stderr=n,s}pipeTo(e,r=1){let i=new Gp(this,e),n=new M5;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(r&1)==1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)==2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(r.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function xw(t,e){return Gp.start(t,e)}function O5(t,e=null){let r=new Bo.PassThrough,i=new N5.StringDecoder,n="";return r.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",t(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&t(e!==null?`${e} ${s}`:s)}),r}function K5(t,{prefix:e}){return{stdout:O5(r=>t.stdout.write(`${r} -`),t.stdout.isTTY?e:null),stderr:O5(r=>t.stderr.write(`${r} -`),t.stderr.isTTY?e:null)}}var sRe=(0,G5.promisify)(setTimeout);var Fi;(function(r){r[r.Readable=1]="Readable",r[r.Writable=2]="Writable"})(Fi||(Fi={}));function j5(t,e,r){let i=new Kn.PassThrough({autoDestroy:!0});switch(t){case wn.STDIN:(e&1)==1&&r.stdin.pipe(i,{end:!1}),(e&2)==2&&r.stdin instanceof Kn.Writable&&i.pipe(r.stdin,{end:!1});break;case wn.STDOUT:(e&1)==1&&r.stdout.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stdout,{end:!1});break;case wn.STDERR:(e&1)==1&&r.stderr.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stderr,{end:!1});break;default:throw new as(`Bad file descriptor: "${t}"`)}return i}function kw(t,e={}){let r=P(P({},t),e);return r.environment=P(P({},t.environment),e.environment),r.variables=P(P({},t.variables),e.variables),r}var oRe=new Map([["cd",async([t=(0,H5.homedir)(),...e],r,i)=>{let n=v.resolve(i.cwd,M.toPortablePath(t));if(!(await r.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new as(`cd: no such file or directory: ${t}`):o})).isDirectory())throw new as(`cd: not a directory: ${t}`);return i.cwd=n,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${M.fromPortablePath(r.cwd)} -`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,i)=>i.exitCode=parseInt(t!=null?t:i.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} -`),0)],["sleep",async([t],e,r)=>{if(typeof t=="undefined")throw new as("sleep: missing operand");let i=Number(t);if(Number.isNaN(i))throw new as(`sleep: invalid time interval '${t}'`);return await sRe(1e3*i,0)}],["__ysh_run_procedure",async(t,e,r)=>{let i=r.procedures[t[0]];return await xw(i,{stdin:new Os(r.stdin),stdout:new Os(r.stdout),stderr:new Os(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let i=r.stdin,n=r.stdout,s=r.stderr,o=[],a=[],l=[],c=0;for(;t[c]!=="--";){let g=t[c++],{type:f,fd:h}=JSON.parse(g),p=B=>{switch(h){case null:case 0:o.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},d=B=>{switch(h){case null:case 1:a.push(B);break;case 2:l.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},m=Number(t[c++]),I=c+m;for(let B=c;Be.baseFs.createReadStream(v.resolve(r.cwd,M.toPortablePath(t[B]))));break;case"<<<":p(()=>{let b=new Kn.PassThrough;return process.nextTick(()=>{b.write(`${t[B]} -`),b.end()}),b});break;case"<&":p(()=>j5(Number(t[B]),1,r));break;case">":case">>":{let b=v.resolve(r.cwd,M.toPortablePath(t[B]));d(b==="/dev/null"?new Kn.Writable({autoDestroy:!0,emitClose:!0,write(R,H,L){setImmediate(L)}}):e.baseFs.createWriteStream(b,f===">>"?{flags:"a"}:void 0))}break;case">&":d(j5(Number(t[B]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new Kn.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new Kn.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new Kn.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await xw(Yp(t.slice(c+1),e,r),{stdin:new Os(i),stdout:new Os(n),stderr:new Os(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function aRe(t,e,r){let i=[],n=new Kn.PassThrough;return n.on("data",s=>i.push(s)),await Pw(t,e,kw(r,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function Y5(t,e,r){let i=t.map(async s=>{let o=await oc(s.args,e,r);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function Dw(t){return t.match(/[^ \r\n\t]+/g)||[]}async function q5(t,e,r,i,n=i){switch(t.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(t.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=Dw(s);for(let a=0;a=0&&st+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)};async function qp(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let i=[];await q5(_(P({},t),{quoted:!0}),e,r,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?qp({type:"variable",name:i.join(" ")},e,r):qp({type:"number",value:n},e,r)}else return ARe[t.type](await qp(t.left,e,r),await qp(t.right,e,r))}async function oc(t,e,r){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p=="undefined"&&i.set(h,p=[]),p.push(f)};for(let u of t){let g=!1;switch(u.type){case"redirection":{let f=await oc(u.args,e,r);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await aRe(f.shell,e,r);if(f.quoted)o(h);else{let p=Dw(h);for(let d=0;d0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function Yp(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let i=M.fromPortablePath(r.cwd),n=r.environment;typeof n.PWD!="undefined"&&(n=_(P({},n),{PWD:i}));let[s,...o]=t;if(s==="command")return L5(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a=="undefined")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return T5(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=r;r.stdin=l,r.stdout=c,r.stderr=u;try{return await a(o,e,r)}finally{r.stdin=g,r.stdout=f,r.stderr=h}})}function lRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,kw(r,{stdin:n}));return{stdin:n,promise:s}}}function cRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,r);return{stdin:n,promise:s}}}function J5(t,e,r,i){if(e.length===0)return t;{let n;do n=String(Math.random());while(Object.prototype.hasOwnProperty.call(i.procedures,n));return i.procedures=P({},i.procedures),i.procedures[n]=t,Yp([...e,"__ysh_run_procedure",n],r,i)}}async function W5(t,e,r){let i=t,n=null,s=null;for(;i;){let o=i.then?P({},r):r,a;switch(i.type){case"command":{let l=await oc(i.args,e,r),c=await Y5(i.envs,e,r);a=i.envs.length?Yp(l,e,kw(o,{environment:c})):Yp(l,e,o)}break;case"subshell":{let l=await oc(i.args,e,r),c=lRe(i.subshell,e,o);a=J5(c,l,e,o)}break;case"group":{let l=await oc(i.args,e,r),c=cRe(i.group,e,o);a=J5(c,l,e,o)}break;case"envs":{let l=await Y5(i.envs,e,r);o.environment=P(P({},o.environment),l),a=Yp(["true"],e,o)}break}if(typeof a=="undefined")throw new Error("Assertion failed: An action should have been generated");if(n===null)s=xw(a,{stdin:new Os(o.stdin),stdout:new Os(o.stdout),stderr:new Os(o.stderr)});else{if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":s=s.pipeTo(a,wn.STDOUT);break;case"|&":s=s.pipeTo(a,wn.STDOUT|wn.STDERR);break}}i.then?(n=i.then.type,i=i.then.chain):i=null}if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await s.run()}async function uRe(t,e,r,{background:i=!1}={}){function n(s){let o=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=o[s%o.length];return U5.default.hex(a)}if(i){let s=r.nextBackgroundJobIndex++,o=n(s),a=`[${s}]`,l=o(a),{stdout:c,stderr:u}=K5(r,{prefix:l});return r.backgroundJobs.push(W5(t,e,kw(r,{stdout:c,stderr:u})).catch(g=>u.write(`${g.message} -`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${l}, '${o(rg(t))}' has ended -`)})),0}return await W5(t,e,r)}async function gRe(t,e,r,{background:i=!1}={}){let n,s=a=>{n=a,r.variables["?"]=String(a)},o=async a=>{try{return await uRe(a.chain,e,r,{background:i&&typeof a.then=="undefined"})}catch(l){if(!(l instanceof as))throw l;return r.stderr.write(`${l.message} -`),1}};for(s(await o(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":n===0&&s(await o(t.then.line));break;case"||":n!==0&&s(await o(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return n}async function Pw(t,e,r){let i=r.backgroundJobs;r.backgroundJobs=[];let n=0;for(let{command:s,type:o}of t){if(n=await gRe(s,e,r,{background:o==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(n)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=i,n}function z5(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>Rw(e));case"arithmetic":return qP(t.arithmetic);case"shell":return JP(t.shell);default:return!1}}function Rw(t){switch(t.type){case"redirection":return t.args.some(e=>Rw(e));case"argument":return t.segments.some(e=>z5(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function qP(t){switch(t.type){case"variable":return z5(t);case"number":return!1;default:return qP(t.left)||qP(t.right)}}function JP(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let i;switch(r.type){case"subshell":i=JP(r.subshell);break;case"command":i=r.envs.some(n=>n.args.some(s=>Rw(s)))||r.args.some(n=>Rw(n));break}if(i)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function Fw(t,e=[],{baseFs:r=new Wt,builtins:i={},cwd:n=M.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=bw}={}){let g={};for(let[p,d]of Object.entries(s))typeof d!="undefined"&&(g[p]=d);let f=new Map(oRe);for(let[p,d]of Object.entries(i))f.set(p,d);o===null&&(o=new Kn.PassThrough,o.end());let h=Aw(t,u);if(!JP(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let d=p.chain;for(;d.then;)d=d.then.chain;d.type==="command"&&(d.args=d.args.concat(e.map(m=>({type:"argument",segments:[{type:"text",text:m}]}))))}return await Pw(h,{args:e,baseFs:r,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var s9=ie(ZP()),o9=ie(Wp()),cc=ie(require("stream"));var J6=ie(Or());var zp=class{supportsDescriptor(e,r){return!!(e.range.startsWith(zp.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(zp.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[i.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.getWorkspaceByCwd(e.reference.slice(zp.protocol.length));return _(P({},e),{version:i.manifest.version||"0.0.0",languageName:"unknown",linkType:gt.SOFT,conditions:null,dependencies:new Map([...i.manifest.dependencies,...i.manifest.devDependencies]),peerDependencies:new Map([...i.manifest.peerDependencies]),dependenciesMeta:i.manifest.dependenciesMeta,peerDependenciesMeta:i.manifest.peerDependenciesMeta,bin:i.manifest.bin})}},Yr=zp;Yr.protocol="workspace:";var qt={};it(qt,{SemVer:()=>j6.SemVer,satisfiesWithPrereleases:()=>lc,validRange:()=>Us});var Lw=ie(Or()),j6=ie(Or()),Y6=new Map;function lc(t,e,r=!1){if(!t)return!1;let i=`${e}${r}`,n=Y6.get(i);if(typeof n=="undefined")try{n=new Lw.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{Y6.set(i,n||null)}else if(n===null)return!1;let s;try{s=new Lw.default.SemVer(t,n)}catch(o){return!1}return n.test(s)?!0:(s.prerelease&&(s.prerelease=[]),n.set.some(o=>{for(let a of o)a.semver.prerelease&&(a.semver.prerelease=[]);return o.every(a=>a.test(s))}))}var q6=new Map;function Us(t){if(t.indexOf(":")!==-1)return null;let e=q6.get(t);if(typeof e!="undefined")return e;try{e=new Lw.default.Range(t)}catch{e=null}return q6.set(t,e),e}var vA=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new Wt}={}){let i=v.join(e,"package.json");return await r.existsPromise(i)?await vA.fromFile(i,{baseFs:r}):null}static async find(e,{baseFs:r}={}){let i=await vA.tryFind(e,{baseFs:r});if(i===null)throw new Error("Manifest not found");return i}static async fromFile(e,{baseFs:r=new Wt}={}){let i=new vA;return await i.loadFile(e,{baseFs:r}),i}static fromText(e){let r=new vA;return r.loadFromText(e),r}static isManifestFieldCompatible(e,r){if(e===null)return!0;let i=!0,n=!1;for(let s of e)if(s[0]==="!"){if(n=!0,r===s.slice(1))return!1}else if(i=!1,s===r)return!0;return n&&i}loadFromText(e){let r;try{r=JSON.parse(z6(e)||"{}")}catch(i){throw i.message+=` (when parsing ${e})`,i}this.load(r),this.indent=W6(e)}async loadFile(e,{baseFs:r=new Wt}){let i=await r.readFilePromise(e,"utf8"),n;try{n=JSON.parse(z6(i)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(n),this.indent=W6(i)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let i=[];if(this.name=null,typeof e.name=="string")try{this.name=En(e.name)}catch(s){i.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let s=[];this.os=s;for(let o of e.os)typeof o!="string"?i.push(new Error("Parsing failed for the 'os' field")):s.push(o)}else this.os=null;if(Array.isArray(e.cpu)){let s=[];this.cpu=s;for(let o of e.cpu)typeof o!="string"?i.push(new Error("Parsing failed for the 'cpu' field")):s.push(o)}else this.cpu=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=en(e.main):this.main=null,typeof e.module=="string"?this.module=en(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=en(e.browser);else{this.browser=new Map;for(let[s,o]of Object.entries(e.browser))this.browser.set(en(s),typeof o=="string"?en(o):o)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,en(e.bin)):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[s,o]of Object.entries(e.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.bin.set(s,en(o))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[s,o]of Object.entries(e.scripts)){if(typeof o!="string"){i.push(new Error(`Invalid script definition for '${s}'`));continue}this.scripts.set(s,o)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[s,o]of Object.entries(e.dependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[s,o]of Object.entries(e.devDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.devDependencies.set(l.identHash,l)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[s,o]of Object.entries(e.peerDependencies)){let a;try{a=En(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}(typeof o!="string"||!o.startsWith(Yr.protocol)&&!Us(o))&&(i.push(new Error(`Invalid dependency range for '${s}'`)),o="*");let l=Yt(a,o);this.peerDependencies.set(l.identHash,l)}typeof e.workspaces=="object"&&e.workspaces.nohoist&&i.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let n=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let s of n){if(typeof s!="string"){i.push(new Error(`Invalid workspace definition for '${s}'`));continue}this.workspaceDefinitions.push({pattern:s})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[s,o]of Object.entries(e.dependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}`));continue}let a=pA(s),l=this.ensureDependencyMeta(a),c=Tw(o.built,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid built meta field for '${s}'`));continue}let u=Tw(o.optional,{yamlCompatibilityMode:r});if(u===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}let g=Tw(o.unplugged,{yamlCompatibilityMode:r});if(g===null){i.push(new Error(`Invalid unplugged meta field for '${s}'`));continue}Object.assign(l,{built:c,optional:u,unplugged:g})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[s,o]of Object.entries(e.peerDependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}'`));continue}let a=pA(s),l=this.ensurePeerDependencyMeta(a),c=Tw(o.optional,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}Object.assign(l,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[s,o]of Object.entries(e.resolutions)){if(typeof o!="string"){i.push(new Error(`Invalid resolution entry for '${s}'`));continue}try{this.resolutions.push({pattern:gw(s),reference:o})}catch(a){i.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let s of e.files){if(typeof s!="string"){i.push(new Error(`Invalid files entry for '${s}'`));continue}this.files.add(s)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=en(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=en(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=en(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[s,o]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(en(s),typeof o=="string"?en(o):o)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,en(e.publishConfig.bin)]]):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[s,o]of Object.entries(e.publishConfig.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.publishConfig.bin.set(s,en(o))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let s of e.publishConfig.executableFiles){if(typeof s!="string"){i.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(en(s))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let s of Object.keys(e.installConfig))s==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:i.push(new Error("Invalid hoisting limits definition")):s=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:i.push(new Error("Invalid selfReferences definition, must be a boolean value")):i.push(new Error(`Unrecognized installConfig key: ${s}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[s,o]of Object.entries(e.optionalDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=En(s)}catch(g){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l);let c=Yt(a,"unknown"),u=this.ensureDependencyMeta(c);Object.assign(u,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=i}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(V6("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(V6("cpu",this.cpu)),e.length>0?e.join(" & "):null}isCompatibleWithOS(e){return vA.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return vA.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if(e.range!=="unknown"&&!J6.default.valid(e.range))throw new Error(`Invalid meta field range for '${In(e)}'`);let r=St(e),i=e.range!=="unknown"?e.range:null,n=this.dependenciesMeta.get(r);n||this.dependenciesMeta.set(r,n=new Map);let s=n.get(i);return s||n.set(i,s={}),s}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${In(e)}'`);let r=St(e),i=this.peerDependenciesMeta.get(r);return i||this.peerDependenciesMeta.set(r,i={}),i}setRawField(e,r,{after:i=[]}={}){let n=new Set(i.filter(s=>Object.prototype.hasOwnProperty.call(this.raw,s)));if(n.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let s=this.raw,o=this.raw={},a=!1;for(let l of Object.keys(s))o[l]=s[l],a||(n.delete(l),n.size===0&&(o[e]=r,a=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){var s;if(Object.assign(e,this.raw),this.name!==null?e.name=St(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let o=this.browser;typeof o=="string"?e.browser=o:o instanceof Map&&(e.browser=Object.assign({},...Array.from(o.keys()).sort().map(a=>({[a]:o.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(o=>({[o]:this.bin.get(o)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces=_(P({},this.raw.workspaces),{packages:this.workspaceDefinitions.map(({pattern:o})=>o)}):e.workspaces=this.workspaceDefinitions.map(({pattern:o})=>o):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let o of this.dependencies.values()){let a=this.dependenciesMeta.get(St(o)),l=!1;if(r&&a){let c=a.get(null);c&&c.optional&&(l=!0)}l?n.push(o):i.push(o)}i.length>0?e.dependencies=Object.assign({},...Ou(i).map(o=>({[St(o)]:o.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...Ou(n).map(o=>({[St(o)]:o.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...Ou(this.devDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...Ou(this.peerDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[o,a]of gn(this.dependenciesMeta.entries(),([l,c])=>l))for(let[l,c]of gn(a.entries(),([u,g])=>u!==null?`0${u}`:"1")){let u=l!==null?In(Yt(En(o),l)):o,g=P({},c);r&&l===null&&delete g.optional,Object.keys(g).length!==0&&(e.dependenciesMeta[u]=g)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...gn(this.peerDependenciesMeta.entries(),([o,a])=>o).map(([o,a])=>({[o]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:o,reference:a})=>({[fw(o)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(s=e.scripts)!=null||(e.scripts={});for(let o of Object.keys(e.scripts))this.scripts.has(o)||delete e.scripts[o];for(let[o,a]of this.scripts.entries())e.scripts[o]=a}else delete e.scripts;return e}},Ze=vA;Ze.fileName="package.json",Ze.allDependencies=["dependencies","devDependencies","peerDependencies"],Ze.hardDependencies=["dependencies","devDependencies"];function W6(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function z6(t){return t.charCodeAt(0)===65279?t.slice(1):t}function en(t){return t.replace(/\\/g,"/")}function Tw(t,{yamlCompatibilityMode:e}){return e?Kv(t):typeof t=="undefined"||typeof t=="boolean"?t:null}function _6(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let i=r%2==0?"":"!",n=e.slice(r);return`${i}${t}=${n}`}function V6(t,e){return e.length===1?_6(t,e[0]):`(${e.map(r=>_6(t,r)).join(" | ")})`}var e9=ie($6()),Ow=ie(ml());var t9=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],r9=80,NFe=new Set([z.FETCH_NOT_CACHED,z.UNUSED_CACHE_ENTRY]),LFe=5,SA=Ow.default.GITHUB_ACTIONS?{start:t=>`::group::${t} -`,end:t=>`::endgroup:: -`}:Ow.default.TRAVIS?{start:t=>`travis_fold:start:${t} -`,end:t=>`travis_fold:end:${t} -`}:Ow.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r${t} -`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r`}:null,i9=new Date,TFe=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,MFe=t=>t,Kw=MFe({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),OFe=TFe&&Object.keys(Kw).find(t=>{let e=Kw[t];return!(e.date&&(e.date[0]!==i9.getDate()||e.date[1]!==i9.getMonth()+1))})||"default";function n9(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let n=KE(t===null?0:t);return!r&&t===null?Ve(e,n,"grey"):n}function eD(t,{configuration:e,json:r}){let i=n9(t,{configuration:e,json:r});if(!i||t===null||t===z.UNNAMED)return i;let n=z[t],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return Ku(e,i,s)}var Fe=class extends Xi{constructor({configuration:e,stdout:r,json:i=!1,includeFooter:n=!0,includeLogs:s=!i,includeInfos:o=s,includeWarnings:a=s,forgettableBufferSize:l=LFe,forgettableNames:c=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.forgettableLines=[];Cp(this,{configuration:e}),this.configuration=e,this.forgettableBufferSize=l,this.forgettableNames=new Set([...c,...NFe]),this.includeFooter=n,this.includeInfos=o,this.includeWarnings=a,this.json=i,this.stdout=r;let u=this.configuration.get("progressBarStyle")||OFe;if(!Object.prototype.hasOwnProperty.call(Kw,u))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=Kw[u];let g="\u27A4 YN0000: \u250C ".length,f=Math.max(0,Math.min(process.stdout.columns-g,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*f/80)}static async start(e,r){let i=new this(e),n=process.emitWarning;process.emitWarning=(s,o)=>{if(typeof s!="string"){let l=s;s=l.message,o=o!=null?o:l.name}let a=typeof o!="undefined"?`${o}: ${s}`:s;i.reportWarning(z.UNNAMED,a)};try{await r(i)}catch(s){i.reportExceptionOnce(s)}finally{await i.finalize(),process.emitWarning=n}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){this.cacheHitCount+=1}reportCacheMiss(e,r){this.lastCacheMiss=e,this.cacheMissCount+=1,typeof r!="undefined"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(z.FETCH_NOT_CACHED,r)}startTimerSync(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startTimerPromise(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return await s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startCacheReport(e){let r=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await e()}catch(i){throw this.reportExceptionOnce(i),i}finally{r!==null&&this.reportCacheChanges(r)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(e,r){if(!this.includeInfos)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"",s=`${Ve(this.configuration,"\u27A4","blueBright")} ${n}${this.formatIndent()}${r}`;if(this.json)this.reportJson({type:"info",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r});else if(this.forgettableNames.has(e))if(this.forgettableLines.push(s),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(s,{truncate:!0});else this.writeLineWithForgettableReset(s)}reportWarning(e,r){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"warning",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","yellowBright")} ${n}${this.formatIndent()}${r}`)}reportError(e,r){this.errorCount+=1,this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"error",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","redBright")} ${n}${this.formatIndent()}${r}`,{truncate:!1})}reportProgress(e){let r=!1,i=Promise.resolve().then(async()=>{let s={progress:0,title:void 0};this.progress.set(e,{definition:s,lastScaledSize:-1}),this.refreshProgress(-1);for await(let{progress:o,title:a}of e)r||s.progress===o&&s.title===a||(s.progress=o,s.title=a,this.refreshProgress());n()}),n=()=>{r||(r=!0,this.progress.delete(e),this.refreshProgress(1))};return _(P({},i),{stop:n})}reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(e)}`)}async finalize(){if(!this.includeFooter)return;let e="";this.errorCount>0?e="Failed with errors":this.warningCount>0?e="Done with warnings":e="Done";let r=Ve(this.configuration,Date.now()-this.startTime,Le.DURATION),i=this.configuration.get("enableTimers")?`${e} in ${r}`:e;this.errorCount>0?this.reportError(z.UNNAMED,i):this.warningCount>0?this.reportWarning(z.UNNAMED,i):this.reportInfo(z.UNNAMED,i)}writeLine(e,{truncate:r}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(e,{truncate:r})} -`),this.writeProgress()}writeLineWithForgettableReset(e,{truncate:r}={}){this.forgettableLines=[],this.writeLine(e,{truncate:r})}writeLines(e,{truncate:r}={}){this.clearProgress({delta:e.length});for(let i of e)this.stdout.write(`${this.truncate(i,{truncate:r})} -`);this.writeProgress()}reportCacheChanges({cacheHitCount:e,cacheMissCount:r}){let i=this.cacheHitCount-e,n=this.cacheMissCount-r;if(i===0&&n===0)return;let s="";this.cacheHitCount>1?s+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?s+=" - one package was already cached":s+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?s+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(s+=`, one had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?s+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(s+=` - one package had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`),this.reportInfo(z.FETCH_NOT_CACHED,s)}commit(){let e=this.uncommitted;this.uncommitted=new Set;for(let r of e)r.committed=!0,r.action()}clearProgress({delta:e=0,clear:r=!1}){!this.configuration.get("enableProgressBars")||this.json||this.progress.size+e>0&&(this.stdout.write(`[${this.progress.size+e}A`),(e>0||r)&&this.stdout.write(""))}writeProgress(){if(!this.configuration.get("enableProgressBars")||this.json||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let e=Date.now();e-this.progressTime>r9&&(this.progressFrame=(this.progressFrame+1)%t9.length,this.progressTime=e);let r=t9[this.progressFrame];for(let i of this.progress.values()){let n=this.progressStyle.chars[0].repeat(i.lastScaledSize),s=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-i.lastScaledSize),o=this.formatName(null),a=o?`${o}: `:"";this.stdout.write(`${Ve(this.configuration,"\u27A4","blueBright")} ${a}${r} ${n}${s} -`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress()},r9)}refreshProgress(e=0){let r=!1;if(this.progress.size===0)r=!0;else for(let i of this.progress.values()){let n=Math.trunc(this.progressMaxScaledSize*i.definition.progress),s=i.lastScaledSize;if(i.lastScaledSize=n,n!==s){r=!0;break}}r&&(this.clearProgress({delta:e}),this.writeProgress())}truncate(e,{truncate:r}={}){return this.configuration.get("enableProgressBars")||(r=!1),typeof r=="undefined"&&(r=this.configuration.get("preferTruncatedLines")),r&&(e=(0,e9.default)(e,0,process.stdout.columns-1)),e}formatName(e){return n9(e,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Zr="3.1.1";var tn;(function(n){n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm"})(tn||(tn={}));async function ba(t,e,r,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await T.writeFilePromise(v.format({dir:t,name:e,ext:".cmd"}),n)}await T.writeFilePromise(v.join(t,e),`#!/bin/sh -exec "${r}" ${i.map(n=>`'${n.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" -`,{mode:493})}async function a9(t){let e=await Ze.tryFind(t);if(e==null?void 0:e.packageManager){let i=Qy(e.packageManager);if(i==null?void 0:i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":return{packageManager:Number(s)===1?tn.Yarn1:tn.Yarn2,reason:n};case"npm":return{packageManager:tn.Npm,reason:n};case"pnpm":return{packageManager:tn.Pnpm,reason:n}}}}let r;try{r=await T.readFilePromise(v.join(t,wt.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:tn.Yarn2,reason:'"__metadata" key found in yarn.lock'}:{packageManager:tn.Yarn1,reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:T.existsSync(v.join(t,"package-lock.json"))?{packageManager:tn.Npm,reason:`found npm's "package-lock.json" lockfile`}:T.existsSync(v.join(t,"pnpm-lock.yaml"))?{packageManager:tn.Pnpm,reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Vp({project:t,locator:e,binFolder:r,lifecycleScript:i}){var l,c;let n={};for(let[u,g]of Object.entries(process.env))typeof g!="undefined"&&(n[u.toLowerCase()!=="path"?u:"PATH"]=g);let s=M.fromPortablePath(r);n.BERRY_BIN_FOLDER=M.fromPortablePath(s);let o=process.env.COREPACK_ROOT?M.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([ba(r,"node",process.execPath),...Zr!==null?[ba(r,"run",process.execPath,[o,"run"]),ba(r,"yarn",process.execPath,[o]),ba(r,"yarnpkg",process.execPath,[o]),ba(r,"node-gyp",process.execPath,[o,"run","--top-level","node-gyp"])]:[]]),t&&(n.INIT_CWD=M.fromPortablePath(t.configuration.startingCwd),n.PROJECT_CWD=M.fromPortablePath(t.cwd)),n.PATH=n.PATH?`${s}${M.delimiter}${n.PATH}`:`${s}`,n.npm_execpath=`${s}${M.sep}yarn`,n.npm_node_execpath=`${s}${M.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let u=t.tryWorkspaceByLocator(e),g=u?(l=u.manifest.version)!=null?l:"":(c=t.storedPackages.get(e.locatorHash).version)!=null?c:"";n.npm_package_name=St(e),n.npm_package_version=g}let a=Zr!==null?`yarn/${Zr}`:`yarn/${mu("@yarnpkg/core").version}-core`;return n.npm_config_user_agent=`${a} npm/? node/${process.versions.node} ${process.platform} ${process.arch}`,i&&(n.npm_lifecycle_event=i),t&&await t.configuration.triggerHook(u=>u.setupScriptEnvironment,t,n,async(u,g,f)=>await ba(r,kr(u),g,f)),n}var KFe=2,UFe=(0,o9.default)(KFe);async function HFe(t,e,{configuration:r,report:i,workspace:n=null,locator:s=null}){await UFe(async()=>{await T.mktempPromise(async o=>{let a=v.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=r.getSubprocessStreams(a,{prefix:M.fromPortablePath(t),report:i}),g=s&&Io(s)?lp(s):s,f=g?is(g):"an external project";c.write(`Packing ${f} from sources -`);let h=await a9(t),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason} - -`),p=h.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn - -`),p=tn.Yarn2),await T.mktempPromise(async d=>{let m=await Vp({binFolder:d}),B=new Map([[tn.Yarn1,async()=>{let R=n!==null?["workspace",n]:[],H=await to("yarn",["set","version","classic","--only-if-needed"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;await T.appendFilePromise(v.join(t,".npmignore"),`/.yarn -`),c.write(` -`);let L=await to("yarn",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(L.code!==0)return L.code;c.write(` -`);let K=await to("yarn",[...R,"pack","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return K.code!==0?K.code:0}],[tn.Yarn2,async()=>{let R=n!==null?["workspace",n]:[];m.YARN_ENABLE_INLINE_BUILDS="1";let H=v.join(t,wt.lockfile);await T.existsPromise(H)||await T.writeFilePromise(H,"");let L=await to("yarn",[...R,"pack","--install-if-needed","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return L.code!==0?L.code:0}],[tn.Npm,async()=>{if(n!==null){let A=new cc.PassThrough,V=Cu(A);A.pipe(c,{end:!1});let W=await to("npm",["--version"],{cwd:t,env:m,stdin:l,stdout:A,stderr:u,end:Pn.Never});if(A.end(),W.code!==0)return c.end(),u.end(),W.code;let X=(await V).toString().trim();if(!lc(X,">=7.x")){let F=Eo(null,"npm"),D=Yt(F,X),he=Yt(F,">=7.x");throw new Error(`Workspaces aren't supported by ${Xt(r,D)}; please upgrade to ${Xt(r,he)} (npm has been detected as the primary package manager for ${Ve(r,t,Le.PATH)})`)}}let R=n!==null?["--workspace",n]:[];delete m.npm_config_user_agent;let H=await to("npm",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;let L=new cc.PassThrough,K=Cu(L);L.pipe(c);let J=await to("npm",["pack","--silent",...R],{cwd:t,env:m,stdin:l,stdout:L,stderr:u});if(J.code!==0)return J.code;let ne=(await K).toString().trim().replace(/^.*\n/s,""),q=v.resolve(t,M.toPortablePath(ne));return await T.renamePromise(q,e),0}]]).get(p);if(typeof B=="undefined")throw new Error("Assertion failed: Unsupported workflow");let b=await B();if(!(b===0||typeof b=="undefined"))throw T.detachTemp(o),new nt(z.PACKAGE_PREPARATION_FAILED,`Packing the package failed (exit code ${b}, logs can be found here: ${Ve(r,a,Le.PATH)})`)})})})}async function GFe(t,e,{project:r}){let i=r.tryWorkspaceByLocator(t);if(i!==null)return tD(i,e);let n=r.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r.configuration,t)} not found in the project`);return await Jn.openPromise(async s=>{let o=r.configuration,a=r.configuration.getLinkers(),l={project:r,report:new Fe({stdout:new cc.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${lt(r.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new Ft(u,{baseFs:s});return(await Ze.find(Se.dot,{baseFs:g})).scripts.has(e)},{libzip:await $i()})}async function Uw(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await A9(t,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f=="undefined")return 1;let h=async()=>await Fw(f,r,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(d=>d.wrapScriptExecution,h,n,t,e,{script:f,args:r,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function rD(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{env:c,cwd:u}=await A9(t,{project:n,binFolder:l,cwd:i});return await Fw(e,r,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function jFe(t,{binFolder:e,cwd:r,lifecycleScript:i}){let n=await Vp({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:i});return await Promise.all(Array.from(await l9(t),([s,[,o]])=>ba(e,kr(s),process.execPath,[o]))),typeof r=="undefined"&&(r=v.dirname(await T.realpathPromise(v.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:n,cwd:r}}async function A9(t,{project:e,binFolder:r,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(t);if(s!==null)return jFe(s,{binFolder:r,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(t.locatorHash);if(!o)throw new Error(`Package for ${lt(e.configuration,t)} not found in the project`);return await Jn.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Fe({stdout:new cc.PassThrough,configuration:l})},g=c.find(m=>m.supportsPackage(o,u));if(!g)throw new Error(`The package ${lt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await Vp({project:e,locator:t,binFolder:r,lifecycleScript:n});await Promise.all(Array.from(await Hw(t,{project:e}),([m,[,I]])=>ba(r,kr(m),process.execPath,[I])));let h=await g.findPackageLocation(o,u),p=new Ft(h,{baseFs:a}),d=await Ze.find(Se.dot,{baseFs:p});return typeof i=="undefined"&&(i=h),{manifest:d,binFolder:r,env:f,cwd:i}},{libzip:await $i()})}async function c9(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o}){return await Uw(t.anchoredLocator,e,r,{cwd:i,project:t.project,stdin:n,stdout:s,stderr:o})}function tD(t,e){return t.manifest.scripts.has(e)}async function u9(t,e,{cwd:r,report:i}){let{configuration:n}=t.project,s=null;await T.mktempPromise(async o=>{let a=v.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${M.fromPortablePath(t.cwd)}") -`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:lt(n,t.anchoredLocator),header:l});i.reportInfo(z.LIFECYCLE_SCRIPT,`Calling the "${e}" lifecycle script`);let g=await c9(t,e,[],{cwd:r,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw T.detachTemp(o),new nt(z.LIFECYCLE_SCRIPT,`${(0,s9.default)(e)} script failed (exit code ${Ve(n,g,Le.NUMBER)}, logs can be found here: ${Ve(n,a,Le.PATH)}); run ${Ve(n,`yarn ${e}`,Le.CODE)} to investigate`)})}async function YFe(t,e,r){tD(t,e)&&await u9(t,e,r)}async function Hw(t,{project:e}){let r=e.configuration,i=new Map,n=e.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r,t)} not found in the project`);let s=new cc.Writable,o=r.getLinkers(),a={project:e,report:new Fe({configuration:r,stdout:s})},l=new Set([t.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${Xt(r,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return kl.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return kl.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return kl.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===kl.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin)i.set(h,[g,M.fromPortablePath(v.resolve(f,p))])}return i}async function l9(t){return await Hw(t.anchoredLocator,{project:t.project})}async function g9(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await Hw(t,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${lt(n.configuration,t)}`);return await T.mktempPromise(async g=>{let[,f]=u,h=await Vp({project:n,locator:t,binFolder:g});await Promise.all(Array.from(c,([d,[,m]])=>ba(h.BERRY_BIN_FOLDER,kr(d),process.execPath,[m])));let p;try{p=await to(process.execPath,[...l,f,...r],{cwd:i,env:h,stdin:s,stdout:o,stderr:a})}finally{await T.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function qFe(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await g9(t.anchoredLocator,e,r,{project:t.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var Ai={};it(Ai,{convertToZip:()=>lTe,extractArchiveTo:()=>uTe,makeArchiveFromDirectory:()=>ATe});var d_=ie(require("stream")),C_=ie(Z7());var u_=ie(require("os")),g_=ie(c_()),f_=ie(require("worker_threads")),IR=class{constructor(e){this.source=e;this.pool=[];this.queue=new g_.default({concurrency:Math.max(1,(0,u_.cpus)().length)});let r=setTimeout(()=>{if(!(this.queue.size!==0||this.queue.pending!==0)){for(let i of this.pool)i.terminate();this.pool=[]}},1e3).unref();this.queue.on("idle",()=>{r.refresh()})}run(e){return this.queue.add(()=>{var i;let r=(i=this.pool.pop())!=null?i:new f_.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return r.ref(),new Promise((n,s)=>{let o=a=>{a!==0&&s(new Error(`Worker exited with code ${a}`))};r.once("message",a=>{this.pool.push(r),r.unref(),r.off("error",s),r.off("exit",o),n(a)}),r.once("error",s),r.once("exit",o),r.postMessage(e)})})}};var m_=ie(p_());async function ATe(t,{baseFs:e=new Wt,prefixPath:r=Se.root,compressionLevel:i,inMemory:n=!1}={}){let s=await $i(),o;if(n)o=new Jr(null,{libzip:s,level:i});else{let l=await T.mktempPromise(),c=v.join(l,"archive.zip");o=new Jr(c,{create:!0,libzip:s,level:i})}let a=v.resolve(Se.root,r);return await o.copyPromise(a,t,{baseFs:e,stableTime:!0,stableSort:!0}),o}var E_;async function lTe(t,e){let r=await T.mktempPromise(),i=v.join(r,"archive.zip");return E_||(E_=new IR((0,m_.getContent)())),await E_.run({tmpFile:i,tgz:t,opts:e}),new Jr(i,{libzip:await $i(),level:e.compressionLevel})}async function*cTe(t){let e=new C_.default.Parse,r=new d_.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{r.write(i)}),e.on("error",i=>{r.destroy(i)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let i of r){let n=i;yield n,n.resume()}}async function uTe(t,e,{stripComponents:r=0,prefixPath:i=Se.dot}={}){var s,o;function n(a){if(a.path[0]==="/")return!0;let l=a.path.split(/\//g);return!!(l.some(c=>c==="..")||l.length<=r)}for await(let a of cTe(t)){if(n(a))continue;let l=v.normalize(M.toPortablePath(a.path)).replace(/\/$/,"").split(/\//g);if(l.length<=r)continue;let c=l.slice(r).join("/"),u=v.join(i,c),g=420;switch((a.type==="Directory"||(((s=a.mode)!=null?s:0)&73)!=0)&&(g|=73),a.type){case"Directory":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.mkdirSync(u,{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.writeFileSync(u,await Cu(a),{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.symlinkSync(a.linkpath,u),(o=e.lutimesSync)==null||o.call(e,u,mr.SAFE_TIME,mr.SAFE_TIME);break}}return e}var Hs={};it(Hs,{emitList:()=>gTe,emitTree:()=>b_,treeNodeToJson:()=>Q_,treeNodeToTreeify:()=>B_});var w_=ie(y_());function B_(t,{configuration:e}){let r={},i=(n,s)=>{let o=Array.isArray(n)?n.entries():Object.entries(n);for(let[a,{label:l,value:c,children:u}]of o){let g=[];typeof l!="undefined"&&g.push(Py(e,l,Gl.BOLD)),typeof c!="undefined"&&g.push(Ve(e,c[0],c[1])),g.length===0&&g.push(Py(e,`${a}`,Gl.BOLD));let f=g.join(": "),h=s[f]={};typeof u!="undefined"&&i(u,h)}};if(typeof t.children=="undefined")throw new Error("The root node must only contain children");return i(t.children,r),r}function Q_(t){let e=r=>{var s;if(typeof r.children=="undefined"){if(typeof r.value=="undefined")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Uu(r.value[0],r.value[1])}let i=Array.isArray(r.children)?r.children.entries():Object.entries((s=r.children)!=null?s:{}),n=Array.isArray(r.children)?[]:{};for(let[o,a]of i)n[o]=e(a);return typeof r.value=="undefined"?n:{value:Uu(r.value[0],r.value[1]),children:n}};return e(t)}function gTe(t,{configuration:e,stdout:r,json:i}){let n=t.map(s=>({value:s}));b_({children:n},{configuration:e,stdout:r,json:i})}function b_(t,{configuration:e,stdout:r,json:i,separators:n=0}){var o;if(i){let a=Array.isArray(t.children)?t.children.values():Object.values((o=t.children)!=null?o:{});for(let l of a)r.write(`${JSON.stringify(Q_(l))} -`);return}let s=(0,w_.asTree)(B_(t,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 -$1`).replace(/^│\n/,"")),n>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 -$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(s)}var v_=ie(require("crypto")),BR=ie(require("fs"));var fTe=8,Qt=class{constructor(e,{configuration:r,immutable:i=r.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,v_.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=i,this.check=n;let s=r.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=r.get("compressionLevel"),a=o!==pl?`c${o}`:"";this.cacheKey=[fTe,a].join("")}}static async find(e,{immutable:r,check:i}={}){let n=new Qt(e.get("cacheFolder"),{configuration:e,immutable:r,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${Mu(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let n=hTe(r).slice(0,10);return`${Mu(e)}-${n}.zip`}getLocatorPath(e,r,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?v.resolve(this.cwd,this.getVersionFilename(e)):r===null||QR(r)!==this.cacheKey?null:v.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?v.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await T.existsPromise(this.cwd))throw new nt(z.IMMUTABLE_CACHE,"Cache path does not exist.")}else{await T.mkdirPromise(this.cwd,{recursive:!0});let e=v.resolve(this.cwd,".gitignore");await T.changeFilePromise(e,`/.gitignore -*.flock -*.tmp -`)}(this.mirrorCwd||!this.immutable)&&await T.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,a){var l=a,{onHit:i,onMiss:n,loader:s}=l,o=qr(l,["onHit","onMiss","loader"]);var A;let c=this.getLocatorMirrorPath(e),u=new Wt,g=()=>{let V=new Jr(null,{libzip:H}),W=v.join(Se.root,Lx(e));return V.mkdirSync(W,{recursive:!0}),V.writeJsonSync(v.join(W,wt.manifest),{name:St(e),mocked:!0}),V},f=async(V,W=null)=>{let X=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Ey(V)}`:r;if(W!==null){let F=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Ey(W)}`:r;if(X!==F)throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&X!==r){let F;switch(this.check?F="throw":QR(r)!==QR(X)?F="update":F=this.configuration.get("checksumBehavior"),F){case"ignore":return r;case"update":return X;default:case"throw":throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the expected checksum")}}return X},h=async V=>{if(!s)throw new Error(`Cache check required but no loader configured for ${lt(this.configuration,e)}`);let W=await s(),X=W.getRealPath();return W.saveAndClose(),await T.chmodPromise(X,420),await f(V,X)},p=async()=>{if(c===null||!await T.existsPromise(c)){let V=await s(),W=V.getRealPath();return V.saveAndClose(),{source:"loader",path:W}}return{source:"mirror",path:c}},d=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${lt(this.configuration,e)}`);if(this.immutable)throw new nt(z.IMMUTABLE_CACHE,`Cache entry required but missing for ${lt(this.configuration,e)}`);let{path:V,source:W}=await p(),X=await f(V),F=this.getLocatorPath(e,X,o);if(!F)throw new Error("Assertion failed: Expected the cache path to be available");let D=[];W!=="mirror"&&c!==null&&D.push(async()=>{let pe=`${c}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,c)}),(!o.mirrorWriteOnly||c===null)&&D.push(async()=>{let pe=`${F}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,F)});let he=o.mirrorWriteOnly&&c!=null?c:F;return await Promise.all(D.map(pe=>pe())),[!1,he,X]},m=async()=>{let W=(async()=>{var Ne;let X=this.getLocatorPath(e,r,o),F=X!==null?await u.existsPromise(X):!1,D=!!((Ne=o.mockedPackages)==null?void 0:Ne.has(e.locatorHash))&&(!this.check||!F),he=D||F,pe=he?i:n;if(pe&&pe(),he){let Pe=null,qe=X;return D||(Pe=this.check?await h(qe):await f(qe)),[D,qe,Pe]}else return d()})();this.mutexes.set(e.locatorHash,W);try{return await W}finally{this.mutexes.delete(e.locatorHash)}};for(let V;V=this.mutexes.get(e.locatorHash);)await V;let[I,B,b]=await m();this.markedFiles.add(B);let R,H=await $i(),L=I?()=>g():()=>new Jr(B,{baseFs:u,libzip:H,readOnly:!0}),K=new oh(()=>Mv(()=>R=L(),V=>`Failed to open the cache entry for ${lt(this.configuration,e)}: ${V}`),v),J=new Xo(B,{baseFs:K,pathUtils:v}),ne=()=>{R==null||R.discardAndClose()},q=((A=o.unstablePackages)==null?void 0:A.has(e.locatorHash))?null:b;return[J,ne,q]}};function QR(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function hTe(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var F_=ie(x_()),NB=ie(ml());var N_=ie(Wp()),kR=ie(require("stream"));var k_={hooks:{reduceDependency:(t,e,r,i,{resolver:n,resolveOptions:s})=>{for(let{pattern:o,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(o.from&&o.from.fullName!==St(r)||o.from&&o.from.description&&o.from.description!==r.reference||o.descriptor.fullName!==St(t)||o.descriptor.description&&o.descriptor.description!==t.range)continue;return n.bindDescriptor(Yt(t,a),e.topLevelWorkspace.anchoredLocator,s)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let i=hp(t.configuration,r);await t.configuration.triggerHook(n=>n.validateWorkspace,r,{reportWarning:(n,s)=>e.reportWarning(n,`${i}: ${s}`),reportError:(n,s)=>e.reportError(n,`${i}: ${s}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let i of r.errors)e.reportWarning(z.INVALID_MANIFEST,i.message)}}};var vR=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));return i||null}getFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));if(!i)throw new nt(z.FETCHER_NOT_FOUND,`${lt(r.project.configuration,e)} isn't supported by any available fetcher`);return i}};var pd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,r,i)}async getSatisfying(e,r,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,r,i)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));return i||null}getResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));if(!i)throw new Error(`${Xt(r.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));return i||null}getResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));if(!i)throw new Error(`${lt(r.project.configuration,e)} isn't supported by any available resolver`);return i}};var P_=ie(Or());var Rg=/^(?!v)[a-z0-9._-]+$/i,SR=class{supportsDescriptor(e,r){return!!(Us(e.range)||Rg.test(e.range))}supportsLocator(e,r){return!!(P_.default.valid(e.reference)||Rg.test(e.reference))}shouldPersistResolution(e,r){return r.resolver.shouldPersistResolution(this.forwardLocator(e,r),r)}bindDescriptor(e,r,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),r,i)}getResolutionDependencies(e,r){return r.resolver.getResolutionDependencies(this.forwardDescriptor(e,r),r)}async getCandidates(e,r,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),r,i)}async getSatisfying(e,r,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),r,i)}async resolve(e,r){let i=await r.resolver.resolve(this.forwardLocator(e,r),r);return op(i,e)}forwardDescriptor(e,r){return Yt(e,`${r.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,r){return Vi(e,`${r.project.configuration.get("defaultProtocol")}${e.reference}`)}};var dd=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n);return r.fetcher.getLocalPath(s,r)}async fetch(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n),o=await r.fetcher.fetch(s,r);return await this.ensureVirtualLink(e,o,r)}getLocatorFilename(e){return Mu(e)}async ensureVirtualLink(e,r,i){let n=r.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Pr.makeVirtualPath(s,o,n),l=new Xo(a,{baseFs:r.packageFs,pathUtils:v});return _(P({},r),{packageFs:l})}};var Fg=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Fg.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Fg.protocol)}supportsDescriptor(e,r){return Fg.isVirtualDescriptor(e)}supportsLocator(e,r){return Fg.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},FB=Fg;FB.protocol="virtual:";var xR=class{supports(e){return!!e.reference.startsWith(Yr.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let i=this.getWorkspace(e,r).cwd;return{packageFs:new Ft(i),prefixPath:Se.dot,localPath:i}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Yr.protocol.length))}};var D_=ie(require("module"));function R_(){return new Set(D_.default.builtinModules||Object.keys(process.binding("natives")))}var dTe=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),LB="yarn_",PR=".yarnrc.yml",DR="yarn.lock",CTe="********",ge;(function(u){u.ANY="ANY",u.BOOLEAN="BOOLEAN",u.ABSOLUTE_PATH="ABSOLUTE_PATH",u.LOCATOR="LOCATOR",u.LOCATOR_LOOSE="LOCATOR_LOOSE",u.NUMBER="NUMBER",u.STRING="STRING",u.SECRET="SECRET",u.SHAPE="SHAPE",u.MAP="MAP"})(ge||(ge={}));var ps=Le,RR={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:ge.STRING,default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:ge.ABSOLUTE_PATH,default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:ge.BOOLEAN,default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:ge.BOOLEAN,default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:ge.STRING,default:null},globalFolder:{description:"Folder where are stored the system-wide settings",type:ge.ABSOLUTE_PATH,default:Rb()},cacheFolder:{description:"Folder where the cache files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:ge.NUMBER,values:["mixed",0,1,2,3,4,5,6,7,8,9],default:pl},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:ge.ABSOLUTE_PATH,default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:ge.STRING,default:DR},installStatePath:{description:"Path of the file where the install state will be persisted",type:ge.ABSOLUTE_PATH,default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:ge.STRING,default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:ge.STRING,default:TB()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:ge.BOOLEAN,default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:ge.BOOLEAN,default:xy,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:ge.BOOLEAN,default:Mx,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:ge.BOOLEAN,default:NB.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:ge.BOOLEAN,default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:ge.BOOLEAN,default:!NB.isCI&&process.stdout.isTTY&&process.stdout.columns>22,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:ge.BOOLEAN,default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:ge.BOOLEAN,default:NB.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:ge.BOOLEAN,default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:ge.BOOLEAN,default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:ge.STRING,default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:ge.STRING,default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:ge.STRING,default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:ge.BOOLEAN,default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:ge.SHAPE,properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:ge.BOOLEAN,default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:ge.STRING,default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:ge.NUMBER,default:6e4},httpRetry:{description:"Retry times on http failure",type:ge.NUMBER,default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:ge.NUMBER,default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:ge.BOOLEAN,default:!0},logFilters:{description:"Overrides for log levels",type:ge.SHAPE,isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:ge.STRING,default:void 0},text:{description:"Code of the texts covered by this override",type:ge.STRING,default:void 0},pattern:{description:"Code of the patterns covered by this override",type:ge.STRING,default:void 0},level:{description:"Log level override, set to null to remove override",type:ge.STRING,values:Object.values(Ts),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:ge.BOOLEAN,default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:ge.NUMBER,default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:ge.STRING,default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:ge.BOOLEAN,default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:ge.BOOLEAN,default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:ge.BOOLEAN,default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:ge.STRING,default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:ge.MAP,valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:ge.SHAPE,properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:ge.MAP,valueDefinition:{description:"A range",type:ge.STRING}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:ge.MAP,valueDefinition:{description:"A semver range",type:ge.STRING}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:ge.MAP,valueDefinition:{description:"The peerDependency meta",type:ge.SHAPE,properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:ge.BOOLEAN,default:!1}}}}}}}};function NR(t,e,r,i,n){if(i.isArray||i.type===ge.ANY&&Array.isArray(r))return Array.isArray(r)?r.map((s,o)=>FR(t,`${e}[${o}]`,s,i,n)):String(r).split(/,/).map(s=>FR(t,e,s,i,n));if(Array.isArray(r))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return FR(t,e,r,i,n)}function FR(t,e,r,i,n){var a;switch(i.type){case ge.ANY:return r;case ge.SHAPE:return mTe(t,e,r,i,n);case ge.MAP:return ETe(t,e,r,i,n)}if(r===null&&!i.isNullable&&i.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((a=i.values)==null?void 0:a.includes(r))return r;let o=(()=>{if(i.type===ge.BOOLEAN&&typeof r!="string")return Hh(r);if(typeof r!="string")throw new Error(`Expected value (${r}) to be a string`);let l=Ov(r,{env:process.env});switch(i.type){case ge.ABSOLUTE_PATH:return v.resolve(n,M.toPortablePath(l));case ge.LOCATOR_LOOSE:return Hl(l,!1);case ge.NUMBER:return parseInt(l);case ge.LOCATOR:return Hl(l);case ge.BOOLEAN:return Hh(l);default:return l}})();if(i.values&&!i.values.includes(o))throw new Error(`Invalid value, expected one of ${i.values.join(", ")}`);return o}function mTe(t,e,r,i,n){if(typeof r!="object"||Array.isArray(r))throw new me(`Object configuration settings "${e}" must be an object`);let s=LR(t,i,{ignoreArrays:!0});if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=`${e}.${o}`;if(!i.properties[o])throw new me(`Unrecognized configuration settings found: ${e}.${o} - run "yarn config -v" to see the list of settings supported in Yarn`);s.set(o,NR(t,l,a,i.properties[o],n))}return s}function ETe(t,e,r,i,n){let s=new Map;if(typeof r!="object"||Array.isArray(r))throw new me(`Map configuration settings "${e}" must be an object`);if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=i.normalizeKeys?i.normalizeKeys(o):o,c=`${e}['${l}']`,u=i.valueDefinition;s.set(l,NR(t,c,a,u,n))}return s}function LR(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case ge.SHAPE:{if(e.isArray&&!r)return[];let i=new Map;for(let[n,s]of Object.entries(e.properties))i.set(n,LR(t,s));return i}break;case ge.MAP:return e.isArray&&!r?[]:new Map;case ge.ABSOLUTE_PATH:return e.default===null?null:t.projectCwd===null?v.isAbsolute(e.default)?v.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(i=>v.resolve(t.projectCwd,i)):v.resolve(t.projectCwd,e.default);default:return e.default}}function MB(t,e,r){if(e.type===ge.SECRET&&typeof t=="string"&&r.hideSecrets)return CTe;if(e.type===ge.ABSOLUTE_PATH&&typeof t=="string"&&r.getNativePaths)return M.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let i=[];for(let n of t)i.push(MB(n,e,r));return i}if(e.type===ge.MAP&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries())i.set(n,MB(s,e.valueDefinition,r));return i}if(e.type===ge.SHAPE&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries()){let o=e.properties[n];i.set(n,MB(s,o,r))}return i}return t}function ITe(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),!!e.startsWith(LB)&&(e=(0,F_.default)(e.slice(LB.length)),t[e]=r);return t}function TB(){let t=`${LB}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return PR}var KA;(function(i){i[i.LOCKFILE=0]="LOCKFILE",i[i.MANIFEST=1]="MANIFEST",i[i.NONE=2]="NONE"})(KA||(KA={}));var Ra=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,i){let n=new Ra(e);typeof r!="undefined"&&!(r instanceof Map)&&(n.projectCwd=r),n.importSettings(RR);let s=typeof i!="undefined"?i:r instanceof Map?r:new Map;for(let[o,a]of s)n.activatePlugin(o,a);return n}static async find(e,r,{lookup:i=0,strict:n=!0,usePath:s=!1,useRc:o=!0}={}){let a=ITe();delete a.rcFilename;let l=await Ra.findRcFiles(e),c=await Ra.findHomeRcFile();if(c){let I=l.find(B=>B.path===c.path);I?I.strict=!1:l.push(_(P({},c),{strict:!1}))}let u=({ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R})=>({ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R}),g=L=>{var K=L,{ignoreCwd:I,yarnPath:B,ignorePath:b,lockfileFilename:R}=K,H=qr(K,["ignoreCwd","yarnPath","ignorePath","lockfileFilename"]);return H},f=new Ra(e);f.importSettings(u(RR)),f.useWithSource("",u(a),e,{strict:!1});for(let{path:I,cwd:B,data:b}of l)f.useWithSource(I,u(b),B,{strict:!1});if(s){let I=f.get("yarnPath"),B=f.get("ignorePath");if(I!==null&&!B)return f}let h=f.get("lockfileFilename"),p;switch(i){case 0:p=await Ra.findProjectCwd(e,h);break;case 1:p=await Ra.findProjectCwd(e,null);break;case 2:T.existsSync(v.join(e,"package.json"))?p=v.resolve(e):p=null;break}f.startingCwd=e,f.projectCwd=p,f.importSettings(g(RR));let d=new Map([["@@core",k_]]),m=I=>"default"in I?I.default:I;if(r!==null){for(let R of r.plugins.keys())d.set(R,m(r.modules.get(R)));let I=new Map;for(let R of R_())I.set(R,()=>mu(R));for(let[R,H]of r.modules)I.set(R,()=>H);let B=new Set,b=async(R,H)=>{let{factory:L,name:K}=mu(R);if(B.has(K))return;let J=new Map(I),ne=A=>{if(J.has(A))return J.get(A)();throw new me(`This plugin cannot access the package referenced via ${A} which is neither a builtin, nor an exposed entry`)},q=await du(async()=>m(await L(ne)),A=>`${A} (when initializing ${K}, defined in ${H})`);I.set(K,()=>q),B.add(K),d.set(K,q)};if(a.plugins)for(let R of a.plugins.split(";")){let H=v.resolve(e,M.toPortablePath(R));await b(H,"")}for(let{path:R,cwd:H,data:L}of l)if(!!o&&!!Array.isArray(L.plugins))for(let K of L.plugins){let J=typeof K!="string"?K.path:K,ne=v.resolve(H,M.toPortablePath(J));await b(ne,R)}}for(let[I,B]of d)f.activatePlugin(I,B);f.useWithSource("",g(a),e,{strict:n});for(let{path:I,cwd:B,data:b,strict:R}of l)f.useWithSource(I,g(b),B,{strict:R!=null?R:n});return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),await f.refreshPackageExtensions(),f}static async findRcFiles(e){let r=TB(),i=[],n=e,s=null;for(;n!==s;){s=n;let o=v.join(s,r);if(T.existsSync(o)){let a=await T.readFilePromise(o,"utf8"),l;try{l=Ii(a)}catch(c){let u="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(u=" (in particular, make sure you list the colons after each key name)"),new me(`Parse error when loading ${o}; please check it's proper Yaml${u}`)}i.push({path:o,cwd:s,data:l})}n=v.dirname(s)}return i}static async findHomeRcFile(){let e=TB(),r=uh(),i=v.join(r,e);if(T.existsSync(i)){let n=await T.readFilePromise(i,"utf8"),s=Ii(n);return{path:i,cwd:r,data:s}}return null}static async findProjectCwd(e,r){let i=null,n=e,s=null;for(;n!==s;){if(s=n,T.existsSync(v.join(s,"package.json"))&&(i=s),r!==null){if(T.existsSync(v.join(s,r))){i=s;break}}else if(i!==null)break;n=v.dirname(s)}return i}static async updateConfiguration(e,r){let i=TB(),n=v.join(e,i),s=T.existsSync(n)?Ii(await T.readFilePromise(n,"utf8")):{},o=!1,a;if(typeof r=="function"){try{a=r(s)}catch{a=r({})}if(a===s)return}else{a=s;for(let l of Object.keys(r)){let c=s[l],u=r[l],g;if(typeof u=="function")try{g=u(c)}catch{g=u(void 0)}else g=u;c!==g&&(a[l]=g,o=!0)}if(!o)return}await T.changeFilePromise(n,Qa(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let r=uh();return await Ra.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration!="undefined"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,i]of Object.entries(e))if(i!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,i),this.values.set(r,LR(this,i))}}useWithSource(e,r,i,n){try{this.use(e,r,i,n)}catch(s){throw s.message+=` (in ${Ve(this,e,Le.PATH)})`,s}}use(e,r,i,{strict:n=!0,overwrite:s=!1}={}){n=n&&this.get("enableStrictSettings");for(let o of["enableStrictSettings",...Object.keys(r)]){if(typeof r[o]=="undefined"||o==="plugins"||e===""&&dTe.has(o))continue;if(o==="rcFilename")throw new me(`The rcFilename settings can only be set via ${`${LB}RC_FILENAME`.toUpperCase()}, not via a rc file`);let l=this.settings.get(o);if(!l){if(n)throw new me(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(s||l.type===ge.MAP||l.isArray&&l.concatenateValues))continue;let c;try{c=NR(this,o,r[o],l,i)}catch(u){throw u.message+=` in ${Ve(this,e,Le.PATH)}`,u}if(o==="enableStrictSettings"&&e!==""){n=c;continue}if(l.type===ge.MAP){let u=this.values.get(o);this.values.set(o,new Map(s?[...u,...c]:[...c,...u])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(l.isArray&&l.concatenateValues){let u=this.values.get(o);this.values.set(o,s?[...u,...c]:[...c,...u]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,c),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:i=!1}){let n=this.get(e),s=this.settings.get(e);if(typeof s=="undefined")throw new me(`Couldn't find a configuration settings named "${e}"`);return MB(n,s,{hideSecrets:r,getNativePaths:i})}getSubprocessStreams(e,{header:r,prefix:i,report:n}){let s,o,a=T.createWriteStream(e);if(this.get("enableInlineBuilds")){let l=n.createStreamReporter(`${i} ${Ve(this,"STDOUT","green")}`),c=n.createStreamReporter(`${i} ${Ve(this,"STDERR","red")}`);s=new kR.PassThrough,s.pipe(l),s.pipe(a),o=new kR.PassThrough,o.pipe(c),o.pipe(a)}else s=a,o=a,typeof r!="undefined"&&s.write(`${r} -`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let i of r.resolvers||[])e.push(new i);return new pd([new FB,new Yr,new SR,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let i of r.fetchers||[])e.push(new i);return new vR([new dd,new xR,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let i of r.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=this.get("supportedArchitectures"),r=e.get("os");r!==null&&(r=r.map(n=>n==="current"?process.platform:n));let i=e.get("cpu");return i!==null&&(i=i.map(n=>n==="current"?process.arch:n)),{os:r,cpu:i}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(i,n,{userProvided:s=!1}={})=>{if(!Us(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new Ze;o.load(n,{yamlCompatibilityMode:!0});let a=hu(e,i.identHash),l=[];a.push([i.range,l]);let c={status:ki.Inactive,userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push(_(P({},c),{type:oi.Dependency,descriptor:u}));for(let u of o.peerDependencies.values())l.push(_(P({},c),{type:oi.PeerDependency,descriptor:u}));for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push(_(P({},c),{type:oi.PeerDependencyMeta,selector:u,key:f,value:h}))};await this.triggerHook(i=>i.registerPackageExtensions,this,r);for(let[i,n]of this.get("packageExtensions"))r(pA(i,!0),aI(n),{userProvided:!0})}normalizePackage(e){let r=ap(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i!="undefined"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!lc(s,o))for(let l of a)switch(l.status===ki.Inactive&&(l.status=ki.Redundant),l.type){case oi.Dependency:typeof r.dependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.dependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependency:typeof r.peerDependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependencyMeta:{let c=r.peerDependenciesMeta.get(l.selector);(typeof c=="undefined"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status=ki.Active,na(r.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:Lv(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of r.peerDependenciesMeta.keys()){let o=En(s);r.peerDependencies.has(o.identHash)||r.peerDependencies.set(o.identHash,Yt(o,"*"))}for(let s of r.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=Eo("types",o),l=St(a);r.peerDependencies.has(a.identHash)||r.peerDependenciesMeta.has(l)||(r.peerDependencies.set(a.identHash,Yt(a,"*")),r.peerDependenciesMeta.set(l,{optional:!0}))}return r.dependencies=new Map(gn(r.dependencies,([,s])=>In(s))),r.peerDependencies=new Map(gn(r.peerDependencies,([,s])=>In(s))),r}getLimit(e){return na(this.limits,e,()=>(0,N_.default)(this.get(e)))}async triggerHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...r)}}async triggerMultipleHooks(e,r){for(let i of r)await this.triggerHook(e,...i)}async reduceHook(e,r,...i){let n=r;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...r);if(typeof o!="undefined")return o}return null}},fe=Ra;fe.telemetry=null;var Gn;(function(r){r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE"})(Gn||(Gn={}));var Fa=class extends Xi{constructor({configuration:e,stdout:r,suggestInstall:i=!0}){super();this.errorCount=0;Cp(this,{configuration:e}),this.configuration=e,this.stdout=r,this.suggestInstall=i}static async start(e,r){let i=new this(e);try{await r(i)}catch(n){i.reportExceptionOnce(n)}finally{await i.finalize()}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){this.errorCount+=1,this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(e)}: ${r} -`)}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){this.errorCount>0&&(this.stdout.write(` -`),this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. -`),this.suggestInstall&&this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. -`))}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:!1})}};var t0=ie(require("crypto")),v$=ie(CX()),r0=ie(Q$()),S$=ie(Wp()),x$=ie(Or()),lF=ie(require("util")),cF=ie(require("v8")),uF=ie(require("zlib"));var iUe=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,i)=>`${r}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/(?:[^\\.]+)\.jfrog\.io\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>by({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oF=class{constructor(){this.resolutions=null}async setup(e,{report:r}){let i=v.join(e.cwd,e.configuration.get("lockfileFilename"));if(!T.existsSync(i))return;let n=await T.readFilePromise(i,"utf8"),s=Ii(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=gp(a);if(!l){r.reportWarning(z.YARN_IMPORT_FAILED,`Failed to parse the string "${a}" into a proper descriptor`);continue}Us(l.range)&&(l=Yt(l,`npm:${l.range}`));let{version:c,resolved:u}=s[a];if(!u)continue;let g;for(let[h,p]of iUe){let d=u.match(h);if(d){g=p(c,...d);break}}if(!g){r.reportWarning(z.YARN_IMPORT_FAILED,`${Xt(e.configuration,l)}: Only some patterns can be imported from legacy lockfiles (not "${u}")`);continue}let f=l;try{let h=Tu(l.range),p=gp(h.selector,!0);p&&(f=p)}catch{}o.set(l.descriptorHash,Vi(f,g))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var aF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(By(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){let n=i.project.originalPackages.get(By(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var AF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.resolver.bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};var ei=class extends Xi{reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){}};var b$=ie(vx());var Dd=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.dependencies=new Map;this.project=r,this.cwd=e}async setup(){this.manifest=T.existsSync(v.join(this.cwd,Ze.fileName))?await Ze.find(this.cwd):new Ze,this.relativeCwd=v.relative(this.project.cwd,this.cwd)||Se.dot;let e=this.manifest.name?this.manifest.name:Eo(null,`${this.computeCandidateName()}-${zi(this.relativeCwd).substr(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=Vi(e,r),this.anchoredDescriptor=Yt(this.locator,`${Yr.protocol}${this.relativeCwd}`),this.anchoredLocator=Vi(this.locator,`${Yr.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:s})=>s),n=await(0,b$.default)(i,{cwd:M.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort();for(let s of n){let o=v.resolve(this.cwd,M.toPortablePath(s));T.existsSync(v.join(o,"package.json"))&&this.workspacesCwds.add(o)}}accepts(e){var o;let r=e.indexOf(":"),i=r!==-1?e.slice(0,r+1):null,n=r!==-1?e.slice(r+1):e;if(i===Yr.protocol&&v.normalize(n)===this.relativeCwd||i===Yr.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=Us(n);return s?i===Yr.protocol?s.test((o=this.manifest.version)!=null?o:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${v.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of e)for(let o of n.manifest[s].values()){let a=this.project.tryWorkspaceByDescriptor(o);a===null||r.has(a)||(r.add(a),i(a))}};return i(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of this.project.workspaces)e.some(a=>[...s.manifest[a].values()].some(l=>{let c=this.project.tryWorkspaceByDescriptor(l);return c!==null&&up(c.anchoredLocator,n.anchoredLocator)}))&&!r.has(s)&&(r.add(s),i(s))};return i(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let i=this.project.workspacesByCwd.get(r);i&&e.push(i,...i.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=v.join(this.cwd,Ze.fileName),i=`${JSON.stringify(e,null,this.manifest.indent)} -`;await T.changeFilePromise(r,i,{automaticNewlines:!0}),this.manifest.raw=e}};var k$=5,nUe=1,sUe=/ *, */g,P$=/\/$/,oUe=32,aUe=(0,lF.promisify)(uF.default.gzip),AUe=(0,lF.promisify)(uF.default.gunzip),li;(function(r){r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build"})(li||(li={}));var gF={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},D$=t=>zi(`${nUe}`,t),Ke=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var c,u,g;if(!e.projectCwd)throw new me(`No project found in ${r}`);let i=e.projectCwd,n=r,s=null;for(;s!==e.projectCwd;){if(s=n,T.existsSync(v.join(s,wt.manifest))){i=s;break}n=v.dirname(s)}let o=new Ke(e.projectCwd,{configuration:e});(c=fe.telemetry)==null||c.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(u=fe.telemetry)==null||u.reportWorkspaceCount(o.workspaces.length),(g=fe.telemetry)==null||g.reportDependencyCount(o.workspaces.reduce((f,h)=>f+h.manifest.dependencies.size+h.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};throw new me(`The nearest package directory (${Ve(e,i,Le.PATH)}) doesn't seem to be part of the project declared in ${Ve(e,o.cwd,Le.PATH)}. - -- If the project directory is right, it might be that you forgot to list ${Ve(e,v.relative(o.cwd,i),Le.PATH)} as a workspace. -- If it isn't, it's likely because you have a yarn.lock or package.json file there, confusing the project root detection.`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(T.existsSync(e)){let n=await T.readFilePromise(e,"utf8");this.lockFileChecksum=D$(n);let s=Ii(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o0;){let r=e;e=[];for(let i of r){if(this.workspacesByCwd.has(i))continue;let n=await this.addWorkspace(i),s=this.storedPackages.get(n.anchoredLocator.locatorHash);s&&(n.dependencies=s.dependencies);for(let o of n.workspacesCwds)e.push(o)}}}async addWorkspace(e){let r=new Dd(e,{project:this});await r.setup();let i=this.workspacesByIdent.get(r.locator.identHash);if(typeof i!="undefined")throw new Error(`Duplicate workspace name ${Vr(this.configuration,r.locator)}: ${M.fromPortablePath(e)} conflicts with ${M.fromPortablePath(i.cwd)}`);return this.workspaces.push(r),this.workspacesByCwd.set(e,r),this.workspacesByIdent.set(r.locator.identHash,r),r}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){v.isAbsolute(e)||(e=v.resolve(this.cwd,e)),e=v.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let i of this.workspaces)v.relative(i.cwd,e).startsWith("../")||r&&r.cwd.length>=i.cwd.length||(r=i);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r=="undefined"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${Vr(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){let r=this.tryWorkspaceByIdent(e);return r===null||(hA(e)&&(e=Ap(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${Xt(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Io(e)&&(e=lp(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${lt(this.configuration,e)})`);return r}refreshWorkspaceDependencies(){for(let e of this.workspaces){let r=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!r)throw new Error(`Assertion failed: Expected workspace ${hp(this.configuration,e)} (${Ve(this.configuration,v.join(e.cwd,wt.manifest),Le.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(r.dependencies)}}forgetResolution(e){let r=n=>{this.storedResolutions.delete(n),this.storedDescriptors.delete(n)},i=n=>{this.originalPackages.delete(n),this.storedPackages.delete(n),this.accessibleLocators.delete(n)};if("descriptorHash"in e){let n=this.storedResolutions.get(e.descriptorHash);r(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof n!="undefined"&&!s.has(n)&&i(n)}if("locatorHash"in e){i(e.locatorHash);for(let[n,s]of this.storedResolutions)s===e.locatorHash&&r(n)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let r of this.originalPackages.values()){let i;try{i=e.shouldPersistResolution(r,{project:this,resolver:e})}catch{i=!1}i||this.forgetResolution(r)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,i]of e.dependencies)hA(i)&&e.dependencies.set(r,Ap(i))}getDependencyMeta(e,r){let i={},s=this.topLevelWorkspace.manifest.dependenciesMeta.get(St(e));if(!s)return i;let o=s.get(null);if(o&&Object.assign(i,o),r===null||!x$.default.valid(r))return i;for(let[a,l]of s)a!==null&&a===r&&Object.assign(i,l);return i}async findLocatorForLocation(e,{strict:r=!1}={}){let i=new ei,n=this.configuration.getLinkers(),s={project:this,report:i};for(let o of n){let a=await o.findPackageLocator(e,s);if(a){if(r&&(await o.findPackageLocation(a,s)).replace(P$,"")!==e.replace(P$,""))continue;return a}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),i=new oF;await i.setup(this,{report:e.report});let n=e.lockfileOnly?[new AF(r)]:[i,r],s=new pd([new aF(r),...n]),o=this.configuration.makeFetcher(),a=e.lockfileOnly?{project:this,report:e.report,resolver:s}:{project:this,report:e.report,resolver:s,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:o,cacheOptions:{mirrorWriteOnly:!0}}},l=new Map,c=new Map,u=new Map,g=new Map,f=new Map,h=new Map,p=this.topLevelWorkspace.anchoredLocator,d=new Set,m=[],I=async W=>{let X=await du(async()=>await s.resolve(W,a),D=>`${lt(this.configuration,W)}: ${D}`);if(!up(W,X))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${lt(this.configuration,W)} to ${lt(this.configuration,X)})`);g.set(X.locatorHash,X);let F=this.configuration.normalizePackage(X);for(let[D,he]of F.dependencies){let pe=await this.configuration.reduceHook(Pe=>Pe.reduceDependency,he,this,F,he,{resolver:s,resolveOptions:a});if(!cp(he,pe))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let Ne=s.bindDescriptor(pe,W,a);F.dependencies.set(D,Ne)}return m.push(Promise.all([...F.dependencies.values()].map(D=>H(D)))),c.set(F.locatorHash,F),F},B=async W=>{let X=f.get(W.locatorHash);if(typeof X!="undefined")return X;let F=Promise.resolve().then(()=>I(W));return f.set(W.locatorHash,F),F},b=async(W,X)=>{let F=await H(X);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,F.locatorHash),F},R=async W=>{let X=this.resolutionAliases.get(W.descriptorHash);if(typeof X!="undefined")return b(W,this.storedDescriptors.get(X));let F=s.getResolutionDependencies(W,a),D=new Map(await Promise.all(F.map(async Ne=>{let Pe=s.bindDescriptor(Ne,p,a),qe=await H(Pe);return d.add(qe.locatorHash),[Ne.descriptorHash,qe]}))),pe=(await du(async()=>await s.getCandidates(W,D,a),Ne=>`${Xt(this.configuration,W)}: ${Ne}`))[0];if(typeof pe=="undefined")throw new Error(`${Xt(this.configuration,W)}: No candidates found`);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,pe.locatorHash),B(pe)},H=W=>{let X=h.get(W.descriptorHash);if(typeof X!="undefined")return X;l.set(W.descriptorHash,W);let F=Promise.resolve().then(()=>R(W));return h.set(W.descriptorHash,F),F};for(let W of this.workspaces){let X=W.anchoredDescriptor;m.push(H(X))}for(;m.length>0;){let W=[...m];m.length=0,await Promise.all(W)}let L=new Set(this.resolutionAliases.values()),K=new Set(c.keys()),J=new Set,ne=new Map;lUe({project:this,report:e.report,accessibleLocators:J,volatileDescriptors:L,optionalBuilds:K,peerRequirements:ne,allDescriptors:l,allResolutions:u,allPackages:c});for(let W of d)K.delete(W);for(let W of L)l.delete(W),u.delete(W);let q=this.configuration.getSupportedArchitectures(),A=new Set,V=new Set;for(let W of c.values())W.conditions!=null&&(!K.has(W.locatorHash)||(Sy(W,q)||(Sy(W,{os:[process.platform],cpu:[process.arch]})&&e.report.reportWarningOnce(z.GHOST_ARCHITECTURE,`${lt(this.configuration,W)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ve(this.configuration,"supportedArchitectures",ps.SETTING)} setting`),V.add(W.locatorHash)),A.add(W.locatorHash)));this.storedResolutions=u,this.storedDescriptors=l,this.storedPackages=c,this.accessibleLocators=J,this.conditionalLocators=A,this.disabledLocators=V,this.originalPackages=g,this.optionalBuilds=K,this.peerRequirements=ne,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:r,fetcher:i,mode:n}){let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,cacheOptions:s},l=Array.from(new Set(gn(this.storedResolutions.values(),[f=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");return is(h)}])));n===li.UpdateLockfile&&(l=l.filter(f=>!this.storedChecksums.has(f)));let c=!1,u=Xi.progressViaCounter(l.length);r.reportProgress(u);let g=(0,S$.default)(oUe);if(await r.startCacheReport(async()=>{await Promise.all(l.map(f=>g(async()=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");if(Io(h))return;let p;try{p=await o.fetch(h,a)}catch(d){d.message=`${lt(this.configuration,h)}: ${d.message}`,r.reportExceptionOnce(d),c=d;return}p.checksum!=null?this.storedChecksums.set(h.locatorHash,p.checksum):this.storedChecksums.delete(h.locatorHash),p.releaseFs&&p.releaseFs()}).finally(()=>{u.tick()})))}),c)throw c}async linkEverything({cache:e,report:r,fetcher:i,mode:n}){var A,V,W;let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,skipIntegrityCheck:!0,cacheOptions:s},l=this.configuration.getLinkers(),c={project:this,report:r},u=new Map(l.map(X=>{let F=X.makeInstaller(c),D=F.getCustomDataKey(),he=this.installersCustomData.get(D);return typeof he!="undefined"&&F.attachCustomData(he),[X,F]})),g=new Map,f=new Map,h=new Map,p=new Map(await Promise.all([...this.accessibleLocators].map(async X=>{let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");return[X,await o.fetch(F,a)]}))),d=[];for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(typeof F=="undefined")throw new Error("Assertion failed: The locator should have been registered");let D=p.get(F.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The fetch result should have been registered");let he=[],pe=Pe=>{he.push(Pe)},Ne=this.tryWorkspaceByLocator(F);if(Ne!==null){let Pe=[],{scripts:qe}=Ne.manifest;for(let se of["preinstall","install","postinstall"])qe.has(se)&&Pe.push([Gn.SCRIPT,se]);try{for(let[se,be]of u)if(se.supportsPackage(F,c)&&(await be.installPackage(F,D,{holdFetchResult:pe})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{he.length===0?(A=D.releaseFs)==null||A.call(D):d.push(Promise.all(he).catch(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}let re=v.join(D.packageFs.getRealPath(),D.prefixPath);f.set(F.locatorHash,re),!Io(F)&&Pe.length>0&&h.set(F.locatorHash,{directives:Pe,buildLocations:[re]})}else{let Pe=l.find(se=>se.supportsPackage(F,c));if(!Pe)throw new nt(z.LINKER_NOT_FOUND,`${lt(this.configuration,F)} isn't supported by any available linker`);let qe=u.get(Pe);if(!qe)throw new Error("Assertion failed: The installer should have been registered");let re;try{re=await qe.installPackage(F,D,{holdFetchResult:pe})}finally{he.length===0?(V=D.releaseFs)==null||V.call(D):d.push(Promise.all(he).then(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}g.set(F.locatorHash,Pe),f.set(F.locatorHash,re.packageLocation),re.buildDirective&&re.buildDirective.length>0&&re.packageLocation&&h.set(F.locatorHash,{directives:re.buildDirective,buildLocations:[re.packageLocation]})}}let m=new Map;for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");let D=this.tryWorkspaceByLocator(F)!==null,he=async(pe,Ne)=>{let Pe=f.get(F.locatorHash);if(typeof Pe=="undefined")throw new Error(`Assertion failed: The package (${lt(this.configuration,F)}) should have been registered`);let qe=[];for(let re of F.dependencies.values()){let se=this.storedResolutions.get(re.descriptorHash);if(typeof se=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,re)}, from ${lt(this.configuration,F)})should have been registered`);let be=this.storedPackages.get(se);if(typeof be=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);let ae=this.tryWorkspaceByLocator(be)===null?g.get(se):null;if(typeof ae=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);ae===pe||ae===null?f.get(be.locatorHash)!==null&&qe.push([re,be]):!D&&Pe!==null&&hu(m,se).push(Pe)}Pe!==null&&await Ne.attachInternalDependencies(F,qe)};if(D)for(let[pe,Ne]of u)pe.supportsPackage(F,c)&&await he(pe,Ne);else{let pe=g.get(F.locatorHash);if(!pe)throw new Error("Assertion failed: The linker should have been found");let Ne=u.get(pe);if(!Ne)throw new Error("Assertion failed: The installer should have been registered");await he(pe,Ne)}}for(let[X,F]of m){let D=this.storedPackages.get(X);if(!D)throw new Error("Assertion failed: The package should have been registered");let he=g.get(D.locatorHash);if(!he)throw new Error("Assertion failed: The linker should have been found");let pe=u.get(he);if(!pe)throw new Error("Assertion failed: The installer should have been registered");await pe.attachExternalDependents(D,F)}let I=new Map;for(let X of u.values()){let F=await X.finalizeInstall();for(let D of(W=F==null?void 0:F.records)!=null?W:[])h.set(D.locatorHash,{directives:D.buildDirective,buildLocations:D.buildLocations});typeof(F==null?void 0:F.customData)!="undefined"&&I.set(X.getCustomDataKey(),F.customData)}if(this.installersCustomData=I,await Promise.all(d),n===li.SkipBuild)return;let B=new Set(this.storedPackages.keys()),b=new Set(h.keys());for(let X of b)B.delete(X);let R=(0,t0.createHash)("sha512");R.update(process.versions.node),await this.configuration.triggerHook(X=>X.globalHashGeneration,this,X=>{R.update("\0"),R.update(X)});let H=R.digest("hex"),L=new Map,K=X=>{let F=L.get(X.locatorHash);if(typeof F!="undefined")return F;let D=this.storedPackages.get(X.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The package should have been registered");let he=(0,t0.createHash)("sha512");he.update(X.locatorHash),L.set(X.locatorHash,"");for(let pe of D.dependencies.values()){let Ne=this.storedResolutions.get(pe.descriptorHash);if(typeof Ne=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,pe)}) should have been registered`);let Pe=this.storedPackages.get(Ne);if(typeof Pe=="undefined")throw new Error("Assertion failed: The package should have been registered");he.update(K(Pe))}return F=he.digest("hex"),L.set(X.locatorHash,F),F},J=(X,F)=>{let D=(0,t0.createHash)("sha512");D.update(H),D.update(K(X));for(let he of F)D.update(he);return D.digest("hex")},ne=new Map,q=!1;for(;b.size>0;){let X=b.size,F=[];for(let D of b){let he=this.storedPackages.get(D);if(!he)throw new Error("Assertion failed: The package should have been registered");let pe=!0;for(let qe of he.dependencies.values()){let re=this.storedResolutions.get(qe.descriptorHash);if(!re)throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,qe)}) should have been registered`);if(b.has(re)){pe=!1;break}}if(!pe)continue;b.delete(D);let Ne=h.get(he.locatorHash);if(!Ne)throw new Error("Assertion failed: The build directive should have been registered");let Pe=J(he,Ne.buildLocations);if(this.storedBuildState.get(he.locatorHash)===Pe){ne.set(he.locatorHash,Pe);continue}q||(await this.persistInstallStateFile(),q=!0),this.storedBuildState.has(he.locatorHash)?r.reportInfo(z.MUST_REBUILD,`${lt(this.configuration,he)} must be rebuilt because its dependency tree changed`):r.reportInfo(z.MUST_BUILD,`${lt(this.configuration,he)} must be built because it never has been before or the last one failed`);for(let qe of Ne.buildLocations){if(!v.isAbsolute(qe))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${qe})`);F.push((async()=>{for(let[re,se]of Ne.directives){let be=`# This file contains the result of Yarn building a package (${is(he)}) -`;switch(re){case Gn.SCRIPT:be+=`# Script name: ${se} -`;break;case Gn.SHELLCODE:be+=`# Script code: ${se} -`;break}let ae=null;if(!await T.mktempPromise(async De=>{let $=v.join(De,"build.log"),{stdout:G,stderr:Ce}=this.configuration.getSubprocessStreams($,{header:be,prefix:lt(this.configuration,he),report:r}),ee;try{switch(re){case Gn.SCRIPT:ee=await Uw(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break;case Gn.SHELLCODE:ee=await rD(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break}}catch(Oe){Ce.write(Oe.stack),ee=1}if(G.end(),Ce.end(),ee===0)return ne.set(he.locatorHash,Pe),!0;T.detachTemp(De);let Ue=`${lt(this.configuration,he)} couldn't be built successfully (exit code ${Ve(this.configuration,ee,Le.NUMBER)}, logs can be found here: ${Ve(this.configuration,$,Le.PATH)})`;return this.optionalBuilds.has(he.locatorHash)?(r.reportInfo(z.BUILD_FAILED,Ue),ne.set(he.locatorHash,Pe),!0):(r.reportError(z.BUILD_FAILED,Ue),!1)}))return}})())}}if(await Promise.all(F),X===b.size){let D=Array.from(b).map(he=>{let pe=this.storedPackages.get(he);if(!pe)throw new Error("Assertion failed: The package should have been registered");return lt(this.configuration,pe)}).join(", ");r.reportError(z.CYCLIC_DEPENDENCIES,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${D})`);break}}this.storedBuildState=ne}async install(e){var a,l;let r=this.configuration.get("nodeLinker");(a=fe.telemetry)==null||a.reportInstall(r),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status=ki.Inactive;let i=v.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await T.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=Ve(this.configuration,g,Le.PACKAGE_EXTENSION);switch(g.status){case ki.Inactive:e.report.reportWarning(z.UNUSED_PACKAGE_EXTENSION,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case ki.Redundant:e.report.reportWarning(z.REDUNDANT_PACKAGE_EXTENSION,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=ul(n,this.generateLockfile());if(c!==n){let u=(0,v$.structuredPatch)(i,i,n,c);e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.ADDED)):f.startsWith("-")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.REMOVED)):e.report.reportInfo(null,Ve(this.configuration,f,"grey"))}throw e.report.reportSeparator(),new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status===ki.Active&&((l=fe.telemetry)==null||l.reportPackageExtension(Uu(g,Le.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject=="undefined"||e.persistProject)&&e.mode!==li.UpdateLockfile&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>Iy(c,{cwd:this.cwd})));(typeof e.persistProject=="undefined"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode===li.UpdateLockfile){e.report.reportWarning(z.UPDATE_LOCKFILE_ONLY_SKIP_LINK,`Skipped due to ${Ve(this.configuration,"mode=update-lockfile",Le.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>Iy(u,{cwd:this.cwd})));for(let u=0;uc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let r={};r.__metadata={version:k$,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>In(f)).sort().join(", "),c=new Ze;c.version=o.linkType===gt.HARD?o.version:"0.0.0-use.local",c.languageName=o.languageName,c.dependencies=new Map(o.dependencies),c.peerDependencies=new Map(o.peerDependencies),c.dependenciesMeta=new Map(o.dependenciesMeta),c.peerDependenciesMeta=new Map(o.peerDependenciesMeta),c.bin=new Map(o.bin);let u,g=this.storedChecksums.get(o.locatorHash);if(typeof g!="undefined"){let f=g.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let h=g.slice(0,f),p=g.slice(f+1);typeof r.__metadata.cacheKey=="undefined"&&(r.__metadata.cacheKey=h),h===r.__metadata.cacheKey?u=p:u=g}r[l]=_(P({},c.exportTo({},{compatibilityMode:!1})),{linkType:o.linkType.toLowerCase(),resolution:is(o),checksum:u,conditions:o.conditions||void 0})}return`${[`# This file is generated by running "yarn install" inside your project. -`,`# Manual changes might be lost - proceed with caution! -`].join("")} -`+Qa(r)}async persistLockfile(){let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await T.readFilePromise(e,"utf8")}catch(s){}let i=this.generateLockfile(),n=ul(r,i);n!==r&&(await T.writeFilePromise(e,n),this.lockFileChecksum=D$(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(gF))e.push(...o);let r=(0,r0.default)(this,e),i=cF.default.serialize(r),n=zi(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await T.mkdirPromise(v.dirname(s),{recursive:!0}),await T.writeFilePromise(s,await aUe(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath");if(!T.existsSync(n)){r&&await this.applyLightResolution();return}let s=await AUe(await T.readFilePromise(n));this.installStateChecksum=zi(s);let o=cF.default.deserialize(s);e&&typeof o.installersCustomData!="undefined"&&(this.installersCustomData=o.installersCustomData),i&&Object.assign(this,(0,r0.default)(o,gF.restoreBuildState)),r&&(o.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,r0.default)(o,gF.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ei}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:r}){let i=new Set([".gitignore"]);if(!Fb(e.cwd,this.cwd)||!await T.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await T.readdirPromise(e.cwd)){if(i.has(a))continue;let l=v.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?r.reportError(z.IMMUTABLE_CACHE,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:r.reportInfo(z.UNUSED_CACHE_ENTRY,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused - removing`),await T.removePromise(l)))}n&&s!==0&&r.reportInfo(z.UNUSED_CACHE_ENTRY,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function lUe({project:t,allDescriptors:e,allResolutions:r,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,volatileDescriptors:o=new Set,peerRequirements:a=new Map,report:l,tolerateMissingPackages:c=!1}){var ne;let u=new Map,g=[],f=new Map,h=new Map,p=new Map,d=new Map,m=new Map,I=new Map(t.workspaces.map(q=>{let A=q.anchoredLocator.locatorHash,V=i.get(A);if(typeof V=="undefined"){if(c)return[A,null];throw new Error("Assertion failed: The workspace should have an associated package")}return[A,ap(V)]})),B=()=>{let q=T.mktempSync(),A=v.join(q,"stacktrace.log"),V=String(g.length+1).length,W=g.map((X,F)=>`${`${F+1}.`.padStart(V," ")} ${is(X)} -`).join("");throw T.writeFileSync(A,W),T.detachTemp(q),new nt(z.STACK_OVERFLOW_RESOLUTION,`Encountered a stack overflow when resolving peer dependencies; cf ${M.fromPortablePath(A)}`)},b=q=>{let A=r.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: The resolution should have been registered");let V=i.get(A);if(!V)throw new Error("Assertion failed: The package could not be found");return V},R=(q,A,V,{top:W,optional:X})=>{g.length>1e3&&B(),g.push(A);let F=H(q,A,V,{top:W,optional:X});return g.pop(),F},H=(q,A,V,{top:W,optional:X})=>{if(n.has(A.locatorHash))return;n.add(A.locatorHash),X||s.delete(A.locatorHash);let F=i.get(A.locatorHash);if(!F){if(c)return;throw new Error(`Assertion failed: The package (${lt(t.configuration,A)}) should have been registered`)}let D=[],he=[],pe=[],Ne=[],Pe=[];for(let re of Array.from(F.dependencies.values())){if(F.peerDependencies.has(re.identHash)&&F.locatorHash!==W)continue;if(hA(re))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");o.delete(re.descriptorHash);let se=X;if(!se){let ee=F.dependenciesMeta.get(St(re));if(typeof ee!="undefined"){let Ue=ee.get(null);typeof Ue!="undefined"&&Ue.optional&&(se=!0)}}let be=r.get(re.descriptorHash);if(!be){if(c)continue;throw new Error(`Assertion failed: The resolution (${Xt(t.configuration,re)}) should have been registered`)}let ae=I.get(be)||i.get(be);if(!ae)throw new Error(`Assertion failed: The package (${be}, resolved from ${Xt(t.configuration,re)}) should have been registered`);if(ae.peerDependencies.size===0){R(re,ae,new Map,{top:W,optional:se});continue}let Ae=u.get(ae.locatorHash);typeof Ae=="number"&&Ae>=2&&B();let De,$,G=new Set,Ce;he.push(()=>{De=kx(re,A.locatorHash),$=Px(ae,A.locatorHash),F.dependencies.delete(re.identHash),F.dependencies.set(De.identHash,De),r.set(De.descriptorHash,$.locatorHash),e.set(De.descriptorHash,De),i.set($.locatorHash,$),D.push([ae,De,$])}),pe.push(()=>{var ee;Ce=new Map;for(let Ue of $.peerDependencies.values()){let Oe=F.dependencies.get(Ue.identHash);if(!Oe&&cp(A,Ue)&&(Oe=q),(!Oe||Oe.range==="missing:")&&$.dependencies.has(Ue.identHash)){$.peerDependencies.delete(Ue.identHash);continue}Oe||(Oe=Yt(Ue,"missing:")),$.dependencies.set(Oe.identHash,Oe),hA(Oe)&&Pl(p,Oe.descriptorHash).add($.locatorHash),f.set(Oe.identHash,Oe),Oe.range==="missing:"&&G.add(Oe.identHash),Ce.set(Ue.identHash,(ee=V.get(Ue.identHash))!=null?ee:$.locatorHash)}$.dependencies=new Map(gn($.dependencies,([Ue,Oe])=>St(Oe)))}),Ne.push(()=>{if(!i.has($.locatorHash))return;let ee=u.get(ae.locatorHash),Ue=typeof ee!="undefined"?ee+1:1;u.set(ae.locatorHash,Ue),R(De,$,Ce,{top:W,optional:se}),u.set(ae.locatorHash,Ue-1)}),Pe.push(()=>{let ee=F.dependencies.get(re.identHash);if(typeof ee=="undefined")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let Ue=r.get(ee.descriptorHash);if(typeof Ue=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");if(Pl(m,Ue).add(A.locatorHash),!!i.has($.locatorHash)){for(let Oe of $.peerDependencies.values()){let vt=Ce.get(Oe.identHash);if(typeof vt=="undefined")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");hu(pu(d,vt),St(Oe)).push($.locatorHash)}for(let Oe of G)$.dependencies.delete(Oe)}})}for(let re of[...he,...pe])re();let qe;do{qe=!0;for(let[re,se,be]of D){if(!i.has(be.locatorHash))continue;let ae=pu(h,re.locatorHash),Ae=zi(...[...be.dependencies.values()].map(Ce=>{let ee=Ce.range!=="missing:"?r.get(Ce.descriptorHash):"missing:";if(typeof ee=="undefined")throw new Error(`Assertion failed: Expected the resolution for ${Xt(t.configuration,Ce)} to have been registered`);return ee===W?`${ee} (top)`:ee}),se.identHash),De=ae.get(Ae);if(typeof De=="undefined"){ae.set(Ae,se);continue}if(De===se)continue;qe=!1,i.delete(be.locatorHash),e.delete(se.descriptorHash),r.delete(se.descriptorHash),n.delete(be.locatorHash);let $=p.get(se.descriptorHash)||[],G=[F.locatorHash,...$];p.delete(se.descriptorHash);for(let Ce of G){let ee=i.get(Ce);typeof ee!="undefined"&&ee.dependencies.set(se.identHash,De)}}}while(!qe);for(let re of[...Ne,...Pe])re()};for(let q of t.workspaces){let A=q.anchoredLocator;o.delete(q.anchoredDescriptor.descriptorHash),R(q.anchoredDescriptor,A,new Map,{top:A.locatorHash,optional:!1})}var L;(function(V){V[V.NotProvided=0]="NotProvided",V[V.NotCompatible=1]="NotCompatible"})(L||(L={}));let K=[];for(let[q,A]of m){let V=i.get(q);if(typeof V=="undefined")throw new Error("Assertion failed: Expected the root to be registered");let W=d.get(q);if(typeof W!="undefined")for(let X of A){let F=i.get(X);if(typeof F!="undefined")for(let[D,he]of W){let pe=En(D);if(F.peerDependencies.has(pe.identHash))continue;let Ne=`p${zi(X,D,q).slice(0,5)}`;a.set(Ne,{subject:X,requested:pe,rootRequester:q,allRequesters:he});let Pe=V.dependencies.get(pe.identHash);if(typeof Pe!="undefined"){let qe=b(Pe),re=(ne=qe.version)!=null?ne:"0.0.0",se=new Set;for(let ae of he){let Ae=i.get(ae);if(typeof Ae=="undefined")throw new Error("Assertion failed: Expected the link to be registered");let De=Ae.peerDependencies.get(pe.identHash);if(typeof De=="undefined")throw new Error("Assertion failed: Expected the ident to be registered");se.add(De.range)}[...se].every(ae=>{if(ae.startsWith(Yr.protocol)){if(!t.tryWorkspaceByLocator(qe))return!1;ae=ae.slice(Yr.protocol.length),(ae==="^"||ae==="~")&&(ae="*")}return lc(re,ae)})||K.push({type:1,subject:F,requested:pe,requester:V,version:re,hash:Ne,requirementCount:he.length})}else{let qe=V.peerDependenciesMeta.get(D);(qe==null?void 0:qe.optional)||K.push({type:0,subject:F,requested:pe,requester:V,hash:Ne})}}}}let J=[q=>Rx(q.subject),q=>St(q.requested),q=>`${q.type}`];for(let q of gn(K,J))switch(q.type){case 0:l==null||l.reportWarning(z.MISSING_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} doesn't provide ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}), requested by ${Vr(t.configuration,q.requester)}`);break;case 1:{let A=q.requirementCount>1?"and some of its descendants request":"requests";l==null||l.reportWarning(z.INCOMPATIBLE_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} provides ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}) with version ${fp(t.configuration,q.version)}, which doesn't satisfy what ${Vr(t.configuration,q.requester)} ${A}`)}break}K.length>0&&(l==null||l.reportWarning(z.UNNAMED,`Some peer dependencies are incorrectly met; run ${Ve(t.configuration,"yarn explain peer-requirements ",Le.CODE)} for details, where ${Ve(t.configuration,"",Le.CODE)} is the six-letter p-prefixed code`))}var Po;(function(l){l.VERSION="version",l.COMMAND_NAME="commandName",l.PLUGIN_NAME="pluginName",l.INSTALL_COUNT="installCount",l.PROJECT_COUNT="projectCount",l.WORKSPACE_COUNT="workspaceCount",l.DEPENDENCY_COUNT="dependencyCount",l.EXTENSION="packageExtension"})(Po||(Po={}));var Rd=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let i=this.getRegistryPath();this.isNew=!T.existsSync(i),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue(Po.VERSION,e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue(Po.COMMAND_NAME,e||"")}reportPluginName(e){this.reportValue(Po.PLUGIN_NAME,e)}reportProject(e){this.reportEnumerator(Po.PROJECT_COUNT,e)}reportInstall(e){this.reportHit(Po.INSTALL_COUNT,e)}reportPackageExtension(e){this.reportValue(Po.EXTENSION,e)}reportWorkspaceCount(e){this.reportValue(Po.WORKSPACE_COUNT,String(e))}reportDependencyCount(e){this.reportValue(Po.DEPENDENCY_COUNT,String(e))}reportValue(e,r){Pl(this.values,e).add(r)}reportEnumerator(e,r){Pl(this.enumerators,e).add(zi(r))}reportHit(e,r="*"){let i=pu(this.hits,e),n=na(i,r,()=>0);i.set(r,n+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return v.join(e,"telemetry.json")}sendReport(e){var u,g,f;let r=this.getRegistryPath(),i;try{i=T.readJsonSync(r)}catch{i={}}let n=Date.now(),s=this.configuration.get("telemetryInterval")*24*60*60*1e3,a=((u=i.lastUpdate)!=null?u:n+s+Math.floor(s*Math.random()))+s;if(a>n&&i.lastUpdate!=null)return;try{T.mkdirSync(v.dirname(r),{recursive:!0}),T.writeJsonSync(r,{lastUpdate:n})}catch{return}if(a>n||!i.blocks)return;let l=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,c=h=>iP(l,h,{configuration:this.configuration}).catch(()=>{});for(let[h,p]of Object.entries((g=i.blocks)!=null?g:{})){if(Object.keys(p).length===0)continue;let d=p;d.userId=h,d.reportType="primary";for(let B of Object.keys((f=d.enumerators)!=null?f:{}))d.enumerators[B]=d.enumerators[B].length;c(d);let m=new Map,I=20;for(let[B,b]of Object.entries(d.values))b.length>0&&m.set(B,b.slice(0,I));for(;m.size>0;){let B={};B.userId=h,B.reportType="secondary",B.metrics={};for(let[b,R]of m)B.metrics[b]=R.shift(),R.length===0&&m.delete(b);c(B)}}}applyChanges(){var o,a,l,c,u,g,f,h,p;let e=this.getRegistryPath(),r;try{r=T.readJsonSync(e)}catch{r={}}let i=(o=this.configuration.get("telemetryUserId"))!=null?o:"*",n=r.blocks=(a=r.blocks)!=null?a:{},s=n[i]=(l=n[i])!=null?l:{};for(let d of this.hits.keys()){let m=s.hits=(c=s.hits)!=null?c:{},I=m[d]=(u=m[d])!=null?u:{};for(let[B,b]of this.hits.get(d))I[B]=((g=I[B])!=null?g:0)+b}for(let d of["values","enumerators"])for(let m of this[d].keys()){let I=s[d]=(f=s[d])!=null?f:{};I[m]=[...new Set([...(h=I[m])!=null?h:[],...(p=this[d].get(m))!=null?p:[]])]}T.mkdirSync(v.dirname(e),{recursive:!0}),T.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};var fF=ie(require("child_process")),R$=ie(ml());var hF=ie(require("fs"));var Yg=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);function cUe(t){let e=M.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,fF.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})}):(0,fF.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})})}async function i0({binaryVersion:t,pluginConfiguration:e}){async function r(){let n=new oo({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await i(n)}catch(s){process.stdout.write(n.error(s)),process.exitCode=1}}async function i(n){var p,d,m,I,B;let s=process.versions.node,o=">=12 <14 || 14.2 - 14.9 || >14.10.0";if(process.env.YARN_IGNORE_NODE!=="1"&&!qt.satisfiesWithPrereleases(s,o))throw new me(`This tool requires a Node version compatible with ${o} (got ${s}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let a=await fe.find(M.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),l=a.get("yarnPath"),c=a.get("ignorePath"),u=a.get("ignoreCwd"),g=M.toPortablePath(M.resolve(process.argv[1])),f=b=>T.readFilePromise(b).catch(()=>Buffer.of());if(!c&&!u&&await(async()=>l===g||Buffer.compare(...await Promise.all([f(l),f(g)]))===0)()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await i(n);return}else if(l!==null&&!c)if(!T.existsSync(l))process.stdout.write(n.error(new Error(`The "yarn-path" option has been set (in ${a.sources.get("yarnPath")}), but the specified location doesn't exist (${l}).`))),process.exitCode=1;else try{cUe(l)}catch(b){process.exitCode=b.code||1}else{c&&delete process.env.YARN_IGNORE_PATH,a.get("enableTelemetry")&&!R$.isCI&&process.stdout.isTTY&&(fe.telemetry=new Rd(a,"puba9cdc10ec5790a2cf4969dd413a47270")),(p=fe.telemetry)==null||p.reportVersion(t);for(let[L,K]of a.plugins.entries()){Yg.has((m=(d=L.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:d[1])!=null?m:"")&&((I=fe.telemetry)==null||I.reportPluginName(L));for(let J of K.commands||[])n.register(J)}let R=n.process(process.argv.slice(2));R.help||(B=fe.telemetry)==null||B.reportCommandName(R.path.join(" "));let H=R.cwd;if(typeof H!="undefined"&&!u){let L=(0,hF.realpathSync)(process.cwd()),K=(0,hF.realpathSync)(H);if(L!==K){process.chdir(H),await r();return}}await n.runExit(R,{cwd:M.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}}return r().catch(n=>{process.stdout.write(n.stack||n.message),process.exitCode=1}).finally(()=>T.rmtempPromise())}function F$(t){t.Command.Path=(...e)=>r=>{r.paths=r.paths||[],r.paths.push(e)};for(let e of["Array","Boolean","String","Proxy","Rest","Counter"])t.Command[e]=(...r)=>(i,n)=>{let s=t.Option[e](...r);Object.defineProperty(i,`__${n}`,{configurable:!1,enumerable:!0,get(){return s},set(o){this[n]=o}})};return t}var iC={};it(iC,{BaseCommand:()=>Be,WorkspaceRequiredError:()=>rt,getDynamicLibs:()=>Wie,getPluginConfiguration:()=>F0,main:()=>i0,openWorkspace:()=>rf,pluginCommands:()=>Yg});var Be=class extends ye{constructor(){super(...arguments);this.cwd=Y.String("--cwd",{hidden:!0})}};var rt=class extends me{constructor(e,r){let i=v.relative(e,r),n=v.join(e,Ze.fileName);super(`This command can only be run from within a workspace of your project (${i} isn't a workspace of ${n}).`)}};var dJe=ie(Or());Ss();var CJe=ie(gN()),Wie=()=>new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",vh],["semver",dJe],["typanion",lu],["yup",CJe]]);async function rf(t,e){let{project:r,workspace:i}=await Ke.find(t,e);if(!i)throw new rt(r.cwd,e);return i}var x_e=ie(Or());Ss();var k_e=ie(gN());var hL={};it(hL,{dedupeUtils:()=>zN,default:()=>Qze,suggestUtils:()=>LN});var WAe=ie(ml());var roe=ie(aC());Ss();var LN={};it(LN,{Modifier:()=>Lo,Strategy:()=>Fr,Target:()=>vr,WorkspaceModifier:()=>af,applyModifier:()=>Zse,extractDescriptorFromPath:()=>ON,extractRangeModifier:()=>Xse,fetchDescriptorFrom:()=>MN,findProjectDescriptors:()=>toe,getModifier:()=>AC,getSuggestedDescriptors:()=>lC,makeWorkspaceDescriptor:()=>eoe,toWorkspaceModifier:()=>$se});var TN=ie(Or()),L3e="workspace:",vr;(function(i){i.REGULAR="dependencies",i.DEVELOPMENT="devDependencies",i.PEER="peerDependencies"})(vr||(vr={}));var Lo;(function(i){i.CARET="^",i.TILDE="~",i.EXACT=""})(Lo||(Lo={}));var af;(function(i){i.CARET="^",i.TILDE="~",i.EXACT="*"})(af||(af={}));var Fr;(function(s){s.KEEP="keep",s.REUSE="reuse",s.PROJECT="project",s.LATEST="latest",s.CACHE="cache"})(Fr||(Fr={}));function AC(t,e){return t.exact?Lo.EXACT:t.caret?Lo.CARET:t.tilde?Lo.TILDE:e.configuration.get("defaultSemverRangePrefix")}var T3e=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Xse(t,{project:e}){let r=t.match(T3e);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function Zse(t,e){let{protocol:r,source:i,params:n,selector:s}=S.parseRange(t.range);return TN.default.valid(s)&&(s=`${e}${t.range}`),S.makeDescriptor(t,S.makeRange({protocol:r,source:i,params:n,selector:s}))}function $se(t){switch(t){case Lo.CARET:return af.CARET;case Lo.TILDE:return af.TILDE;case Lo.EXACT:return af.EXACT;default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function eoe(t,e){return S.makeDescriptor(t.anchoredDescriptor,`${L3e}${$se(e)}`)}async function toe(t,{project:e,target:r}){let i=new Map,n=s=>{let o=i.get(s.descriptorHash);return o||i.set(s.descriptorHash,o={descriptor:s,locators:[]}),o};for(let s of e.workspaces)if(r===vr.PEER){let o=s.manifest.peerDependencies.get(t.identHash);o!==void 0&&n(o).locators.push(s.locator)}else{let o=s.manifest.dependencies.get(t.identHash),a=s.manifest.devDependencies.get(t.identHash);r===vr.DEVELOPMENT?a!==void 0?n(a).locators.push(s.locator):o!==void 0&&n(o).locators.push(s.locator):o!==void 0?n(o).locators.push(s.locator):a!==void 0&&n(a).locators.push(s.locator)}return i}async function ON(t,{cwd:e,workspace:r}){return await M3e(async i=>{v.isAbsolute(t)||(t=v.relative(r.cwd,v.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:n}=r,s=await MN(S.makeIdent(null,"archive"),t,{project:r.project,cache:i,workspace:r});if(!s)throw new Error("Assertion failed: The descriptor should have been found");let o=new ei,a=n.configuration.makeResolver(),l=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:i,fetcher:l,report:o,resolver:a},u=a.bindDescriptor(s,r.anchoredLocator,c),g=S.convertDescriptorToLocator(u),f=await l.fetch(g,c),h=await Ze.find(f.prefixPath,{baseFs:f.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return S.makeDescriptor(h.name,t)})}async function lC(t,{project:e,workspace:r,cache:i,target:n,modifier:s,strategies:o,maxResults:a=Infinity}){if(!(a>=0))throw new Error(`Invalid maxResults (${a})`);if(t.range!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${S.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let l=typeof r!="undefined"&&r!==null&&r.manifest[n].get(t.identHash)||null,c=[],u=[],g=async f=>{try{await f()}catch(h){u.push(h)}};for(let f of o){if(c.length>=a)break;switch(f){case Fr.KEEP:await g(async()=>{l&&c.push({descriptor:l,name:`Keep ${S.prettyDescriptor(e.configuration,l)}`,reason:"(no changes)"})});break;case Fr.REUSE:await g(async()=>{for(let{descriptor:h,locators:p}of(await toe(t,{project:e,target:n})).values()){if(p.length===1&&p[0].locatorHash===r.anchoredLocator.locatorHash&&o.includes(Fr.KEEP))continue;let d=`(originally used by ${S.prettyLocator(e.configuration,p[0])}`;d+=p.length>1?` and ${p.length-1} other${p.length>2?"s":""})`:")",c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:d})}});break;case Fr.CACHE:await g(async()=>{for(let h of e.storedDescriptors.values())h.identHash===t.identHash&&c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:"(already used somewhere in the lockfile)"})});break;case Fr.PROJECT:await g(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let h=e.tryWorkspaceByIdent(t);if(h===null)return;let p=eoe(h,s);c.push({descriptor:p,name:`Attach ${S.prettyDescriptor(e.configuration,p)}`,reason:`(local workspace at ${ue.pretty(e.configuration,h.relativeCwd,ue.Type.PATH)})`})});break;case Fr.LATEST:await g(async()=>{if(t.range!=="unknown")c.push({descriptor:t,name:`Use ${S.prettyRange(e.configuration,t.range)}`,reason:"(explicit range requested)"});else if(n===vr.PEER)c.push({descriptor:S.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))c.push({descriptor:null,name:"Resolve from latest",reason:ue.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let h=await MN(t,"latest",{project:e,cache:i,workspace:r,preserveModifier:!1});h&&(h=Zse(h,s),c.push({descriptor:h,name:`Use ${S.prettyDescriptor(e.configuration,h)}`,reason:"(resolved from latest)"}))}});break}}return{suggestions:c.slice(0,a),rejections:u.slice(0,a)}}async function MN(t,e,{project:r,cache:i,workspace:n,preserveModifier:s=!0}){let o=S.makeDescriptor(t,e),a=new ei,l=r.configuration.makeFetcher(),c=r.configuration.makeResolver(),u={project:r,fetcher:l,cache:i,checksums:r.storedChecksums,report:a,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},g=_(P({},u),{resolver:c,fetchOptions:u}),f=c.bindDescriptor(o,n.anchoredLocator,g),h=await c.getCandidates(f,new Map,g);if(h.length===0)return null;let p=h[0],{protocol:d,source:m,params:I,selector:B}=S.parseRange(S.convertToManifestRange(p.reference));if(d===r.configuration.get("defaultProtocol")&&(d=null),TN.default.valid(B)&&s!==!1){let b=typeof s=="string"?s:o.range;B=Xse(b,{project:r})+B}return S.makeDescriptor(p,S.makeRange({protocol:d,source:m,params:I,selector:B}))}async function M3e(t){return await T.mktempPromise(async e=>{let r=fe.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Qt(e,{configuration:r,check:!1,immutable:!1}))})}var cC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=Y.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=Y.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=Y.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=Y.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=Y.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=Y.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.silent=Y.Boolean("--silent",{hidden:!0});this.packages=Y.Rest()}async execute(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=[...s?[Fr.REUSE]:[],Fr.PROJECT,...this.cached?[Fr.CACHE]:[],Fr.LATEST],l=s?Infinity:1,c=await Promise.all(this.packages.map(async m=>{let I=m.match(/^\.{0,2}\//)?await ON(m,{cwd:this.context.cwd,workspace:i}):S.parseDescriptor(m),B=O3e(i,I,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional}),b=await lC(I,{project:r,workspace:i,cache:n,target:B,modifier:o,strategies:a,maxResults:l});return[I,b,B]})),u=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[I,{suggestions:B,rejections:b}]of c)if(B.filter(H=>H.descriptor!==null).length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),m.reportSeparator(),m.reportExceptionOnce(H)}});if(u.hasErrors())return u.exitCode();let g=!1,f=[],h=[];for(let[,{suggestions:m},I]of c){let B,b=m.filter(K=>K.descriptor!==null),R=b[0].descriptor,H=b.every(K=>S.areDescriptorsEqual(K.descriptor,R));b.length===1||H?B=R:(g=!0,{answer:B}=await(0,roe.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:m.map(({descriptor:K,name:J,reason:ne})=>K?{name:J,hint:ne,descriptor:K}:{name:J,hint:ne,disabled:!0}),onCancel:()=>process.exit(130),result(K){return this.find(K,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let L=i.manifest[I].get(B.identHash);(typeof L=="undefined"||L.descriptorHash!==B.descriptorHash)&&(i.manifest[I].set(B.identHash,B),this.optional&&(I==="dependencies"?i.manifest.ensureDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0:I==="peerDependencies"&&(i.manifest.ensurePeerDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0)),typeof L=="undefined"?f.push([i,I,B,a]):h.push([i,I,L,B]))}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyAddition,f),await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),g&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};cC.paths=[["add"]],cC.usage=ye.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});var ioe=cC;function O3e(t,e,{dev:r,peer:i,preferDev:n,optional:s}){let o=t.manifest[vr.REGULAR].has(e.identHash),a=t.manifest[vr.DEVELOPMENT].has(e.identHash),l=t.manifest[vr.PEER].has(e.identHash);if((r||i)&&o)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(s&&a)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(s&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||n)&&s)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);return i?vr.PEER:r||n?vr.DEVELOPMENT:o?vr.REGULAR:a?vr.DEVELOPMENT:vr.REGULAR}var uC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);if(await r.restoreInstallState(),this.name){let o=(await Kt.getPackageAccessibleBinaries(i,{project:r})).get(this.name);if(!o)throw new me(`Couldn't find a binary named "${this.name}" for package "${S.prettyLocator(e,i)}"`);let[,a]=o;return this.context.stdout.write(`${a} -`),0}return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async s=>{let o=await Kt.getPackageAccessibleBinaries(i,{project:r}),l=Array.from(o.keys()).reduce((c,u)=>Math.max(c,u.length),0);for(let[c,[u,g]]of o)s.reportJson({name:c,source:S.stringifyIdent(u),path:g});if(this.verbose)for(let[c,[u]]of o)s.reportInfo(null,`${c.padEnd(l," ")} ${S.prettyLocator(e,u)}`);else for(let c of o.keys())s.reportInfo(null,c)})).exitCode()}};uC.paths=[["bin"]],uC.usage=ye.Usage({description:"get the path to a binary script",details:` - When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. - - When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. - `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var noe=uC;var gC=class extends Be{constructor(){super(...arguments);this.mirror=Y.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=Y.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await Qt.find(e);return(await Fe.start({configuration:e,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&r.mirrorCwd!==null,s=!this.mirror;n&&(await T.removePromise(r.mirrorCwd),await e.triggerHook(o=>o.cleanGlobalArtifacts,e)),s&&await T.removePromise(r.cwd)})).exitCode()}};gC.paths=[["cache","clean"],["cache","clear"]],gC.usage=ye.Usage({description:"remove the shared cache files",details:` - This command will remove all the files from the cache. - `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var soe=gC;var ooe=ie(p0()),KN=ie(require("util")),fC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=Y.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=this.name.replace(/[.[].*$/,""),i=this.name.replace(/^[^.[]*/,"");if(typeof e.settings.get(r)=="undefined")throw new me(`Couldn't find a configuration settings named "${r}"`);let s=e.getSpecial(r,{hideSecrets:!this.unsafe,getNativePaths:!0}),o=de.convertMapsToIndexableObjects(s),a=i?(0,ooe.default)(o,i):o,l=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async c=>{c.reportJson(a)});if(!this.json){if(typeof a=="string")return this.context.stdout.write(`${a} -`),l.exitCode();KN.inspect.styles.name="cyan",this.context.stdout.write(`${(0,KN.inspect)(a,{depth:Infinity,colors:e.get("enableColors"),compact:!1})} -`)}return l.exitCode()}};fC.paths=[["config","get"]],fC.usage=ye.Usage({description:"read a configuration settings",details:` - This command will print a configuration setting. - - Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. - `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var aoe=fC;var Eae=ie(qN()),Iae=ie(p0()),yae=ie(mae()),JN=ie(require("util")),pC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String();this.value=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);if(i==="enableStrictSettings")throw new me("This setting only affects the file it's in, and thus cannot be set from the CLI");let o=this.json?JSON.parse(this.value):this.value;await(this.home?h=>fe.updateHomeConfiguration(h):h=>fe.updateConfiguration(r(),h))(h=>{if(n){let p=(0,Eae.default)(h);return(0,yae.default)(p,this.name,o),p}else return _(P({},h),{[i]:o})});let c=(await fe.find(this.context.cwd,this.context.plugins)).getSpecial(i,{hideSecrets:!0,getNativePaths:!0}),u=de.convertMapsToIndexableObjects(c),g=n?(0,Iae.default)(u,n):u;return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async h=>{JN.inspect.styles.name="cyan",h.reportInfo(z.UNNAMED,`Successfully set ${this.name} to ${(0,JN.inspect)(g,{depth:Infinity,colors:e.get("enableColors"),compact:!1})}`)})).exitCode()}};pC.paths=[["config","set"]],pC.usage=ye.Usage({description:"change a configuration settings",details:` - This command will set a configuration setting. - - When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). - - When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. - `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var wae=pC;var Dae=ie(qN()),Rae=ie(Ld()),Fae=ie(Pae()),dC=class extends Be{constructor(){super(...arguments);this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);let o=this.home?l=>fe.updateHomeConfiguration(l):l=>fe.updateConfiguration(r(),l);return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async l=>{let c=!1;await o(u=>{if(!(0,Rae.default)(u,this.name))return l.reportWarning(z.UNNAMED,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),c=!0,u;let g=n?(0,Dae.default)(u):P({},u);return(0,Fae.default)(g,this.name),g}),c||l.reportInfo(z.UNNAMED,`Successfully unset ${this.name}`)})).exitCode()}};dC.paths=[["config","unset"]],dC.usage=ye.Usage({description:"unset a configuration setting",details:` - This command will unset a configuration setting. - `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var Nae=dC;var WN=ie(require("util")),CC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=Y.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{if(e.invalid.size>0&&!this.json){for(let[n,s]of e.invalid)i.reportError(z.INVALID_CONFIGURATION_KEY,`Invalid configuration key "${n}" in ${s}`);i.reportSeparator()}if(this.json){let n=de.sortMap(e.settings.keys(),s=>s);for(let s of n){let o=e.settings.get(s),a=e.getSpecial(s,{hideSecrets:!0,getNativePaths:!0}),l=e.sources.get(s);this.verbose?i.reportJson({key:s,effective:a,source:l}):i.reportJson(P({key:s,effective:a,source:l},o))}}else{let n=de.sortMap(e.settings.keys(),a=>a),s=n.reduce((a,l)=>Math.max(a,l.length),0),o={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let a=n.map(c=>{let u=e.settings.get(c);if(!u)throw new Error(`Assertion failed: This settings ("${c}") should have been registered`);let g=this.why?e.sources.get(c)||"":u.description;return[c,g]}),l=a.reduce((c,[,u])=>Math.max(c,u.length),0);for(let[c,u]of a)i.reportInfo(null,`${c.padEnd(s," ")} ${u.padEnd(l," ")} ${(0,WN.inspect)(e.getSpecial(c,{hideSecrets:!0,getNativePaths:!0}),o)}`)}else for(let a of n)i.reportInfo(null,`${a.padEnd(s," ")} ${(0,WN.inspect)(e.getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),o)}`)}})).exitCode()}};CC.paths=[["config"]],CC.usage=ye.Usage({description:"display the current configuration",details:` - This command prints the current active configuration settings. - `,examples:[["Print the active configuration settings","$0 config"]]});var Lae=CC;Ss();var zN={};it(zN,{Strategy:()=>Oc,acceptedStrategies:()=>H4e,dedupe:()=>VN});var Tae=ie(Nn()),Oc;(function(e){e.HIGHEST="highest"})(Oc||(Oc={}));var H4e=new Set(Object.values(Oc)),G4e={highest:async(t,e,{resolver:r,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of t.storedResolutions){let c=t.storedDescriptors.get(a);if(typeof c=="undefined")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);de.getSetWithDefault(o,c.identHash).add(l)}return Array.from(t.storedDescriptors.values(),async a=>{if(e.length&&!Tae.default.isMatch(S.stringifyIdent(a),e))return null;let l=t.storedResolutions.get(a.descriptorHash);if(typeof l=="undefined")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=t.originalPackages.get(l);if(typeof c=="undefined"||!r.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u=="undefined")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(m=>{let I=t.originalPackages.get(m);if(typeof I=="undefined")throw new Error(`Assertion failed: The package (${m}) should have been registered`);return I.reference}),f=await r.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h=="undefined")return null;let p=h.locatorHash,d=t.originalPackages.get(p);if(typeof d=="undefined")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:d}})}};async function VN(t,{strategy:e,patterns:r,cache:i,report:n}){let{configuration:s}=t,o=new ei,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:t.storedChecksums,fetcher:l,project:t,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:t,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let f=await G4e[e](t,r,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=Xi.progressViaCounter(f.length);n.reportProgress(h);let p=0;await Promise.all(f.map(I=>I.then(B=>{if(B===null)return;p++;let{descriptor:b,currentPackage:R,updatedPackage:H}=B;n.reportInfo(z.UNNAMED,`${S.prettyDescriptor(s,b)} can be deduped from ${S.prettyLocator(s,R)} to ${S.prettyLocator(s,H)}`),n.reportJson({descriptor:S.stringifyDescriptor(b),currentResolution:S.stringifyLocator(R),updatedResolution:S.stringifyLocator(H)}),t.storedResolutions.set(b.descriptorHash,H.locatorHash)}).finally(()=>h.tick())));let d;switch(p){case 0:d="No packages";break;case 1:d="One package";break;default:d=`${p} packages`}let m=ue.pretty(s,e,ue.Type.CODE);return n.reportInfo(z.UNNAMED,`${d} can be deduped using the ${m} strategy`),p})}var mC=class extends Be{constructor(){super(...arguments);this.strategy=Y.String("-s,--strategy",Oc.HIGHEST,{description:"The strategy to use when deduping dependencies",validator:Yi(Oc)});this.check=Y.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=await Qt.find(e);await r.restoreInstallState({restoreResolutions:!1});let n=0,s=await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout,json:this.json},async o=>{n=await VN(r,{strategy:this.strategy,patterns:this.patterns,cache:i,report:o})});return s.hasErrors()?s.exitCode():this.check?n?1:0:(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async a=>{await r.install({cache:i,report:a,mode:this.mode})})).exitCode()}};mC.paths=[["dedupe"]],mC.usage=ye.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});var Mae=mC;var Y0=class extends Be{async execute(){let{plugins:e}=await fe.find(this.context.cwd,this.context.plugins),r=[];for(let o of e){let{commands:a}=o[1];if(a){let c=oo.from(a).definitions();r.push([o[0],c])}}let i=this.cli.definitions(),n=(o,a)=>o.split(" ").slice(1).join()===a.split(" ").slice(1).join(),s=Kae()["@yarnpkg/builder"].bundles.standard;for(let o of r){let a=o[1];for(let l of a)i.find(c=>n(c.path,l.path)).plugin={name:o[0],isDefault:s.includes(o[0])}}this.context.stdout.write(`${JSON.stringify(i,null,2)} -`)}};Y0.paths=[["--clipanion=definitions"]];var Uae=Y0;var q0=class extends Be{async execute(){this.context.stdout.write(this.cli.usage(null))}};q0.paths=[["help"],["--help"],["-h"]];var Hae=q0;var _N=class extends Be{constructor(){super(...arguments);this.leadingArgument=Y.String();this.args=Y.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!S.tryParseIdent(this.leadingArgument)){let e=v.resolve(this.context.cwd,M.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:e})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}},Gae=_N;var J0=class extends Be{async execute(){this.context.stdout.write(`${Zr||""} -`)}};J0.paths=[["-v"],["--version"]];var jae=J0;var EC=class extends Be{constructor(){super(...arguments);this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState(),await Kt.executePackageShellcode(i,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:r})}};EC.paths=[["exec"]],EC.usage=ye.Usage({description:"execute a shell script",details:` - This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. - - It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});var Yae=EC;Ss();var IC=class extends Be{constructor(){super(...arguments);this.hash=Y.String({required:!1,validator:fv(gv(),[hv(/^p[0-9a-f]{5}$/)])})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState({restoreResolutions:!1}),await r.applyLightResolution(),typeof this.hash!="undefined"?await j4e(this.hash,r,{stdout:this.context.stdout}):(await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async n=>{var o;let s=[([,a])=>S.stringifyLocator(r.storedPackages.get(a.subject)),([,a])=>S.stringifyIdent(a.requested)];for(let[a,l]of de.sortMap(r.peerRequirements,s)){let c=r.storedPackages.get(l.subject);if(typeof c=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let u=r.storedPackages.get(l.rootRequester);if(typeof u=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let g=(o=c.dependencies.get(l.requested.identHash))!=null?o:null,f=ue.pretty(e,a,ue.Type.CODE),h=S.prettyLocator(e,c),p=S.prettyIdent(e,l.requested),d=S.prettyIdent(e,u),m=l.allRequesters.length-1,I=`descendant${m===1?"":"s"}`,B=m>0?` and ${m} ${I}`:"",b=g!==null?"provides":"doesn't provide";n.reportInfo(null,`${f} \u2192 ${h} ${b} ${p} to ${d}${B}`)}})).exitCode()}};IC.paths=[["explain","peer-requirements"]],IC.usage=ye.Usage({description:"explain a set of peer requirements",details:` - A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. - - When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. - - When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. - - **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). - `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});var qae=IC;async function j4e(t,e,r){let{configuration:i}=e,n=e.peerRequirements.get(t);if(typeof n=="undefined")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Fe.start({configuration:i,stdout:r.stdout,includeFooter:!1},async o=>{var I,B;let a=e.storedPackages.get(n.subject);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(I=a.dependencies.get(n.requested.identHash))!=null?I:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g=="undefined")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(b=>{let R=e.storedPackages.get(b);if(typeof R=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let H=S.devirtualizeLocator(R),L=e.storedPackages.get(H.locatorHash);if(typeof L=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let K=L.peerDependencies.get(n.requested.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:R,peerDependency:K}});if(g!==null){let b=f.every(({peerDependency:R})=>qt.satisfiesWithPrereleases(g.version,R.range));o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} provides ${S.prettyLocator(i,g)} with version ${S.prettyReference(i,(B=g.version)!=null?B:"")}, which ${b?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} doesn't provide ${S.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ue.mark(i),p=[];for(let{pkg:b,peerDependency:R}of de.sortMap(f,H=>S.stringifyLocator(H.pkg))){let L=(g!==null?qt.satisfiesWithPrereleases(g.version,R.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:S.stringifyLocator(b),prettyLocator:S.prettyLocator(i,b),prettyRange:S.prettyRange(i,R.range),mark:L})}let d=Math.max(...p.map(({stringifiedLocator:b})=>b.length)),m=Math.max(...p.map(({prettyRange:b})=>b.length));for(let{stringifiedLocator:b,prettyLocator:R,prettyRange:H,mark:L}of de.sortMap(p,({stringifiedLocator:K})=>K))o.reportInfo(null,`${R.padEnd(d+(R.length-b.length)," ")} \u2192 ${H.padEnd(m," ")} ${L}`);p.length>1&&(o.reportSeparator(),o.reportInfo(z.UNNAMED,`Note: these requirements start with ${S.prettyLocator(e.configuration,l)}`))})).exitCode()}var Jae=ie(Nn()),yC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=Y.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=Y.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=Y.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=Y.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=Y.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=Y.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i&&!this.all)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=new Set(this.extra);this.cache&&s.add("cache"),this.dependents&&s.add("dependents"),this.manifest&&s.add("manifest");let o=(b,{recursive:R})=>{let H=b.anchoredLocator.locatorHash,L=new Map,K=[H];for(;K.length>0;){let J=K.shift();if(L.has(J))continue;let ne=r.storedPackages.get(J);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the package to be registered");if(L.set(J,ne),S.isVirtualLocator(ne)&&K.push(S.devirtualizeLocator(ne).locatorHash),!(!R&&J!==H))for(let q of ne.dependencies.values()){let A=r.storedResolutions.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");K.push(A)}}return L.values()},a=({recursive:b})=>{let R=new Map;for(let H of r.workspaces)for(let L of o(H,{recursive:b}))R.set(L.locatorHash,L);return R.values()},l=({all:b,recursive:R})=>b&&R?r.storedPackages.values():b?a({recursive:R}):o(i,{recursive:R}),c=({all:b,recursive:R})=>{let H=l({all:b,recursive:R}),L=this.patterns.map(ne=>{let q=S.parseLocator(ne),A=Jae.default.makeRe(S.stringifyIdent(q)),V=S.isVirtualLocator(q),W=V?S.devirtualizeLocator(q):q;return X=>{let F=S.stringifyIdent(X);if(!A.test(F))return!1;if(q.reference==="unknown")return!0;let D=S.isVirtualLocator(X),he=D?S.devirtualizeLocator(X):X;return!(V&&D&&q.reference!==X.reference||W.reference!==he.reference)}}),K=de.sortMap([...H],ne=>S.stringifyLocator(ne));return{selection:K.filter(ne=>L.length===0||L.some(q=>q(ne))),sortedLookup:K}},{selection:u,sortedLookup:g}=c({all:this.all,recursive:this.recursive});if(u.length===0)throw new me("No package matched your request");let f=new Map;if(this.dependents)for(let b of g)for(let R of b.dependencies.values()){let H=r.storedResolutions.get(R.descriptorHash);if(typeof H=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");de.getArrayWithDefault(f,H).push(b)}let h=new Map;for(let b of g){if(!S.isVirtualLocator(b))continue;let R=S.devirtualizeLocator(b);de.getArrayWithDefault(h,R.locatorHash).push(b)}let p={},d={children:p},m=e.makeFetcher(),I={project:r,fetcher:m,cache:n,checksums:r.storedChecksums,report:new ei,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},B=[async(b,R,H)=>{var J,ne;if(!R.has("manifest"))return;let L=await m.fetch(b,I),K;try{K=await Ze.find(L.prefixPath,{baseFs:L.packageFs})}finally{(J=L.releaseFs)==null||J.call(L)}H("Manifest",{License:ue.tuple(ue.Type.NO_HINT,K.license),Homepage:ue.tuple(ue.Type.URL,(ne=K.raw.homepage)!=null?ne:null)})},async(b,R,H)=>{var A;if(!R.has("cache"))return;let L={mockedPackages:r.disabledLocators,unstablePackages:r.conditionalLocators},K=(A=r.storedChecksums.get(b.locatorHash))!=null?A:null,J=n.getLocatorPath(b,K,L),ne;if(J!==null)try{ne=T.statSync(J)}catch{}let q=typeof ne!="undefined"?[ne.size,ue.Type.SIZE]:void 0;H("Cache",{Checksum:ue.tuple(ue.Type.NO_HINT,K),Path:ue.tuple(ue.Type.PATH,J),Size:q})}];for(let b of u){let R=S.isVirtualLocator(b);if(!this.virtuals&&R)continue;let H={},L={value:[b,ue.Type.LOCATOR],children:H};if(p[S.stringifyLocator(b)]=L,this.nameOnly){delete L.children;continue}let K=h.get(b.locatorHash);typeof K!="undefined"&&(H.Instances={label:"Instances",value:ue.tuple(ue.Type.NUMBER,K.length)}),H.Version={label:"Version",value:ue.tuple(ue.Type.NO_HINT,b.version)};let J=(q,A)=>{let V={};if(H[q]=V,Array.isArray(A))V.children=A.map(W=>({value:W}));else{let W={};V.children=W;for(let[X,F]of Object.entries(A))typeof F!="undefined"&&(W[X]={label:X,value:F})}};if(!R){for(let q of B)await q(b,s,J);await e.triggerHook(q=>q.fetchPackageInfo,b,s,J)}b.bin.size>0&&!R&&J("Exported Binaries",[...b.bin.keys()].map(q=>ue.tuple(ue.Type.PATH,q)));let ne=f.get(b.locatorHash);typeof ne!="undefined"&&ne.length>0&&J("Dependents",ne.map(q=>ue.tuple(ue.Type.LOCATOR,q))),b.dependencies.size>0&&!R&&J("Dependencies",[...b.dependencies.values()].map(q=>{var W;let A=r.storedResolutions.get(q.descriptorHash),V=typeof A!="undefined"&&(W=r.storedPackages.get(A))!=null?W:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:V})})),b.peerDependencies.size>0&&R&&J("Peer dependencies",[...b.peerDependencies.values()].map(q=>{var X,F;let A=b.dependencies.get(q.identHash),V=typeof A!="undefined"&&(X=r.storedResolutions.get(A.descriptorHash))!=null?X:null,W=V!==null&&(F=r.storedPackages.get(V))!=null?F:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:W})}))}Hs.emitTree(d,{configuration:e,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};yC.paths=[["info"]],yC.usage=ye.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});var Wae=yC;var W0=ie(ml());Ss();var wC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=Y.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=Y.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.checkCache=Y.Boolean("--check-cache",!1,{description:"Always refetch the packages and ensure that their checksums are consistent"});this.inlineBuilds=Y.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.cacheFolder=Y.String("--cache-folder",{hidden:!0});this.frozenLockfile=Y.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=Y.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=Y.Boolean("--non-interactive",{hidden:!0});this.preferOffline=Y.Boolean("--prefer-offline",{hidden:!0});this.production=Y.Boolean("--production",{hidden:!0});this.registry=Y.String("--registry",{hidden:!0});this.silent=Y.Boolean("--silent",{hidden:!0});this.networkTimeout=Y.String("--network-timeout",{hidden:!0})}async execute(){var c;let e=await fe.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds!="undefined"&&e.useWithSource("",{enableInlineBuilds:this.inlineBuilds},e.startingCwd,{overwrite:!0});let r=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,i=async(u,{error:g})=>{let f=await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async h=>{g?h.reportError(z.DEPRECATED_CLI_SETTINGS,u):h.reportWarning(z.DEPRECATED_CLI_SETTINGS,u)});return f.hasErrors()?f.exitCode():null};if(typeof this.ignoreEngines!="undefined"){let u=await i("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.registry!="undefined"){let u=await i("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(u!==null)return u}if(typeof this.preferOffline!="undefined"){let u=await i("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.production!="undefined"){let u=await i("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(u!==null)return u}if(typeof this.nonInteractive!="undefined"){let u=await i("The --non-interactive option is deprecated",{error:!r});if(u!==null)return u}if(typeof this.frozenLockfile!="undefined"&&(await i("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder!="undefined"){let u=await i("The cache-folder option has been deprecated; use rc settings instead",{error:!W0.default.NETLIFY});if(u!==null)return u}let n=(c=this.immutable)!=null?c:e.get("enableImmutableInstalls");if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{await Y4e(e,n)&&(g.reportInfo(z.AUTOMERGE_SUCCESS,"Automatically fixed merge conflicts \u{1F44D}"),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}if(e.projectCwd!==null&&typeof e.sources.get("nodeLinker")=="undefined"){let u=e.projectCwd,g;try{g=await T.readFilePromise(v.join(u,wt.lockfile),"utf8")}catch{}if(g==null?void 0:g.includes("yarn lockfile v1")){let f=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async h=>{h.reportInfo(z.AUTO_NM_SUCCESS,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),h.reportSeparator(),e.use("",{nodeLinker:"node-modules"},u,{overwrite:!0}),await fe.updateConfiguration(u,{nodeLinker:"node-modules"})});if(f.hasErrors())return f.exitCode()}}if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{var f;((f=fe.telemetry)==null?void 0:f.isNew)&&(g.reportInfo(z.TELEMETRY_NOTICE,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),g.reportInfo(z.TELEMETRY_NOTICE,`Run ${ue.pretty(e,"yarn config set --home enableTelemetry 0",ue.Type.CODE)} to disable`),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}let{project:s,workspace:o}=await Ke.find(e,this.context.cwd),a=await Qt.find(e,{immutable:this.immutableCache,check:this.checkCache});if(!o)throw new rt(s.cwd,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!0},async u=>{await s.install({cache:a,report:u,immutable:n,mode:this.mode})})).exitCode()}};wC.paths=[["install"],ye.Default],wC.usage=ye.Usage({description:"install the project dependencies",details:` - This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics: - - - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ). - - - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of \`cacheFolder\` in \`yarn config\` to see where the cache files are stored). - - - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know). - - - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail. - - Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches. - - If the \`--immutable\` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the \`immutablePatterns\` configuration setting). For backward compatibility we offer an alias under the name of \`--frozen-lockfile\`, but it will be removed in a later release. - - If the \`--immutable-cache\` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed). - - If the \`--check-cache\` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them. - - If the \`--inline-builds\` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - `,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var zae=wC,q4e="|||||||",J4e=">>>>>>>",W4e="=======",Vae="<<<<<<<";async function Y4e(t,e){if(!t.projectCwd)return!1;let r=v.join(t.projectCwd,t.get("lockfileFilename"));if(!await T.existsPromise(r))return!1;let i=await T.readFilePromise(r,"utf8");if(!i.includes(Vae))return!1;if(e)throw new nt(z.AUTOMERGE_IMMUTABLE,"Cannot autofix a lockfile when running an immutable install");let[n,s]=z4e(i),o,a;try{o=Ii(n),a=Ii(s)}catch(c){throw new nt(z.AUTOMERGE_FAILED_TO_PARSE,"The individual variants of the lockfile failed to parse")}let l=P(P({},o),a);for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await T.changeFilePromise(r,Qa(l),{automaticNewlines:!0}),!0}function z4e(t){let e=[[],[]],r=t.split(/\r?\n/g),i=!1;for(;r.length>0;){let n=r.shift();if(typeof n=="undefined")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(Vae)){for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s===W4e){i=!1;break}else if(i||s.startsWith(q4e)){i=!0;continue}else e[0].push(s)}for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(J4e))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(` -`),e[1].join(` -`)]}var BC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=Y.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=Y.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=v.resolve(this.context.cwd,M.toPortablePath(this.destination)),o=await fe.find(s,this.context.plugins,{useRc:!1,strict:!1}),{project:a,workspace:l}=await Ke.find(o,s);if(r.cwd===a.cwd)throw new me("Invalid destination; Can't link the project to itself");if(!l)throw new rt(a.cwd,s);let c=r.topLevelWorkspace,u=[];if(this.all){for(let f of a.workspaces)f.manifest.name&&(!f.manifest.private||this.private)&&u.push(f);if(u.length===0)throw new me("No workspace found to be linked in the target project")}else{if(!l.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be linked");if(l.manifest.private&&!this.private)throw new me("The target workspace is marked private - use the --private flag to link it anyway");u.push(l)}for(let f of u){let h=S.stringifyIdent(f.locator),p=this.relative?v.relative(r.cwd,f.cwd):f.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${p}`})}return(await Fe.start({configuration:e,stdout:this.context.stdout},async f=>{await r.install({cache:n,report:f})})).exitCode()}};BC.paths=[["link"]],BC.usage=ye.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var _ae=BC;var QC=class extends Be{constructor(){super(...arguments);this.args=Y.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};QC.paths=[["node"]],QC.usage=ye.Usage({description:"run node with the hook already setup",details:` - This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - - The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. - `,examples:[["Run a Node script","$0 node ./my-script.js"]]});var Xae=QC;var lAe=ie(require("os"));var rAe=ie(require("os"));var V4e="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Kc(t){let e=await Zt.get(V4e,{configuration:t});return Ii(e.toString())}var bC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{let n=await Kc(e);for(let s of Object.entries(n)){let[l,o]=s,a=o,{experimental:c}=a,u=qr(a,["experimental"]);let g=l;c&&(g+=" [experimental]"),i.reportJson(P({name:l,experimental:c},u)),i.reportInfo(null,g)}})).exitCode()}};bC.paths=[["plugin","list"]],bC.usage=ye.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var Zae=bC;var $ae=ie(Or()),vC=class extends Be{constructor(){super(...arguments);this.onlyIfNeeded=Y.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);if(e.get("yarnPath")&&this.onlyIfNeeded)return 0;let r=()=>{if(typeof Zr=="undefined")throw new me("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},i;if(this.version==="self")i=r();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")i=`https://repo.yarnpkg.com/${await eAe(e,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")i=`https://repo.yarnpkg.com/${await eAe(e,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")i="https://nightly.yarnpkg.com/latest.js";else if(this.version.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.version))i=`file://${M.resolve(this.version)}`;else if(qt.satisfiesWithPrereleases(this.version,">=2.0.0"))i=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(qt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))i=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(qt.validRange(this.version))i=`https://repo.yarnpkg.com/${await _4e(e,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new me(`Invalid version descriptor "${this.version}"`);return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async s=>{let o="file://",a;i.startsWith(o)?(s.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,i,ps.URL)}`),a=await T.readFilePromise(M.toPortablePath(i.slice(o.length)))):(s.reportInfo(z.UNNAMED,`Retrieving ${ue.pretty(e,i,ps.PATH)}`),a=await Zt.get(i,{configuration:e})),await XN(e,null,a,{report:s})})).exitCode()}};vC.paths=[["set","version"]],vC.usage=ye.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Download the version used to invoke the command","$0 set version self"]]});var tAe=vC;async function _4e(t,e){let i=(await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(n=>qt.satisfiesWithPrereleases(n,e));if(i.length===0)throw new me(`No matching release found for range ${ue.pretty(t,e,ue.Type.RANGE)}.`);return i[0]}async function eAe(t,e){let r=await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new me(`Tag ${ue.pretty(t,e,ue.Type.RANGE)} not found`);return r.latest[e]}async function XN(t,e,r,{report:i}){var g;e===null&&await T.mktempPromise(async f=>{let h=v.join(f,"yarn.cjs");await T.writeFilePromise(h,r);let{stdout:p}=await hr.execvp(process.execPath,[M.fromPortablePath(h),"--version"],{cwd:f,env:_(P({},process.env),{YARN_IGNORE_PATH:"1"})});if(e=p.trim(),!$ae.default.valid(e))throw new Error(`Invalid semver version. ${ue.pretty(t,"yarn --version",ue.Type.CODE)} returned: -${e}`)});let n=(g=t.projectCwd)!=null?g:t.startingCwd,s=v.resolve(n,".yarn/releases"),o=v.resolve(s,`yarn-${e}.cjs`),a=v.relative(t.startingCwd,o),l=v.relative(n,o),c=t.get("yarnPath"),u=c===null||c.startsWith(`${s}/`);if(i.reportInfo(z.UNNAMED,`Saving the new release in ${ue.pretty(t,a,"magenta")}`),await T.removePromise(v.dirname(o)),await T.mkdirPromise(v.dirname(o),{recursive:!0}),await T.writeFilePromise(o,r,{mode:493}),u){await fe.updateConfiguration(n,{yarnPath:l});let f=await Ze.tryFind(n)||new Ze;e&&de.isTaggedYarnVersion(e)&&(f.packageManager=`yarn@${e}`);let h={};f.exportTo(h);let p=v.join(n,Ze.fileName),d=`${JSON.stringify(h,null,f.indent)} -`;await T.changeFilePromise(p,d,{automaticNewlines:!0})}}var X4e=/^[0-9]+$/;function iAe(t){return X4e.test(t)?`pull/${t}/head`:t}var Z4e=({repository:t,branch:e},r)=>[["git","init",M.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin",iAe(e)],["git","reset","--hard","FETCH_HEAD"]],$4e=({branch:t})=>[["git","fetch","origin",iAe(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],eze=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(i=>["--plugin",v.resolve(r,i)])),...e?["--no-minify"]:[],"|"]],SC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=Y.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=Y.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,rAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{await $N(this,{configuration:e,report:s,target:i}),s.reportSeparator(),s.reportInfo(z.UNNAMED,"Building a fresh bundle"),s.reportSeparator(),await xC(eze(this,i),{configuration:e,context:this.context,target:i}),s.reportSeparator();let o=v.resolve(i,"packages/yarnpkg-cli/bundles/yarn.js"),a=await T.readFilePromise(o);await XN(e,"sources",a,{report:s}),this.skipPlugins||await tze(this,{project:r,report:s,target:i})})).exitCode()}};SC.paths=[["set","version","from","sources"]],SC.usage=ye.Usage({description:"build Yarn from master",details:` - This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. - - By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. - `,examples:[["Build Yarn from master","$0 set version from sources"]]});var nAe=SC;async function xC(t,{configuration:e,context:r,target:i}){for(let[n,...s]of t){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await hr.pipevp(n,s,{cwd:i,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ue.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")} -`);try{await hr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw r.stdout.write(a.stdout||a.stack),a}}}}async function $N(t,{configuration:e,report:r,target:i}){let n=!1;if(!t.force&&T.existsSync(v.join(i,".git"))){r.reportInfo(z.UNNAMED,"Fetching the latest commits"),r.reportSeparator();try{await xC($4e(t),{configuration:e,context:t.context,target:i}),n=!0}catch(s){r.reportSeparator(),r.reportWarning(z.UNNAMED,"Repository update failed; we'll try to regenerate it")}}n||(r.reportInfo(z.UNNAMED,"Cloning the remote repository"),r.reportSeparator(),await T.removePromise(i),await T.mkdirPromise(i,{recursive:!0}),await xC(Z4e(t,i),{configuration:e,context:t.context,target:i}))}async function tze(t,{project:e,report:r,target:i}){let n=await Kc(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await ZN(o,t,{project:e,report:r,target:i})}var sAe=ie(Or()),oAe=ie(require("url")),aAe=ie(require("vm"));var kC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,stdout:this.context.stdout},async i=>{let{project:n}=await Ke.find(e,this.context.cwd),s,o;if(this.name.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.name)){let a=v.resolve(this.context.cwd,M.toPortablePath(this.name));i.reportInfo(z.UNNAMED,`Reading ${ue.pretty(e,a,ue.Type.PATH)}`),s=v.relative(n.cwd,a),o=await T.readFilePromise(a)}else{let a;if(this.name.match(/^https?:/)){try{new oAe.URL(this.name)}catch{throw new nt(z.INVALID_PLUGIN_REFERENCE,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}s=this.name,a=this.name}else{let l=S.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(l.reference!=="unknown"&&!sAe.default.valid(l.reference))throw new nt(z.UNNAMED,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let c=S.stringifyIdent(l),u=await Kc(e);if(!Object.prototype.hasOwnProperty.call(u,c))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${c}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);s=c,a=u[c].url,l.reference!=="unknown"?a=a.replace(/\/master\//,`/${c}/${l.reference}/`):Zr!==null&&(a=a.replace(/\/master\//,`/@yarnpkg/cli/${Zr}/`))}i.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,a,"green")}`),o=await Zt.get(a,{configuration:e})}await eL(s,o,{project:n,report:i})})).exitCode()}};kC.paths=[["plugin","import"]],kC.usage=ye.Usage({category:"Plugin-related commands",description:"download a plugin",details:` - This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. - - Three types of plugin references are accepted: - - - If the plugin is stored within the Yarn repository, it can be referenced by name. - - Third-party plugins can be referenced directly through their public urls. - - Local plugins can be referenced by their path on the disk. - - Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). - `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});var AAe=kC;async function eL(t,e,{project:r,report:i}){let{configuration:n}=r,s={},o={exports:s};(0,aAe.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=v.resolve(r.cwd,l);i.reportInfo(z.UNNAMED,`Saving the new plugin in ${ue.pretty(n,l,"magenta")}`),await T.mkdirPromise(v.dirname(c),{recursive:!0}),await T.writeFilePromise(c,e);let u={path:l,spec:t};await fe.updateConfiguration(r.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let d=typeof p!="string"?p.path:p,m=v.resolve(r.cwd,M.toPortablePath(d)),{name:I}=de.dynamicRequire(m);I!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),_(P({},g),{plugins:f})})}var rze=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],PC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,lAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let{project:s}=await Ke.find(e,this.context.cwd),o=S.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),a=S.stringifyIdent(o),l=await Kc(e);if(!Object.prototype.hasOwnProperty.call(l,a))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${a}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let c=a;await $N(this,{configuration:e,report:n,target:r}),await ZN(c,this,{project:s,report:n,target:r})})).exitCode()}};PC.paths=[["plugin","import","from","sources"]],PC.usage=ye.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` - This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. - - The plugins can be referenced by their short name if sourced from the official Yarn repository. - `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});var cAe=PC;async function ZN(t,{context:e,noMinify:r},{project:i,report:n,target:s}){let o=t.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo(z.UNNAMED,`Building a fresh ${o}`),n.reportSeparator(),await xC(rze({pluginName:o,noMinify:r},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=v.resolve(s,`packages/${o}/bundles/${t}.js`),c=await T.readFilePromise(l);await eL(t,c,{project:i,report:n})}var DC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=this.name,o=S.parseIdent(s);if(!e.plugins.has(s))throw new me(`${S.prettyIdent(e,o)} isn't referenced by the current configuration`);let a=`.yarn/plugins/${s}.cjs`,l=v.resolve(r.cwd,a);T.existsSync(l)&&(n.reportInfo(z.UNNAMED,`Removing ${ue.pretty(e,a,ue.Type.PATH)}...`),await T.removePromise(l)),n.reportInfo(z.UNNAMED,"Updating the configuration..."),await fe.updateConfiguration(r.cwd,c=>{if(!Array.isArray(c.plugins))return c;let u=c.plugins.filter(g=>g.path!==a);return c.plugins.length===u.length?c:_(P({},c),{plugins:u})})})).exitCode()}};DC.paths=[["plugin","remove"]],DC.usage=ye.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` - This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. - - **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. - `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var uAe=DC;var RC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{for(let n of e.plugins.keys()){let s=this.context.plugins.plugins.has(n),o=n;s&&(o+=" [builtin]"),i.reportJson({name:n,builtin:s}),i.reportInfo(null,`${o}`)}})).exitCode()}};RC.paths=[["plugin","runtime"]],RC.usage=ye.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` - This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. - `,examples:[["List the currently active plugins","$0 plugin runtime"]]});var gAe=RC;var FC=class extends Be{constructor(){super(...arguments);this.idents=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=new Set;for(let a of this.idents)s.add(S.parseIdent(a).identHash);if(await r.restoreInstallState({restoreResolutions:!1}),await r.resolveEverything({cache:n,report:new ei}),s.size>0)for(let a of r.storedPackages.values())s.has(a.identHash)&&r.storedBuildState.delete(a.locatorHash);else r.storedBuildState.clear();return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{await r.install({cache:n,report:a})})).exitCode()}};FC.paths=[["rebuild"]],FC.usage=ye.Usage({description:"rebuild the project's native packages",details:` - This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. - - Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). - - By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. - `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var fAe=FC;var tL=ie(Nn());Ss();var NC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=this.all?r.workspaces:[i],o=[vr.REGULAR,vr.DEVELOPMENT,vr.PEER],a=[],l=!1,c=[];for(let h of this.patterns){let p=!1,d=S.parseIdent(h);for(let m of s){let I=[...m.manifest.peerDependenciesMeta.keys()];for(let B of(0,tL.default)(I,h))m.manifest.peerDependenciesMeta.delete(B),l=!0,p=!0;for(let B of o){let b=m.manifest.getForScope(B),R=[...b.values()].map(H=>S.stringifyIdent(H));for(let H of(0,tL.default)(R,S.stringifyIdent(d))){let{identHash:L}=S.parseIdent(H),K=b.get(L);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");m.manifest[B].delete(L),c.push([m,B,K]),l=!0,p=!0}}}p||a.push(h)}let u=a.length>1?"Patterns":"Pattern",g=a.length>1?"don't":"doesn't",f=this.all?"any":"this";if(a.length>0)throw new me(`${u} ${ue.prettyList(e,a,ps.CODE)} ${g} match any packages referenced by ${f} workspace`);return l?(await e.triggerMultipleHooks(p=>p.afterWorkspaceDependencyRemoval,c),(await Fe.start({configuration:e,stdout:this.context.stdout},async p=>{await r.install({cache:n,report:p,mode:this.mode})})).exitCode()):0}};NC.paths=[["remove"]],NC.usage=ye.Usage({description:"remove dependencies from the project",details:` - This command will remove the packages matching the specified patterns from the current workspace. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - - This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. - `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var hAe=NC;var pAe=ie(require("util")),z0=class extends Be{async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=de.sortMap(o.keys(),u=>u),l={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,pAe.inspect)(g,l)}`)})).exitCode()}};z0.paths=[["run"]];var dAe=z0;var LC=class extends Be{constructor(){super(...arguments);this.inspect=Y.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=Y.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=Y.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=Y.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=Y.Boolean("--silent",{hidden:!0});this.scriptName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i,locator:n}=await Ke.find(e,this.context.cwd);await r.restoreInstallState();let s=this.topLevel?r.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Kt.hasPackageScript(s,this.scriptName,{project:r}))return await Kt.executePackageScript(s,this.scriptName,this.args,{project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let o=await Kt.getPackageAccessibleBinaries(s,{project:r});if(o.get(this.scriptName)){let l=[];return this.inspect&&(typeof this.inspect=="string"?l.push(`--inspect=${this.inspect}`):l.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?l.push(`--inspect-brk=${this.inspectBrk}`):l.push("--inspect-brk")),await Kt.executePackageAccessibleBinary(s,this.scriptName,this.args,{cwd:this.context.cwd,project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:l,packageAccessibleBinaries:o})}if(!this.topLevel&&!this.binariesOnly&&i&&this.scriptName.includes(":")){let c=(await Promise.all(r.workspaces.map(async u=>u.manifest.scripts.has(this.scriptName)?u:null))).filter(u=>u!==null);if(c.length===1)return await Kt.executeWorkspaceScript(c[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}).`);{if(this.scriptName==="global")throw new me("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let l=[this.scriptName].concat(this.args);for(let[c,u]of Yg)for(let g of u)if(l.length>=g.length&&JSON.stringify(l.slice(0,g.length))===JSON.stringify(g))throw new me(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${c} plugin. You can install it with "yarn plugin import ${c}".`);throw new me(`Couldn't find a script named "${this.scriptName}".`)}}};LC.paths=[["run"]],LC.usage=ye.Usage({description:"run a script defined in the package.json",details:` - This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - - - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. - - - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. - - - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. - - Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). - `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var CAe=LC;var TC=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=Y.String();this.resolution=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(await r.restoreInstallState({restoreResolutions:!1}),!i)throw new rt(r.cwd,this.context.cwd);let s=S.parseDescriptor(this.descriptor,!0),o=S.makeDescriptor(s,this.resolution);return r.storedDescriptors.set(s.descriptorHash,s),r.storedDescriptors.set(o.descriptorHash,o),r.resolutionAliases.set(s.descriptorHash,o.descriptorHash),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};TC.paths=[["set","resolution"]],TC.usage=ye.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var mAe=TC;var EAe=ie(Nn()),MC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=r.topLevelWorkspace,o=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:l,reference:c}of s.manifest.resolutions)c.startsWith("portal:")&&o.add(l.descriptor.fullName);if(this.leadingArguments.length>0)for(let l of this.leadingArguments){let c=v.resolve(this.context.cwd,M.toPortablePath(l));if(de.isPathLike(l)){let u=await fe.find(c,this.context.plugins,{useRc:!1,strict:!1}),{project:g,workspace:f}=await Ke.find(u,c);if(!f)throw new rt(g.cwd,c);if(this.all){for(let h of g.workspaces)h.manifest.name&&o.add(S.stringifyIdent(h.locator));if(o.size===0)throw new me("No workspace found to be unlinked in the target project")}else{if(!f.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be unlinked");o.add(S.stringifyIdent(f.locator))}}else{let u=[...s.manifest.resolutions.map(({pattern:g})=>g.descriptor.fullName)];for(let g of(0,EAe.default)(u,l))o.add(g)}}return s.manifest.resolutions=s.manifest.resolutions.filter(({pattern:l})=>!o.has(l.descriptor.fullName)),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};MC.paths=[["unlink"]],MC.usage=ye.Usage({description:"disconnect the local project from another one",details:` - This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. - `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var IAe=MC;var yAe=ie(aC()),rL=ie(Nn());Ss();var uf=class extends Be{constructor(){super(...arguments);this.interactive=Y.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=[...r.storedDescriptors.values()],o=s.map(u=>S.stringifyIdent(u)),a=new Set;for(let u of this.patterns){if(S.parseDescriptor(u).range!=="unknown")throw new me("Ranges aren't allowed when using --recursive");for(let g of(0,rL.default)(o,u)){let f=S.parseIdent(g);a.add(f.identHash)}}let l=s.filter(u=>a.has(u.identHash));for(let u of l)r.storedDescriptors.delete(u.descriptorHash),r.storedResolutions.delete(u.descriptorHash);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{await r.install({cache:n,report:u})})).exitCode()}async executeUpClassic(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=s?[Fr.KEEP,Fr.REUSE,Fr.PROJECT,Fr.LATEST]:[Fr.PROJECT,Fr.LATEST],l=[],c=[];for(let m of this.patterns){let I=!1,B=S.parseDescriptor(m);for(let b of r.workspaces)for(let R of[vr.REGULAR,vr.DEVELOPMENT]){let L=[...b.manifest.getForScope(R).values()].map(K=>S.stringifyIdent(K));for(let K of(0,rL.default)(L,S.stringifyIdent(B))){let J=S.parseIdent(K),ne=b.manifest[R].get(J.identHash);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");let q=S.makeDescriptor(J,B.range);l.push(Promise.resolve().then(async()=>[b,R,ne,await lC(q,{project:r,workspace:b,cache:n,target:R,modifier:o,strategies:a})])),I=!0}}I||c.push(m)}if(c.length>1)throw new me(`Patterns ${ue.prettyList(e,c,ps.CODE)} don't match any packages referenced by any workspace`);if(c.length>0)throw new me(`Pattern ${ue.prettyList(e,c,ps.CODE)} doesn't match any packages referenced by any workspace`);let u=await Promise.all(l),g=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[,,I,{suggestions:B,rejections:b}]of u){let R=B.filter(H=>H.descriptor!==null);if(R.length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");let L=this.cli.error(H);r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range - -${L}`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} can't be resolved to a satisfying range (note: network resolution has been disabled) - -${L}`)}else R.length>1&&!s&&m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,I)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[];for(let[m,I,,{suggestions:B}]of u){let b,R=B.filter(J=>J.descriptor!==null),H=R[0].descriptor,L=R.every(J=>S.areDescriptorsEqual(J.descriptor,H));R.length===1||L?b=H:(f=!0,{answer:b}=await(0,yAe.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${S.prettyWorkspace(e,m)} \u276F ${I}?`,choices:B.map(({descriptor:J,name:ne,reason:q})=>J?{name:ne,hint:q,descriptor:J}:{name:ne,hint:q,disabled:!0}),onCancel:()=>process.exit(130),result(J){return this.find(J,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let K=m.manifest[I].get(b.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: This descriptor should have a matching entry");if(K.descriptorHash!==b.descriptorHash)m.manifest[I].set(b.identHash,b),h.push([m,I,K,b]);else{let J=e.makeResolver(),ne={project:r,resolver:J},q=J.bindDescriptor(K,m.anchoredLocator,ne);r.forgetResolution(q)}}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),f&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,stdout:this.context.stdout},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};uf.paths=[["up"]],uf.usage=ye.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),uf.schema=[pv("recursive",Bl.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var wAe=uf;var OC=class extends Be{constructor(){super(...arguments);this.recursive=Y.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=Y.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=S.parseIdent(this.package).identHash,s=this.recursive?nze(r,n,{configuration:e,peers:this.peers}):ize(r,n,{configuration:e,peers:this.peers});Hs.emitTree(s,{configuration:e,stdout:this.context.stdout,json:this.json,separators:1})}};OC.paths=[["why"]],OC.usage=ye.Usage({description:"display the reason why a package is needed",details:` - This command prints the exact reasons why a package appears in the dependency tree. - - If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. - `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});var BAe=OC;function ize(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.storedPackages.values(),a=>S.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={},c=null;for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=t.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=t.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;if(c===null){let p=S.stringifyLocator(a);s[p]={value:[a,ue.Type.LOCATOR],children:l}}let h=S.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ue.Type.DEPENDENT]}}}return o}function nze(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.workspaces,f=>S.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let d=t.storedResolutions.get(p.descriptorHash);if(!d)throw new Error("Assertion failed: The resolution should have been registered");let m=t.storedPackages.get(d);if(!m)throw new Error("Assertion failed: The package should have been registered");a(m)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let d=p!==null?ue.tuple(ue.Type.DEPENDENT,{locator:f,descriptor:p}):ue.tuple(ue.Type.LOCATOR,f),m={},I={value:d,children:m},B=S.stringifyLocator(f);if(h[B]=I,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&t.tryWorkspaceByLocator(f))))for(let b of f.dependencies.values()){if(!i&&f.peerDependencies.has(b.identHash))continue;let R=t.storedResolutions.get(b.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let H=t.storedPackages.get(R);if(!H)throw new Error("Assertion failed: The package should have been registered");g(H,m,b)}};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var fL={};it(fL,{default:()=>wze,gitUtils:()=>Uc});var Uc={};it(Uc,{TreeishProtocols:()=>vn,clone:()=>cL,fetchBase:()=>jAe,fetchChangedFiles:()=>YAe,fetchChangedWorkspaces:()=>Ize,fetchRoot:()=>GAe,isGitUrl:()=>ff,lsRemote:()=>HAe,normalizeLocator:()=>AL,normalizeRepoUrl:()=>KC,resolveUrl:()=>lL,splitRepoUrl:()=>UC});var oL=ie(OAe()),gf=ie(require("querystring")),aL=ie(Or()),KAe=ie(require("url"));function UAe(){return _(P({},process.env),{GIT_SSH_COMMAND:"ssh -o BatchMode=yes"})}var Eze=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],vn;(function(n){n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver"})(vn||(vn={}));function ff(t){return t?Eze.some(e=>!!t.match(e)):!1}function UC(t){t=KC(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:vn.Head,request:"HEAD"},extra:{}};let r=t.slice(0,e),i=t.slice(e+1);if(i.match(/^[a-z]+=/)){let n=gf.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(vn).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s!="undefined"?(o=s,a=n[s]):(o=vn.Head,a="HEAD");for(let l of Object.values(vn))delete n[l];return{repo:r,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:r,treeish:{protocol:s,request:o},extra:{}}}}function KC(t,{git:e=!1}={}){var r;if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){t=t.replace(/^git\+([^:]+):/,"$1:");let i;try{i=KAe.default.parse(t)}catch{i=null}i&&i.protocol==="ssh:"&&((r=i.path)==null?void 0:r.startsWith("/:"))&&(t=t.replace(/^ssh:\/\//,""))}return t}function AL(t){return S.makeLocator(t,KC(t.reference))}async function HAe(t,e){let r=KC(t,{git:!0});if(!Zt.getNetworkSettings(`https://${(0,oL.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Error(`Request to '${r}' has been blocked because of your configuration settings`);let n;try{n=await hr.execvp("git",["ls-remote",r],{cwd:e.startingCwd,env:UAe(),strict:!0})}catch(l){throw l.message=`Listing the refs for ${t} failed`,l}let s=new Map,o=/^([a-f0-9]{40})\t([^\n]+)/gm,a;for(;(a=o.exec(n.stdout))!==null;)s.set(a[2],a[1]);return s}async function lL(t,e){let{repo:r,treeish:{protocol:i,request:n},extra:s}=UC(t),o=await HAe(r,e),a=(c,u)=>{switch(c){case vn.Commit:{if(!u.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return gf.default.stringify(_(P({},s),{commit:u}))}case vn.Head:{let g=o.get(u==="HEAD"?u:`refs/heads/${u}`);if(typeof g=="undefined")throw new Error(`Unknown head ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Tag:{let g=o.get(`refs/tags/${u}`);if(typeof g=="undefined")throw new Error(`Unknown tag ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Semver:{let g=qt.validRange(u);if(!g)throw new Error(`Invalid range ("${u}")`);let f=new Map([...o.entries()].filter(([p])=>p.startsWith("refs/tags/")).map(([p,d])=>[aL.default.parse(p.slice(10)),d]).filter(p=>p[0]!==null)),h=aL.default.maxSatisfying([...f.keys()],g);if(h===null)throw new Error(`No matching range ("${u}")`);return gf.default.stringify(_(P({},s),{commit:f.get(h)}))}case null:{let g;if((g=l(vn.Commit,u))!==null||(g=l(vn.Tag,u))!==null||(g=l(vn.Head,u))!==null)return g;throw u.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${c}")`)}},l=(c,u)=>{try{return a(c,u)}catch(g){return null}};return`${r}#${a(i,n)}`}async function cL(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:i,request:n}}=UC(t);if(i!=="commit")throw new Error("Invalid treeish protocol when cloning");let s=KC(r,{git:!0});if(Zt.getNetworkSettings(`https://${(0,oL.default)(s).resource}`,{configuration:e}).enableNetwork===!1)throw new Error(`Request to '${s}' has been blocked because of your configuration settings`);let o=await T.mktempPromise(),a={cwd:o,env:UAe(),strict:!0};try{await hr.execvp("git",["clone","-c core.autocrlf=false",s,M.fromPortablePath(o)],a),await hr.execvp("git",["checkout",`${n}`],a)}catch(l){throw l.message=`Repository clone failed: ${l.message}`,l}return o})}async function GAe(t){let e=null,r,i=t;do r=i,await T.existsPromise(v.join(r,".git"))&&(e=r),i=v.dirname(r);while(e===null&&i!==r);return e}async function jAe(t,{baseRefs:e}){if(e.length===0)throw new me("Can't run this command with zero base refs specified.");let r=[];for(let a of e){let{code:l}=await hr.execvp("git",["merge-base",a,"HEAD"],{cwd:t});l===0&&r.push(a)}if(r.length===0)throw new me(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:i}=await hr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),n=i.trim(),{stdout:s}=await hr.execvp("git",["show","--quiet","--pretty=format:%s",n],{cwd:t,strict:!0}),o=s.trim();return{hash:n,title:o}}async function YAe(t,{base:e,project:r}){let i=de.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:n}=await hr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),s=n.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),{stdout:o}=await hr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),a=o.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),l=[...new Set([...s,...a].sort())];return i?l.filter(c=>!v.relative(r.cwd,c).match(i)):l}async function Ize({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new me("This command can only be run from within a Yarn project");let r=[v.resolve(e.cwd,e.configuration.get("cacheFolder")),v.resolve(e.cwd,e.configuration.get("installStatePath")),v.resolve(e.cwd,e.configuration.get("lockfileFilename")),v.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(o=>o.populateYarnPaths,e,o=>{o!=null&&r.push(o)});let i=await GAe(e.configuration.projectCwd);if(i==null)throw new me("This command can only be run on Git repositories");let n=await jAe(i,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),s=await YAe(i,{base:n.hash,project:e});return new Set(de.mapAndFilter(s,o=>{let a=e.tryWorkspaceByFilePath(o);return a===null?de.mapAndFilter.skip:r.some(l=>o.startsWith(l))?de.mapAndFilter.skip:a}))}var uL=class{supports(e,r){return ff(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,n=AL(e),s=new Map(r.checksums);s.set(n.locatorHash,i);let o=_(P({},r),{checksums:s}),a=await this.downloadHosted(n,o);if(a!==null)return a;let[l,c,u]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(n,o),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:l,releaseFs:c,prefixPath:S.getIdentVendorPath(e),checksum:u}}async downloadHosted(e,r){return r.project.configuration.reduceHook(i=>i.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let i=await cL(e.reference,r.project.configuration),n=UC(e.reference),s=v.join(i,"package.tgz");await Kt.prepareExternalProject(i,s,{configuration:r.project.configuration,report:r.report,workspace:n.extra.workspace,locator:e});let o=await T.readFilePromise(s);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}))}};var gL=class{supportsDescriptor(e,r){return ff(e.range)}supportsLocator(e,r){return ff(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=await lL(e.range,i.project.configuration);return[S.makeLocator(e,n)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var yze={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:ge.STRING,isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:ge.STRING,default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:ge.NUMBER,default:2}},fetchers:[uL],resolvers:[gL]};var wze=yze;var HC=class extends Be{constructor(){super(...arguments);this.since=Y.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async n=>{let s=this.since?await Uc.fetchChangedWorkspaces({ref:this.since,project:r}):r.workspaces,o=new Set(s);if(this.recursive)for(let a of[...s].map(l=>l.getRecursiveWorkspaceDependents()))for(let l of a)o.add(l);for(let a of o){let{manifest:l}=a,c;if(this.verbose){let u=new Set,g=new Set;for(let f of Ze.hardDependencies)for(let[h,p]of l.getForScope(f)){let d=r.tryWorkspaceByDescriptor(p);d===null?r.workspacesByIdent.has(h)&&g.add(p):u.add(d)}c={workspaceDependencies:Array.from(u).map(f=>f.relativeCwd),mismatchedWorkspaceDependencies:Array.from(g).map(f=>S.stringifyDescriptor(f))}}n.reportInfo(null,`${a.relativeCwd}`),n.reportJson(P({location:a.relativeCwd,name:l.name?S.stringifyIdent(l.name):null},c))}})).exitCode()}};HC.paths=[["workspaces","list"]],HC.usage=ye.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});var qAe=HC;var GC=class extends Be{constructor(){super(...arguments);this.workspaceName=Y.String();this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=r.workspaces,s=new Map(n.map(a=>{let l=S.convertToIdent(a.locator);return[S.stringifyIdent(l),a]})),o=s.get(this.workspaceName);if(o===void 0){let a=Array.from(s.keys()).sort();throw new me(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - - ${a.join(` - - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:o.cwd})}};GC.paths=[["workspace"]],GC.usage=ye.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` - This command will run a given sub-command on a single workspace. - `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var JAe=GC;var Bze={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:ge.BOOLEAN,default:WAe.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:ge.STRING,values:["^","~",""],default:Lo.CARET}},commands:[soe,aoe,wae,Nae,mAe,nAe,tAe,qAe,Uae,Hae,Gae,jae,ioe,noe,Lae,Mae,Yae,qae,Wae,zae,_ae,IAe,Xae,cAe,AAe,uAe,Zae,gAe,fAe,hAe,dAe,CAe,wAe,BAe,JAe]},Qze=Bze;var mL={};it(mL,{default:()=>vze});var Me={optional:!0},zAe=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Me}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Me,["postcss-jsx"]:Me,["postcss-less"]:Me,["postcss-markdown"]:Me,["postcss-scss"]:Me}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Me}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Me}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@*",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Me,"vue-template-compiler":Me}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Me,"utf-8-validate":Me}}],["react-portal@*",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@*",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@*",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me,"vuetify-loader":Me}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Me}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Me}}],["consolidate@*",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Me,tinyliquid:Me,"liquid-node":Me,jade:Me,"then-jade":Me,dust:Me,"dustjs-helpers":Me,"dustjs-linkedin":Me,swig:Me,"swig-templates":Me,"razor-tmpl":Me,atpl:Me,liquor:Me,twig:Me,ejs:Me,eco:Me,jazz:Me,jqtpl:Me,hamljs:Me,hamlet:Me,whiskers:Me,"haml-coffee":Me,"hogan.js":Me,templayed:Me,handlebars:Me,underscore:Me,lodash:Me,pug:Me,"then-pug":Me,qejs:Me,walrus:Me,mustache:Me,just:Me,ect:Me,mote:Me,toffee:Me,dot:Me,"bracket-template":Me,ractive:Me,nunjucks:Me,htmling:Me,"babel-core":Me,plates:Me,"react-dom":Me,react:Me,"arc-templates":Me,vash:Me,slm:Me,marko:Me,teacup:Me,"coffee-script":Me,squirrelly:Me,twing:Me}}],["vue-loader@<=16.3.1",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"}}],["scss-parser@*",{dependencies:{lodash:"^4.17.21"}}],["query-ast@*",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@*",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@*",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@*",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@*",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Me}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Me}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Me,"webpack-command":Me}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Me}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Me}}]];var pL;function VAe(){return typeof pL=="undefined"&&(pL=require("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),pL}var dL;function _Ae(){return typeof dL=="undefined"&&(dL=require("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),dL}var CL;function XAe(){return typeof CL=="undefined"&&(CL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),CL}var ZAe=new Map([[S.makeIdent(null,"fsevents").identHash,VAe],[S.makeIdent(null,"resolve").identHash,_Ae],[S.makeIdent(null,"typescript").identHash,XAe]]),bze={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,i]of zAe)e(S.parseDescriptor(r,!0),i)},getBuiltinPatch:async(t,e)=>{var s;let r="compat/";if(!e.startsWith(r))return;let i=S.parseIdent(e.slice(r.length)),n=(s=ZAe.get(i.identHash))==null?void 0:s();return typeof n!="undefined"?n:null},reduceDependency:async(t,e,r,i)=>typeof ZAe.get(t.identHash)=="undefined"?t:S.makeDescriptor(t,S.makeRange({protocol:"patch:",source:S.stringifyDescriptor(t),selector:`~builtin`,params:null}))}},vze=bze;var EL={};it(EL,{default:()=>xze});var V0=class extends Be{constructor(){super(...arguments);this.pkg=Y.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){let e=[];this.pkg&&e.push("--package",this.pkg),this.quiet&&e.push("--quiet");let r=S.parseIdent(this.command),i=S.makeIdent(r.scope,`create-${r.name}`);return this.cli.run(["dlx",...e,S.stringifyIdent(i),...this.args])}};V0.paths=[["create"]];var $Ae=V0;var jC=class extends Be{constructor(){super(...arguments);this.packages=Y.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){return fe.telemetry=null,await T.mktempPromise(async e=>{var p;let r=v.join(e,`dlx-${process.pid}`);await T.mkdirPromise(r),await T.writeFilePromise(v.join(r,"package.json"),`{} -`),await T.writeFilePromise(v.join(r,"yarn.lock"),"");let i=v.join(r,".yarnrc.yml"),n=await fe.findProjectCwd(this.context.cwd,wt.lockfile),s=!(await fe.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),o=n!==null?v.join(n,".yarnrc.yml"):null;o!==null&&T.existsSync(o)?(await T.copyFilePromise(o,i),await fe.updateConfiguration(r,d=>{let m=_(P({},d),{enableGlobalCache:s,enableTelemetry:!1});return Array.isArray(d.plugins)&&(m.plugins=d.plugins.map(I=>{let B=typeof I=="string"?I:I.path,b=M.isAbsolute(B)?B:M.resolve(M.fromPortablePath(n),B);return typeof I=="string"?b:{path:b,spec:I.spec}})),m})):await T.writeFilePromise(i,`enableGlobalCache: ${s} -enableTelemetry: false -`);let a=(p=this.packages)!=null?p:[this.command],l=S.parseDescriptor(this.command).name,c=await this.cli.run(["add","--",...a],{cwd:r,quiet:this.quiet});if(c!==0)return c;this.quiet||this.context.stdout.write(` -`);let u=await fe.find(r,this.context.plugins),{project:g,workspace:f}=await Ke.find(u,r);if(f===null)throw new rt(g.cwd,r);await g.restoreInstallState();let h=await Kt.getWorkspaceAccessibleBinaries(f);return h.has(l)===!1&&h.size===1&&typeof this.packages=="undefined"&&(l=Array.from(h)[0][0]),await Kt.executeWorkspaceAccessibleBinary(f,l,this.args,{packageAccessibleBinaries:h,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};jC.paths=[["dlx"]],jC.usage=ye.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var ele=jC;var Sze={commands:[$Ae,ele]},xze=Sze;var xL={};it(xL,{default:()=>Dze,fileUtils:()=>IL});var hf=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,YC=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Nr="file:";var IL={};it(IL,{makeArchiveFromLocator:()=>_0,makeBufferFromLocator:()=>BL,makeLocator:()=>wL,makeSpec:()=>tle,parseSpec:()=>yL});function yL(t){let{params:e,selector:r}=S.parseRange(t),i=M.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?S.parseLocator(e.locator):null,path:i}}function tle({parentLocator:t,path:e,folderHash:r,protocol:i}){let n=t!==null?{locator:S.stringifyLocator(t)}:{},s=typeof r!="undefined"?{hash:r}:{};return S.makeRange({protocol:i,source:e,selector:e,params:P(P({},s),n)})}function wL(t,{parentLocator:e,path:r,folderHash:i,protocol:n}){return S.makeLocator(t,tle({parentLocator:e,path:r,folderHash:i,protocol:n}))}async function _0(t,{protocol:e,fetchOptions:r,inMemory:i=!1}){let{parentLocator:n,path:s}=S.parseFileStyleRange(t.reference,{protocol:e}),o=v.isAbsolute(s)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(n,r),a=o.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=v.join(a.prefixPath,s);return await de.releaseAfterUseAsync(async()=>await Ai.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:S.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function BL(t,{protocol:e,fetchOptions:r}){return(await _0(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var QL=class{supports(e,r){return!!e.reference.startsWith(Nr)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async fetchFromDisk(e,r){return _0(e,{protocol:Nr,fetchOptions:r})}};var kze=2,bL=class{supportsDescriptor(e,r){return e.range.match(hf)?!0:!!e.range.startsWith(Nr)}supportsLocator(e,r){return!!e.reference.startsWith(Nr)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=yL(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await BL(S.makeLocator(e,S.makeRange({protocol:Nr,source:n,selector:n,params:{locator:S.stringifyLocator(s)}})),{protocol:Nr,fetchOptions:i.fetchOptions}),a=mn.makeHash(`${kze}`,o).slice(0,6);return[wL(e,{parentLocator:s,path:n,folderHash:a,protocol:Nr})]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var vL=class{supports(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromDisk(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath)}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.join(o.prefixPath,n),c=await a.readFilePromise(l);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(c,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}),o.releaseFs)}};var SL=class{supportsDescriptor(e,r){return YC.test(e.range)?!!(e.range.startsWith(Nr)||hf.test(e.range)):!1}supportsLocator(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range;return n.startsWith(Nr)&&(n=n.slice(Nr.length)),[S.makeLocator(e,`${Nr}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var Pze={fetchers:[vL,QL],resolvers:[SL,bL]},Dze=Pze;var PL={};it(PL,{default:()=>Nze});var rle=ie(require("querystring")),ile=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function nle(t){return t?ile.some(e=>!!t.match(e)):!1}function sle(t){let e;for(let a of ile)if(e=t.match(a),e)break;if(!e)throw new Error(Rze(t));let[,r,i,n,s="master"]=e,{commit:o}=rle.default.parse(s);return s=o||s.replace(/[^:]*:/,""),{auth:r,username:i,reponame:n,treeish:s}}function Rze(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var kL=class{supports(e,r){return!!nle(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await T.mktempPromise(async n=>{let s=new Ft(n);await Ai.extractArchiveTo(i,s,{stripComponents:1});let o=Uc.splitRepoUrl(e.reference),a=v.join(n,"package.tgz");await Kt.prepareExternalProject(n,a,{configuration:r.project.configuration,report:r.report,workspace:o.extra.workspace,locator:e});let l=await T.readFilePromise(a);return await Ai.convertToZip(l,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:i,username:n,reponame:s,treeish:o}=sle(e.reference);return`https://${i?`${i}@`:""}github.com/${n}/${s}/archive/${o}.tar.gz`}};var Fze={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let i=new kL;if(!i.supports(e,r))return null;try{return await i.fetch(e,r)}catch(n){return null}}}},Nze=Fze;var FL={};it(FL,{default:()=>Tze});var qC=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,JC=/^https?:/;var DL=class{supports(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(e.reference,{configuration:r.project.configuration});return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var RL=class{supportsDescriptor(e,r){return qC.test(e.range)?!!JC.test(e.range):!1}supportsLocator(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[S.convertDescriptorToLocator(e)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var Lze={fetchers:[DL],resolvers:[RL]},Tze=Lze;var ML={};it(ML,{default:()=>M5e});var Rle=ie(Dle()),TL=ie(require("util")),WC=class extends Be{constructor(){super(...arguments);this.private=Y.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=Y.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=Y.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=Y.Boolean("-2",!1,{hidden:!0});this.yes=Y.Boolean("-y,--yes",{hidden:!0});this.assumeFreshProject=Y.Boolean("--assume-fresh-project",!1,{hidden:!0})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return r!==null?await this.executeProxy(e,r):await this.executeRegular(e)}async executeProxy(e,r){if(e.projectCwd!==null&&e.projectCwd!==this.context.cwd)throw new me("Cannot use the --install flag from within a project subdirectory");T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=v.join(this.context.cwd,e.get("lockfileFilename"));T.existsSync(i)||await T.writeFilePromise(i,"");let n=await this.cli.run(["set","version",r],{quiet:!0});if(n!==0)return n;let s=[];return this.private&&s.push("-p"),this.workspace&&s.push("-w"),this.yes&&s.push("-y"),await T.mktempPromise(async o=>{let{code:a}=await hr.pipevp("yarn",["init",...s],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Kt.makeScriptEnv({binFolder:o})});return a})}async executeRegular(e){var l;let r=null;try{r=(await Ke.find(e,this.context.cwd)).project}catch{r=null}T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=await Ze.tryFind(this.context.cwd)||new Ze,n=Object.fromEntries(e.get("initFields").entries());i.load(n),i.name=(l=i.name)!=null?l:S.makeIdent(e.get("initScope"),v.basename(this.context.cwd)),i.packageManager=Zr&&de.isTaggedYarnVersion(Zr)?`yarn@${Zr}`:null,typeof i.raw.private=="undefined"&&(this.private||this.workspace&&i.workspaceDefinitions.length===0)&&(i.private=!0),this.workspace&&i.workspaceDefinitions.length===0&&(await T.mkdirPromise(v.join(this.context.cwd,"packages"),{recursive:!0}),i.workspaceDefinitions=[{pattern:"packages/*"}]);let s={};i.exportTo(s),TL.inspect.styles.name="cyan",this.context.stdout.write(`${(0,TL.inspect)(s,{depth:Infinity,colors:!0,compact:!1})} -`);let o=v.join(this.context.cwd,Ze.fileName);await T.changeFilePromise(o,`${JSON.stringify(s,null,2)} -`,{automaticNewlines:!0});let a=v.join(this.context.cwd,"README.md");if(T.existsSync(a)||await T.writeFilePromise(a,`# ${S.stringifyIdent(i.name)} -`),!r||r.cwd===this.context.cwd){let c=v.join(this.context.cwd,wt.lockfile);T.existsSync(c)||await T.writeFilePromise(c,"");let g=["/.yarn/*","!/.yarn/patches","!/.yarn/plugins","!/.yarn/releases","!/.yarn/sdks","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!/.yarn/cache","#/.pnp.*"].map(m=>`${m} -`).join(""),f=v.join(this.context.cwd,".gitignore");T.existsSync(f)||await T.writeFilePromise(f,g);let h={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,Rle.default)(h,e.get("initEditorConfig"));let p=`root = true -`;for(let[m,I]of Object.entries(h)){p+=` -[${m}] -`;for(let[B,b]of Object.entries(I))p+=`${B.replace(/[A-Z]/g,H=>`_${H.toLowerCase()}`)} = ${b} -`}let d=v.join(this.context.cwd,".editorconfig");T.existsSync(d)||await T.writeFilePromise(d,p),T.existsSync(v.join(this.context.cwd,".git"))||await hr.execvp("git",["init"],{cwd:this.context.cwd})}}};WC.paths=[["init"]],WC.usage=ye.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var Fle=WC;var T5e={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:ge.STRING,default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}}},commands:[Fle]},M5e=T5e;var GL={};it(GL,{default:()=>K5e});var Ua="portal:",Ha="link:";var OL=class{supports(e,r){return!!e.reference.startsWith(Ua)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot}}};var KL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ua)}supportsLocator(e,r){return!!e.reference.startsWith(Ua)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ua.length);return[S.makeLocator(e,`${Ua}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var UL=class{supports(e,r){return!!e.reference.startsWith(Ha)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0}}};var HL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ha)}supportsLocator(e,r){return!!e.reference.startsWith(Ha)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ha.length);return[S.makeLocator(e,`${Ha}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){return _(P({},e),{version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map})}};var O5e={fetchers:[UL,OL],resolvers:[HL,KL]},K5e=O5e;var mT={};it(mT,{default:()=>Y6e});var Ga;(function(i){i[i.YES=0]="YES",i[i.NO=1]="NO",i[i.DEPENDS=2]="DEPENDS"})(Ga||(Ga={}));var jL=(t,e)=>`${t}@${e}`,Nle=(t,e)=>{let r=e.indexOf("#"),i=r>=0?e.substring(r+1):e;return jL(t,i)},qs;(function(s){s[s.NONE=-1]="NONE",s[s.PERF=0]="PERF",s[s.CHECK=1]="CHECK",s[s.REASONS=2]="REASONS",s[s.INTENSIVE_CHECK=9]="INTENSIVE_CHECK"})(qs||(qs={}));var Tle=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),i=e.check||r>=9,n=e.hoistingLimits||new Map,s={check:i,debugLevel:r,hoistingLimits:n,fastLookupPossible:!0},o;s.debugLevel>=0&&(o=Date.now());let a=U5e(t,s),l=!1,c=0;do l=YL(a,[a],new Set([a.locator]),new Map,s).anotherRoundNeeded,s.fastLookupPossible=!1,c++;while(l);if(s.debugLevel>=0&&console.log(`hoist time: ${Date.now()-o}ms, rounds: ${c}`),s.debugLevel>=1){let u=zC(a);if(YL(a,[a],new Set([a.locator]),new Map,s).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: -${u}, next tree: -${zC(a)}`);let f=Lle(a);if(f)throw new Error(`${f}, after hoisting finished: -${zC(a)}`)}return s.debugLevel>=2&&console.log(zC(a)),H5e(a)},G5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())r.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),r},j5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of t)u=g.dependencies.get(c.name),u&&r.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),r},Mle=(t,e)=>{if(e.decoupled)return e;let{name:r,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:p,hoistedTo:d}=e,m={name:r,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:new Map(p),hoistedTo:new Map(d)},I=m.dependencies.get(r);return I&&I.ident==m.ident&&m.dependencies.set(r,m),t.dependencies.set(m.name,m),m},Y5e=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let n of t.dependencies.values())t.peerNames.has(n.name)||r.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!t.peerNames.has(s)){let a=r.get(s);a||(a=[],r.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return r},qL=t=>{let e=new Set,r=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!t.peerNames.has(s)){let o=t.dependencies.get(s);o&&!e.has(o)&&r(o,n)}e.add(i)}};for(let i of t.dependencies.values())t.peerNames.has(i.name)||r(i);return e},YL=(t,e,r,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=J5e(o),l=Y5e(o,a),c=t==o?new Map:n.fastLookupPossible?G5e(e):j5e(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([d,m])=>[d,m[0]])),p=new Map;do{let d=q5e(t,e,r,c,h,l,i,p,n);d.isGraphChanged&&(f=!0),d.anotherRoundNeeded&&(g=!0),u=!1;for(let[m,I]of l)I.length>1&&!o.dependencies.has(m)&&(h.delete(m),I.shift(),h.set(m,I[0]),u=!0)}while(u);for(let d of o.dependencies.values())if(!o.peerNames.has(d.name)&&!r.has(d.locator)){r.add(d.locator);let m=YL(t,[...e,d],r,p,n);m.isGraphChanged&&(f=!0),m.anotherRoundNeeded&&(g=!0),r.delete(d.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},W5e=(t,e,r,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(m=>wi(m)).join("\u2192")}`);let h=r[r.length-1],d=!(i.ident===h.ident);if(l&&!d&&(g="- self-reference"),d&&(d=!i.isWorkspace,l&&!d&&(g="- workspace")),d&&(d=!h.isWorkspace||h.hoistedFrom.has(i.name)||e.size===1,l&&!d&&(g=h.reasons.get(i.name))),d&&(d=!t.peerNames.has(i.name),l&&!d&&(g=`- cannot shadow peer: ${wi(t.originalDependencies.get(i.name).locator)} at ${u}`)),d){let m=!1,I=n.get(i.name);if(m=!I||I.ident===i.ident,l&&!m&&(g=`- filled by: ${wi(I.locator)} at ${u}`),m)for(let B=r.length-1;B>=1;B--){let R=r[B].dependencies.get(i.name);if(R&&R.ident!==i.ident){m=!1;let H=a.get(h);H||(H=new Set,a.set(h,H)),H.add(i.name),l&&(g=`- filled by ${wi(R.locator)} at ${r.slice(0,B).map(L=>wi(L.locator)).join("\u2192")}`);break}}d=m}if(d&&(d=s.get(i.name)===i.ident,l&&!d&&(g=`- filled by: ${wi(o.get(i.name)[0])} at ${u}`)),d){let m=!0,I=new Set(i.peerNames);for(let B=r.length-1;B>=1;B--){let b=r[B];for(let R of I){if(b.peerNames.has(R)&&b.originalDependencies.has(R))continue;let H=b.dependencies.get(R);H&&t.dependencies.get(R)!==H&&(B===r.length-1?f.add(H):(f=null,m=!1,l&&(g=`- peer dependency ${wi(H.locator)} from parent ${wi(b.locator)} was not hoisted to ${u}`))),I.delete(R)}if(!m)break}d=m}if(d&&!c)for(let m of i.hoistedDependencies.values()){let I=n.get(m.name);if(!I||m.ident!==I.ident){d=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${wi(m.locator)}, available: ${wi(I==null?void 0:I.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:d?0:1,reason:g}},q5e=(t,e,r,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(m,I,B,b)=>{if(u.has(B))return;let R=[...I,B.locator],H=new Map,L=new Map;for(let q of qL(B)){let A=W5e(c,r,[c,...m,B],q,i,n,s,a,{outputReason:l.debugLevel>=2,fastLookupPossible:l.fastLookupPossible});if(L.set(q,A),A.isHoistable===2)for(let V of A.dependsOn){let W=H.get(V.name)||new Set;W.add(q.name),H.set(V.name,W)}}let K=new Set,J=(q,A,V)=>{if(!K.has(q)){K.add(q),L.set(q,{isHoistable:1,reason:V});for(let W of H.get(q.name)||[])J(B.dependencies.get(W),A,l.debugLevel>=2?`- peer dependency ${wi(q.locator)} from parent ${wi(B.locator)} was not hoisted`:"")}};for(let[q,A]of L)A.isHoistable===1&&J(q,A,A.reason);for(let q of L.keys())if(!K.has(q)){f=!0;let A=o.get(B);A&&A.has(q.name)&&(g=!0),B.dependencies.delete(q.name),B.hoistedDependencies.set(q.name,q),B.reasons.delete(q.name);let V=c.dependencies.get(q.name);if(l.debugLevel>=2){let W=Array.from(I).concat([B.locator]).map(F=>wi(F)).join("\u2192"),X=c.hoistedFrom.get(q.name);X||(X=[],c.hoistedFrom.set(q.name,X)),X.push(W),B.hoistedTo.set(q.name,Array.from(e).map(F=>wi(F.locator)).join("\u2192"))}if(!V)c.ident!==q.ident&&(c.dependencies.set(q.name,q),b.add(q));else for(let W of q.references)V.references.add(W)}if(l.check){let q=Lle(t);if(q)throw new Error(`${q}, after hoisting dependencies of ${[c,...m,B].map(A=>wi(A.locator)).join("\u2192")}: -${zC(t)}`)}let ne=qL(B);for(let q of ne)if(K.has(q)){let A=L.get(q);if((n.get(q.name)===q.ident||!B.reasons.has(q.name))&&A.isHoistable!==0&&B.reasons.set(q.name,A.reason),!q.isHoistBorder&&R.indexOf(q.locator)<0){u.add(B);let W=Mle(B,q);h([...m,B],[...I,B.locator],W,d),u.delete(B)}}},p,d=new Set(qL(c));do{p=d,d=new Set;for(let m of p){if(m.locator===c.locator||m.isHoistBorder)continue;let I=Mle(c,m);h([],Array.from(r),I,d)}}while(d.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},Lle=t=>{let e=[],r=new Set,i=new Set,n=(s,o,a)=>{if(r.has(s)||(r.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>wi(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,d=`${h?` hoisted to ${h}`:""}`,m=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${m} - broken require promise for ${c.name}${d}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${m} - broken require promise: no required dependency ${c.name}${d} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(t,t.dependencies,t),e.join(` -`)},U5e=(t,e)=>{let{identName:r,name:i,reference:n,peerNames:s}=t,o={name:i,references:new Set([n]),locator:jL(r,n),ident:Nle(r,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,isWorkspace:!0,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[t,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:d,peerNames:m,hoistPriority:I,isWorkspace:B}=c,b=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([d]),locator:jL(p,d),ident:Nle(p,d),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(m),reasons:new Map,decoupled:!0,isHoistBorder:b?b.has(h):!1,hoistPriority:I||0,isWorkspace:B||!1,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=d=>{if(!h.has(d)){h.add(d),d.decoupled=!1;for(let m of d.dependencies.values())d.peerNames.has(m.name)||p(m)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of t.dependencies)l(c,o);return o},JL=t=>t.substring(0,t.indexOf("@",1)),H5e=t=>{let e={name:t.name,identName:JL(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),i=(n,s,o)=>{let a=r.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:JL(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){r.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);r.delete(n)}};for(let n of t.dependencies.values())i(n,t,e);return e},J5e=t=>{let e=new Map,r=new Set([t]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!r.has(a);if(n(a).dependents.add(o.ident),!l){r.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||s(t,o);return e},wi=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let i=t.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(r=`v:${r}`),n.startsWith("workspace")&&(r=`w:${r}`,n=""),`${r}${n?`@${n}`:""}`}else return`${r}`},Ole=5e4,zC=t=>{let e=0,r=(n,s,o="")=>{if(e>Ole||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name.localeCompare(u.name)),l="";s.add(n);for(let c=0;c":"")+(f!==u.name?`a:${u.name}:`:"")+wi(u.locator)+(g?` ${g}`:"")+(u!==n&&h.length>0?`, hoisted from: ${h.join(", ")}`:"")} -`,l+=r(u,s,`${o}${cOle?` -Tree is too large, part of the tree has been dunped -`:"")};var Js;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Js||(Js={}));var Sn;(function(i){i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none"})(Sn||(Sn={}));var Kle="node_modules",Hc="$wsroot$";var VC=(t,e)=>{let{packageTree:r,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=z5e(t,e),o=null;if(n.length===0){let a=Tle(r,{hoistingLimits:i});o=V5e(t,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},ms=t=>`${t.name}@${t.reference}`,WL=t=>{let e=new Map;for(let[r,i]of t.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((i,n)=>{let s=i.split(v.delimiter).length,o=n.split(v.delimiter).length;return s!==o?o-s:n.localeCompare(i)});return e},Ule=(t,e)=>{let r=S.isVirtualLocator(t)?S.devirtualizeLocator(t):t,i=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e;return S.areLocatorsEqual(r,i)},zL=(t,e,r,i)=>{if(t.linkType!==Js.SOFT)return!1;let n=M.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return v.contains(i,n)===null},_5e=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=M.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=t.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=ms(f);if(l.has(p))return;l.add(p);let d=t.getPackageInformation(f);if(d){let m=h?ms(h):"";if(ms(f)!==m&&d.linkType===Js.SOFT&&!zL(d,f,t,i)){let I=Hle(d,f,t);(!a.get(I)||f.reference.startsWith("workspace:"))&&a.set(I,f)}for(let[I,B]of d.packageDependencies)B!==null&&(d.packagePeers.has(I)||c(t.getLocator(I,B),f))}};for(let f of o)c(f,null);let u=i.split(v.sep);for(let f of a.values()){let h=t.getPackageInformation(f),d=M.toPortablePath(h.packageLocation.slice(0,-1)).split(v.sep).slice(u.length),m=s;for(let I of d){let B=m.children.get(I);B||(B={children:new Map},m.children.set(I,B)),m=B}m.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=ms(h),d=n.get(p);d||(d=new Set,n.set(p,d)),d.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},z5e=(t,e)=>{let r=[],i=!1,n=new Map,s=_5e(t),o=t.getPackageInformation(t.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=t.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=M.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,isWorkspace:!0},u=new Map,g=(h,p)=>`${ms(p)}:${h}`,f=(h,p,d,m,I,B,b,R)=>{var X,F;let H=g(h,d),L=u.get(H),K=!!L;!K&&d.name===a.name&&d.reference===a.reference&&(L=c,u.set(H,c));let J=zL(p,d,t,l);if(!L){let D=p.linkType===Js.SOFT&&d.name.endsWith(Hc);L={name:h,identName:d.name,reference:d.reference,dependencies:new Set,peerNames:D?new Set:p.packagePeers,isWorkspace:D},u.set(H,L)}let ne;if(J?ne=2:I.linkType===Js.SOFT?ne=1:ne=0,L.hoistPriority=Math.max(L.hoistPriority||0,ne),R&&!J){let D=ms({name:m.identName,reference:m.reference}),he=n.get(D)||new Set;n.set(D,he),he.add(L.name)}let q=new Map(p.packageDependencies);if(e.project){let D=e.project.workspacesByCwd.get(M.toPortablePath(p.packageLocation.slice(0,-1)));if(D){let he=new Set([...Array.from(D.manifest.peerDependencies.values(),pe=>S.stringifyIdent(pe)),...Array.from(D.manifest.peerDependenciesMeta.keys())]);for(let pe of he)q.has(pe)||(q.set(pe,B.get(pe)||null),L.peerNames.add(pe))}}let A=ms({name:d.name.replace(Hc,""),reference:d.reference}),V=s.get(A);if(V)for(let D of V)q.set(`${D.name}${Hc}`,D.reference);(p!==I||p.linkType!==Js.SOFT||!e.selfReferencesByCwd||e.selfReferencesByCwd.get(b))&&m.dependencies.add(L);let W=d!==a&&p.linkType===Js.SOFT&&!d.name.endsWith(Hc)&&!J;if(!K&&!W){let D=new Map;for(let[he,pe]of q)if(pe!==null){let Ne=t.getLocator(he,pe),Pe=t.getLocator(he.replace(Hc,""),pe),qe=t.getPackageInformation(Pe);if(qe===null)throw new Error("Assertion failed: Expected the package to have been registered");let re=zL(qe,Ne,t,l);if(e.validateExternalSoftLinks&&e.project&&re){qe.packageDependencies.size>0&&(i=!0);for(let[De,$]of qe.packageDependencies)if($!==null){let G=S.parseLocator(Array.isArray($)?`${$[0]}@${$[1]}`:`${De}@${$}`);if(ms(G)!==ms(Ne)){let Ce=q.get(De);if(Ce){let ee=S.parseLocator(Array.isArray(Ce)?`${Ce[0]}@${Ce[1]}`:`${De}@${Ce}`);Ule(ee,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with parent dependency ${S.prettyLocator(e.project.configuration,ee)}`})}else{let ee=D.get(De);if(ee){let Ue=ee.target,Oe=S.parseLocator(Array.isArray(Ue)?`${Ue[0]}@${Ue[1]}`:`${De}@${Ue}`);Ule(Oe,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with dependency ${S.prettyLocator(e.project.configuration,Oe)} from sibling portal ${S.prettyIdent(e.project.configuration,S.parseIdent(ee.portal.name))}`})}else D.set(De,{target:G.reference,portal:Ne})}}}}let se=(X=e.hoistingLimitsByCwd)==null?void 0:X.get(b),be=re?b:v.relative(l,M.toPortablePath(qe.packageLocation))||Se.dot,ae=(F=e.hoistingLimitsByCwd)==null?void 0:F.get(be),Ae=se===Sn.DEPENDENCIES||ae===Sn.DEPENDENCIES||ae===Sn.WORKSPACES;f(ms(Ne)===ms(d)?h:he,qe,Ne,L,p,q,be,Ae)}}};return f(a.name,o,a,c,o,o.packageDependencies,Se.dot,!1),{packageTree:c,hoistingLimits:n,errors:r,preserveSymlinksRequired:i}};function Hle(t,e,r){let i=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return M.toPortablePath(i||t.packageLocation)}function X5e(t,e,r){let i=e.getLocator(t.name.replace(Hc,""),t.reference),n=e.getPackageInformation(i);if(n===null)throw new Error("Assertion failed: Expected the package to be registered");let s,o;return r.pnpifyFs?(o=M.toPortablePath(n.packageLocation),s=Js.SOFT):(o=Hle(n,t,e),s=n.linkType),{linkType:s,target:o}}var V5e=(t,e,r)=>{let i=new Map,n=(u,g,f)=>{let{linkType:h,target:p}=X5e(u,t,r);return{locator:ms(u),nodePath:g,target:p,linkType:h,aliases:f}},s=u=>{let[g,f]=u.split("/");return f?{scope:kr(g),name:kr(f)}:{scope:null,name:kr(g)}},o=new Set,a=(u,g,f)=>{if(!o.has(u)){o.add(u);for(let h of u.dependencies){if(h===u)continue;let p=Array.from(h.references).sort(),d={name:h.identName,reference:p[0]},{name:m,scope:I}=s(h.name),B=I?[I,m]:[m],b=v.join(g,Kle),R=v.join(b,...B),H=`${f}/${d.name}`,L=n(d,f,p.slice(1)),K=!1;if(L.linkType===Js.SOFT&&r.project){let J=r.project.workspacesByCwd.get(L.target.slice(0,-1));K=!!(J&&!J.manifest.name)}if(!h.name.endsWith(Hc)&&!K){let J=i.get(R);if(J){if(J.dirList)throw new Error(`Assertion failed: ${R} cannot merge dir node with leaf node`);{let V=S.parseLocator(J.locator),W=S.parseLocator(L.locator);if(J.linkType!==L.linkType)throw new Error(`Assertion failed: ${R} cannot merge nodes with different link types ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/${S.stringifyLocator(W)}`);if(V.identHash!==W.identHash)throw new Error(`Assertion failed: ${R} cannot merge nodes with different idents ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/s${S.stringifyLocator(W)}`);L.aliases=[...L.aliases,...J.aliases,S.parseLocator(J.locator).reference]}}i.set(R,L);let ne=R.split("/"),q=ne.indexOf(Kle),A=ne.length-1;for(;q>=0&&A>q;){let V=M.toPortablePath(ne.slice(0,A).join(v.sep)),W=kr(ne[A]),X=i.get(V);if(!X)i.set(V,{dirList:new Set([W])});else if(X.dirList){if(X.dirList.has(W))break;X.dirList.add(W)}A--}}a(h,L.linkType===Js.SOFT?L.target:R,H)}}},l=n({name:e.name,reference:Array.from(e.references)[0]},"",[]),c=l.target;return i.set(c,l),a(e,c,""),i};var oT={};it(oT,{PnpInstaller:()=>Cf,PnpLinker:()=>jc,default:()=>m6e,getPnpPath:()=>qA,jsInstallUtils:()=>Ws,pnpUtils:()=>nT,quotePathIfNeeded:()=>uce});var lce=ie(Or()),cce=ie(require("url"));var Gle;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Gle||(Gle={}));var Ht;(function(f){f.DEFAULT="DEFAULT",f.TOP_LEVEL="TOP_LEVEL",f.FALLBACK_EXCLUSION_LIST="FALLBACK_EXCLUSION_LIST",f.FALLBACK_EXCLUSION_ENTRIES="FALLBACK_EXCLUSION_ENTRIES",f.FALLBACK_EXCLUSION_DATA="FALLBACK_EXCLUSION_DATA",f.PACKAGE_REGISTRY_DATA="PACKAGE_REGISTRY_DATA",f.PACKAGE_REGISTRY_ENTRIES="PACKAGE_REGISTRY_ENTRIES",f.PACKAGE_STORE_DATA="PACKAGE_STORE_DATA",f.PACKAGE_STORE_ENTRIES="PACKAGE_STORE_ENTRIES",f.PACKAGE_INFORMATION_DATA="PACKAGE_INFORMATION_DATA",f.PACKAGE_DEPENDENCIES="PACKAGE_DEPENDENCIES",f.PACKAGE_DEPENDENCY="PACKAGE_DEPENDENCY"})(Ht||(Ht={}));var jle={[Ht.DEFAULT]:{collapsed:!1,next:{["*"]:Ht.DEFAULT}},[Ht.TOP_LEVEL]:{collapsed:!1,next:{fallbackExclusionList:Ht.FALLBACK_EXCLUSION_LIST,packageRegistryData:Ht.PACKAGE_REGISTRY_DATA,["*"]:Ht.DEFAULT}},[Ht.FALLBACK_EXCLUSION_LIST]:{collapsed:!1,next:{["*"]:Ht.FALLBACK_EXCLUSION_ENTRIES}},[Ht.FALLBACK_EXCLUSION_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.FALLBACK_EXCLUSION_DATA}},[Ht.FALLBACK_EXCLUSION_DATA]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}},[Ht.PACKAGE_REGISTRY_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_REGISTRY_ENTRIES}},[Ht.PACKAGE_REGISTRY_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_STORE_DATA}},[Ht.PACKAGE_STORE_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_STORE_ENTRIES}},[Ht.PACKAGE_STORE_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_INFORMATION_DATA}},[Ht.PACKAGE_INFORMATION_DATA]:{collapsed:!1,next:{packageDependencies:Ht.PACKAGE_DEPENDENCIES,["*"]:Ht.DEFAULT}},[Ht.PACKAGE_DEPENDENCIES]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_DEPENDENCY}},[Ht.PACKAGE_DEPENDENCY]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}}};function Z5e(t,e,r){let i="";i+="[";for(let n=0,s=t.length;ns(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function r6e(t){let e=new Map,r=_C(t.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of r){let s=e.get(i);typeof s=="undefined"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function i6e(t){return _C(t.fallbackPool||[],([e])=>e)}function n6e(t){let e=[];for(let[r,i]of _C(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([r,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of _C(i,([g])=>g===null?"0":`1${g}`)){let g=[];r!==null&&s!==null&&!a.has(r)&&g.push([r,s]);for(let[p,d]of _C(a.entries(),([m])=>m))g.push([p,d]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function XC(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:r6e(t),fallbackPool:i6e(t),packageRegistryData:n6e(t)}}var zle=ie(Wle());function Vle(t,e){return[t?`${t} -`:"",`/* eslint-disable */ - -`,`try { -`,` Object.freeze({}).detectStrictMode = true; -`,`} catch (error) { -`," throw new Error(`The whole PnP file got strict-mode-ified, which is known to break (Emscripten libraries aren't strict mode). This usually happens when the file goes through Babel.`);\n",`} -`,` -`,`var __non_webpack_module__ = module; -`,` -`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,e.replace(/^/gm," "),`} -`,` -`,(0,zle.default)()].join("")}function s6e(t){return JSON.stringify(t,null,2)}function o6e(t){return[`return hydrateRuntimeState(${qle(t)}, {basePath: basePath || __dirname}); -`].join("")}function a6e(t){return[`var path = require('path'); -`,`var dataLocation = path.resolve(__dirname, ${JSON.stringify(t)}); -`,`return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)}); -`].join("")}function _le(t){let e=XC(t),r=o6e(e);return Vle(t.shebang,r)}function Xle(t){let e=XC(t),r=a6e(t.dataLocation),i=Vle(t.shebang,r);return{dataFile:s6e(e),loaderFile:i}}var tce=ie(require("fs")),u6e=ie(require("path")),rce=ie(require("util"));function _L(t,{basePath:e}){let r=M.toPortablePath(e),i=v.resolve(r),n=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,s=new Map,o=new Map(t.packageRegistryData.map(([g,f])=>[g,new Map(f.map(([h,p])=>{var b;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let d=(b=p.discardFromLookup)!=null?b:!1,m={name:g,reference:h},I=s.get(p.packageLocation);I?(I.discardFromLookup=I.discardFromLookup&&d,d||(I.locator=m)):s.set(p.packageLocation,{locator:m,discardFromLookup:d});let B=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:d,get packageLocation(){return B||(B=v.join(i,p.packageLocation))}}]}))])),a=new Map(t.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(t.fallbackPool),c=t.dependencyTreeRoots,u=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var df=ie(require("module")),ece=ie($le()),ZL=ie(require("util"));var ur;(function(l){l.API_ERROR="API_ERROR",l.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",l.MISSING_DEPENDENCY="MISSING_DEPENDENCY",l.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",l.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",l.INTERNAL="INTERNAL",l.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",l.UNSUPPORTED="UNSUPPORTED"})(ur||(ur={}));var c6e=new Set([ur.BUILTIN_NODE_RESOLUTION_FAILED,ur.MISSING_DEPENDENCY,ur.MISSING_PEER_DEPENDENCY,ur.QUALIFIED_PATH_RESOLUTION_FAILED,ur.UNDECLARED_DEPENDENCY]);function ui(t,e,r={}){let i=c6e.has(t)?"MODULE_NOT_FOUND":t,n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:_(P({},n),{value:i}),pnpCode:_(P({},n),{value:t}),data:_(P({},n),{value:r})})}function YA(t){return M.normalize(M.fromPortablePath(t))}function $L(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=new Set(df.Module.builtinModules||Object.keys(process.binding("natives"))),s=re=>n.has(re)||re.startsWith("node:"),o=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,a=/^(\/|\.{1,2}(\/|$))/,l=/\/$/,c=/^\.{0,2}\//,u={name:null,reference:null},g=[],f=new Set;if(t.enableTopLevelFallback===!0&&g.push(u),e.compatibilityMode!==!1)for(let re of["react-scripts","gatsby"]){let se=t.packageRegistry.get(re);if(se)for(let be of se.keys()){if(be===null)throw new Error("Assertion failed: This reference shouldn't be null");g.push({name:re,reference:be})}}let{ignorePattern:h,packageRegistry:p,packageLocatorsByLocations:d}=t;function m(re,se){return{fn:re,args:se,error:null,result:null}}function I(re){var De,$,G,Ce,ee,Ue;let se=(G=($=(De=process.stderr)==null?void 0:De.hasColors)==null?void 0:$.call(De))!=null?G:process.stdout.isTTY,be=(Oe,vt)=>`[${Oe}m${vt}`,ae=re.error;console.error(ae?be("31;1",`\u2716 ${(Ce=re.error)==null?void 0:Ce.message.replace(/\n.*/s,"")}`):be("33;1","\u203C Resolution")),re.args.length>0&&console.error();for(let Oe of re.args)console.error(` ${be("37;1","In \u2190")} ${(0,ZL.inspect)(Oe,{colors:se,compact:!0})}`);re.result&&(console.error(),console.error(` ${be("37;1","Out \u2192")} ${(0,ZL.inspect)(re.result,{colors:se,compact:!0})}`));let Ae=(Ue=(ee=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:ee.slice(2))!=null?Ue:[];if(Ae.length>0){console.error();for(let Oe of Ae)console.error(` ${be("38;5;244",Oe)}`)}console.error()}function B(re,se){if(e.allowDebug===!1)return se;if(Number.isFinite(i)){if(i>=2)return(...be)=>{let ae=m(re,be);try{return ae.result=se(...be)}catch(Ae){throw ae.error=Ae}finally{I(ae)}};if(i>=1)return(...be)=>{try{return se(...be)}catch(ae){let Ae=m(re,be);throw Ae.error=ae,I(Ae),ae}}}return se}function b(re){let se=W(re);if(!se)throw ui(ur.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return se}function R(re){if(re.name===null)return!0;for(let se of t.dependencyTreeRoots)if(se.name===re.name&&se.reference===re.reference)return!0;return!1}let H=new Set(["default","node","require"]);function L(re,se=H){let be=D(v.join(re,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(be===null)throw ui(ur.INTERNAL,`The locator that owns the "${re}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ae}=b(be),Ae=v.join(ae,wt.manifest);if(!e.fakeFs.existsSync(Ae))return null;let De=JSON.parse(e.fakeFs.readFileSync(Ae,"utf8")),$=v.contains(ae,re);if($===null)throw ui(ur.INTERNAL,"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");c.test($)||($=`./${$}`);let G=(0,ece.resolve)(De,v.normalize($),{conditions:se,unsafe:!0});return typeof G=="string"?v.join(ae,G):null}function K(re,se,{extensions:be}){let ae;try{se.push(re),ae=e.fakeFs.statSync(re)}catch(Ae){}if(ae&&!ae.isDirectory())return e.fakeFs.realpathSync(re);if(ae&&ae.isDirectory()){let Ae;try{Ae=JSON.parse(e.fakeFs.readFileSync(v.join(re,wt.manifest),"utf8"))}catch($){}let De;if(Ae&&Ae.main&&(De=v.resolve(re,Ae.main)),De&&De!==re){let $=K(De,se,{extensions:be});if($!==null)return $}}for(let Ae=0,De=be.length;Ae{let G=JSON.stringify($.name);if(ae.has(G))return;ae.add(G);let Ce=X($);for(let ee of Ce)if(b(ee).packagePeers.has(re))Ae(ee);else{let Oe=be.get(ee.name);typeof Oe=="undefined"&&be.set(ee.name,Oe=new Set),Oe.add(ee.reference)}};Ae(se);let De=[];for(let $ of[...be.keys()].sort())for(let G of[...be.get($)].sort())De.push({name:$,reference:G});return De}function D(re,{resolveIgnored:se=!1,includeDiscardFromLookup:be=!1}={}){if(q(re)&&!se)return null;let ae=v.relative(t.basePath,re);ae.match(a)||(ae=`./${ae}`),ae.endsWith("/")||(ae=`${ae}/`);do{let Ae=d.get(ae);if(typeof Ae=="undefined"||Ae.discardFromLookup&&!be){ae=ae.substring(0,ae.lastIndexOf("/",ae.length-2)+1);continue}return Ae.locator}while(ae!=="");return null}function he(re,se,{considerBuiltins:be=!0}={}){if(re==="pnpapi")return M.toPortablePath(e.pnpapiResolution);if(be&&s(re))return null;let ae=YA(re),Ae=se&&YA(se);if(se&&q(se)&&(!v.isAbsolute(re)||D(re)===null)){let G=ne(re,se);if(G===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) - -Require request: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(G)}let De,$=re.match(o);if($){if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let[,G,Ce]=$,ee=D(se);if(!ee){let yr=ne(re,se);if(yr===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). - -Require path: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(yr)}let Oe=b(ee).packageDependencies.get(G),vt=null;if(Oe==null&&ee.name!==null){let yr=t.fallbackExclusionList.get(ee.name);if(!yr||!yr.has(ee.reference)){for(let Qi=0,Go=g.length;QiR(Ki))?dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr}):dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) - -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr})}else Oe===void 0&&(!be&&s(re)?R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in ${ee.name}'s dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}):R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}));if(Oe==null){if(vt===null||dt===null)throw dt||new Error("Assertion failed: Expected an error to have been set");Oe=vt;let yr=dt.message.replace(/\n.*/g,"");dt.message=yr,!f.has(yr)&&i!==0&&(f.add(yr),process.emitWarning(dt))}let ri=Array.isArray(Oe)?{name:Oe[0],reference:Oe[1]}:{name:G,reference:Oe},ii=b(ri);if(!ii.packageLocation)throw ui(ur.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. - -Required package: ${ri.name}@${ri.reference}${ri.name!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,dependencyLocator:Object.assign({},ri)});let an=ii.packageLocation;Ce?De=v.join(an,Ce):De=an}else if(v.isAbsolute(re))De=v.normalize(re);else{if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let G=v.resolve(se);se.match(l)?De=v.normalize(v.join(G,re)):De=v.normalize(v.join(v.dirname(G),re))}return v.normalize(De)}function pe(re,se,be=H){if(a.test(re))return se;let ae=L(se,be);return ae?v.normalize(ae):se}function Ne(re,{extensions:se=Object.keys(df.Module._extensions)}={}){let be=[],ae=K(re,be,{extensions:se});if(ae)return v.normalize(ae);{let Ae=YA(re),De=D(re);if(De){let{packageLocation:$}=b(De);if(!e.fakeFs.existsSync($)){let G=$.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`${G} - -Missing package: ${De.name}@${De.reference} -Expected package location: ${YA($)} -`,{unqualifiedPath:Ae})}}throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`Qualified path resolution failed - none of those files can be found on the disk. - -Source path: ${Ae} -${be.map($=>`Not found: ${YA($)} -`).join("")}`,{unqualifiedPath:Ae})}}function Pe(re,se,{considerBuiltins:be,extensions:ae,conditions:Ae}={}){let De=he(re,se,{considerBuiltins:be});if(re==="pnpapi")return De;if(De===null)return null;let $=()=>se!==null?q(se):!1,G=(!be||!s(re))&&!$()?pe(re,De,Ae):De;try{return Ne(G,{extensions:ae})}catch(Ce){throw Ce.pnpCode==="QUALIFIED_PATH_RESOLUTION_FAILED"&&Object.assign(Ce.data,{request:YA(re),issuer:se&&YA(se)}),Ce}}function qe(re){let se=v.normalize(re),be=Pr.resolveVirtual(se);return be!==se?be:null}return{VERSIONS:A,topLevel:V,getLocator:(re,se)=>Array.isArray(se)?{name:se[0],reference:se[1]}:{name:re,reference:se},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let re=[];for(let[se,be]of p)for(let ae of be.keys())se!==null&&ae!==null&&re.push({name:se,reference:ae});return re},getPackageInformation:re=>{let se=W(re);if(se===null)return null;let be=M.fromPortablePath(se.packageLocation);return _(P({},se),{packageLocation:be})},findPackageLocator:re=>D(M.toPortablePath(re)),resolveToUnqualified:B("resolveToUnqualified",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=he(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveUnqualified:B("resolveUnqualified",(re,se)=>M.fromPortablePath(Ne(M.toPortablePath(re),se))),resolveRequest:B("resolveRequest",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=Pe(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveVirtual:B("resolveVirtual",re=>{let se=qe(M.toPortablePath(re));return se!==null?M.fromPortablePath(se):null})}}var ISt=(0,rce.promisify)(tce.readFile);var ice=(t,e,r)=>{let i=XC(t),n=_L(i,{basePath:e}),s=M.join(e,wt.pnpCjs);return $L(n,{fakeFs:r,pnpapiResolution:s})};var tT=ie(sce());var Ws={};it(Ws,{checkAndReportManifestCompatibility:()=>oce,extractBuildScripts:()=>Z0,getExtractHint:()=>rT,hasBindingGyp:()=>iT});function oce(t,e,{configuration:r,report:i}){return S.isPackageCompatible(t,{os:[process.platform],cpu:[process.arch]})?!0:(i==null||i.reportWarningOnce(z.INCOMPATIBLE_ARCHITECTURE,`${S.prettyLocator(r,t)} The ${process.platform}-${process.arch} architecture is incompatible with this module, ${e} skipped.`),!1)}function Z0(t,e,r,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([Gn.SCRIPT,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([Gn.SHELLCODE,"node-gyp rebuild"]),s.length===0?[]:t.linkType!==gt.HARD?(n==null||n.reportWarningOnce(z.SOFT_LINK_BUILD,`${S.prettyLocator(i,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(n==null||n.reportInfoOnce(z.BUILD_DISABLED,`${S.prettyLocator(i,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!r.built?(n==null||n.reportWarningOnce(z.DISABLED_BUILD_SCRIPTS,`${S.prettyLocator(i,t)} lists build scripts, but all build scripts have been disabled.`),[]):oce(t,"build",{configuration:i,report:n})?s:[]}var g6e=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function rT(t){return t.packageFs.getExtractHint({relevantExtensions:g6e})}function iT(t){let e=v.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var nT={};it(nT,{getUnpluggedPath:()=>ZC});function ZC(t,{configuration:e}){return v.resolve(e.get("pnpUnpluggedFolder"),S.slugifyLocator(t))}var f6e=new Set([S.makeIdent(null,"nan").identHash,S.makeIdent(null,"node-gyp").identHash,S.makeIdent(null,"node-pre-gyp").identHash,S.makeIdent(null,"node-addon-api").identHash,S.makeIdent(null,"fsevents").identHash]),jc=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,r){return!(r.project.configuration.get("nodeLinker")!=="pnp"||r.project.configuration.get("pnpMode")!==this.mode)}async findPackageLocation(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})),s={name:S.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return M.toPortablePath(o.packageLocation)}async findPackageLocator(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))return null;let s=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})).findPackageLocator(M.fromPortablePath(e));return s?S.makeLocator(S.parseIdent(s.name),s.reference):null}makeInstaller(e){return new Cf(e)}},Cf=class{constructor(e){this.opts=e;this.mode="strict";this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,r){let i=S.stringifyIdent(e),n=e.reference,s=!!this.opts.project.tryWorkspaceByLocator(e),o=S.isVirtualLocator(e),a=e.peerDependencies.size>0&&!o,l=!a&&!s,c=!a&&e.linkType!==gt.SOFT,u,g;if(l||c){let B=o?S.devirtualizeLocator(e):e;u=this.customData.store.get(B.locatorHash),typeof u=="undefined"&&(u=await h6e(r),e.linkType===gt.HARD&&this.customData.store.set(B.locatorHash,u)),u.manifest.type==="module"&&(this.isESMLoaderRequired=!0),g=this.opts.project.getDependencyMeta(B,e.version)}let f=l?Z0(e,u,g,{configuration:this.opts.project.configuration,report:this.opts.report}):[],h=c?await this.unplugPackageIfNeeded(e,u,r,g):r.packageFs;if(v.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let p=v.resolve(h.getRealPath(),r.prefixPath),d=sT(this.opts.project.cwd,p),m=new Map,I=new Set;if(o){for(let B of e.peerDependencies.values())m.set(S.stringifyIdent(B),null),I.add(S.stringifyIdent(B));if(!s){let B=S.devirtualizeLocator(e);this.virtualTemplates.set(B.locatorHash,{location:sT(this.opts.project.cwd,Pr.resolveVirtual(p)),locator:B})}}return de.getMapWithDefault(this.packageRegistry,i).set(n,{packageLocation:d,packageDependencies:m,packagePeers:I,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:p,buildDirective:f.length>0?f:null}}async attachInternalDependencies(e,r){let i=this.getPackageInformation(e);for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){for(let i of r)this.getDiskInformation(i).packageDependencies.set(S.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=qA(this.opts.project);if(T.existsSync(e.cjsLegacy)&&(this.opts.report.reportWarning(z.UNNAMED,`Removing the old ${ue.pretty(this.opts.project.configuration,wt.pnpJs,ue.Type.PATH)} file. You might need to manually update existing references to reference the new ${ue.pretty(this.opts.project.configuration,wt.pnpCjs,ue.Type.PATH)} file. If you use Editor SDKs, you'll have to rerun ${ue.pretty(this.opts.project.configuration,"yarn sdks",ue.Type.CODE)}.`),await T.removePromise(e.cjsLegacy)),this.isEsmEnabled()||await T.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await T.removePromise(e.cjs),await T.removePromise(this.opts.project.configuration.get("pnpDataPath")),await T.removePromise(e.esmLoader);return}for(let{locator:u,location:g}of this.virtualTemplates.values())de.getMapWithDefault(this.packageRegistry,S.stringifyIdent(u)).set(u.reference,{packageLocation:g,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),i=this.opts.project.workspaces.map(({anchoredLocator:u})=>({name:S.stringifyIdent(u),reference:u.reference})),n=r!=="none",s=[],o=new Map,a=de.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),l=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let u of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(u)&&s.push({name:S.stringifyIdent(u),reference:u.reference});return await this.finalizeInstallWithPnp({dependencyTreeRoots:i,enableTopLevelFallback:n,fallbackExclusionList:s,fallbackPool:o,ignorePattern:a,packageRegistry:l,shebang:c}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=qA(this.opts.project),i=this.opts.project.configuration.get("pnpDataPath"),n=await this.locateNodeModules(e.ignorePattern);if(n.length>0){this.opts.report.reportWarning(z.DANGEROUS_NODE_MODULES,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let o of n)await T.removePromise(o)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let o=_le(e);await T.changeFilePromise(r.cjs,o,{automaticNewlines:!0,mode:493}),await T.removePromise(i)}else{let o=v.relative(v.dirname(r.cjs),i),{dataFile:a,loaderFile:l}=Xle(_(P({},e),{dataLocation:o}));await T.changeFilePromise(r.cjs,l,{automaticNewlines:!0,mode:493}),await T.changeFilePromise(i,a,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(z.UNNAMED,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await T.changeFilePromise(r.esmLoader,(0,tT.default)(),{automaticNewlines:!0,mode:420}));let s=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await T.removePromise(s);else for(let o of await T.readdirPromise(s)){let a=v.resolve(s,o);this.unpluggedPaths.has(a)||await T.removePromise(a)}}async locateNodeModules(e){let r=[],i=e?new RegExp(e):null;for(let n of this.opts.project.workspaces){let s=v.join(n.cwd,"node_modules");if(i&&i.test(v.relative(this.opts.project.cwd,n.cwd))||!T.existsSync(s))continue;let o=await T.readdirPromise(s,{withFileTypes:!0}),a=o.filter(l=>!l.isDirectory()||l.name===".bin"||!l.name.startsWith("."));if(a.length===o.length)r.push(s);else for(let l of a)r.push(v.join(s,l.name))}return r}async unplugPackageIfNeeded(e,r,i,n){return this.shouldBeUnplugged(e,r,n)?this.unplugPackage(e,i):i.packageFs}shouldBeUnplugged(e,r,i){return typeof i.unplugged!="undefined"?i.unplugged:f6e.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(Z0(e,r,i,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r){let i=ZC(e,{configuration:this.opts.project.configuration});if(this.opts.project.disabledLocators.has(e.locatorHash))return new Xo(i,{baseFs:r.packageFs,pathUtils:v});this.unpluggedPaths.add(i);let n=v.join(i,r.prefixPath,".ready");return await T.existsPromise(n)?new Ft(i):(this.opts.project.storedBuildState.delete(e.locatorHash),await T.mkdirPromise(i,{recursive:!0}),await T.copyPromise(i,Se.dot,{baseFs:r.packageFs,overwrite:!1}),await T.writeFilePromise(n,""),new Ft(i))}getPackageInformation(e){let r=S.stringifyIdent(e),i=e.reference,n=this.packageRegistry.get(r);if(!n)throw new Error(`Assertion failed: The package information store should have been available (for ${S.prettyIdent(this.opts.project.configuration,e)})`);let s=n.get(i);if(!s)throw new Error(`Assertion failed: The package information should have been available (for ${S.prettyLocator(this.opts.project.configuration,e)})`);return s}getDiskInformation(e){let r=de.getMapWithDefault(this.packageRegistry,"@@disk"),i=sT(this.opts.project.cwd,e);return de.getFactoryWithDefault(r,i,()=>({packageLocation:i,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1}))}};function sT(t,e){let r=v.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function h6e(t){var i;let e=(i=await Ze.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?i:new Ze,r=new Set(["preinstall","install","postinstall"]);for(let n of e.scripts.keys())r.has(n)||e.scripts.delete(n);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:rT(t),hasBindingGyp:iT(t)}}}var ace=ie(Nn());var $C=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);if(e.get("nodeLinker")!=="pnp")throw new me("This command can only be used if the `nodeLinker` option is set to `pnp`");await r.restoreInstallState();let s=new Set(this.patterns),o=this.patterns.map(f=>{let h=S.parseDescriptor(f),p=h.range!=="unknown"?h:S.makeDescriptor(h,"*");if(!qt.validRange(p.range))throw new me(`The range of the descriptor patterns must be a valid semver range (${S.prettyDescriptor(e,p)})`);return d=>{let m=S.stringifyIdent(d);return!ace.default.isMatch(m,S.stringifyIdent(p))||d.version&&!qt.satisfiesWithPrereleases(d.version,p.range)?!1:(s.delete(f),!0)}}),a=()=>{let f=[];for(let h of r.storedPackages.values())!r.tryWorkspaceByLocator(h)&&!S.isVirtualLocator(h)&&o.some(p=>p(h))&&f.push(h);return f},l=f=>{let h=new Set,p=[],d=(m,I)=>{if(!h.has(m.locatorHash)&&(h.add(m.locatorHash),!r.tryWorkspaceByLocator(m)&&o.some(B=>B(m))&&p.push(m),!(I>0&&!this.recursive)))for(let B of m.dependencies.values()){let b=r.storedResolutions.get(B.descriptorHash);if(!b)throw new Error("Assertion failed: The resolution should have been registered");let R=r.storedPackages.get(b);if(!R)throw new Error("Assertion failed: The package should have been registered");d(R,I+1)}};for(let m of f){let I=r.storedPackages.get(m.anchoredLocator.locatorHash);if(!I)throw new Error("Assertion failed: The package should have been registered");d(I,0)}return p},c,u;if(this.all&&this.recursive?(c=a(),u="the project"):this.all?(c=l(r.workspaces),u="any workspace"):(c=l([i]),u="this workspace"),s.size>1)throw new me(`Patterns ${ue.prettyList(e,s,ue.Type.CODE)} don't match any packages referenced by ${u}`);if(s.size>0)throw new me(`Pattern ${ue.prettyList(e,s,ue.Type.CODE)} doesn't match any packages referenced by ${u}`);return c=de.sortMap(c,f=>S.stringifyLocator(f)),(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async f=>{var h;for(let p of c){let d=(h=p.version)!=null?h:"unknown",m=r.topLevelWorkspace.manifest.ensureDependencyMeta(S.makeDescriptor(p,d));m.unplugged=!0,f.reportInfo(z.UNNAMED,`Will unpack ${S.prettyLocator(e,p)} to ${ue.pretty(e,ZC(p,{configuration:e}),ue.Type.PATH)}`),f.reportJson({locator:S.stringifyLocator(p),version:d})}await r.topLevelWorkspace.persistManifest(),f.reportSeparator(),await r.install({cache:n,report:f})})).exitCode()}};$C.paths=[["unplug"]],$C.usage=ye.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Ace=$C;var qA=t=>({cjs:v.join(t.cwd,wt.pnpCjs),cjsLegacy:v.join(t.cwd,wt.pnpJs),esmLoader:v.join(t.cwd,".pnp.loader.mjs")}),uce=t=>/\s/.test(t)?JSON.stringify(t):t;async function p6e(t,e,r){let i=qA(t),n=`--require ${uce(M.fromPortablePath(i.cjs))}`;if(T.existsSync(i.esmLoader)&&(n=`${n} --experimental-loader ${(0,cce.pathToFileURL)(M.fromPortablePath(i.esmLoader)).href}`),i.cjs.includes(" ")&&lce.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(T.existsSync(i.cjs)){let s=e.NODE_OPTIONS||"",o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;s=s.replace(o," ").replace(a," ").trim(),s=s?`${n} ${s}`:n,e.NODE_OPTIONS=s}}async function d6e(t,e){let r=qA(t);e(r.cjs),e(r.esmLoader),e(t.configuration.get("pnpDataPath")),e(t.configuration.get("pnpUnpluggedFolder"))}var C6e={hooks:{populateYarnPaths:d6e,setupScriptEnvironment:p6e},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:ge.STRING,default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:ge.STRING,default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:ge.STRING,default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:ge.STRING,default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:ge.BOOLEAN,default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:ge.BOOLEAN,default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:ge.STRING,default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:ge.ABSOLUTE_PATH,default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:ge.ABSOLUTE_PATH,default:"./.pnp.data.json"}},linkers:[jc],commands:[Ace]},m6e=C6e;var Cce=ie(dce());var uT=ie(require("crypto")),mce=ie(require("fs")),Ece=1,gi="node_modules",gT=".bin",Ice=".yarn-state.yml",Bi;(function(i){i.CLASSIC="classic",i.HARDLINKS_LOCAL="hardlinks-local",i.HARDLINKS_GLOBAL="hardlinks-global"})(Bi||(Bi={}));var fT=class{constructor(){this.installStateCache=new Map}supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="node-modules"}async findPackageLocation(e,r){let i=r.project.tryWorkspaceByLocator(e);if(i)return i.cwd;let n=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(n===null)throw new me("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let s=n.locatorMap.get(S.stringifyLocator(e));if(!s){let a=new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw a.code="LOCATOR_NOT_INSTALLED",a}let o=r.project.configuration.startingCwd;return s.locations.find(a=>v.contains(o,a))||s.locations[0]}async findPackageLocator(e,r){let i=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(i===null)return null;let{locationRoot:n,segments:s}=$0(v.resolve(e),{skipPrefix:r.project.cwd}),o=i.locationTree.get(n);if(!o)return null;let a=o.locator;for(let l of s){if(o=o.children.get(l),!o)break;a=o.locator||a}return S.parseLocator(a)}makeInstaller(e){return new yce(e)}},yce=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:1})}attachCustomData(e){this.customData=e}async installPackage(e,r){var u;let i=v.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.customData.store.get(e.locatorHash);if(typeof n=="undefined"&&(n=await L6e(e,r),e.linkType===gt.HARD&&this.customData.store.set(e.locatorHash,n)),!Ws.checkAndReportManifestCompatibility(e,"link",{configuration:this.opts.project.configuration,report:this.opts.report}))return{packageLocation:null,buildDirective:null};let s=new Map,o=new Set;s.has(S.stringifyIdent(e))||s.set(S.stringifyIdent(e),e.reference);let a=e;if(S.isVirtualLocator(e)){a=S.devirtualizeLocator(e);for(let g of e.peerDependencies.values())s.set(S.stringifyIdent(g),null),o.add(S.stringifyIdent(g))}let l={packageLocation:`${M.fromPortablePath(i)}/`,packageDependencies:s,packagePeers:o,linkType:e.linkType,discardFromLookup:(u=r.discardFromLookup)!=null?u:!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:l});let c=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(a.locatorHash,c),{packageLocation:i,buildDirective:null}}async attachInternalDependencies(e,r){let i=this.localStore.get(e.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected information object to have been registered");for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.pnpNode.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),r=await hT(this.opts.project),i=this.opts.project.configuration.get("nmMode");(r===null||i!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:i});let n=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmHoistingLimits");try{h=de.validateEnum(Sn,(d=(p=f.manifest.installConfig)==null?void 0:p.hoistingLimits)!=null?d:h)}catch(m){let I=S.prettyWorkspace(this.opts.project.configuration,f);this.opts.report.reportWarning(z.INVALID_MANIFEST,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(Sn).join(", ")}, using default: "${h}"`)}return[f.relativeCwd,h]})),s=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmSelfReferences");return h=(d=(p=f.manifest.installConfig)==null?void 0:p.selfReferences)!=null?d:h,[f.relativeCwd,h]})),o={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(f,h)=>Array.isArray(h)?{name:h[0],reference:h[1]}:{name:f,reference:h},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(f=>{let h=f.anchoredLocator;return{name:S.stringifyIdent(f.locator),reference:h.reference}}),getPackageInformation:f=>{let h=f.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:S.makeLocator(S.parseIdent(f.name),f.reference),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the package reference to have been registered");return p.pnpNode},findPackageLocator:f=>{let h=this.opts.project.tryWorkspaceByCwd(M.toPortablePath(f));if(h!==null){let p=h.anchoredLocator;return{name:S.stringifyIdent(p),reference:p.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:f=>M.fromPortablePath(Pr.resolveVirtual(M.toPortablePath(f)))},{tree:a,errors:l,preserveSymlinksRequired:c}=VC(o,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:n,project:this.opts.project,selfReferencesByCwd:s});if(!a){for(let{messageName:f,text:h}of l)this.opts.report.reportError(f,h);return}let u=WL(a);await T6e(r,u,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async f=>{let h=S.parseLocator(f),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the slot to exist");return p.customPackageData.manifest}});let g=[];for(let[f,h]of u.entries()){if(wce(f))continue;let p=S.parseLocator(f),d=this.localStore.get(p.locatorHash);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(d.pkg))continue;let m=Ws.extractBuildScripts(d.pkg,d.customPackageData,d.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});m.length!==0&&g.push({buildLocations:h.locations,locatorHash:p.locatorHash,buildDirective:m})}return c&&this.opts.report.reportWarning(z.NM_PRESERVE_SYMLINKS_REQUIRED,`The application uses portals and that's why ${ue.pretty(this.opts.project.configuration,"--preserve-symlinks",ue.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:g}}};async function L6e(t,e){var n;let r=(n=await Ze.tryFind(e.prefixPath,{baseFs:e.packageFs}))!=null?n:new Ze,i=new Set(["preinstall","install","postinstall"]);for(let s of r.scripts.keys())i.has(s)||r.scripts.delete(s);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{extractHint:Ws.getExtractHint(e),hasBindingGyp:Ws.hasBindingGyp(e)}}}async function M6e(t,e,r,i){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will -`,n+=`# cause your node_modules installation to become invalidated. -`,n+=` -`,n+=`__metadata: -`,n+=` version: ${Ece} -`,n+=` nmMode: ${i.value} -`;let s=Array.from(e.keys()).sort(),o=S.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let c of s){let u=e.get(c);n+=` -`,n+=`${JSON.stringify(c)}: -`,n+=` locations: -`;for(let g of u.locations){let f=v.contains(t.cwd,g);if(f===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` - ${JSON.stringify(f)} -`}if(u.aliases.length>0){n+=` aliases: -`;for(let g of u.aliases)n+=` - ${JSON.stringify(g)} -`}if(c===o&&r.size>0){n+=` bin: -`;for(let[g,f]of r){let h=v.contains(t.cwd,g);if(h===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` ${JSON.stringify(h)}: -`;for(let[p,d]of f){let m=v.relative(v.join(g,gi),d);n+=` ${JSON.stringify(p)}: ${JSON.stringify(m)} -`}}}}let a=t.cwd,l=v.join(a,gi,Ice);await T.changeFilePromise(l,n,{automaticNewlines:!0})}async function hT(t,{unrollAliases:e=!1}={}){let r=t.cwd,i=v.join(r,gi,Ice);if(!T.existsSync(i))return null;let n=Ii(await T.readFilePromise(i,"utf8"));if(n.__metadata.version>Ece)return null;let s=n.__metadata.nmMode||Bi.CLASSIC,o=new Map,a=new Map;delete n.__metadata;for(let[l,c]of Object.entries(n)){let u=c.locations.map(f=>v.join(r,f)),g=c.bin;if(g)for(let[f,h]of Object.entries(g)){let p=v.join(r,M.toPortablePath(f)),d=de.getMapWithDefault(a,p);for(let[m,I]of Object.entries(h))d.set(kr(m),M.toPortablePath([p,gi,I].join(v.delimiter)))}if(o.set(l,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:c.aliases||[]}),e&&c.aliases)for(let f of c.aliases){let{scope:h,name:p}=S.parseLocator(l),d=S.makeLocator(S.makeIdent(h,p),f),m=S.stringifyLocator(d);o.set(m,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:[]})}}return{locatorMap:o,binSymlinks:a,locationTree:Bce(o,{skipPrefix:t.cwd}),nmMode:s}}var Ef=async(t,e)=>{if(t.split(v.sep).indexOf(gi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop&&(await T.lstatPromise(t)).isSymbolicLink()){await T.unlinkPromise(t);return}let r=await T.readdirPromise(t,{withFileTypes:!0});for(let i of r){let n=v.join(t,kr(i.name));i.isDirectory()?(i.name!==gi||e&&e.innerLoop)&&await Ef(n,{innerLoop:!0,contentsOnly:!1}):await T.unlinkPromise(n)}e.contentsOnly||await T.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},Qce=4,$0=(t,{skipPrefix:e})=>{let r=v.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let i=r.split(v.sep).filter(l=>l!==""),n=i.indexOf(gi),s=i.slice(0,n).join(v.sep),o=v.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},Bce=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let i=()=>({children:new Map,linkType:gt.HARD});for(let[n,s]of t.entries()){if(s.linkType===gt.SOFT&&v.contains(e,s.target)!==null){let a=de.getFactoryWithDefault(r,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=$0(o,{skipPrefix:e}),c=de.getFactoryWithDefault(r,a,i);for(let u=0;u{let r;try{process.platform==="win32"&&(r=await T.lstatPromise(t))}catch(i){}process.platform=="win32"&&(!r||r.isDirectory())?await T.symlinkPromise(t,e,"junction"):await T.symlinkPromise(v.relative(v.dirname(e),t),e)};async function bce(t,e,r){let i=v.join(t,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));try{await T.writeFilePromise(i,r);try{await T.linkPromise(i,e)}catch(n){}}finally{await T.unlinkPromise(i)}}async function O6e({srcPath:t,dstPath:e,srcMode:r,globalHardlinksStore:i,baseFs:n,nmMode:s,digest:o}){if(s.value===Bi.HARDLINKS_GLOBAL&&i&&o){let l=v.join(i,o.substring(0,2),`${o.substring(2)}.dat`),c;try{if(await mn.checksumFile(l,{baseFs:T,algorithm:"sha1"})!==o){let g=v.join(i,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));await T.renamePromise(l,g);let f=await n.readFilePromise(t);await T.writeFilePromise(g,f);try{await T.linkPromise(g,l),await T.unlinkPromise(g)}catch(h){}}await T.linkPromise(l,e),c=!0}catch(u){c=!1}if(!c){let u=await n.readFilePromise(t);await bce(i,l,u);try{await T.linkPromise(l,e)}catch(g){g&&g.code&&g.code=="EXDEV"&&(s.value=Bi.HARDLINKS_LOCAL,await n.copyFilePromise(t,e))}}}else await n.copyFilePromise(t,e);let a=r&511;a!==420&&await T.chmodPromise(e,a)}var JA;(function(i){i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink"})(JA||(JA={}));var K6e=async(t,e,{baseFs:r,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await T.mkdirPromise(t,{recursive:!0});let o=async(l=Se.dot)=>{let c=v.join(e,l),u=await r.readdirPromise(c,{withFileTypes:!0}),g=new Map;for(let f of u){let h=v.join(l,f.name),p,d=v.join(c,f.name);if(f.isFile()){if(p={kind:JA.FILE,mode:(await r.lstatPromise(d)).mode},n.value===Bi.HARDLINKS_GLOBAL){let m=await mn.checksumFile(d,{baseFs:r,algorithm:"sha1"});p.digest=m}}else if(f.isDirectory())p={kind:JA.DIRECTORY};else if(f.isSymbolicLink())p={kind:JA.SYMLINK,symlinkTo:await r.readlinkPromise(d)};else throw new Error(`Unsupported file type (file: ${d}, mode: 0o${await r.statSync(d).mode.toString(8).padStart(6,"0")})`);if(g.set(h,p),f.isDirectory()&&h!==gi){let m=await o(h);for(let[I,B]of m)g.set(I,B)}}return g},a;if(n.value===Bi.HARDLINKS_GLOBAL&&i&&s){let l=v.join(i,s.substring(0,2),`${s.substring(2)}.json`);try{a=new Map(Object.entries(JSON.parse(await T.readFilePromise(l,"utf8"))))}catch(c){a=await o(),await bce(i,l,Buffer.from(JSON.stringify(Object.fromEntries(a))))}}else a=await o();for(let[l,c]of a){let u=v.join(e,l),g=v.join(t,l);c.kind===JA.DIRECTORY?await T.mkdirPromise(g,{recursive:!0}):c.kind===JA.FILE?await O6e({srcPath:u,dstPath:g,srcMode:c.mode,digest:c.digest,nmMode:n,baseFs:r,globalHardlinksStore:i}):c.kind===JA.SYMLINK&&await pT(v.resolve(v.dirname(g),c.symlinkTo),g)}};function U6e(t,e){let r=new Map([...t]),i=new Map([...e]);for(let[n,s]of t){let o=v.join(n,gi);if(!T.existsSync(o)){s.children.delete(gi);for(let a of i.keys())v.contains(o,a)!==null&&i.delete(a)}}return{locationTree:r,binSymlinks:i}}function wce(t){let e=S.parseDescriptor(t);return S.isVirtualDescriptor(e)&&(e=S.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function H6e(t,e,r,{loadManifest:i}){let n=new Map;for(let[a,{locations:l}]of t){let c=wce(a)?null:await i(a,l[0]),u=new Map;if(c)for(let[g,f]of c.bin){let h=v.join(l[0],f);f!==""&&T.existsSync(h)&&u.set(g,f)}n.set(a,u)}let s=new Map,o=(a,l,c)=>{let u=new Map,g=v.contains(r,a);if(c.locator&&g!==null){let f=n.get(c.locator);for(let[h,p]of f){let d=v.join(a,M.toPortablePath(p));u.set(kr(h),d)}for(let[h,p]of c.children){let d=v.join(a,h),m=o(d,d,p);m.size>0&&s.set(a,new Map([...s.get(a)||new Map,...m]))}}else for(let[f,h]of c.children){let p=o(v.join(a,f),l,h);for(let[d,m]of p)u.set(d,m)}return u};for(let[a,l]of e){let c=o(a,a,l);c.size>0&&s.set(a,new Map([...s.get(a)||new Map,...c]))}return s}var vce=(t,e)=>{if(!t||!e)return t===e;let r=S.parseLocator(t);S.isVirtualLocator(r)&&(r=S.devirtualizeLocator(r));let i=S.parseLocator(e);return S.isVirtualLocator(i)&&(i=S.devirtualizeLocator(i)),S.areLocatorsEqual(r,i)};function dT(t){return v.join(t.get("globalFolder"),"store")}async function T6e(t,e,{baseFs:r,project:i,report:n,loadManifest:s,realLocatorChecksums:o}){let a=v.join(i.cwd,gi),{locationTree:l,binSymlinks:c}=U6e(t.locationTree,t.binSymlinks),u=Bce(e,{skipPrefix:i.cwd}),g=[],f=async({srcDir:L,dstDir:K,linkType:J,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})=>{let V=(async()=>{try{J===gt.SOFT?(await T.mkdirPromise(v.dirname(K),{recursive:!0}),await pT(v.resolve(L),K)):await K6e(K,L,{baseFs:r,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})}catch(W){throw W.message=`While persisting ${L} -> ${K} ${W.message}`,W}finally{B.tick()}})().then(()=>g.splice(g.indexOf(V),1));g.push(V),g.length>Qce&&await Promise.race(g)},h=async(L,K,J)=>{let ne=(async()=>{let q=async(A,V,W)=>{try{W.innerLoop||await T.mkdirPromise(V,{recursive:!0});let X=await T.readdirPromise(A,{withFileTypes:!0});for(let F of X){if(!W.innerLoop&&F.name===gT)continue;let D=v.join(A,F.name),he=v.join(V,F.name);F.isDirectory()?(F.name!==gi||W&&W.innerLoop)&&(await T.mkdirPromise(he,{recursive:!0}),await q(D,he,_(P({},W),{innerLoop:!0}))):H.value===Bi.HARDLINKS_LOCAL||H.value===Bi.HARDLINKS_GLOBAL?await T.linkPromise(D,he):await T.copyFilePromise(D,he,mce.default.constants.COPYFILE_FICLONE)}}catch(X){throw W.innerLoop||(X.message=`While cloning ${A} -> ${V} ${X.message}`),X}finally{W.innerLoop||B.tick()}};await q(L,K,J)})().then(()=>g.splice(g.indexOf(ne),1));g.push(ne),g.length>Qce&&await Promise.race(g)},p=async(L,K,J)=>{if(!J)K.children.has(gi)&&await Ef(v.join(L,gi),{contentsOnly:!1}),await Ef(L,{contentsOnly:L===a});else for(let[ne,q]of K.children){let A=J.children.get(ne);await p(v.join(L,ne),q,A)}};for(let[L,K]of l){let J=u.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await p(v.join(L,ne),q,A)}}let d=async(L,K,J)=>{if(!J)K.children.has(gi)&&await Ef(v.join(L,gi),{contentsOnly:!0}),await Ef(L,{contentsOnly:K.linkType===gt.HARD});else{vce(K.locator,J.locator)||await Ef(L,{contentsOnly:K.linkType===gt.HARD});for(let[ne,q]of K.children){let A=J.children.get(ne);await d(v.join(L,ne),q,A)}}};for(let[L,K]of u){let J=l.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await d(v.join(L,ne),q,A)}}let m=new Map,I=[];for(let[L,{locations:K}]of t.locatorMap.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=u.get(ne),V=ne;if(A){for(let W of q)if(V=v.join(V,W),A=A.children.get(W),!A)break;if(A){let W=vce(A.locator,L),X=e.get(A.locator),F=X.target,D=V,he=X.linkType;if(W)m.has(F)||m.set(F,D);else if(F!==D){let pe=S.parseLocator(A.locator);S.isVirtualLocator(pe)&&(pe=S.devirtualizeLocator(pe)),I.push({srcDir:F,dstDir:D,linkType:he,realLocatorHash:pe.locatorHash})}}}}for(let[L,{locations:K}]of e.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=l.get(ne),V=u.get(ne),W=ne,X=e.get(L),F=S.parseLocator(L);S.isVirtualLocator(F)&&(F=S.devirtualizeLocator(F));let D=F.locatorHash,he=X.target,pe=J;if(he===pe)continue;let Ne=X.linkType;for(let Pe of q)V=V.children.get(Pe);if(!A)I.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});else for(let Pe of q)if(W=v.join(W,Pe),A=A.children.get(Pe),!A){I.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});break}}let B=Xi.progressViaCounter(I.length),b=n.reportProgress(B),R=i.configuration.get("nmMode"),H={value:R};try{let L=H.value===Bi.HARDLINKS_GLOBAL?`${dT(i.configuration)}/v1`:null;if(L&&!await T.existsPromise(L)){await T.mkdirpPromise(L);for(let J=0;J<256;J++)await T.mkdirPromise(v.join(L,J.toString(16).padStart(2,"0")))}for(let J of I)(J.linkType===gt.SOFT||!m.has(J.srcDir))&&(m.set(J.srcDir,J.dstDir),await f(_(P({},J),{globalHardlinksStore:L,nmMode:H,packageChecksum:o.get(J.realLocatorHash)||null})));await Promise.all(g),g.length=0;for(let J of I){let ne=m.get(J.srcDir);J.linkType!==gt.SOFT&&J.dstDir!==ne&&await h(ne,J.dstDir,{nmMode:H})}await Promise.all(g),await T.mkdirPromise(a,{recursive:!0});let K=await H6e(e,u,i.cwd,{loadManifest:s});await G6e(c,K,i.cwd),await M6e(i,e,K,H),R==Bi.HARDLINKS_GLOBAL&&H.value==Bi.HARDLINKS_LOCAL&&n.reportWarningOnce(z.NM_HARDLINKS_MODE_DOWNGRADED,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{b.stop()}}async function G6e(t,e,r){for(let i of t.keys()){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);if(!e.has(i)){let n=v.join(i,gi,gT);await T.removePromise(n)}}for(let[i,n]of e){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);let s=v.join(i,gi,gT),o=t.get(i)||new Map;await T.mkdirPromise(s,{recursive:!0});for(let a of o.keys())n.has(a)||(await T.removePromise(v.join(s,a)),process.platform==="win32"&&await T.removePromise(v.join(s,kr(`${a}.cmd`))));for(let[a,l]of n){let c=o.get(a),u=v.join(s,a);c!==l&&(process.platform==="win32"?await(0,Cce.default)(M.fromPortablePath(l),M.fromPortablePath(u),{createPwshFile:!1}):(await T.removePromise(u),await pT(l,u),v.contains(r,await T.realpathPromise(l))!==null&&await T.chmodPromise(l,493)))}}}var CT=class extends jc{constructor(){super(...arguments);this.mode="loose"}makeInstaller(e){return new Sce(e)}},Sce=class extends Cf{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(e){let r=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),i=ice(e,this.opts.project.cwd,r),{tree:n,errors:s}=VC(i,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:u,text:g}of s)this.opts.report.reportError(u,g);return}let o=new Map;e.fallbackPool=o;let a=(u,g)=>{let f=S.parseLocator(g.locator),h=S.stringifyIdent(f);h===u?o.set(u,f.reference):o.set(u,[h,f.reference])},l=v.join(this.opts.project.cwd,wt.nodeModules),c=n.get(l);if(typeof c!="undefined"){if("target"in c)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let u of c.dirList){let g=v.join(l,u),f=n.get(g);if(typeof f=="undefined")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in f)a(u,f);else for(let h of f.dirList){let p=v.join(g,h),d=n.get(p);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in d)a(`${u}/${h}`,d);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var j6e={hooks:{cleanGlobalArtifacts:async t=>{let e=dT(t);await T.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:ge.STRING,values:[Sn.WORKSPACES,Sn.DEPENDENCIES,Sn.NONE],default:Sn.NONE},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:ge.STRING,values:[Bi.CLASSIC,Bi.HARDLINKS_LOCAL,Bi.HARDLINKS_GLOBAL],default:Bi.CLASSIC},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:ge.BOOLEAN,default:!0}},linkers:[fT,CT]},Y6e=j6e;var yM={};it(yM,{default:()=>Z7e,npmConfigUtils:()=>gr,npmHttpUtils:()=>Lt,npmPublishUtils:()=>Rf});var Rce=ie(Or());var ir="npm:";var Lt={};it(Lt,{AuthType:()=>jn,customPackageError:()=>W6e,del:()=>_6e,get:()=>zs,getIdentUrl:()=>zA,handleInvalidAuthenticationError:()=>WA,post:()=>z6e,put:()=>V6e});var Pce=ie(aC()),Dce=ie(require("url"));var gr={};it(gr,{RegistryType:()=>ja,getAuditRegistry:()=>q6e,getAuthConfiguration:()=>IT,getDefaultRegistry:()=>eQ,getPublishRegistry:()=>xce,getRegistryConfiguration:()=>kce,getScopeConfiguration:()=>ET,getScopeRegistry:()=>Ya,normalizeRegistry:()=>To});var ja;(function(i){i.AUDIT_REGISTRY="npmAuditRegistry",i.FETCH_REGISTRY="npmRegistryServer",i.PUBLISH_REGISTRY="npmPublishRegistry"})(ja||(ja={}));function To(t){return t.replace(/\/$/,"")}function q6e(t,{configuration:e}){let r=e.get(ja.AUDIT_REGISTRY);return r!==null?To(r):xce(t,{configuration:e})}function xce(t,{configuration:e}){var r;return((r=t.publishConfig)==null?void 0:r.registry)?To(t.publishConfig.registry):t.name?Ya(t.name.scope,{configuration:e,type:ja.PUBLISH_REGISTRY}):eQ({configuration:e,type:ja.PUBLISH_REGISTRY})}function Ya(t,{configuration:e,type:r=ja.FETCH_REGISTRY}){let i=ET(t,{configuration:e});if(i===null)return eQ({configuration:e,type:r});let n=i.get(r);return n===null?eQ({configuration:e,type:r}):To(n)}function eQ({configuration:t,type:e=ja.FETCH_REGISTRY}){let r=t.get(e);return To(r!==null?r:t.get(ja.FETCH_REGISTRY))}function kce(t,{configuration:e}){let r=e.get("npmRegistries"),i=To(t),n=r.get(i);if(typeof n!="undefined")return n;let s=r.get(i.replace(/^[a-z]+:/,""));return typeof s!="undefined"?s:null}function ET(t,{configuration:e}){if(t===null)return null;let i=e.get("npmScopes").get(t);return i||null}function IT(t,{configuration:e,ident:r}){let i=r&&ET(r.scope,{configuration:e});return(i==null?void 0:i.get("npmAuthIdent"))||(i==null?void 0:i.get("npmAuthToken"))?i:kce(t,{configuration:e})||e}var jn;(function(n){n[n.NO_AUTH=0]="NO_AUTH",n[n.BEST_EFFORT=1]="BEST_EFFORT",n[n.CONFIGURATION=2]="CONFIGURATION",n[n.ALWAYS_AUTH=3]="ALWAYS_AUTH"})(jn||(jn={}));async function WA(t,{attemptedAs:e,registry:r,headers:i,configuration:n}){var s,o;if(((s=t.originalError)==null?void 0:s.name)==="HTTPError"&&((o=t.originalError)==null?void 0:o.response.statusCode)===401)throw new nt(z.AUTHENTICATION_INVALID,`Invalid authentication (${typeof e!="string"?`as ${await J6e(r,i,{configuration:n})}`:`attempted as ${e}`})`)}function W6e(t){var e;return((e=t.response)==null?void 0:e.statusCode)===404?"Package not found":null}function zA(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function zs(t,a){var l=a,{configuration:e,headers:r,ident:i,authType:n,registry:s}=l,o=qr(l,["configuration","headers","ident","authType","registry"]);if(i&&typeof s=="undefined"&&(s=Ya(i.scope,{configuration:e})),i&&i.scope&&typeof n=="undefined"&&(n=1),typeof s!="string")throw new Error("Assertion failed: The registry should be a string");let c=await tQ(s,{authType:n,configuration:e,ident:i});c&&(r=_(P({},r),{authorization:c}));try{return await Zt.get(t.charAt(0)==="/"?`${s}${t}`:t,P({configuration:e,headers:r},o))}catch(u){throw await WA(u,{registry:s,configuration:e,headers:r}),u}}async function z6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.post(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.post(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function V6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.put(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.put(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function _6e(t,l){var c=l,{attemptedAs:e,configuration:r,headers:i,ident:n,authType:s=3,registry:o}=c,a=qr(c,["attemptedAs","configuration","headers","ident","authType","registry"]);if(n&&typeof o=="undefined"&&(o=Ya(n.scope,{configuration:r})),typeof o!="string")throw new Error("Assertion failed: The registry should be a string");let u=await tQ(o,{authType:s,configuration:r,ident:n});u&&(i=_(P({},i),{authorization:u}));try{return await Zt.del(o+t,P({configuration:r,headers:i},a))}catch(g){if(!wT(g))throw await WA(g,{attemptedAs:e,registry:o,configuration:r,headers:i}),g;let f=await yT(),h=P(P({},i),BT(f));try{return await Zt.del(`${o}${t}`,P({configuration:r,headers:h},a))}catch(p){throw await WA(p,{attemptedAs:e,registry:o,configuration:r,headers:i}),p}}}async function tQ(t,{authType:e=2,configuration:r,ident:i}){let n=IT(t,{configuration:r,ident:i}),s=X6e(n,e);if(!s)return null;let o=await r.reduceHook(a=>a.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:i});if(o)return o;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let a=n.get("npmAuthIdent");return a.includes(":")?`Basic ${Buffer.from(a).toString("base64")}`:`Basic ${a}`}if(s&&e!==1)throw new nt(z.AUTHENTICATION_NOT_FOUND,"No authentication configured for request");return null}function X6e(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function J6e(t,e,{configuration:r}){var i;if(typeof e=="undefined"||typeof e.authorization=="undefined")return"an anonymous user";try{return(i=(await Zt.get(new Dce.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username)!=null?i:"an unknown user"}catch{return"an unknown user"}}async function yT(){if(process.env.TEST_ENV)return process.env.TEST_NPM_2FA_TOKEN||"";let{otp:t}=await(0,Pce.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return t}function wT(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch(i){return!1}}function BT(t){return{["npm-otp"]:t}}var QT=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i,params:n}=S.parseRange(e.reference);return!(!Rce.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let{params:i}=S.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await zs(i.__archiveUrl,{configuration:r.project.configuration,ident:e});return await Ai.convertToZip(n,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var bT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!S.tryParseDescriptor(e.range.slice(ir.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){let i=S.parseDescriptor(e.range.slice(ir.length),!0);return r.resolver.getResolutionDependencies(i,r)}async getCandidates(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return await i.resolver.getCandidates(n,r,i)}async getSatisfying(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return i.resolver.getSatisfying(n,r,i)}resolve(e,r){throw new Error("Unreachable")}};var vT=ie(Or()),Fce=ie(require("url"));var Vs=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let i=new Fce.URL(e.reference);return!(!vT.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i;try{i=await zs(Vs.getLocatorUrl(e),{configuration:r.project.configuration,ident:e})}catch(n){i=await zs(Vs.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:r.project.configuration,ident:e})}return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:i}){let n=Ya(e.scope,{configuration:i}),s=Vs.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===n+s||r===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=vT.default.clean(e.reference.slice(ir.length));if(r===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");return`${zA(e)}/-/${e.name}-${r}.tgz`}};var ST=ie(Or());var rQ=S.makeIdent(null,"node-gyp"),Z6e=/\b(node-gyp|prebuild-install)\b/,xT=class{supportsDescriptor(e,r){return e.range.startsWith(ir)?!!qt.validRange(e.range.slice(ir.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i}=S.parseRange(e.reference);return!!ST.default.valid(i)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);let s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=de.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new qt.SemVer(c);if(n.test(u))return u}catch{}return de.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=S.makeLocator(e,`${ir}${c.raw}`),g=s.versions[c.raw].dist.tarball;return Vs.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:S.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);return de.mapAndFilter(r,s=>{try{let{selector:o}=S.parseRange(s,{requireProtocol:ir}),a=new qt.SemVer(o);if(n.test(a))return{reference:s,version:a}}catch{}return de.mapAndFilter.skip}).sort((s,o)=>-s.version.compare(o.version)).map(({reference:s})=>S.makeLocator(e,s))}async resolve(e,r){let{selector:i}=S.parseRange(e.reference),n=ST.default.clean(i);if(n===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");let s=await zs(zA(e),{configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(s.versions,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return reference "${n}"`);let o=new Ze;if(o.load(s.versions[n]),!o.dependencies.has(rQ.identHash)&&!o.peerDependencies.has(rQ.identHash)){for(let a of o.scripts.values())if(a.match(Z6e)){o.dependencies.set(rQ.identHash,S.makeDescriptor(rQ,"latest")),r.report.reportWarningOnce(z.NODE_GYP_INJECTED,`${S.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}return typeof o.raw.deprecated=="string"&&r.report.reportWarningOnce(z.DEPRECATED_PACKAGE,`${S.prettyLocator(r.project.configuration,e)} is deprecated: ${o.raw.deprecated}`),_(P({},e),{version:n,languageName:"node",linkType:gt.HARD,conditions:o.getConditions(),dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin})}};var kT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!Rg.test(e.range.slice(ir.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(ir.length),s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"dist-tags"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data - missing "dist-tags" field');let o=s["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return tag "${n}"`);let a=o[n],l=S.makeLocator(e,`${ir}${a}`),c=s.versions[a].dist.tarball;return Vs.isConventionalTarballUrl(l,c,{configuration:i.project.configuration})?[l]:[S.bindLocator(l,{__archiveUrl:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Unreachable")}};var Rf={};it(Rf,{getGitHead:()=>_7e,makePublishBody:()=>V7e});var CM={};it(CM,{default:()=>D7e,packUtils:()=>za});var za={};it(za,{genPackList:()=>QQ,genPackStream:()=>dM,genPackageManifest:()=>age,hasPackScripts:()=>hM,prepareForPack:()=>pM});var fM=ie(Nn()),sge=ie(nge()),oge=ie(require("zlib")),I7e=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],y7e=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function hM(t){return!!(Kt.hasWorkspaceScript(t,"prepack")||Kt.hasWorkspaceScript(t,"postpack"))}async function pM(t,{report:e},r){await Kt.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let i=v.join(t.cwd,Ze.fileName);await T.existsPromise(i)&&await t.manifest.loadFile(i,{baseFs:T}),await r()}finally{await Kt.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function dM(t,e){var s,o;typeof e=="undefined"&&(e=await QQ(t));let r=new Set;for(let a of(o=(s=t.manifest.publishConfig)==null?void 0:s.executableFiles)!=null?o:new Set)r.add(v.normalize(a));for(let a of t.manifest.bin.values())r.add(v.normalize(a));let i=sge.default.pack();process.nextTick(async()=>{for(let a of e){let l=v.normalize(a),c=v.resolve(t.cwd,l),u=v.join("package",l),g=await T.lstatPromise(c),f={name:u,mtime:new Date(mr.SAFE_TIME*1e3)},h=r.has(l)?493:420,p,d,m=new Promise((B,b)=>{p=B,d=b}),I=B=>{B?d(B):p()};if(g.isFile()){let B;l==="package.json"?B=Buffer.from(JSON.stringify(await age(t),null,2)):B=await T.readFilePromise(c),i.entry(_(P({},f),{mode:h,type:"file"}),B,I)}else g.isSymbolicLink()?i.entry(_(P({},f),{mode:h,type:"symlink",linkname:await T.readlinkPromise(c)}),I):I(new Error(`Unsupported file type ${g.mode} for ${M.fromPortablePath(l)}`));await m}i.finalize()});let n=(0,oge.createGzip)();return i.pipe(n),n}async function age(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function QQ(t){var g,f,h,p,d,m,I,B;let e=t.project,r=e.configuration,i={accept:[],reject:[]};for(let b of y7e)i.reject.push(b);for(let b of I7e)i.accept.push(b);i.reject.push(r.get("rcFilename"));let n=b=>{if(b===null||!b.startsWith(`${t.cwd}/`))return;let R=v.relative(t.cwd,b),H=v.resolve(Se.root,R);i.reject.push(H)};n(v.resolve(e.cwd,r.get("lockfileFilename"))),n(r.get("cacheFolder")),n(r.get("globalFolder")),n(r.get("installStatePath")),n(r.get("virtualFolder")),n(r.get("yarnPath")),await r.triggerHook(b=>b.populateYarnPaths,e,b=>{n(b)});for(let b of e.workspaces){let R=v.relative(t.cwd,b.cwd);R!==""&&!R.match(/^(\.\.)?\//)&&i.reject.push(`/${R}`)}let s={accept:[],reject:[]},o=(f=(g=t.manifest.publishConfig)==null?void 0:g.main)!=null?f:t.manifest.main,a=(p=(h=t.manifest.publishConfig)==null?void 0:h.module)!=null?p:t.manifest.module,l=(m=(d=t.manifest.publishConfig)==null?void 0:d.browser)!=null?m:t.manifest.browser,c=(B=(I=t.manifest.publishConfig)==null?void 0:I.bin)!=null?B:t.manifest.bin;o!=null&&s.accept.push(v.resolve(Se.root,o)),a!=null&&s.accept.push(v.resolve(Se.root,a)),typeof l=="string"&&s.accept.push(v.resolve(Se.root,l));for(let b of c.values())s.accept.push(v.resolve(Se.root,b));if(l instanceof Map)for(let[b,R]of l.entries())s.accept.push(v.resolve(Se.root,b)),typeof R=="string"&&s.accept.push(v.resolve(Se.root,R));let u=t.manifest.files!==null;if(u){s.reject.push("/*");for(let b of t.manifest.files)Age(s.accept,b,{cwd:Se.root})}return await w7e(t.cwd,{hasExplicitFileList:u,globalList:i,ignoreList:s})}async function w7e(t,{hasExplicitFileList:e,globalList:r,ignoreList:i}){let n=[],s=new Zo(t),o=[[Se.root,[i]]];for(;o.length>0;){let[a,l]=o.pop(),c=await s.lstatPromise(a);if(!cge(a,{globalList:r,ignoreLists:c.isDirectory()?null:l}))if(c.isDirectory()){let u=await s.readdirPromise(a),g=!1,f=!1;if(!e||a!==Se.root)for(let d of u)g=g||d===".gitignore",f=f||d===".npmignore";let h=f?await lge(s,a,".npmignore"):g?await lge(s,a,".gitignore"):null,p=h!==null?[h].concat(l):l;cge(a,{globalList:r,ignoreLists:l})&&(p=[...l,{accept:[],reject:["**/*"]}]);for(let d of u)o.push([v.resolve(a,d),p])}else(c.isFile()||c.isSymbolicLink())&&n.push(v.relative(Se.root,a))}return n.sort()}async function lge(t,e,r){let i={accept:[],reject:[]},n=await t.readFilePromise(v.join(e,r),"utf8");for(let s of n.split(/\n/g))Age(i.reject,s,{cwd:e});return i}function B7e(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=v.resolve(e,t)),r&&(t=`!${t}`),t}function Age(t,e,{cwd:r}){let i=e.trim();i===""||i[0]==="#"||t.push(B7e(i,{cwd:r}))}function cge(t,{globalList:e,ignoreLists:r}){if(bQ(t,e.accept))return!1;if(bQ(t,e.reject))return!0;if(r!==null)for(let i of r){if(bQ(t,i.accept))return!1;if(bQ(t,i.reject))return!0}return!1}function bQ(t,e){let r=e,i=[];for(let n=0;n{await pM(i,{report:l},async()=>{l.reportJson({base:M.fromPortablePath(i.cwd)});let c=await QQ(i);for(let u of c)l.reportInfo(null,M.fromPortablePath(u)),l.reportJson({location:M.fromPortablePath(u)});if(!this.dryRun){let u=await dM(i,c),g=T.createWriteStream(s);u.pipe(g),await new Promise(f=>{g.on("finish",f)})}}),this.dryRun||(l.reportInfo(z.UNNAMED,`Package archive generated in ${ue.pretty(e,s,ue.Type.PATH)}`),l.reportJson({output:M.fromPortablePath(s)}))})).exitCode()}};fm.paths=[["pack"]],fm.usage=ye.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});var gge=fm;function Q7e(t,{workspace:e}){let r=t.replace("%s",b7e(e)).replace("%v",v7e(e));return M.toPortablePath(r)}function b7e(t){return t.manifest.name!==null?S.slugifyIdent(t.manifest.name):"package"}function v7e(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var S7e=["dependencies","devDependencies","peerDependencies"],x7e="workspace:",k7e=(t,e)=>{var i,n;e.publishConfig&&(e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of S7e)for(let o of t.manifest.getForScope(s).values()){let a=r.tryWorkspaceByDescriptor(o),l=S.parseRange(o.range);if(l.protocol===x7e)if(a===null){if(r.tryWorkspaceByIdent(o)===null)throw new nt(z.WORKSPACE_NOT_FOUND,`${S.prettyDescriptor(r.configuration,o)}: No local workspace found for this range`)}else{let c;S.areDescriptorsEqual(o,a.anchoredDescriptor)||l.selector==="*"?c=(i=a.manifest.version)!=null?i:"0.0.0":l.selector==="~"||l.selector==="^"?c=`${l.selector}${(n=a.manifest.version)!=null?n:"0.0.0"}`:c=l.selector,e[s][S.stringifyIdent(o)]=c}}},P7e={hooks:{beforeWorkspacePacking:k7e},commands:[gge]},D7e=P7e;var yge=ie(require("crypto")),wge=ie(Ige()),Bge=ie(require("url"));async function V7e(t,e,{access:r,tag:i,registry:n,gitHead:s}){let o=t.project.configuration,a=t.manifest.name,l=t.manifest.version,c=S.stringifyIdent(a),u=(0,yge.createHash)("sha1").update(e).digest("hex"),g=wge.default.fromData(e).toString();typeof r=="undefined"&&(t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?r=t.manifest.publishConfig.access:o.get("npmPublishAccess")!==null?r=o.get("npmPublishAccess"):a.scope?r="restricted":r="public");let f=await za.genPackageManifest(t),h=`${c}-${l}.tgz`,p=new Bge.URL(`${To(n)}/${c}/-/${h}`);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:c,access:r,["dist-tags"]:{[i]:l},versions:{[l]:_(P({},f),{_id:`${c}@${l}`,name:c,version:l,gitHead:s,dist:{shasum:u,integrity:g,tarball:p.toString()}})}}}async function _7e(t){try{let{stdout:e}=await hr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}var wM={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.BOOLEAN,default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:ge.SECRET,default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:ge.SECRET,default:null}},Qge={npmAuditRegistry:{description:"Registry to query for audit reports",type:ge.STRING,default:null},npmPublishRegistry:{description:"Registry to push packages to",type:ge.STRING,default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.STRING,default:"https://registry.yarnpkg.com"}},X7e={configuration:_(P(P({},wM),Qge),{npmScopes:{description:"Settings per package scope",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:P(P({},wM),Qge)}},npmRegistries:{description:"Settings per registry",type:ge.MAP,normalizeKeys:To,valueDefinition:{description:"",type:ge.SHAPE,properties:P({},wM)}}}),fetchers:[QT,Vs],resolvers:[bT,xT,kT]},Z7e=X7e;var vM={};it(vM,{default:()=>a_e});Ss();var Ho;(function(i){i.All="all",i.Production="production",i.Development="development"})(Ho||(Ho={}));var Xs;(function(s){s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical"})(Xs||(Xs={}));var vQ=[Xs.Info,Xs.Low,Xs.Moderate,Xs.High,Xs.Critical];function bge(t,e){let r=[],i=new Set,n=o=>{i.has(o)||(i.add(o),r.push(o))};for(let o of e)n(o);let s=new Set;for(;r.length>0;){let o=r.shift(),a=t.storedResolutions.get(o);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=t.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function $7e(t,e){return new Set([...t].filter(r=>!e.has(r)))}function e_e(t,e,{all:r}){let i=r?t.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=bge(t,l),g=bge(t,c);return $7e(g,u)}function vge(t){let e={};for(let r of t)e[S.stringifyIdent(r)]=S.parseRange(r.range).selector;return e}function Sge(t){if(typeof t=="undefined")return new Set;let e=vQ.indexOf(t),r=vQ.slice(e);return new Set(r)}function t_e(t,e){let r=Sge(e),i={};for(let n of r)i[n]=t[n];return i}function xge(t,e){var i;let r=t_e(t,e);for(let n of Object.keys(r))if((i=r[n])!=null?i:0>0)return!0;return!1}function kge(t,e){var s;let r={},i={children:r},n=Object.values(t.advisories);if(e!=null){let o=Sge(e);n=n.filter(a=>o.has(a.severity))}for(let o of de.sortMap(n,a=>a.module_name))r[o.module_name]={label:o.module_name,value:ue.tuple(ue.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{Issue:{label:"Issue",value:ue.tuple(ue.Type.NO_HINT,o.title)},URL:{label:"URL",value:ue.tuple(ue.Type.URL,o.url)},Severity:{label:"Severity",value:ue.tuple(ue.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ue.tuple(ue.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ue.tuple(ue.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ue.tuple(ue.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ue.tuple(ue.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function Pge(t,e,{all:r,environment:i}){let n=r?t.workspaces:[e],s=[Ho.All,Ho.Production].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=[Ho.All,Ho.Development].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return vge([...o,...l].filter(c=>S.parseRange(c.range).protocol===null))}function Dge(t,e,{all:r}){var s;let i=e_e(t,e,{all:r}),n={};for(let o of t.storedPackages.values())n[S.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:vge(o.dependencies.values()),dev:i.has(S.convertLocatorToDescriptor(o).descriptorHash)};return n}var dm=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=Y.String("--environment",Ho.All,{description:"Which environments to cover",validator:Yi(Ho)});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=Y.String("--severity",Xs.Info,{description:"Minimal severity requested for packages to be displayed",validator:Yi(Xs)})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=Pge(r,i,{all:this.all,environment:this.environment}),s=Dge(r,i,{all:this.all});if(!this.recursive)for(let f of Object.keys(s))Object.prototype.hasOwnProperty.call(n,f)?s[f].requires={}:delete s[f];let o={requires:n,dependencies:s},a=gr.getAuditRegistry(i.manifest,{configuration:e}),l,c=await Fa.start({configuration:e,stdout:this.context.stdout},async()=>{l=await Lt.post("/-/npm/v1/security/audits/quick",o,{authType:Lt.AuthType.BEST_EFFORT,configuration:e,jsonResponse:!0,registry:a})});if(c.hasErrors())return c.exitCode();let u=xge(l.metadata.vulnerabilities,this.severity);return!this.json&&u?(Hs.emitTree(kge(l,this.severity),{configuration:e,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async f=>{f.reportJson(l),u||f.reportInfo(z.EXCEPTION,"No audit suggestions")})).exitCode()}};dm.paths=[["npm","audit"]],dm.usage=ye.Usage({description:"perform a vulnerability audit against the installed packages",details:` - This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). - - For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. - - Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${vQ.map(e=>`\`${e}\``).join(", ")}. - - If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. - - To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them. - `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"]]});var Rge=dm;var BM=ie(Or()),QM=ie(require("util")),Cm=class extends Be{constructor(){super(...arguments);this.fields=Y.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.fields!="undefined"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],s=!1,o=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async a=>{for(let l of this.packages){let c;if(l==="."){let b=r.topLevelWorkspace;if(!b.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(b.cwd,wt.manifest))}`);c=S.makeDescriptor(b.manifest.name,"unknown")}else c=S.parseDescriptor(l);let u=Lt.getIdentUrl(c),g=bM(await Lt.get(u,{configuration:e,ident:c,jsonResponse:!0,customErrorMessage:Lt.customPackageError})),f=Object.keys(g.versions).sort(BM.default.compareLoose),p=g["dist-tags"].latest||f[f.length-1],d=qt.validRange(c.range);if(d){let b=BM.default.maxSatisfying(f,d);b!==null?p=b:(a.reportWarning(z.UNNAMED,`Unmet range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0)}else c.range!=="unknown"&&(a.reportWarning(z.UNNAMED,`Invalid range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0);let m=g.versions[p],I=_(P(P({},g),m),{version:p,versions:f}),B;if(i!==null){B={};for(let b of i){let R=I[b];if(typeof R!="undefined")B[b]=R;else{a.reportWarning(z.EXCEPTION,`The '${b}' field doesn't exist inside ${S.prettyIdent(e,c)}'s informations`),s=!0;continue}}}else this.json||(delete I.dist,delete I.readme,delete I.users),B=I;a.reportJson(B),this.json||n.push(B)}});QM.inspect.styles.name="cyan";for(let a of n)(a!==n[0]||s)&&this.context.stdout.write(` -`),this.context.stdout.write(`${(0,QM.inspect)(a,{depth:Infinity,colors:!0,compact:!1})} -`);return o.exitCode()}};Cm.paths=[["npm","info"]],Cm.usage=ye.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command will fetch information about a package from the npm registry, and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package informations.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react 16.12.0","yarn npm info react@16.12.0"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});var Fge=Cm;function bM(t){if(Array.isArray(t)){let e=[];for(let r of t)r=bM(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let i=bM(t[r]);i&&(e[r]=i)}return e}else return t||null}var Nge=ie(aC()),mm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=await i_e({registry:r,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),o=`/-/user/org.couchdb.user:${encodeURIComponent(s.name)}`,a=await Lt.put(o,s,{attemptedAs:s.name,configuration:e,registry:r,jsonResponse:!0,authType:Lt.AuthType.NO_AUTH});return await r_e(r,a.token,{configuration:e,scope:this.scope}),n.reportInfo(z.UNNAMED,"Successfully logged in")})).exitCode()}};mm.paths=[["npm","login"]],mm.usage=ye.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});var Lge=mm;async function SQ({scope:t,publish:e,configuration:r,cwd:i}){return t&&e?gr.getScopeRegistry(t,{configuration:r,type:gr.RegistryType.PUBLISH_REGISTRY}):t?gr.getScopeRegistry(t,{configuration:r}):e?gr.getPublishRegistry((await rf(r,i)).manifest,{configuration:r}):gr.getDefaultRegistry({configuration:r})}async function r_e(t,e,{configuration:r,scope:i}){let n=o=>a=>{let l=de.isIndexableObject(a)?a:{},c=l[o],u=de.isIndexableObject(c)?c:{};return _(P({},l),{[o]:_(P({},u),{npmAuthToken:e})})},s=i?{npmScopes:n(i)}:{npmRegistries:n(t)};return await fe.updateHomeConfiguration(s)}async function i_e({registry:t,report:e,stdin:r,stdout:i}){if(process.env.TEST_ENV)return{name:process.env.TEST_NPM_USER||"",password:process.env.TEST_NPM_PASSWORD||""};e.reportInfo(z.UNNAMED,`Logging in to ${t}`);let n=!1;t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(e.reportInfo(z.UNNAMED,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),e.reportSeparator();let{username:s,password:o}=await(0,Nge.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i}]);return e.reportSeparator(),{name:s,password:o}}var Ff=new Set(["npmAuthIdent","npmAuthToken"]),Em=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=Y.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=async()=>{var l;let n=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),s=await fe.find(this.context.cwd,this.context.plugins),o=S.makeIdent((l=this.scope)!=null?l:null,"pkg");return!gr.getAuthConfiguration(n,{configuration:s,ident:o}).get("npmAuthToken")};return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{if(this.all&&(await n_e(),n.reportInfo(z.UNNAMED,"Successfully logged out from everything")),this.scope){await Tge("npmScopes",this.scope),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${this.scope}`):n.reportWarning(z.UNNAMED,"Scope authentication settings removed, but some other ones settings still apply to it");return}let s=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish});await Tge("npmRegistries",s),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${s}`):n.reportWarning(z.UNNAMED,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};Em.paths=[["npm","logout"]],Em.usage=ye.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});var Mge=Em;function s_e(t,e){let r=t[e];if(!de.isIndexableObject(r))return!1;let i=new Set(Object.keys(r));if([...Ff].every(s=>!i.has(s)))return!1;for(let s of Ff)i.delete(s);if(i.size===0)return t[e]=void 0,!0;let n=P({},r);for(let s of Ff)delete n[s];return t[e]=n,!0}async function n_e(){let t=e=>{let r=!1,i=de.isIndexableObject(e)?P({},e):{};i.npmAuthToken&&(delete i.npmAuthToken,r=!0);for(let n of Object.keys(i))s_e(i,n)&&(r=!0);if(Object.keys(i).length!==0)return r?i:e};return await fe.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function Tge(t,e){return await fe.updateHomeConfiguration({[t]:r=>{let i=de.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(i,e))return r;let n=i[e],s=de.isIndexableObject(n)?n:{},o=new Set(Object.keys(s));if([...Ff].every(l=>!o.has(l)))return r;for(let l of Ff)o.delete(l);if(o.size===0)return Object.keys(i).length===1?void 0:_(P({},i),{[e]:void 0});let a={};for(let l of Ff)a[l]=void 0;return _(P({},i),{[e]:P(P({},s),a)})}})}var Im=class extends Be{constructor(){super(...arguments);this.access=Y.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=Y.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=Y.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);if(i.manifest.private)throw new me("Private workspaces cannot be published");if(i.manifest.name===null||i.manifest.version===null)throw new me("Workspaces must have valid names and versions to be published on an external registry");await r.restoreInstallState();let n=i.manifest.name,s=i.manifest.version,o=gr.getPublishRegistry(i.manifest,{configuration:e});return(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{var c,u;if(this.tolerateRepublish)try{let g=await Lt.get(Lt.getIdentUrl(n),{configuration:e,registry:o,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(g,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(g.versions,s)){l.reportWarning(z.UNNAMED,`Registry already knows about version ${s}; skipping.`);return}}catch(g){if(((u=(c=g.originalError)==null?void 0:c.response)==null?void 0:u.statusCode)!==404)throw g}await Kt.maybeExecuteWorkspaceLifecycleScript(i,"prepublish",{report:l}),await za.prepareForPack(i,{report:l},async()=>{let g=await za.genPackList(i);for(let m of g)l.reportInfo(null,m);let f=await za.genPackStream(i,g),h=await de.bufferStream(f),p=await Rf.getGitHead(i.cwd),d=await Rf.makePublishBody(i,h,{access:this.access,tag:this.tag,registry:o,gitHead:p});await Lt.put(Lt.getIdentUrl(n),d,{configuration:e,registry:o,ident:n,jsonResponse:!0})}),l.reportInfo(z.UNNAMED,"Package archive published")})).exitCode()}};Im.paths=[["npm","publish"]],Im.usage=ye.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});var Oge=Im;var Uge=ie(Or());var ym=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n;if(typeof this.package!="undefined")n=S.parseIdent(this.package);else{if(!i)throw new rt(r.cwd,this.context.cwd);if(!i.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(i.cwd,wt.manifest))}`);n=i.manifest.name}let s=await wm(n,e),a={children:de.sortMap(Object.entries(s),([l])=>l).map(([l,c])=>({value:ue.tuple(ue.Type.RESOLUTION,{descriptor:S.makeDescriptor(n,l),locator:S.makeLocator(n,c)})}))};return Hs.emitTree(a,{configuration:e,json:this.json,stdout:this.context.stdout})}};ym.paths=[["npm","tag","list"]],ym.usage=ye.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` - This command will list all tags of a package from the npm registry. - - If the package is not specified, Yarn will default to the current workspace. - `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});var Kge=ym;async function wm(t,e){let r=`/-/package${Lt.getIdentUrl(t)}/dist-tags`;return Lt.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Lt.customPackageError})}var Bm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseDescriptor(this.package,!0),s=n.range;if(!Uge.default.valid(s))throw new me(`The range ${ue.pretty(e,n.range,ue.Type.RANGE)} must be a valid semver version`);let o=gr.getPublishRegistry(i.manifest,{configuration:e}),a=ue.pretty(e,n,ue.Type.IDENT),l=ue.pretty(e,s,ue.Type.RANGE),c=ue.pretty(e,this.tag,ue.Type.CODE);return(await Fe.start({configuration:e,stdout:this.context.stdout},async g=>{let f=await wm(n,e);Object.prototype.hasOwnProperty.call(f,this.tag)&&f[this.tag]===s&&g.reportWarning(z.UNNAMED,`Tag ${c} is already set to version ${l}`);let h=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.put(h,s,{configuration:e,registry:o,ident:n,jsonRequest:!0,jsonResponse:!0}),g.reportInfo(z.UNNAMED,`Tag ${c} added to version ${l} of package ${a}`)})).exitCode()}};Bm.paths=[["npm","tag","add"]],Bm.usage=ye.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` - This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. - `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});var Hge=Bm;var Qm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){if(this.tag==="latest")throw new me("The 'latest' tag cannot be removed.");let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseIdent(this.package),s=gr.getPublishRegistry(i.manifest,{configuration:e}),o=ue.pretty(e,this.tag,ue.Type.CODE),a=ue.pretty(e,n,ue.Type.IDENT),l=await wm(n,e);if(!Object.prototype.hasOwnProperty.call(l,this.tag))throw new me(`${o} is not a tag of package ${a}`);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{let g=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.del(g,{configuration:e,registry:s,ident:n,jsonResponse:!0}),u.reportInfo(z.UNNAMED,`Tag ${o} removed from package ${a}`)})).exitCode()}};Qm.paths=[["npm","tag","remove"]],Qm.usage=ye.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` - This command will remove a tag from a package from the npm registry. - `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var Gge=Qm;var bm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r;return this.scope&&this.publish?r=gr.getScopeRegistry(this.scope,{configuration:e,type:gr.RegistryType.PUBLISH_REGISTRY}):this.scope?r=gr.getScopeRegistry(this.scope,{configuration:e}):this.publish?r=gr.getPublishRegistry((await rf(e,this.context.cwd)).manifest,{configuration:e}):r=gr.getDefaultRegistry({configuration:e}),(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{var o,a;let s;try{s=await Lt.get("/-/whoami",{configuration:e,registry:r,authType:Lt.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?S.makeIdent(this.scope,""):void 0})}catch(l){if(((o=l.response)==null?void 0:o.statusCode)===401||((a=l.response)==null?void 0:a.statusCode)===403){n.reportError(z.AUTHENTICATION_INVALID,"Authentication failed - your credentials may have expired");return}else throw l}n.reportInfo(z.UNNAMED,s.username)})).exitCode()}};bm.paths=[["npm","whoami"]],bm.usage=ye.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var jge=bm;var o_e={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:ge.STRING,default:null}},commands:[Rge,Fge,Lge,Mge,Oge,Hge,Kge,Gge,jge]},a_e=o_e;var NM={};it(NM,{default:()=>B_e,patchUtils:()=>SM});var SM={};it(SM,{applyPatchFile:()=>PQ,diffFolders:()=>DM,extractPackageToDisk:()=>PM,extractPatchFlags:()=>Xge,isParentRequired:()=>kM,loadPatchFiles:()=>km,makeDescriptor:()=>I_e,makeLocator:()=>xM,parseDescriptor:()=>Sm,parseLocator:()=>xm,parsePatchFile:()=>kQ});var vm=class extends Error{constructor(e,r){super(`Cannot apply hunk #${e+1}`);this.hunk=r}};var A_e=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Nf(t){return v.relative(Se.root,v.resolve(Se.root,M.toPortablePath(t)))}function l_e(t){let e=t.trim().match(A_e);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var c_e=420,u_e=493,Lr;(function(i){i.Context="context",i.Insertion="insertion",i.Deletion="deletion"})(Lr||(Lr={}));var Yge=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),g_e=t=>({header:l_e(t),parts:[]}),f_e={["@"]:"header",["-"]:Lr.Deletion,["+"]:Lr.Insertion,[" "]:Lr.Context,["\\"]:"pragma",undefined:Lr.Context};function p_e(t){let e=[],r=Yge(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),r.hunks.push(n),n=null)}function a(){o(),e.push(r),r=Yge()}for(let l=0;l0?"patch":"mode change",B=null;switch(I){case"rename":{if(!u||!g)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:i,fromPath:Nf(u),toPath:Nf(g)}),B=g}break;case"file deletion":{let b=n||p;if(!b)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(l),hash:f})}break;case"file creation":{let b=s||d;if(!b)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(c),hash:h})}break;case"patch":case"mode change":B=d||s;break;default:de.assertNever(I);break}B&&o&&a&&o!==a&&e.push({type:"mode change",semverExclusivity:i,path:Nf(B),oldMode:xQ(o),newMode:xQ(a)}),B&&m&&m.length&&e.push({type:"patch",semverExclusivity:i,path:Nf(B),hunks:m,beforeHash:f,afterHash:h})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function xQ(t){let e=parseInt(t,8)&511;if(e!==c_e&&e!==u_e)throw new Error(`Unexpected file mode string: ${t}`);return e}function kQ(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),d_e(p_e(e))}function h_e(t){let e=0,r=0;for(let{type:i,lines:n}of t.parts)switch(i){case Lr.Context:r+=n.length,e+=n.length;break;case Lr.Deletion:e+=n.length;break;case Lr.Insertion:r+=n.length;break;default:de.assertNever(i);break}if(e!==t.header.original.length||r!==t.header.patched.length){let i=n=>n<0?n:`+${n}`;throw new Error(`hunk header integrity check failed (expected @@ ${i(t.header.original.length)} ${i(t.header.patched.length)} @@, got @@ ${i(e)} ${i(r)} @@)`)}}async function Lf(t,e,r){let i=await t.lstatPromise(e),n=await r();if(typeof n!="undefined"&&(e=n),t.lutimesPromise)await t.lutimesPromise(e,i.atime,i.mtime);else if(!i.isSymbolicLink())await t.utimesPromise(e,i.atime,i.mtime);else throw new Error("Cannot preserve the time values of a symlink")}async function PQ(t,{baseFs:e=new Wt,dryRun:r=!1,version:i=null}={}){for(let n of t)if(!(n.semverExclusivity!==null&&i!==null&&!qt.satisfiesWithPrereleases(i,n.semverExclusivity)))switch(n.type){case"file deletion":if(r){if(!e.existsSync(n.path))throw new Error(`Trying to delete a file that doesn't exist: ${n.path}`)}else await Lf(e,v.dirname(n.path),async()=>{await e.unlinkPromise(n.path)});break;case"rename":if(r){if(!e.existsSync(n.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${n.fromPath}`)}else await Lf(e,v.dirname(n.fromPath),async()=>{await Lf(e,v.dirname(n.toPath),async()=>{await Lf(e,n.fromPath,async()=>(await e.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(r){if(e.existsSync(n.path))throw new Error(`Trying to create a file that already exists: ${n.path}`)}else{let s=n.hunk?n.hunk.parts[0].lines.join(` -`)+(n.hunk.parts[0].noNewlineAtEndOfFile?"":` -`):"";await e.mkdirpPromise(v.dirname(n.path),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,mr.SAFE_TIME,mr.SAFE_TIME)}break;case"patch":await Lf(e,n.path,async()=>{await C_e(n,{baseFs:e,dryRun:r})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(qge(n.newMode)!==qge(o))continue;await Lf(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:de.assertNever(n);break}}function qge(t){return(t&64)>0}function Jge(t){return t.replace(/\s+$/,"")}function m_e(t,e){return Jge(t)===Jge(e)}async function C_e({hunks:t,path:e},{baseFs:r,dryRun:i=!1}){let n=await r.statSync(e).mode,o=(await r.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of t){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),d=Math.max(h,p),m=0,I=0,B=null;for(;m<=d;){if(m<=h&&(I=f-m,B=Wge(g,o,I),B!==null)){m=-m;break}if(m<=p&&(I=f+m,B=Wge(g,o,I),B!==null))break;m+=1}if(B===null)throw new vm(t.indexOf(g),g);a.push(B),l+=m,c=I+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:de.assertNever(f);break}await r.writeFilePromise(e,o.join(` -`),{mode:n})}function Wge(t,e,r){let i=[];for(let n of t.parts)switch(n.type){case Lr.Context:case Lr.Deletion:{for(let s of n.lines){let o=e[r];if(o==null||!m_e(o,s))return null;r+=1}n.type===Lr.Deletion&&(i.push({type:"splice",index:r-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case Lr.Insertion:i.push({type:"splice",index:r,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:de.assertNever(n.type);break}return i}var E_e=/^builtin<([^>]+)>$/;function zge(t,e){let{source:r,selector:i,params:n}=S.parseRange(t);if(r===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>M.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?S.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(r);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function Sm(t){let i=zge(t.range,S.parseDescriptor),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceDescriptor:e})}function xm(t){let i=zge(t.reference,S.parseLocator),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceLocator:e})}function Vge({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:i,patchHash:n},s){let o=t!==null?{locator:S.stringifyLocator(t)}:{},a=typeof i!="undefined"?{version:i}:{},l=typeof n!="undefined"?{hash:n}:{};return S.makeRange({protocol:"patch:",source:s(e),selector:r.join("&"),params:P(P(P({},a),l),o)})}function I_e(t,{parentLocator:e,sourceDescriptor:r,patchPaths:i}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,patchPaths:i},S.stringifyDescriptor))}function xM(t,{parentLocator:e,sourcePackage:r,patchPaths:i,patchHash:n}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:i,patchHash:n},S.stringifyLocator))}function _ge({onAbsolute:t,onRelative:e,onBuiltin:r},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(E_e);return s!==null?r(s[1]):v.isAbsolute(i)?t(i):e(i)}function Xge(t){let e=t.startsWith("~");return e&&(t=t.slice(1)),{optional:e}}function kM(t){return _ge({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},t)}async function km(t,e,r){let i=t!==null?await r.fetcher.fetch(t,r):null,n=i&&i.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await de.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=Xge(o),l=await _ge({onAbsolute:async()=>await T.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(v.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await r.project.configuration.firstHook(u=>u.getBuiltinPatch,r.project,c)},o);return _(P({},a),{source:l})})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,` -`));return s}async function PM(t,{cache:e,project:r}){let i=r.storedPackages.get(t.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let n=r.storedChecksums,s=new ei,o=r.configuration.makeFetcher(),a=await o.fetch(t,{cache:e,project:r,fetcher:o,checksums:n,report:s}),l=await T.mktempPromise(),c=v.join(l,"source"),u=v.join(l,"user"),g=v.join(l,".yarn-patch.json");return await Promise.all([T.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),T.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),T.writeJsonPromise(g,{locator:S.stringifyLocator(t),version:i.version})]),T.detachTemp(l),u}async function DM(t,e){let r=M.fromPortablePath(t).replace(/\\/g,"/"),i=M.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await hr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--text",r,i],{cwd:M.toPortablePath(process.cwd()),env:_(P({},process.env),{GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""})});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. -The following error was reported by 'git': -${s}`);let o=r.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${de.escapeRegExp(`/${o(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${de.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(de.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(de.escapeRegExp(`${i}/`),"g"),"")}function Zge(t,{configuration:e,report:r}){for(let i of t.parts)for(let n of i.lines)switch(i.type){case Lr.Context:r.reportInfo(null,` ${ue.pretty(e,n,"grey")}`);break;case Lr.Deletion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`- ${ue.pretty(e,n,ue.Type.REMOVED)}`);break;case Lr.Insertion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`+ ${ue.pretty(e,n,ue.Type.ADDED)}`);break;default:de.assertNever(i.type)}}var RM=class{supports(e,r){return!!e.reference.startsWith("patch:")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async patchPackage(e,r){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=xm(e),a=await km(i,o,r),l=await T.mktempPromise(),c=v.join(l,"current.zip"),u=await r.fetcher.fetch(n,r),g=S.getIdentVendorPath(e),f=await $i(),h=new Jr(c,{libzip:f,create:!0,level:r.project.configuration.get("compressionLevel")});await de.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:d}of a){if(p===null)continue;let m=new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")}),I=new Ft(v.resolve(Se.root,g),{baseFs:m});try{await PQ(kQ(p),{baseFs:I,version:s})}catch(B){if(!(B instanceof vm))throw B;let b=r.project.configuration.get("enableInlineHunks"),R=!b&&!d?" (set enableInlineHunks for details)":"",H=`${S.prettyLocator(r.project.configuration,e)}: ${B.message}${R}`,L=K=>{!b||Zge(B.hunk,{configuration:r.project.configuration,report:K})};if(m.discardAndClose(),d){r.report.reportWarningOnce(z.PATCH_HUNK_FAILED,H,{reportExtra:L});continue}else throw new nt(z.PATCH_HUNK_FAILED,H,L)}m.saveAndClose()}return new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")})}};var y_e=3,FM=class{supportsDescriptor(e,r){return!!e.range.startsWith("patch:")}supportsLocator(e,r){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){let{patchPaths:n}=Sm(e);return n.every(s=>!kM(s))?e:S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:i}=Sm(e);return[i]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=Sm(e),a=await km(n,o,i.fetchOptions),l=r.get(s.descriptorHash);if(typeof l=="undefined")throw new Error("Assertion failed: The dependency should have been resolved");let c=mn.makeHash(`${y_e}`,...a.map(u=>JSON.stringify(u))).slice(0,6);return[xM(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){let{sourceLocator:i}=xm(e),n=await r.resolver.resolve(i,r);return P(P({},n),e)}};var Pm=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=v.resolve(this.context.cwd,M.toPortablePath(this.patchFolder)),s=v.join(n,"../source"),o=v.join(n,"../.yarn-patch.json");if(!T.existsSync(s))throw new me("The argument folder didn't get created by 'yarn patch'");let a=await DM(s,n),l=await T.readJsonPromise(o),c=S.parseLocator(l.locator,!0);if(!r.storedPackages.has(c.locatorHash))throw new me("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(a);return}let u=e.get("patchFolder"),g=v.join(u,S.slugifyLocator(c));await T.mkdirPromise(u,{recursive:!0}),await T.writeFilePromise(g,a);let f=v.relative(r.cwd,g);r.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:S.stringifyIdent(c),description:l.version}},reference:`patch:${S.stringifyLocator(c)}#${f}`}),await r.persist()}};Pm.paths=[["patch-commit"]],Pm.usage=ye.Usage({description:"generate a patch out of a directory",details:"\n This will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n Only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});var $ge=Pm;var Dm=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=S.parseLocator(this.package);if(s.reference==="unknown"){let o=de.mapAndFilter([...r.storedPackages.values()],a=>a.identHash!==s.identHash?de.mapAndFilter.skip:S.isVirtualLocator(a)?de.mapAndFilter.skip:a);if(o.length===0)throw new me("No package found in the project for the given locator");if(o.length>1)throw new me(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): -${o.map(a=>` -- ${S.prettyLocator(e,a)}`).join("")}`);s=o[0]}if(!r.storedPackages.has(s.locatorHash))throw new me("No package found in the project for the given locator");await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async o=>{let a=await PM(s,{cache:n,project:r});o.reportJson({locator:S.stringifyLocator(s),path:M.fromPortablePath(a)}),o.reportInfo(z.UNNAMED,`Package ${S.prettyLocator(e,s)} got extracted with success!`),o.reportInfo(z.UNNAMED,`You can now edit the following folder: ${ue.pretty(e,M.fromPortablePath(a),"magenta")}`),o.reportInfo(z.UNNAMED,`Once you are done run ${ue.pretty(e,`yarn patch-commit ${process.platform==="win32"?'"':""}${M.fromPortablePath(a)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};Dm.paths=[["patch"]],Dm.usage=ye.Usage({description:"prepare a package for patching",details:'\n This command will cause a package to be extracted in a temporary directory (under a folder named "patch-workdir"). This folder will be editable at will; running `yarn patch` inside it will then cause Yarn to generate a patchfile and register it into your top-level manifest (cf the `patch:` protocol).\n '});var efe=Dm;var w_e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:ge.BOOLEAN,default:!1},patchFolder:{description:"Folder where the patch files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/patches"}},commands:[$ge,efe],fetchers:[RM],resolvers:[FM]},B_e=w_e;var TM={};it(TM,{default:()=>S_e});var tfe=ie(Wp()),LM=class{supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="pnpm"}async findPackageLocation(e,r){return nfe(e,{project:r.project})}async findPackageLocator(e,r){let i=ife(),n=r.project.installersCustomData.get(i);if(!n)throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=v.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new rfe(e)}},rfe=class{constructor(e){this.opts=e;this.asyncActions=new afe;this.packageLocations=new Map;this.customData={locatorByPath:new Map}}getCustomDataKey(){return ife()}attachCustomData(e){this.customData=e}async installPackage(e,r,i){switch(e.linkType){case gt.SOFT:return this.installPackageSoft(e,r,i);case gt.HARD:return this.installPackageHard(e,r,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,i){let n=v.resolve(r.packageFs.getRealPath(),r.prefixPath);return this.packageLocations.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,r,i){var u;let n=nfe(e,{project:this.opts.project});this.customData.locatorByPath.set(n,S.stringifyLocator(e)),this.packageLocations.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await T.mkdirPromise(n,{recursive:!0}),await T.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1})}));let o=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e,a={manifest:(u=await Ze.tryFind(r.prefixPath,{baseFs:r.packageFs}))!=null?u:new Ze,misc:{hasBindingGyp:Ws.hasBindingGyp(r)}},l=this.opts.project.getDependencyMeta(o,e.version),c=Ws.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,r){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!ofe(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.packageLocations.get(e.locatorHash);if(typeof n=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(e)})`);let s=v.join(n,wt.nodeModules);r.length>0&&await T.mkdirpPromise(s);let o=await Q_e(s),a=[];for(let[l,c]of r){let u=c;ofe(c,{project:this.opts.project})||(this.opts.report.reportWarning(z.UNNAMED,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=S.devirtualizeLocator(c));let g=this.packageLocations.get(u.locatorHash);if(typeof g=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(c)})`);let f=S.stringifyIdent(l),h=v.join(s,f),p=v.relative(v.dirname(h),g),d=o.get(f);o.delete(f),a.push(Promise.resolve().then(async()=>{if(d){if(d.isSymbolicLink()&&await T.readlinkPromise(h)===p)return;await T.removePromise(h)}await T.mkdirpPromise(v.dirname(h)),process.platform=="win32"?await T.symlinkPromise(g,h,"junction"):await T.symlinkPromise(p,h)}))}for(let l of o.keys())a.push(T.removePromise(v.join(s,l)));await Promise.all(a)}))}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=sfe(this.opts.project),r=new Set;for(let s of this.packageLocations.values())r.add(v.basename(s));let i;try{i=await T.readdirPromise(e)}catch{i=[]}let n=[];for(let s of i)r.has(s)||n.push(T.removePromise(v.join(e,s)));await Promise.all(n),await this.asyncActions.wait()}};function ife(){return JSON.stringify({name:"PnpmInstaller",version:1})}function sfe(t){return v.join(t.cwd,wt.nodeModules,".store")}function nfe(t,{project:e}){let r=S.slugifyLocator(t);return v.join(sfe(e),r)}function ofe(t,{project:e}){return!S.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function Q_e(t){let e=new Map,r=[];try{r=await T.readdirPromise(t,{withFileTypes:!0})}catch(i){if(i.code!=="ENOENT")throw i}try{for(let i of r)if(!i.name.startsWith("."))if(i.name.startsWith("@"))for(let n of await T.readdirPromise(v.join(t,i.name),{withFileTypes:!0}))e.set(`${i.name}/${n.name}`,n);else e.set(i.name,i)}catch(i){if(i.code!=="ENOENT")throw i}return e}function b_e(){let t,e;return{promise:new Promise((i,n)=>{t=i,e=n}),resolve:t,reject:e}}var afe=class{constructor(){this.deferred=new Map;this.promises=new Map;this.limit=(0,tfe.default)(10)}set(e,r){let i=this.deferred.get(e);typeof i=="undefined"&&this.deferred.set(e,i=b_e());let n=this.limit(()=>r());return this.promises.set(e,n),n.then(()=>{this.promises.get(e)===n&&i.resolve()},s=>{this.promises.get(e)===n&&i.reject(s)}),i.promise}reduce(e,r){var n;let i=(n=this.promises.get(e))!=null?n:Promise.resolve();this.set(e,()=>r(i))}async wait(){await Promise.all(this.promises.values())}};var v_e={linkers:[LM]},S_e=v_e;var F0=()=>({modules:new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",F$(vh)],["semver",x_e],["typanion",lu],["yup",k_e],["@yarnpkg/plugin-essentials",hL],["@yarnpkg/plugin-compat",mL],["@yarnpkg/plugin-dlx",EL],["@yarnpkg/plugin-file",xL],["@yarnpkg/plugin-git",fL],["@yarnpkg/plugin-github",PL],["@yarnpkg/plugin-http",FL],["@yarnpkg/plugin-init",ML],["@yarnpkg/plugin-link",GL],["@yarnpkg/plugin-nm",mT],["@yarnpkg/plugin-npm",yM],["@yarnpkg/plugin-npm-cli",vM],["@yarnpkg/plugin-pack",CM],["@yarnpkg/plugin-patch",NM],["@yarnpkg/plugin-pnp",oT],["@yarnpkg/plugin-pnpm",TM]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"])});i0({binaryVersion:Zr||"",pluginConfiguration:F0()});})(); -/*! - * buildToken - * Builds OAuth token prefix (helper function) - * - * @name buildToken - * @function - * @param {GitUrl} obj The parsed Git url object. - * @return {String} token prefix - */ -/*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */ diff --git a/tgui/.yarn/releases/yarn-3.4.1.cjs b/tgui/.yarn/releases/yarn-3.4.1.cjs new file mode 100644 index 00000000000..2bdb752d860 --- /dev/null +++ b/tgui/.yarn/releases/yarn-3.4.1.cjs @@ -0,0 +1,873 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var Mue=Object.create;var Wb=Object.defineProperty;var Kue=Object.getOwnPropertyDescriptor;var Uue=Object.getOwnPropertyNames;var Hue=Object.getPrototypeOf,Gue=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var Yue=(r,e)=>()=>(r&&(e=r(r=0)),e);var w=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ut=(r,e)=>{for(var t in e)Wb(r,t,{get:e[t],enumerable:!0})},jue=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Uue(e))!Gue.call(r,n)&&n!==t&&Wb(r,n,{get:()=>e[n],enumerable:!(i=Kue(e,n))||i.enumerable});return r};var Pe=(r,e,t)=>(t=r!=null?Mue(Hue(r)):{},jue(e||!r||!r.__esModule?Wb(t,"default",{value:r,enumerable:!0}):t,r));var _1=w((O7e,X1)=>{X1.exports=V1;V1.sync=uge;var W1=J("fs");function cge(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i{tK.exports=$1;$1.sync=gge;var Z1=J("fs");function $1(r,e,t){Z1.stat(r,function(i,n){t(i,i?!1:eK(n,e))})}function gge(r,e){return eK(Z1.statSync(r),e)}function eK(r,e){return r.isFile()&&fge(r,e)}function fge(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var nK=w((U7e,iK)=>{var K7e=J("fs"),_E;process.platform==="win32"||global.TESTING_WINDOWS?_E=_1():_E=rK();iK.exports=uS;uS.sync=hge;function uS(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){uS(r,e||{},function(s,o){s?n(s):i(o)})})}_E(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function hge(r,e){try{return _E.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var uK=w((H7e,cK)=>{var Ig=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",sK=J("path"),pge=Ig?";":":",oK=nK(),aK=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),AK=(r,e)=>{let t=e.colon||pge,i=r.match(/\//)||Ig&&r.match(/\\/)?[""]:[...Ig?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=Ig?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=Ig?n.split(t):[""];return Ig&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},lK=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=AK(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(aK(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=sK.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];oK(c+p,{pathExt:s},(C,y)=>{if(!C&&y)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},dge=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=AK(r,e),s=[];for(let o=0;o{"use strict";var gK=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};gS.exports=gK;gS.exports.default=gK});var CK=w((Y7e,dK)=>{"use strict";var hK=J("path"),Cge=uK(),mge=fK();function pK(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=Cge.sync(r.command,{path:t[mge({env:t})],pathExt:e?hK.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=hK.resolve(n?r.options.cwd:"",o)),o}function Ege(r){return pK(r)||pK(r,!0)}dK.exports=Ege});var mK=w((j7e,hS)=>{"use strict";var fS=/([()\][%!^"`<>&|;, *?])/g;function Ige(r){return r=r.replace(fS,"^$1"),r}function yge(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(fS,"^$1"),e&&(r=r.replace(fS,"^$1")),r}hS.exports.command=Ige;hS.exports.argument=yge});var IK=w((q7e,EK)=>{"use strict";EK.exports=/^#!(.*)/});var wK=w((J7e,yK)=>{"use strict";var wge=IK();yK.exports=(r="")=>{let e=r.match(wge);if(!e)return null;let[t,i]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var QK=w((W7e,BK)=>{"use strict";var pS=J("fs"),Bge=wK();function Qge(r){let t=Buffer.alloc(150),i;try{i=pS.openSync(r,"r"),pS.readSync(i,t,0,150,0),pS.closeSync(i)}catch{}return Bge(t.toString())}BK.exports=Qge});var xK=w((z7e,vK)=>{"use strict";var bge=J("path"),bK=CK(),SK=mK(),Sge=QK(),vge=process.platform==="win32",xge=/\.(?:com|exe)$/i,Pge=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Dge(r){r.file=bK(r);let e=r.file&&Sge(r.file);return e?(r.args.unshift(r.file),r.command=e,bK(r)):r.file}function kge(r){if(!vge)return r;let e=Dge(r),t=!xge.test(e);if(r.options.forceShell||t){let i=Pge.test(e);r.command=bge.normalize(r.command),r.command=SK.command(r.command),r.args=r.args.map(s=>SK.argument(s,i));let n=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${n}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function Rge(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let i={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?i:kge(i)}vK.exports=Rge});var kK=w((V7e,DK)=>{"use strict";var dS=process.platform==="win32";function CS(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function Fge(r,e){if(!dS)return;let t=r.emit;r.emit=function(i,n){if(i==="exit"){let s=PK(n,e,"spawn");if(s)return t.call(r,"error",s)}return t.apply(r,arguments)}}function PK(r,e){return dS&&r===1&&!e.file?CS(e.original,"spawn"):null}function Nge(r,e){return dS&&r===1&&!e.file?CS(e.original,"spawnSync"):null}DK.exports={hookChildProcess:Fge,verifyENOENT:PK,verifyENOENTSync:Nge,notFoundError:CS}});var IS=w((X7e,yg)=>{"use strict";var RK=J("child_process"),mS=xK(),ES=kK();function FK(r,e,t){let i=mS(r,e,t),n=RK.spawn(i.command,i.args,i.options);return ES.hookChildProcess(n,i),n}function Lge(r,e,t){let i=mS(r,e,t),n=RK.spawnSync(i.command,i.args,i.options);return n.error=n.error||ES.verifyENOENTSync(n.status,i),n}yg.exports=FK;yg.exports.spawn=FK;yg.exports.sync=Lge;yg.exports._parse=mS;yg.exports._enoent=ES});var LK=w((_7e,NK)=>{"use strict";function Tge(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Ml(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ml)}Tge(Ml,Error);Ml.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ie=me(">>",!1),de=">&",tt=me(">&",!1),Pt=">",It=me(">",!1),Or="<<<",ii=me("<<<",!1),gi="<&",hr=me("<&",!1),fi="<",ni=me("<",!1),Ls=function(m){return{type:"argument",segments:[].concat(...m)}},pr=function(m){return m},Ei="$'",_n=me("$'",!1),oa="'",aA=me("'",!1),eg=function(m){return[{type:"text",text:m}]},Zn='""',AA=me('""',!1),aa=function(){return{type:"text",text:""}},up='"',lA=me('"',!1),cA=function(m){return m},wr=function(m){return{type:"arithmetic",arithmetic:m,quoted:!0}},wl=function(m){return{type:"shell",shell:m,quoted:!0}},tg=function(m){return{type:"variable",...m,quoted:!0}},po=function(m){return{type:"text",text:m}},rg=function(m){return{type:"arithmetic",arithmetic:m,quoted:!1}},gp=function(m){return{type:"shell",shell:m,quoted:!1}},fp=function(m){return{type:"variable",...m,quoted:!1}},vr=function(m){return{type:"glob",pattern:m}},se=/^[^']/,Co=Je(["'"],!0,!1),Dn=function(m){return m.join("")},ig=/^[^$"]/,Qt=Je(["$",'"'],!0,!1),Bl=`\\ +`,kn=me(`\\ +`,!1),$n=function(){return""},es="\\",gt=me("\\",!1),mo=/^[\\$"`]/,At=Je(["\\","$",'"',"`"],!1,!1),an=function(m){return m},S="\\a",Tt=me("\\a",!1),ng=function(){return"a"},Ql="\\b",hp=me("\\b",!1),pp=function(){return"\b"},dp=/^[Ee]/,Cp=Je(["E","e"],!1,!1),mp=function(){return"\x1B"},G="\\f",yt=me("\\f",!1),uA=function(){return"\f"},ji="\\n",bl=me("\\n",!1),Xe=function(){return` +`},Aa="\\r",sg=me("\\r",!1),bE=function(){return"\r"},Ep="\\t",SE=me("\\t",!1),ar=function(){return" "},Rn="\\v",Sl=me("\\v",!1),Ip=function(){return"\v"},Ts=/^[\\'"?]/,la=Je(["\\","'",'"',"?"],!1,!1),An=function(m){return String.fromCharCode(parseInt(m,16))},Te="\\x",og=me("\\x",!1),vl="\\u",Os=me("\\u",!1),xl="\\U",gA=me("\\U",!1),ag=function(m){return String.fromCodePoint(parseInt(m,16))},Ag=/^[0-7]/,ca=Je([["0","7"]],!1,!1),ua=/^[0-9a-fA-f]/,rt=Je([["0","9"],["a","f"],["A","f"]],!1,!1),Eo=nt(),fA="-",Pl=me("-",!1),Ms="+",Dl=me("+",!1),vE=".",yp=me(".",!1),lg=function(m,b,N){return{type:"number",value:(m==="-"?-1:1)*parseFloat(b.join("")+"."+N.join(""))}},wp=function(m,b){return{type:"number",value:(m==="-"?-1:1)*parseInt(b.join(""))}},xE=function(m){return{type:"variable",...m}},kl=function(m){return{type:"variable",name:m}},PE=function(m){return m},cg="*",hA=me("*",!1),Rr="/",DE=me("/",!1),Ks=function(m,b,N){return{type:b==="*"?"multiplication":"division",right:N}},Us=function(m,b){return b.reduce((N,U)=>({left:N,...U}),m)},ug=function(m,b,N){return{type:b==="+"?"addition":"subtraction",right:N}},pA="$((",R=me("$((",!1),q="))",Ce=me("))",!1),Ke=function(m){return m},Re="$(",ze=me("$(",!1),dt=function(m){return m},Ft="${",Fn=me("${",!1),Db=":-",$M=me(":-",!1),e1=function(m,b){return{name:m,defaultValue:b}},kb=":-}",t1=me(":-}",!1),r1=function(m){return{name:m,defaultValue:[]}},Rb=":+",i1=me(":+",!1),n1=function(m,b){return{name:m,alternativeValue:b}},Fb=":+}",s1=me(":+}",!1),o1=function(m){return{name:m,alternativeValue:[]}},Nb=function(m){return{name:m}},a1="$",A1=me("$",!1),l1=function(m){return e.isGlobPattern(m)},c1=function(m){return m},Lb=/^[a-zA-Z0-9_]/,Tb=Je([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Ob=function(){return T()},Mb=/^[$@*?#a-zA-Z0-9_\-]/,Kb=Je(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),u1=/^[(){}<>$|&; \t"']/,gg=Je(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),Ub=/^[<>&; \t"']/,Hb=Je(["<",">","&",";"," "," ",'"',"'"],!1,!1),kE=/^[ \t]/,RE=Je([" "," "],!1,!1),Q=0,Me=0,dA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function T(){return r.substring(Me,Q)}function _(){return Et(Me,Q)}function te(m,b){throw b=b!==void 0?b:Et(Me,Q),ki([lt(m)],r.substring(Me,Q),b)}function Be(m,b){throw b=b!==void 0?b:Et(Me,Q),Nn(m,b)}function me(m,b){return{type:"literal",text:m,ignoreCase:b}}function Je(m,b,N){return{type:"class",parts:m,inverted:b,ignoreCase:N}}function nt(){return{type:"any"}}function wt(){return{type:"end"}}function lt(m){return{type:"other",description:m}}function it(m){var b=dA[m],N;if(b)return b;for(N=m-1;!dA[N];)N--;for(b=dA[N],b={line:b.line,column:b.column};Nd&&(d=Q,E=[]),E.push(m))}function Nn(m,b){return new Ml(m,null,null,b)}function ki(m,b,N){return new Ml(Ml.buildMessage(m,b),m,b,N)}function CA(){var m,b;return m=Q,b=Mr(),b===t&&(b=null),b!==t&&(Me=m,b=s(b)),m=b,m}function Mr(){var m,b,N,U,ce;if(m=Q,b=Kr(),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=ga(),U!==t?(ce=ts(),ce===t&&(ce=null),ce!==t?(Me=m,b=o(b,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;if(m===t)if(m=Q,b=Kr(),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=ga(),U===t&&(U=null),U!==t?(Me=m,b=a(b,U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function ts(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Mr(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=l(N),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function ga(){var m;return r.charCodeAt(Q)===59?(m=c,Q++):(m=t,I===0&&Qe(u)),m===t&&(r.charCodeAt(Q)===38?(m=g,Q++):(m=t,I===0&&Qe(f))),m}function Kr(){var m,b,N;return m=Q,b=g1(),b!==t?(N=yue(),N===t&&(N=null),N!==t?(Me=m,b=h(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function yue(){var m,b,N,U,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=wue(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Kr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=p(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function wue(){var m;return r.substr(Q,2)===C?(m=C,Q+=2):(m=t,I===0&&Qe(y)),m===t&&(r.substr(Q,2)===B?(m=B,Q+=2):(m=t,I===0&&Qe(v))),m}function g1(){var m,b,N;return m=Q,b=bue(),b!==t?(N=Bue(),N===t&&(N=null),N!==t?(Me=m,b=D(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Bue(){var m,b,N,U,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Que(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=g1(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=L(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function Que(){var m;return r.substr(Q,2)===H?(m=H,Q+=2):(m=t,I===0&&Qe(j)),m===t&&(r.charCodeAt(Q)===124?(m=$,Q++):(m=t,I===0&&Qe(V))),m}function FE(){var m,b,N,U,ce,Se;if(m=Q,b=Q1(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(Z)),N!==t)if(U=p1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(Me=m,b=A(b,U),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;else Q=m,m=t;if(m===t)if(m=Q,b=Q1(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(Z)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=ae(b),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function bue(){var m,b,N,U,ce,Se,ht,Bt,Jr,hi,rs;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===40?(N=ge,Q++):(N=t,I===0&&Qe(re)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===41?(ht=O,Q++):(ht=t,I===0&&Qe(F)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Bp();hi!==t;)Jr.push(hi),hi=Bp();if(Jr!==t){for(hi=[],rs=He();rs!==t;)hi.push(rs),rs=He();hi!==t?(Me=m,b=ue(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===123?(N=he,Q++):(N=t,I===0&&Qe(ke)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===125?(ht=Fe,Q++):(ht=t,I===0&&Qe(Ne)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Bp();hi!==t;)Jr.push(hi),hi=Bp();if(Jr!==t){for(hi=[],rs=He();rs!==t;)hi.push(rs),rs=He();hi!==t?(Me=m,b=oe(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){for(N=[],U=FE();U!==t;)N.push(U),U=FE();if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t){if(ce=[],Se=h1(),Se!==t)for(;Se!==t;)ce.push(Se),Se=h1();else ce=t;if(ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=le(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],U=FE(),U!==t)for(;U!==t;)N.push(U),U=FE();else N=t;if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=we(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}}}return m}function f1(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],U=NE(),U!==t)for(;U!==t;)N.push(U),U=NE();else N=t;if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=fe(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t;return m}function h1(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t?(N=Bp(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();b!==t?(N=NE(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t)}return m}function Bp(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(qe.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(ne)),N===t&&(N=null),N!==t?(U=Sue(),U!==t?(ce=NE(),ce!==t?(Me=m,b=Y(N,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function Sue(){var m;return r.substr(Q,2)===pe?(m=pe,Q+=2):(m=t,I===0&&Qe(ie)),m===t&&(r.substr(Q,2)===de?(m=de,Q+=2):(m=t,I===0&&Qe(tt)),m===t&&(r.charCodeAt(Q)===62?(m=Pt,Q++):(m=t,I===0&&Qe(It)),m===t&&(r.substr(Q,3)===Or?(m=Or,Q+=3):(m=t,I===0&&Qe(ii)),m===t&&(r.substr(Q,2)===gi?(m=gi,Q+=2):(m=t,I===0&&Qe(hr)),m===t&&(r.charCodeAt(Q)===60?(m=fi,Q++):(m=t,I===0&&Qe(ni))))))),m}function NE(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(N=p1(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function p1(){var m,b,N;if(m=Q,b=[],N=d1(),N!==t)for(;N!==t;)b.push(N),N=d1();else b=t;return b!==t&&(Me=m,b=Ls(b)),m=b,m}function d1(){var m,b;return m=Q,b=vue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=xue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=Pue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=Due(),b!==t&&(Me=m,b=pr(b)),m=b))),m}function vue(){var m,b,N,U;return m=Q,r.substr(Q,2)===Ei?(b=Ei,Q+=2):(b=t,I===0&&Qe(_n)),b!==t?(N=Fue(),N!==t?(r.charCodeAt(Q)===39?(U=oa,Q++):(U=t,I===0&&Qe(aA)),U!==t?(Me=m,b=eg(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function xue(){var m,b,N,U;return m=Q,r.charCodeAt(Q)===39?(b=oa,Q++):(b=t,I===0&&Qe(aA)),b!==t?(N=kue(),N!==t?(r.charCodeAt(Q)===39?(U=oa,Q++):(U=t,I===0&&Qe(aA)),U!==t?(Me=m,b=eg(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function Pue(){var m,b,N,U;if(m=Q,r.substr(Q,2)===Zn?(b=Zn,Q+=2):(b=t,I===0&&Qe(AA)),b!==t&&(Me=m,b=aa()),m=b,m===t)if(m=Q,r.charCodeAt(Q)===34?(b=up,Q++):(b=t,I===0&&Qe(lA)),b!==t){for(N=[],U=C1();U!==t;)N.push(U),U=C1();N!==t?(r.charCodeAt(Q)===34?(U=up,Q++):(U=t,I===0&&Qe(lA)),U!==t?(Me=m,b=cA(N),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function Due(){var m,b,N;if(m=Q,b=[],N=m1(),N!==t)for(;N!==t;)b.push(N),N=m1();else b=t;return b!==t&&(Me=m,b=cA(b)),m=b,m}function C1(){var m,b;return m=Q,b=w1(),b!==t&&(Me=m,b=wr(b)),m=b,m===t&&(m=Q,b=B1(),b!==t&&(Me=m,b=wl(b)),m=b,m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=tg(b)),m=b,m===t&&(m=Q,b=Rue(),b!==t&&(Me=m,b=po(b)),m=b))),m}function m1(){var m,b;return m=Q,b=w1(),b!==t&&(Me=m,b=rg(b)),m=b,m===t&&(m=Q,b=B1(),b!==t&&(Me=m,b=gp(b)),m=b,m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=fp(b)),m=b,m===t&&(m=Q,b=Tue(),b!==t&&(Me=m,b=vr(b)),m=b,m===t&&(m=Q,b=Lue(),b!==t&&(Me=m,b=po(b)),m=b)))),m}function kue(){var m,b,N;for(m=Q,b=[],se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co));N!==t;)b.push(N),se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co));return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Rue(){var m,b,N;if(m=Q,b=[],N=E1(),N===t&&(ig.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt))),N!==t)for(;N!==t;)b.push(N),N=E1(),N===t&&(ig.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt)));else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function E1(){var m,b,N;return m=Q,r.substr(Q,2)===Bl?(b=Bl,Q+=2):(b=t,I===0&&Qe(kn)),b!==t&&(Me=m,b=$n()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(mo.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(At)),N!==t?(Me=m,b=an(N),m=b):(Q=m,m=t)):(Q=m,m=t)),m}function Fue(){var m,b,N;for(m=Q,b=[],N=I1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co)));N!==t;)b.push(N),N=I1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co)));return b!==t&&(Me=m,b=Dn(b)),m=b,m}function I1(){var m,b,N;return m=Q,r.substr(Q,2)===S?(b=S,Q+=2):(b=t,I===0&&Qe(Tt)),b!==t&&(Me=m,b=ng()),m=b,m===t&&(m=Q,r.substr(Q,2)===Ql?(b=Ql,Q+=2):(b=t,I===0&&Qe(hp)),b!==t&&(Me=m,b=pp()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(dp.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Cp)),N!==t?(Me=m,b=mp(),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===G?(b=G,Q+=2):(b=t,I===0&&Qe(yt)),b!==t&&(Me=m,b=uA()),m=b,m===t&&(m=Q,r.substr(Q,2)===ji?(b=ji,Q+=2):(b=t,I===0&&Qe(bl)),b!==t&&(Me=m,b=Xe()),m=b,m===t&&(m=Q,r.substr(Q,2)===Aa?(b=Aa,Q+=2):(b=t,I===0&&Qe(sg)),b!==t&&(Me=m,b=bE()),m=b,m===t&&(m=Q,r.substr(Q,2)===Ep?(b=Ep,Q+=2):(b=t,I===0&&Qe(SE)),b!==t&&(Me=m,b=ar()),m=b,m===t&&(m=Q,r.substr(Q,2)===Rn?(b=Rn,Q+=2):(b=t,I===0&&Qe(Sl)),b!==t&&(Me=m,b=Ip()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(Ts.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(la)),N!==t?(Me=m,b=an(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Nue()))))))))),m}function Nue(){var m,b,N,U,ce,Se,ht,Bt,Jr,hi,rs,Jb;return m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(N=Gb(),N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Te?(b=Te,Q+=2):(b=t,I===0&&Qe(og)),b!==t?(N=Q,U=Q,ce=Gb(),ce!==t?(Se=Ln(),Se!==t?(ce=[ce,Se],U=ce):(Q=U,U=t)):(Q=U,U=t),U===t&&(U=Gb()),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===vl?(b=vl,Q+=2):(b=t,I===0&&Qe(Os)),b!==t?(N=Q,U=Q,ce=Ln(),ce!==t?(Se=Ln(),Se!==t?(ht=Ln(),ht!==t?(Bt=Ln(),Bt!==t?(ce=[ce,Se,ht,Bt],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===xl?(b=xl,Q+=2):(b=t,I===0&&Qe(gA)),b!==t?(N=Q,U=Q,ce=Ln(),ce!==t?(Se=Ln(),Se!==t?(ht=Ln(),ht!==t?(Bt=Ln(),Bt!==t?(Jr=Ln(),Jr!==t?(hi=Ln(),hi!==t?(rs=Ln(),rs!==t?(Jb=Ln(),Jb!==t?(ce=[ce,Se,ht,Bt,Jr,hi,rs,Jb],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=ag(N),m=b):(Q=m,m=t)):(Q=m,m=t)))),m}function Gb(){var m;return Ag.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(ca)),m}function Ln(){var m;return ua.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(rt)),m}function Lue(){var m,b,N,U,ce;if(m=Q,b=[],N=Q,r.charCodeAt(Q)===92?(U=es,Q++):(U=t,I===0&&Qe(gt)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,U=Q,I++,ce=b1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t)),N!==t)for(;N!==t;)b.push(N),N=Q,r.charCodeAt(Q)===92?(U=es,Q++):(U=t,I===0&&Qe(gt)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,U=Q,I++,ce=b1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t));else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Yb(){var m,b,N,U,ce,Se;if(m=Q,r.charCodeAt(Q)===45?(b=fA,Q++):(b=t,I===0&&Qe(Pl)),b===t&&(r.charCodeAt(Q)===43?(b=Ms,Q++):(b=t,I===0&&Qe(Dl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne)),U!==t)for(;U!==t;)N.push(U),qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne));else N=t;if(N!==t)if(r.charCodeAt(Q)===46?(U=vE,Q++):(U=t,I===0&&Qe(yp)),U!==t){if(ce=[],qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne)),Se!==t)for(;Se!==t;)ce.push(Se),qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne));else ce=t;ce!==t?(Me=m,b=lg(b,N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;if(m===t){if(m=Q,r.charCodeAt(Q)===45?(b=fA,Q++):(b=t,I===0&&Qe(Pl)),b===t&&(r.charCodeAt(Q)===43?(b=Ms,Q++):(b=t,I===0&&Qe(Dl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne)),U!==t)for(;U!==t;)N.push(U),qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne));else N=t;N!==t?(Me=m,b=wp(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;if(m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=xE(b)),m=b,m===t&&(m=Q,b=Rl(),b!==t&&(Me=m,b=kl(b)),m=b,m===t)))if(m=Q,r.charCodeAt(Q)===40?(b=ge,Q++):(b=t,I===0&&Qe(re)),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();if(N!==t)if(U=y1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.charCodeAt(Q)===41?(Se=O,Q++):(Se=t,I===0&&Qe(F)),Se!==t?(Me=m,b=PE(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t}return m}function jb(){var m,b,N,U,ce,Se,ht,Bt;if(m=Q,b=Yb(),b!==t){for(N=[],U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=cg,Q++):(Se=t,I===0&&Qe(hA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(DE))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=Yb(),Bt!==t?(Me=U,ce=Ks(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(N.push(U),U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=cg,Q++):(Se=t,I===0&&Qe(hA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(DE))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=Yb(),Bt!==t?(Me=U,ce=Ks(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}N!==t?(Me=m,b=Us(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function y1(){var m,b,N,U,ce,Se,ht,Bt;if(m=Q,b=jb(),b!==t){for(N=[],U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Ms,Q++):(Se=t,I===0&&Qe(Dl)),Se===t&&(r.charCodeAt(Q)===45?(Se=fA,Q++):(Se=t,I===0&&Qe(Pl))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=jb(),Bt!==t?(Me=U,ce=ug(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(N.push(U),U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Ms,Q++):(Se=t,I===0&&Qe(Dl)),Se===t&&(r.charCodeAt(Q)===45?(Se=fA,Q++):(Se=t,I===0&&Qe(Pl))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=jb(),Bt!==t?(Me=U,ce=ug(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}N!==t?(Me=m,b=Us(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function w1(){var m,b,N,U,ce,Se;if(m=Q,r.substr(Q,3)===pA?(b=pA,Q+=3):(b=t,I===0&&Qe(R)),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();if(N!==t)if(U=y1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.substr(Q,2)===q?(Se=q,Q+=2):(Se=t,I===0&&Qe(Ce)),Se!==t?(Me=m,b=Ke(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;return m}function B1(){var m,b,N,U;return m=Q,r.substr(Q,2)===Re?(b=Re,Q+=2):(b=t,I===0&&Qe(ze)),b!==t?(N=Mr(),N!==t?(r.charCodeAt(Q)===41?(U=O,Q++):(U=t,I===0&&Qe(F)),U!==t?(Me=m,b=dt(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function qb(){var m,b,N,U,ce,Se;return m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,2)===Db?(U=Db,Q+=2):(U=t,I===0&&Qe($M)),U!==t?(ce=f1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=e1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,3)===kb?(U=kb,Q+=3):(U=t,I===0&&Qe(t1)),U!==t?(Me=m,b=r1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,2)===Rb?(U=Rb,Q+=2):(U=t,I===0&&Qe(i1)),U!==t?(ce=f1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=n1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,3)===Fb?(U=Fb,Q+=3):(U=t,I===0&&Qe(s1)),U!==t?(Me=m,b=o1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.charCodeAt(Q)===125?(U=Fe,Q++):(U=t,I===0&&Qe(Ne)),U!==t?(Me=m,b=Nb(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.charCodeAt(Q)===36?(b=a1,Q++):(b=t,I===0&&Qe(A1)),b!==t?(N=Rl(),N!==t?(Me=m,b=Nb(N),m=b):(Q=m,m=t)):(Q=m,m=t)))))),m}function Tue(){var m,b,N;return m=Q,b=Oue(),b!==t?(Me=Q,N=l1(b),N?N=void 0:N=t,N!==t?(Me=m,b=c1(b),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Oue(){var m,b,N,U,ce;if(m=Q,b=[],N=Q,U=Q,I++,ce=S1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N!==t)for(;N!==t;)b.push(N),N=Q,U=Q,I++,ce=S1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t);else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Q1(){var m,b,N;if(m=Q,b=[],Lb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Tb)),N!==t)for(;N!==t;)b.push(N),Lb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Tb));else b=t;return b!==t&&(Me=m,b=Ob()),m=b,m}function Rl(){var m,b,N;if(m=Q,b=[],Mb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Kb)),N!==t)for(;N!==t;)b.push(N),Mb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Kb));else b=t;return b!==t&&(Me=m,b=Ob()),m=b,m}function b1(){var m;return u1.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(gg)),m}function S1(){var m;return Ub.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(Hb)),m}function He(){var m,b;if(m=[],kE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(RE)),b!==t)for(;b!==t;)m.push(b),kE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(RE));else m=t;return m}if(k=n(),k!==t&&Q===r.length)return k;throw k!==t&&Q{"use strict";function Mge(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Ul(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ul)}Mge(Ul,Error);Ul.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=v,j=[]),j.push(ne))}function Ne(ne,Y){return new Ul(ne,null,null,Y)}function oe(ne,Y,pe){return new Ul(Ul.buildMessage(ne,Y),ne,Y,pe)}function le(){var ne,Y,pe,ie;return ne=v,Y=we(),Y!==t?(r.charCodeAt(v)===47?(pe=s,v++):(pe=t,$===0&&Fe(o)),pe!==t?(ie=we(),ie!==t?(D=ne,Y=a(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=we(),Y!==t&&(D=ne,Y=l(Y)),ne=Y),ne}function we(){var ne,Y,pe,ie;return ne=v,Y=fe(),Y!==t?(r.charCodeAt(v)===64?(pe=c,v++):(pe=t,$===0&&Fe(u)),pe!==t?(ie=qe(),ie!==t?(D=ne,Y=g(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=fe(),Y!==t&&(D=ne,Y=f(Y)),ne=Y),ne}function fe(){var ne,Y,pe,ie,de;return ne=v,r.charCodeAt(v)===64?(Y=c,v++):(Y=t,$===0&&Fe(u)),Y!==t?(pe=Ae(),pe!==t?(r.charCodeAt(v)===47?(ie=s,v++):(ie=t,$===0&&Fe(o)),ie!==t?(de=Ae(),de!==t?(D=ne,Y=h(),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=Ae(),Y!==t&&(D=ne,Y=h()),ne=Y),ne}function Ae(){var ne,Y,pe;if(ne=v,Y=[],p.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(C)),pe!==t)for(;pe!==t;)Y.push(pe),p.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(C));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}function qe(){var ne,Y,pe;if(ne=v,Y=[],y.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(B)),pe!==t)for(;pe!==t;)Y.push(pe),y.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(B));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}if(V=n(),V!==t&&v===r.length)return V;throw V!==t&&v{"use strict";function UK(r){return typeof r>"u"||r===null}function Uge(r){return typeof r=="object"&&r!==null}function Hge(r){return Array.isArray(r)?r:UK(r)?[]:[r]}function Gge(r,e){var t,i,n,s;if(e)for(s=Object.keys(e),t=0,i=s.length;t{"use strict";function Op(r,e){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Op.prototype=Object.create(Error.prototype);Op.prototype.constructor=Op;Op.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};HK.exports=Op});var jK=w((pXe,YK)=>{"use strict";var GK=Gl();function SS(r,e,t,i,n){this.name=r,this.buffer=e,this.position=t,this.line=i,this.column=n}SS.prototype.getSnippet=function(e,t){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,t=t||75,i="",n=this.position;n>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>t/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;ot/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),GK.repeat(" ",e)+i+a+s+` +`+GK.repeat(" ",e+this.position-n+i.length)+"^"};SS.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`: +`+t)),i};YK.exports=SS});var si=w((dXe,JK)=>{"use strict";var qK=Qg(),qge=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Jge=["scalar","sequence","mapping"];function Wge(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function zge(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(qge.indexOf(t)===-1)throw new qK('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=Wge(e.styleAliases||null),Jge.indexOf(this.kind)===-1)throw new qK('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}JK.exports=zge});var Yl=w((CXe,zK)=>{"use strict";var WK=Gl(),nI=Qg(),Vge=si();function vS(r,e,t){var i=[];return r.include.forEach(function(n){t=vS(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function Xge(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e{"use strict";var _ge=si();VK.exports=new _ge("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var ZK=w((EXe,_K)=>{"use strict";var Zge=si();_K.exports=new Zge("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var eU=w((IXe,$K)=>{"use strict";var $ge=si();$K.exports=new $ge("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var sI=w((yXe,tU)=>{"use strict";var efe=Yl();tU.exports=new efe({explicit:[XK(),ZK(),eU()]})});var iU=w((wXe,rU)=>{"use strict";var tfe=si();function rfe(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function ife(){return null}function nfe(r){return r===null}rU.exports=new tfe("tag:yaml.org,2002:null",{kind:"scalar",resolve:rfe,construct:ife,predicate:nfe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var sU=w((BXe,nU)=>{"use strict";var sfe=si();function ofe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function afe(r){return r==="true"||r==="True"||r==="TRUE"}function Afe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}nU.exports=new sfe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:ofe,construct:afe,predicate:Afe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var aU=w((QXe,oU)=>{"use strict";var lfe=Gl(),cfe=si();function ufe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function gfe(r){return 48<=r&&r<=55}function ffe(r){return 48<=r&&r<=57}function hfe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t=0?"0b"+r.toString(2):"-0b"+r.toString(2).slice(1)},octal:function(r){return r>=0?"0"+r.toString(8):"-0"+r.toString(8).slice(1)},decimal:function(r){return r.toString(10)},hexadecimal:function(r){return r>=0?"0x"+r.toString(16).toUpperCase():"-0x"+r.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var cU=w((bXe,lU)=>{"use strict";var AU=Gl(),Cfe=si(),mfe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Efe(r){return!(r===null||!mfe.test(r)||r[r.length-1]==="_")}function Ife(r){var e,t,i,n;return e=r.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),t*e):t*parseFloat(e,10)}var yfe=/^[-+]?[0-9]+e/;function wfe(r,e){var t;if(isNaN(r))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===r)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===r)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(AU.isNegativeZero(r))return"-0.0";return t=r.toString(10),yfe.test(t)?t.replace("e",".e"):t}function Bfe(r){return Object.prototype.toString.call(r)==="[object Number]"&&(r%1!==0||AU.isNegativeZero(r))}lU.exports=new Cfe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Efe,construct:Ife,predicate:Bfe,represent:wfe,defaultStyle:"lowercase"})});var xS=w((SXe,uU)=>{"use strict";var Qfe=Yl();uU.exports=new Qfe({include:[sI()],implicit:[iU(),sU(),aU(),cU()]})});var PS=w((vXe,gU)=>{"use strict";var bfe=Yl();gU.exports=new bfe({include:[xS()]})});var dU=w((xXe,pU)=>{"use strict";var Sfe=si(),fU=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),hU=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function vfe(r){return r===null?!1:fU.exec(r)!==null||hU.exec(r)!==null}function xfe(r){var e,t,i,n,s,o,a,l=0,c=null,u,g,f;if(e=fU.exec(r),e===null&&(e=hU.exec(r)),e===null)throw new Error("Date resolve error");if(t=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(t,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function Pfe(r){return r.toISOString()}pU.exports=new Sfe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:vfe,construct:xfe,instanceOf:Date,represent:Pfe})});var mU=w((PXe,CU)=>{"use strict";var Dfe=si();function kfe(r){return r==="<<"||r===null}CU.exports=new Dfe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:kfe})});var yU=w((DXe,IU)=>{"use strict";var jl;try{EU=J,jl=EU("buffer").Buffer}catch{}var EU,Rfe=si(),DS=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function Ffe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=DS;for(t=0;t64)){if(e<0)return!1;i+=6}return i%8===0}function Nfe(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=DS,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),jl?jl.from?jl.from(a):new jl(a):a}function Lfe(r){var e="",t=0,i,n,s=r.length,o=DS;for(i=0;i>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function Tfe(r){return jl&&jl.isBuffer(r)}IU.exports=new Rfe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Ffe,construct:Nfe,predicate:Tfe,represent:Lfe})});var BU=w((kXe,wU)=>{"use strict";var Ofe=si(),Mfe=Object.prototype.hasOwnProperty,Kfe=Object.prototype.toString;function Ufe(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t{"use strict";var Gfe=si(),Yfe=Object.prototype.toString;function jfe(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e{"use strict";var Jfe=si(),Wfe=Object.prototype.hasOwnProperty;function zfe(r){if(r===null)return!0;var e,t=r;for(e in t)if(Wfe.call(t,e)&&t[e]!==null)return!1;return!0}function Vfe(r){return r!==null?r:{}}SU.exports=new Jfe("tag:yaml.org,2002:set",{kind:"mapping",resolve:zfe,construct:Vfe})});var Sg=w((NXe,xU)=>{"use strict";var Xfe=Yl();xU.exports=new Xfe({include:[PS()],implicit:[dU(),mU()],explicit:[yU(),BU(),bU(),vU()]})});var DU=w((LXe,PU)=>{"use strict";var _fe=si();function Zfe(){return!0}function $fe(){}function ehe(){return""}function the(r){return typeof r>"u"}PU.exports=new _fe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Zfe,construct:$fe,predicate:the,represent:ehe})});var RU=w((TXe,kU)=>{"use strict";var rhe=si();function ihe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function nhe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function she(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function ohe(r){return Object.prototype.toString.call(r)==="[object RegExp]"}kU.exports=new rhe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:ihe,construct:nhe,predicate:ohe,represent:she})});var LU=w((OXe,NU)=>{"use strict";var oI;try{FU=J,oI=FU("esprima")}catch{typeof window<"u"&&(oI=window.esprima)}var FU,ahe=si();function Ahe(r){if(r===null)return!1;try{var e="("+r+")",t=oI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function lhe(r){var e="("+r+")",t=oI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function che(r){return r.toString()}function uhe(r){return Object.prototype.toString.call(r)==="[object Function]"}NU.exports=new ahe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Ahe,construct:lhe,predicate:uhe,represent:che})});var Mp=w((MXe,OU)=>{"use strict";var TU=Yl();OU.exports=TU.DEFAULT=new TU({include:[Sg()],explicit:[DU(),RU(),LU()]})});var r2=w((KXe,Kp)=>{"use strict";var da=Gl(),jU=Qg(),ghe=jK(),qU=Sg(),fhe=Mp(),wA=Object.prototype.hasOwnProperty,aI=1,JU=2,WU=3,AI=4,kS=1,hhe=2,MU=3,phe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,dhe=/[\x85\u2028\u2029]/,Che=/[,\[\]\{\}]/,zU=/^(?:!|!!|![a-z\-]+!)$/i,VU=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function KU(r){return Object.prototype.toString.call(r)}function Bo(r){return r===10||r===13}function Jl(r){return r===9||r===32}function un(r){return r===9||r===32||r===10||r===13}function vg(r){return r===44||r===91||r===93||r===123||r===125}function mhe(r){var e;return 48<=r&&r<=57?r-48:(e=r|32,97<=e&&e<=102?e-97+10:-1)}function Ehe(r){return r===120?2:r===117?4:r===85?8:0}function Ihe(r){return 48<=r&&r<=57?r-48:-1}function UU(r){return r===48?"\0":r===97?"\x07":r===98?"\b":r===116||r===9?" ":r===110?` +`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function yhe(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var XU=new Array(256),_U=new Array(256);for(ql=0;ql<256;ql++)XU[ql]=UU(ql)?1:0,_U[ql]=UU(ql);var ql;function whe(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||fhe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function ZU(r,e){return new jU(e,new ghe(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function ft(r,e){throw ZU(r,e)}function lI(r,e){r.onWarning&&r.onWarning.call(null,ZU(r,e))}var HU={YAML:function(e,t,i){var n,s,o;e.version!==null&&ft(e,"duplication of %YAML directive"),i.length!==1&&ft(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&ft(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&ft(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&lI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&&ft(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],zU.test(n)||ft(e,"ill-formed tag handle (first argument) of the TAG directive"),wA.call(e.tagMap,n)&&ft(e,'there is a previously declared suffix for "'+n+'" tag handle'),VU.test(s)||ft(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function yA(r,e,t,i){var n,s,o,a;if(e1&&(r.result+=da.repeat(` +`,e-1))}function Bhe(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),un(h)||vg(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),un(n)||t&&vg(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),un(n)||t&&vg(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),un(i))break}else{if(r.position===r.lineStart&&cI(r)||t&&vg(h))break;if(Bo(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,zr(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(yA(r,s,o,!1),FS(r,r.line-l),s=o=r.position,a=!1),Jl(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return yA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function Qhe(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(yA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else Bo(t)?(yA(r,i,n,!0),FS(r,zr(r,!1,e)),i=n=r.position):r.position===r.lineStart&&cI(r)?ft(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);ft(r,"unexpected end of the stream within a single quoted scalar")}function bhe(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return yA(r,t,r.position,!0),r.position++,!0;if(a===92){if(yA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),Bo(a))zr(r,!1,e);else if(a<256&&XU[a])r.result+=_U[a],r.position++;else if((o=Ehe(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=mhe(a))>=0?s=(s<<4)+o:ft(r,"expected hexadecimal character");r.result+=yhe(s),r.position++}else ft(r,"unknown escape sequence");t=i=r.position}else Bo(a)?(yA(r,t,i,!0),FS(r,zr(r,!1,e)),t=i=r.position):r.position===r.lineStart&&cI(r)?ft(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}ft(r,"unexpected end of the stream within a double quoted scalar")}function She(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,y;if(y=r.input.charCodeAt(r.position),y===91)l=93,g=!1,s=[];else if(y===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),y=r.input.charCodeAt(++r.position);y!==0;){if(zr(r,!0,e),y=r.input.charCodeAt(r.position),y===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||ft(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,y===63&&(a=r.input.charCodeAt(r.position+1),un(a)&&(c=u=!0,r.position++,zr(r,!0,e))),i=r.line,Pg(r,e,aI,!1,!0),p=r.tag,h=r.result,zr(r,!0,e),y=r.input.charCodeAt(r.position),(u||r.line===i)&&y===58&&(c=!0,y=r.input.charCodeAt(++r.position),zr(r,!0,e),Pg(r,e,aI,!1,!0),C=r.result),g?xg(r,s,f,p,h,C):c?s.push(xg(r,null,f,p,h,C)):s.push(h),zr(r,!0,e),y=r.input.charCodeAt(r.position),y===44?(t=!0,y=r.input.charCodeAt(++r.position)):t=!1}ft(r,"unexpected end of the stream within a flow collection")}function vhe(r,e){var t,i,n=kS,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)kS===n?n=g===43?MU:hhe:ft(r,"repeat of a chomping mode identifier");else if((u=Ihe(g))>=0)u===0?ft(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?ft(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(Jl(g)){do g=r.input.charCodeAt(++r.position);while(Jl(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!Bo(g)&&g!==0)}for(;g!==0;){for(RS(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndenta&&(a=r.lineIndent),Bo(g)){l++;continue}if(r.lineIndente)&&l!==0)ft(r,"bad indentation of a sequence entry");else if(r.lineIndente)&&(Pg(r,e,AI,!0,n)&&(p?f=r.result:h=r.result),p||(xg(r,c,u,g,f,h,s,o),g=f=h=null),zr(r,!0,-1),y=r.input.charCodeAt(r.position)),r.lineIndent>e&&y!==0)ft(r,"bad indentation of a mapping entry");else if(r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndent tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+r.kind+'"'),h.resolve(r.result)?(r.result=h.construct(r.result),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):ft(r,"cannot resolve a node with !<"+r.tag+"> explicit tag")):ft(r,"unknown tag !<"+r.tag+">");return r.listener!==null&&r.listener("close",r),r.tag!==null||r.anchor!==null||u}function Rhe(r){var e=r.position,t,i,n,s=!1,o;for(r.version=null,r.checkLineBreaks=r.legacy,r.tagMap={},r.anchorMap={};(o=r.input.charCodeAt(r.position))!==0&&(zr(r,!0,-1),o=r.input.charCodeAt(r.position),!(r.lineIndent>0||o!==37));){for(s=!0,o=r.input.charCodeAt(++r.position),t=r.position;o!==0&&!un(o);)o=r.input.charCodeAt(++r.position);for(i=r.input.slice(t,r.position),n=[],i.length<1&&ft(r,"directive name must not be less than one character in length");o!==0;){for(;Jl(o);)o=r.input.charCodeAt(++r.position);if(o===35){do o=r.input.charCodeAt(++r.position);while(o!==0&&!Bo(o));break}if(Bo(o))break;for(t=r.position;o!==0&&!un(o);)o=r.input.charCodeAt(++r.position);n.push(r.input.slice(t,r.position))}o!==0&&RS(r),wA.call(HU,i)?HU[i](r,i,n):lI(r,'unknown document directive "'+i+'"')}if(zr(r,!0,-1),r.lineIndent===0&&r.input.charCodeAt(r.position)===45&&r.input.charCodeAt(r.position+1)===45&&r.input.charCodeAt(r.position+2)===45?(r.position+=3,zr(r,!0,-1)):s&&ft(r,"directives end mark is expected"),Pg(r,r.lineIndent-1,AI,!1,!0),zr(r,!0,-1),r.checkLineBreaks&&dhe.test(r.input.slice(e,r.position))&&lI(r,"non-ASCII line breaks are interpreted as content"),r.documents.push(r.result),r.position===r.lineStart&&cI(r)){r.input.charCodeAt(r.position)===46&&(r.position+=3,zr(r,!0,-1));return}if(r.position"u"&&(t=e,e=null);var i=$U(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n"u"&&(t=e,e=null),e2(r,e,da.extend({schema:qU},t))}function Nhe(r,e){return t2(r,da.extend({schema:qU},e))}Kp.exports.loadAll=e2;Kp.exports.load=t2;Kp.exports.safeLoadAll=Fhe;Kp.exports.safeLoad=Nhe});var b2=w((UXe,OS)=>{"use strict";var Hp=Gl(),Gp=Qg(),Lhe=Mp(),The=Sg(),c2=Object.prototype.toString,u2=Object.prototype.hasOwnProperty,Ohe=9,Up=10,Mhe=13,Khe=32,Uhe=33,Hhe=34,g2=35,Ghe=37,Yhe=38,jhe=39,qhe=42,f2=44,Jhe=45,h2=58,Whe=61,zhe=62,Vhe=63,Xhe=64,p2=91,d2=93,_he=96,C2=123,Zhe=124,m2=125,Fi={};Fi[0]="\\0";Fi[7]="\\a";Fi[8]="\\b";Fi[9]="\\t";Fi[10]="\\n";Fi[11]="\\v";Fi[12]="\\f";Fi[13]="\\r";Fi[27]="\\e";Fi[34]='\\"';Fi[92]="\\\\";Fi[133]="\\N";Fi[160]="\\_";Fi[8232]="\\L";Fi[8233]="\\P";var $he=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function epe(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;n0?r.charCodeAt(s-1):null,f=f&&s2(o,a)}else{for(s=0;si&&r[g+1]!==" ",g=s);else if(!Dg(o))return uI;a=s>0?r.charCodeAt(s-1):null,f=f&&s2(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?I2:y2:t>9&&E2(r)?uI:c?B2:w2}function ope(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&$he.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return rpe(r,l)}switch(spe(e,o,r.indent,s,a)){case I2:return e;case y2:return"'"+e.replace(/'/g,"''")+"'";case w2:return"|"+o2(e,r.indent)+a2(n2(e,n));case B2:return">"+o2(e,r.indent)+a2(n2(ape(e,s),n));case uI:return'"'+Ape(e,s)+'"';default:throw new Gp("impossible error: invalid scalar style")}}()}function o2(r,e){var t=E2(r)?String(e):"",i=r[r.length-1]===` +`,n=i&&(r[r.length-2]===` +`||r===` +`),s=n?"+":i?"":"-";return t+s+` +`}function a2(r){return r[r.length-1]===` +`?r.slice(0,-1):r}function ape(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(` +`);return c=c!==-1?c:r.length,t.lastIndex=c,A2(r.slice(0,c),e)}(),n=r[0]===` +`||r[0]===" ",s,o;o=t.exec(r);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` +`:"")+A2(l,e),n=s}return i}function A2(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` +`+r.slice(n,s),n=s+1),o=a;return l+=` +`,r.length-n>e&&o>n?l+=r.slice(n,o)+` +`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function Ape(r){for(var e="",t,i,n,s=0;s=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=i2((t-55296)*1024+i-56320+65536),s++;continue}n=Fi[t],e+=!n&&Dg(t)?r[s]:n||i2(t)}return e}function lpe(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),Wl(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function gpe(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new Gp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(r.dump&&Up===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=NS(r,e)),Wl(r,e+1,u,!0,g)&&(r.dump&&Up===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function l2(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function Wl(r,e,t,i,n,s){r.tag=null,r.dump=t,l2(r,t,!1)||l2(r,t,!0);var o=c2.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(gpe(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(upe(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(cpe(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(lpe(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&ope(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new Gp("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function fpe(r,e){var t=[],i=[],n,s;for(LS(r,t,i),n=0,s=i.length;n{"use strict";var gI=r2(),S2=b2();function fI(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Fr.exports.Type=si();Fr.exports.Schema=Yl();Fr.exports.FAILSAFE_SCHEMA=sI();Fr.exports.JSON_SCHEMA=xS();Fr.exports.CORE_SCHEMA=PS();Fr.exports.DEFAULT_SAFE_SCHEMA=Sg();Fr.exports.DEFAULT_FULL_SCHEMA=Mp();Fr.exports.load=gI.load;Fr.exports.loadAll=gI.loadAll;Fr.exports.safeLoad=gI.safeLoad;Fr.exports.safeLoadAll=gI.safeLoadAll;Fr.exports.dump=S2.dump;Fr.exports.safeDump=S2.safeDump;Fr.exports.YAMLException=Qg();Fr.exports.MINIMAL_SCHEMA=sI();Fr.exports.SAFE_SCHEMA=Sg();Fr.exports.DEFAULT_SCHEMA=Mp();Fr.exports.scan=fI("scan");Fr.exports.parse=fI("parse");Fr.exports.compose=fI("compose");Fr.exports.addConstructor=fI("addConstructor")});var P2=w((GXe,x2)=>{"use strict";var ppe=v2();x2.exports=ppe});var k2=w((YXe,D2)=>{"use strict";function dpe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function zl(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,zl)}dpe(zl,Error);zl.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[Ke]:Ce})))},H=function(R){return R},j=function(R){return R},$=Ts("correct indentation"),V=" ",W=ar(" ",!1),Z=function(R){return R.length===pA*ug},A=function(R){return R.length===(pA+1)*ug},ae=function(){return pA++,!0},ge=function(){return pA--,!0},re=function(){return sg()},O=Ts("pseudostring"),F=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Rn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),he=/^[^\r\n\t ,\][{}:#"']/,ke=Rn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Fe=function(){return sg().replace(/^ *| *$/g,"")},Ne="--",oe=ar("--",!1),le=/^[a-zA-Z\/0-9]/,we=Rn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,Ae=Rn(["\r",` +`," "," ",":",","],!0,!1),qe="null",ne=ar("null",!1),Y=function(){return null},pe="true",ie=ar("true",!1),de=function(){return!0},tt="false",Pt=ar("false",!1),It=function(){return!1},Or=Ts("string"),ii='"',gi=ar('"',!1),hr=function(){return""},fi=function(R){return R},ni=function(R){return R.join("")},Ls=/^[^"\\\0-\x1F\x7F]/,pr=Rn(['"',"\\",["\0",""],"\x7F"],!0,!1),Ei='\\"',_n=ar('\\"',!1),oa=function(){return'"'},aA="\\\\",eg=ar("\\\\",!1),Zn=function(){return"\\"},AA="\\/",aa=ar("\\/",!1),up=function(){return"/"},lA="\\b",cA=ar("\\b",!1),wr=function(){return"\b"},wl="\\f",tg=ar("\\f",!1),po=function(){return"\f"},rg="\\n",gp=ar("\\n",!1),fp=function(){return` +`},vr="\\r",se=ar("\\r",!1),Co=function(){return"\r"},Dn="\\t",ig=ar("\\t",!1),Qt=function(){return" "},Bl="\\u",kn=ar("\\u",!1),$n=function(R,q,Ce,Ke){return String.fromCharCode(parseInt(`0x${R}${q}${Ce}${Ke}`))},es=/^[0-9a-fA-F]/,gt=Rn([["0","9"],["a","f"],["A","F"]],!1,!1),mo=Ts("blank space"),At=/^[ \t]/,an=Rn([" "," "],!1,!1),S=Ts("white space"),Tt=/^[ \t\n\r]/,ng=Rn([" "," ",` +`,"\r"],!1,!1),Ql=`\r +`,hp=ar(`\r +`,!1),pp=` +`,dp=ar(` +`,!1),Cp="\r",mp=ar("\r",!1),G=0,yt=0,uA=[{line:1,column:1}],ji=0,bl=[],Xe=0,Aa;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function sg(){return r.substring(yt,G)}function bE(){return An(yt,G)}function Ep(R,q){throw q=q!==void 0?q:An(yt,G),vl([Ts(R)],r.substring(yt,G),q)}function SE(R,q){throw q=q!==void 0?q:An(yt,G),og(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Rn(R,q,Ce){return{type:"class",parts:R,inverted:q,ignoreCase:Ce}}function Sl(){return{type:"any"}}function Ip(){return{type:"end"}}function Ts(R){return{type:"other",description:R}}function la(R){var q=uA[R],Ce;if(q)return q;for(Ce=R-1;!uA[Ce];)Ce--;for(q=uA[Ce],q={line:q.line,column:q.column};Ceji&&(ji=G,bl=[]),bl.push(R))}function og(R,q){return new zl(R,null,null,q)}function vl(R,q,Ce){return new zl(zl.buildMessage(R,q),R,q,Ce)}function Os(){var R;return R=ag(),R}function xl(){var R,q,Ce;for(R=G,q=[],Ce=gA();Ce!==t;)q.push(Ce),Ce=gA();return q!==t&&(yt=R,q=s(q)),R=q,R}function gA(){var R,q,Ce,Ke,Re;return R=G,q=ua(),q!==t?(r.charCodeAt(G)===45?(Ce=o,G++):(Ce=t,Xe===0&&Te(a)),Ce!==t?(Ke=Rr(),Ke!==t?(Re=ca(),Re!==t?(yt=R,q=l(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function ag(){var R,q,Ce;for(R=G,q=[],Ce=Ag();Ce!==t;)q.push(Ce),Ce=Ag();return q!==t&&(yt=R,q=c(q)),R=q,R}function Ag(){var R,q,Ce,Ke,Re,ze,dt,Ft,Fn;if(R=G,q=Rr(),q===t&&(q=null),q!==t){if(Ce=G,r.charCodeAt(G)===35?(Ke=u,G++):(Ke=t,Xe===0&&Te(g)),Ke!==t){if(Re=[],ze=G,dt=G,Xe++,Ft=Us(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t),ze!==t)for(;ze!==t;)Re.push(ze),ze=G,dt=G,Xe++,Ft=Us(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t);else Re=t;Re!==t?(Ke=[Ke,Re],Ce=Ke):(G=Ce,Ce=t)}else G=Ce,Ce=t;if(Ce===t&&(Ce=null),Ce!==t){if(Ke=[],Re=Ks(),Re!==t)for(;Re!==t;)Ke.push(Re),Re=Ks();else Ke=t;Ke!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=ua(),q!==t?(Ce=Pl(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=ca(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=ua(),q!==t?(Ce=Ms(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=ca(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=ua(),q!==t)if(Ce=Ms(),Ce!==t)if(Ke=Rr(),Ke!==t)if(Re=vE(),Re!==t){if(ze=[],dt=Ks(),dt!==t)for(;dt!==t;)ze.push(dt),dt=Ks();else ze=t;ze!==t?(yt=R,q=y(Ce,Re),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=ua(),q!==t)if(Ce=Ms(),Ce!==t){if(Ke=[],Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Fn=Ms(),Fn!==t?(yt=Re,ze=D(Ce,Fn),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t),Re!==t)for(;Re!==t;)Ke.push(Re),Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Fn=Ms(),Fn!==t?(yt=Re,ze=D(Ce,Fn),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t);else Ke=t;Ke!==t?(Re=Rr(),Re===t&&(Re=null),Re!==t?(r.charCodeAt(G)===58?(ze=p,G++):(ze=t,Xe===0&&Te(C)),ze!==t?(dt=Rr(),dt===t&&(dt=null),dt!==t?(Ft=ca(),Ft!==t?(yt=R,q=L(Ce,Ke,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function ca(){var R,q,Ce,Ke,Re,ze,dt;if(R=G,q=G,Xe++,Ce=G,Ke=Us(),Ke!==t?(Re=rt(),Re!==t?(r.charCodeAt(G)===45?(ze=o,G++):(ze=t,Xe===0&&Te(a)),ze!==t?(dt=Rr(),dt!==t?(Ke=[Ke,Re,ze,dt],Ce=Ke):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t),Xe--,Ce!==t?(G=q,q=void 0):q=t,q!==t?(Ce=Ks(),Ce!==t?(Ke=Eo(),Ke!==t?(Re=xl(),Re!==t?(ze=fA(),ze!==t?(yt=R,q=H(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Us(),q!==t?(Ce=Eo(),Ce!==t?(Ke=ag(),Ke!==t?(Re=fA(),Re!==t?(yt=R,q=H(Ke),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=Dl(),q!==t){if(Ce=[],Ke=Ks(),Ke!==t)for(;Ke!==t;)Ce.push(Ke),Ke=Ks();else Ce=t;Ce!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function ua(){var R,q,Ce;for(Xe++,R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=Z(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),Xe--,R===t&&(q=t,Xe===0&&Te($)),R}function rt(){var R,q,Ce;for(R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=A(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),R}function Eo(){var R;return yt=G,R=ae(),R?R=void 0:R=t,R}function fA(){var R;return yt=G,R=ge(),R?R=void 0:R=t,R}function Pl(){var R;return R=kl(),R===t&&(R=yp()),R}function Ms(){var R,q,Ce;if(R=kl(),R===t){if(R=G,q=[],Ce=lg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=lg();else q=t;q!==t&&(yt=R,q=re()),R=q}return R}function Dl(){var R;return R=wp(),R===t&&(R=xE(),R===t&&(R=kl(),R===t&&(R=yp()))),R}function vE(){var R;return R=wp(),R===t&&(R=kl(),R===t&&(R=lg())),R}function yp(){var R,q,Ce,Ke,Re,ze;if(Xe++,R=G,F.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ue)),q!==t){for(Ce=[],Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(he.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ke!==t;)Ce.push(Ke),Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(he.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ce!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(O)),R}function lg(){var R,q,Ce,Ke,Re;if(R=G,r.substr(G,2)===Ne?(q=Ne,G+=2):(q=t,Xe===0&&Te(oe)),q===t&&(q=null),q!==t)if(le.test(r.charAt(G))?(Ce=r.charAt(G),G++):(Ce=t,Xe===0&&Te(we)),Ce!==t){for(Ke=[],fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(Ae));Re!==t;)Ke.push(Re),fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(Ae));Ke!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;return R}function wp(){var R,q;return R=G,r.substr(G,4)===qe?(q=qe,G+=4):(q=t,Xe===0&&Te(ne)),q!==t&&(yt=R,q=Y()),R=q,R}function xE(){var R,q;return R=G,r.substr(G,4)===pe?(q=pe,G+=4):(q=t,Xe===0&&Te(ie)),q!==t&&(yt=R,q=de()),R=q,R===t&&(R=G,r.substr(G,5)===tt?(q=tt,G+=5):(q=t,Xe===0&&Te(Pt)),q!==t&&(yt=R,q=It()),R=q),R}function kl(){var R,q,Ce,Ke;return Xe++,R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(r.charCodeAt(G)===34?(Ce=ii,G++):(Ce=t,Xe===0&&Te(gi)),Ce!==t?(yt=R,q=hr(),R=q):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(Ce=PE(),Ce!==t?(r.charCodeAt(G)===34?(Ke=ii,G++):(Ke=t,Xe===0&&Te(gi)),Ke!==t?(yt=R,q=fi(Ce),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)),Xe--,R===t&&(q=t,Xe===0&&Te(Or)),R}function PE(){var R,q,Ce;if(R=G,q=[],Ce=cg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=cg();else q=t;return q!==t&&(yt=R,q=ni(q)),R=q,R}function cg(){var R,q,Ce,Ke,Re,ze;return Ls.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(pr)),R===t&&(R=G,r.substr(G,2)===Ei?(q=Ei,G+=2):(q=t,Xe===0&&Te(_n)),q!==t&&(yt=R,q=oa()),R=q,R===t&&(R=G,r.substr(G,2)===aA?(q=aA,G+=2):(q=t,Xe===0&&Te(eg)),q!==t&&(yt=R,q=Zn()),R=q,R===t&&(R=G,r.substr(G,2)===AA?(q=AA,G+=2):(q=t,Xe===0&&Te(aa)),q!==t&&(yt=R,q=up()),R=q,R===t&&(R=G,r.substr(G,2)===lA?(q=lA,G+=2):(q=t,Xe===0&&Te(cA)),q!==t&&(yt=R,q=wr()),R=q,R===t&&(R=G,r.substr(G,2)===wl?(q=wl,G+=2):(q=t,Xe===0&&Te(tg)),q!==t&&(yt=R,q=po()),R=q,R===t&&(R=G,r.substr(G,2)===rg?(q=rg,G+=2):(q=t,Xe===0&&Te(gp)),q!==t&&(yt=R,q=fp()),R=q,R===t&&(R=G,r.substr(G,2)===vr?(q=vr,G+=2):(q=t,Xe===0&&Te(se)),q!==t&&(yt=R,q=Co()),R=q,R===t&&(R=G,r.substr(G,2)===Dn?(q=Dn,G+=2):(q=t,Xe===0&&Te(ig)),q!==t&&(yt=R,q=Qt()),R=q,R===t&&(R=G,r.substr(G,2)===Bl?(q=Bl,G+=2):(q=t,Xe===0&&Te(kn)),q!==t?(Ce=hA(),Ce!==t?(Ke=hA(),Ke!==t?(Re=hA(),Re!==t?(ze=hA(),ze!==t?(yt=R,q=$n(Ce,Ke,Re,ze),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)))))))))),R}function hA(){var R;return es.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(gt)),R}function Rr(){var R,q;if(Xe++,R=[],At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(an)),q!==t)for(;q!==t;)R.push(q),At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(an));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(mo)),R}function DE(){var R,q;if(Xe++,R=[],Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ng)),q!==t)for(;q!==t;)R.push(q),Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ng));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(S)),R}function Ks(){var R,q,Ce,Ke,Re,ze;if(R=G,q=Us(),q!==t){for(Ce=[],Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=Us(),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ke!==t;)Ce.push(Ke),Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=Us(),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)}else G=R,R=t;return R}function Us(){var R;return r.substr(G,2)===Ql?(R=Ql,G+=2):(R=t,Xe===0&&Te(hp)),R===t&&(r.charCodeAt(G)===10?(R=pp,G++):(R=t,Xe===0&&Te(dp)),R===t&&(r.charCodeAt(G)===13?(R=Cp,G++):(R=t,Xe===0&&Te(mp)))),R}let ug=2,pA=0;if(Aa=n(),Aa!==t&&G===r.length)return Aa;throw Aa!==t&&G{"use strict";var wpe=r=>{let e=!1,t=!1,i=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=wpe(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};KS.exports=T2;KS.exports.default=T2});var M2=w((VXe,Bpe)=>{Bpe.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var Vl=w(On=>{"use strict";var U2=M2(),Qo=process.env;Object.defineProperty(On,"_vendors",{value:U2.map(function(r){return r.constant})});On.name=null;On.isPR=null;U2.forEach(function(r){let t=(Array.isArray(r.env)?r.env:[r.env]).every(function(i){return K2(i)});if(On[r.constant]=t,t)switch(On.name=r.name,typeof r.pr){case"string":On.isPR=!!Qo[r.pr];break;case"object":"env"in r.pr?On.isPR=r.pr.env in Qo&&Qo[r.pr.env]!==r.pr.ne:"any"in r.pr?On.isPR=r.pr.any.some(function(i){return!!Qo[i]}):On.isPR=K2(r.pr);break;default:On.isPR=null}});On.isCI=!!(Qo.CI||Qo.CONTINUOUS_INTEGRATION||Qo.BUILD_NUMBER||Qo.RUN_ID||On.name);function K2(r){return typeof r=="string"?!!Qo[r]:Object.keys(r).every(function(e){return Qo[e]===r[e]})}});var gn={};ut(gn,{KeyRelationship:()=>Xl,applyCascade:()=>zp,base64RegExp:()=>q2,colorStringAlphaRegExp:()=>j2,colorStringRegExp:()=>Y2,computeKey:()=>BA,getPrintable:()=>Vr,hasExactLength:()=>X2,hasForbiddenKeys:()=>tde,hasKeyRelationship:()=>JS,hasMaxLength:()=>Mpe,hasMinLength:()=>Ope,hasMutuallyExclusiveKeys:()=>rde,hasRequiredKeys:()=>ede,hasUniqueItems:()=>Kpe,isArray:()=>Ppe,isAtLeast:()=>Gpe,isAtMost:()=>Ype,isBase64:()=>Zpe,isBoolean:()=>Spe,isDate:()=>xpe,isDict:()=>kpe,isEnum:()=>Wi,isHexColor:()=>_pe,isISO8601:()=>Xpe,isInExclusiveRange:()=>qpe,isInInclusiveRange:()=>jpe,isInstanceOf:()=>Fpe,isInteger:()=>Jpe,isJSON:()=>$pe,isLiteral:()=>Qpe,isLowerCase:()=>Wpe,isNegative:()=>Upe,isNullable:()=>Tpe,isNumber:()=>vpe,isObject:()=>Rpe,isOneOf:()=>Npe,isOptional:()=>Lpe,isPositive:()=>Hpe,isString:()=>Wp,isTuple:()=>Dpe,isUUID4:()=>Vpe,isUnknown:()=>V2,isUpperCase:()=>zpe,iso8601RegExp:()=>qS,makeCoercionFn:()=>_l,makeSetter:()=>z2,makeTrait:()=>W2,makeValidator:()=>bt,matchesRegExp:()=>Vp,plural:()=>EI,pushError:()=>pt,simpleKeyRegExp:()=>G2,uuid4RegExp:()=>J2});function bt({test:r}){return W2(r)()}function Vr(r){return r===null?"null":r===void 0?"undefined":r===""?"an empty string":JSON.stringify(r)}function BA(r,e){var t,i,n;return typeof e=="number"?`${(t=r==null?void 0:r.p)!==null&&t!==void 0?t:"."}[${e}]`:G2.test(e)?`${(i=r==null?void 0:r.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=r==null?void 0:r.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function _l(r,e){return t=>{let i=r[e];return r[e]=t,_l(r,e).bind(null,i)}}function z2(r,e){return t=>{r[e]=t}}function EI(r,e,t){return r===1?e:t}function pt({errors:r,p:e}={},t){return r==null||r.push(`${e!=null?e:"."}: ${t}`),!1}function Qpe(r){return bt({test:(e,t)=>e!==r?pt(t,`Expected a literal (got ${Vr(r)})`):!0})}function Wi(r){let e=Array.isArray(r)?r:Object.values(r),t=new Set(e);return bt({test:(i,n)=>t.has(i)?!0:pt(n,`Expected a valid enumeration value (got ${Vr(i)})`)})}var G2,Y2,j2,q2,J2,qS,W2,V2,Wp,bpe,Spe,vpe,xpe,Ppe,Dpe,kpe,Rpe,Fpe,Npe,zp,Lpe,Tpe,Ope,Mpe,X2,Kpe,Upe,Hpe,Gpe,Ype,jpe,qpe,Jpe,Vp,Wpe,zpe,Vpe,Xpe,_pe,Zpe,$pe,ede,tde,rde,Xl,ide,JS,ns=Yue(()=>{G2=/^[a-zA-Z_][a-zA-Z0-9_]*$/,Y2=/^#[0-9a-f]{6}$/i,j2=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,q2=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,J2=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,qS=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,W2=r=>()=>r;V2=()=>bt({test:(r,e)=>!0});Wp=()=>bt({test:(r,e)=>typeof r!="string"?pt(e,`Expected a string (got ${Vr(r)})`):!0});bpe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),Spe=()=>bt({test:(r,e)=>{var t;if(typeof r!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i=bpe.get(r);if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a boolean (got ${Vr(r)})`)}return!0}}),vpe=()=>bt({test:(r,e)=>{var t;if(typeof r!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"){let n;try{n=JSON.parse(r)}catch{}if(typeof n=="number")if(JSON.stringify(n)===r)i=n;else return pt(e,`Received a number that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a number (got ${Vr(r)})`)}return!0}}),xpe=()=>bt({test:(r,e)=>{var t;if(!(r instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"&&qS.test(r))i=new Date(r);else{let n;if(typeof r=="string"){let s;try{s=JSON.parse(r)}catch{}typeof s=="number"&&(n=s)}else typeof r=="number"&&(n=r);if(typeof n<"u")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return pt(e,`Received a timestamp that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a date (got ${Vr(r)})`)}return!0}}),Ppe=(r,{delimiter:e}={})=>bt({test:(t,i)=>{var n;if(typeof t=="string"&&typeof e<"u"&&typeof(i==null?void 0:i.coercions)<"u"){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");t=t.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,t)])}if(!Array.isArray(t))return pt(i,`Expected an array (got ${Vr(t)})`);let s=!0;for(let o=0,a=t.length;o{let t=X2(r.length);return bt({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e<"u"&&typeof(n==null?void 0:n.coercions)<"u"){if(typeof(n==null?void 0:n.coercion)>"u")return pt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return pt(n,`Expected a tuple (got ${Vr(i)})`);let o=t(i,Object.assign({},n));for(let a=0,l=i.length;abt({test:(t,i)=>{if(typeof t!="object"||t===null)return pt(i,`Expected an object (got ${Vr(t)})`);let n=Object.keys(t),s=!0;for(let o=0,a=n.length;o{let t=Object.keys(r);return bt({test:(i,n)=>{if(typeof i!="object"||i===null)return pt(n,`Expected an object (got ${Vr(i)})`);let s=new Set([...t,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=pt(Object.assign(Object.assign({},n),{p:BA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(r,l)?r[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c<"u"?a=c(u,Object.assign(Object.assign({},n),{p:BA(n,l),coercion:_l(i,l)}))&&a:e===null?a=pt(Object.assign(Object.assign({},n),{p:BA(n,l)}),`Extraneous property (got ${Vr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:z2(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Fpe=r=>bt({test:(e,t)=>e instanceof r?!0:pt(t,`Expected an instance of ${r.name} (got ${Vr(e)})`)}),Npe=(r,{exclusive:e=!1}={})=>bt({test:(t,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)<"u"?[]:void 0;for(let c=0,u=r.length;c1?pt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),zp=(r,e)=>bt({test:(t,i)=>{var n,s;let o={value:t},a=typeof(i==null?void 0:i.coercions)<"u"?_l(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)<"u"?[]:void 0;if(!r(t,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l<"u")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)<"u"){if(o.value!==t){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Lpe=r=>bt({test:(e,t)=>typeof e>"u"?!0:r(e,t)}),Tpe=r=>bt({test:(e,t)=>e===null?!0:r(e,t)}),Ope=r=>bt({test:(e,t)=>e.length>=r?!0:pt(t,`Expected to have a length of at least ${r} elements (got ${e.length})`)}),Mpe=r=>bt({test:(e,t)=>e.length<=r?!0:pt(t,`Expected to have a length of at most ${r} elements (got ${e.length})`)}),X2=r=>bt({test:(e,t)=>e.length!==r?pt(t,`Expected to have a length of exactly ${r} elements (got ${e.length})`):!0}),Kpe=({map:r}={})=>bt({test:(e,t)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sbt({test:(r,e)=>r<=0?!0:pt(e,`Expected to be negative (got ${r})`)}),Hpe=()=>bt({test:(r,e)=>r>=0?!0:pt(e,`Expected to be positive (got ${r})`)}),Gpe=r=>bt({test:(e,t)=>e>=r?!0:pt(t,`Expected to be at least ${r} (got ${e})`)}),Ype=r=>bt({test:(e,t)=>e<=r?!0:pt(t,`Expected to be at most ${r} (got ${e})`)}),jpe=(r,e)=>bt({test:(t,i)=>t>=r&&t<=e?!0:pt(i,`Expected to be in the [${r}; ${e}] range (got ${t})`)}),qpe=(r,e)=>bt({test:(t,i)=>t>=r&&tbt({test:(e,t)=>e!==Math.round(e)?pt(t,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:pt(t,`Expected to be a safe integer (got ${e})`)}),Vp=r=>bt({test:(e,t)=>r.test(e)?!0:pt(t,`Expected to match the pattern ${r.toString()} (got ${Vr(e)})`)}),Wpe=()=>bt({test:(r,e)=>r!==r.toLowerCase()?pt(e,`Expected to be all-lowercase (got ${r})`):!0}),zpe=()=>bt({test:(r,e)=>r!==r.toUpperCase()?pt(e,`Expected to be all-uppercase (got ${r})`):!0}),Vpe=()=>bt({test:(r,e)=>J2.test(r)?!0:pt(e,`Expected to be a valid UUID v4 (got ${Vr(r)})`)}),Xpe=()=>bt({test:(r,e)=>qS.test(r)?!1:pt(e,`Expected to be a valid ISO 8601 date string (got ${Vr(r)})`)}),_pe=({alpha:r=!1})=>bt({test:(e,t)=>(r?Y2.test(e):j2.test(e))?!0:pt(t,`Expected to be a valid hexadecimal color string (got ${Vr(e)})`)}),Zpe=()=>bt({test:(r,e)=>q2.test(r)?!0:pt(e,`Expected to be a valid base 64 string (got ${Vr(r)})`)}),$pe=(r=V2())=>bt({test:(e,t)=>{let i;try{i=JSON.parse(e)}catch{return pt(t,`Expected to be a valid JSON string (got ${Vr(e)})`)}return r(i,t)}}),ede=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?pt(i,`Missing required ${EI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?pt(i,`Forbidden ${EI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},rde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?pt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(r){r.Forbids="Forbids",r.Requires="Requires"})(Xl||(Xl={}));ide={[Xl.Forbids]:{expect:!1,message:"forbids using"},[Xl.Requires]:{expect:!0,message:"requires using"}},JS=(r,e,t,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(t),o=ide[e];return bt({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(r)||n.has(a[r]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?pt(l,`Property "${r}" ${o.message} ${EI(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var fH=w((V_e,gH)=>{"use strict";gH.exports=(r,...e)=>new Promise(t=>{t(r(...e))})});var Tg=w((X_e,ev)=>{"use strict";var Ide=fH(),hH=r=>{if(r<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],t=0,i=()=>{t--,e.length>0&&e.shift()()},n=(a,l,...c)=>{t++;let u=Ide(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{tnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length}}),o};ev.exports=hH;ev.exports.default=hH});var ed=w((Z_e,pH)=>{var yde="2.0.0",wde=Number.MAX_SAFE_INTEGER||9007199254740991,Bde=16;pH.exports={SEMVER_SPEC_VERSION:yde,MAX_LENGTH:256,MAX_SAFE_INTEGER:wde,MAX_SAFE_COMPONENT_LENGTH:Bde}});var td=w(($_e,dH)=>{var Qde=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};dH.exports=Qde});var Zl=w((bA,CH)=>{var{MAX_SAFE_COMPONENT_LENGTH:tv}=ed(),bde=td();bA=CH.exports={};var Sde=bA.re=[],$e=bA.src=[],et=bA.t={},vde=0,St=(r,e,t)=>{let i=vde++;bde(i,e),et[r]=i,$e[i]=e,Sde[i]=new RegExp(e,t?"g":void 0)};St("NUMERICIDENTIFIER","0|[1-9]\\d*");St("NUMERICIDENTIFIERLOOSE","[0-9]+");St("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");St("MAINVERSION",`(${$e[et.NUMERICIDENTIFIER]})\\.(${$e[et.NUMERICIDENTIFIER]})\\.(${$e[et.NUMERICIDENTIFIER]})`);St("MAINVERSIONLOOSE",`(${$e[et.NUMERICIDENTIFIERLOOSE]})\\.(${$e[et.NUMERICIDENTIFIERLOOSE]})\\.(${$e[et.NUMERICIDENTIFIERLOOSE]})`);St("PRERELEASEIDENTIFIER",`(?:${$e[et.NUMERICIDENTIFIER]}|${$e[et.NONNUMERICIDENTIFIER]})`);St("PRERELEASEIDENTIFIERLOOSE",`(?:${$e[et.NUMERICIDENTIFIERLOOSE]}|${$e[et.NONNUMERICIDENTIFIER]})`);St("PRERELEASE",`(?:-(${$e[et.PRERELEASEIDENTIFIER]}(?:\\.${$e[et.PRERELEASEIDENTIFIER]})*))`);St("PRERELEASELOOSE",`(?:-?(${$e[et.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${$e[et.PRERELEASEIDENTIFIERLOOSE]})*))`);St("BUILDIDENTIFIER","[0-9A-Za-z-]+");St("BUILD",`(?:\\+(${$e[et.BUILDIDENTIFIER]}(?:\\.${$e[et.BUILDIDENTIFIER]})*))`);St("FULLPLAIN",`v?${$e[et.MAINVERSION]}${$e[et.PRERELEASE]}?${$e[et.BUILD]}?`);St("FULL",`^${$e[et.FULLPLAIN]}$`);St("LOOSEPLAIN",`[v=\\s]*${$e[et.MAINVERSIONLOOSE]}${$e[et.PRERELEASELOOSE]}?${$e[et.BUILD]}?`);St("LOOSE",`^${$e[et.LOOSEPLAIN]}$`);St("GTLT","((?:<|>)?=?)");St("XRANGEIDENTIFIERLOOSE",`${$e[et.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);St("XRANGEIDENTIFIER",`${$e[et.NUMERICIDENTIFIER]}|x|X|\\*`);St("XRANGEPLAIN",`[v=\\s]*(${$e[et.XRANGEIDENTIFIER]})(?:\\.(${$e[et.XRANGEIDENTIFIER]})(?:\\.(${$e[et.XRANGEIDENTIFIER]})(?:${$e[et.PRERELEASE]})?${$e[et.BUILD]}?)?)?`);St("XRANGEPLAINLOOSE",`[v=\\s]*(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:\\.(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:\\.(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:${$e[et.PRERELEASELOOSE]})?${$e[et.BUILD]}?)?)?`);St("XRANGE",`^${$e[et.GTLT]}\\s*${$e[et.XRANGEPLAIN]}$`);St("XRANGELOOSE",`^${$e[et.GTLT]}\\s*${$e[et.XRANGEPLAINLOOSE]}$`);St("COERCE",`(^|[^\\d])(\\d{1,${tv}})(?:\\.(\\d{1,${tv}}))?(?:\\.(\\d{1,${tv}}))?(?:$|[^\\d])`);St("COERCERTL",$e[et.COERCE],!0);St("LONETILDE","(?:~>?)");St("TILDETRIM",`(\\s*)${$e[et.LONETILDE]}\\s+`,!0);bA.tildeTrimReplace="$1~";St("TILDE",`^${$e[et.LONETILDE]}${$e[et.XRANGEPLAIN]}$`);St("TILDELOOSE",`^${$e[et.LONETILDE]}${$e[et.XRANGEPLAINLOOSE]}$`);St("LONECARET","(?:\\^)");St("CARETTRIM",`(\\s*)${$e[et.LONECARET]}\\s+`,!0);bA.caretTrimReplace="$1^";St("CARET",`^${$e[et.LONECARET]}${$e[et.XRANGEPLAIN]}$`);St("CARETLOOSE",`^${$e[et.LONECARET]}${$e[et.XRANGEPLAINLOOSE]}$`);St("COMPARATORLOOSE",`^${$e[et.GTLT]}\\s*(${$e[et.LOOSEPLAIN]})$|^$`);St("COMPARATOR",`^${$e[et.GTLT]}\\s*(${$e[et.FULLPLAIN]})$|^$`);St("COMPARATORTRIM",`(\\s*)${$e[et.GTLT]}\\s*(${$e[et.LOOSEPLAIN]}|${$e[et.XRANGEPLAIN]})`,!0);bA.comparatorTrimReplace="$1$2$3";St("HYPHENRANGE",`^\\s*(${$e[et.XRANGEPLAIN]})\\s+-\\s+(${$e[et.XRANGEPLAIN]})\\s*$`);St("HYPHENRANGELOOSE",`^\\s*(${$e[et.XRANGEPLAINLOOSE]})\\s+-\\s+(${$e[et.XRANGEPLAINLOOSE]})\\s*$`);St("STAR","(<|>)?=?\\s*\\*");St("GTE0","^\\s*>=\\s*0.0.0\\s*$");St("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var rd=w((eZe,mH)=>{var xde=["includePrerelease","loose","rtl"],Pde=r=>r?typeof r!="object"?{loose:!0}:xde.filter(e=>r[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};mH.exports=Pde});var bI=w((tZe,yH)=>{var EH=/^[0-9]+$/,IH=(r,e)=>{let t=EH.test(r),i=EH.test(e);return t&&i&&(r=+r,e=+e),r===e?0:t&&!i?-1:i&&!t?1:rIH(e,r);yH.exports={compareIdentifiers:IH,rcompareIdentifiers:Dde}});var Li=w((rZe,bH)=>{var SI=td(),{MAX_LENGTH:wH,MAX_SAFE_INTEGER:vI}=ed(),{re:BH,t:QH}=Zl(),kde=rd(),{compareIdentifiers:id}=bI(),Un=class{constructor(e,t){if(t=kde(t),e instanceof Un){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>wH)throw new TypeError(`version is longer than ${wH} characters`);SI("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?BH[QH.LOOSE]:BH[QH.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>vI||this.major<0)throw new TypeError("Invalid major version");if(this.minor>vI||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>vI||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};bH.exports=Un});var $l=w((iZe,PH)=>{var{MAX_LENGTH:Rde}=ed(),{re:SH,t:vH}=Zl(),xH=Li(),Fde=rd(),Nde=(r,e)=>{if(e=Fde(e),r instanceof xH)return r;if(typeof r!="string"||r.length>Rde||!(e.loose?SH[vH.LOOSE]:SH[vH.FULL]).test(r))return null;try{return new xH(r,e)}catch{return null}};PH.exports=Nde});var kH=w((nZe,DH)=>{var Lde=$l(),Tde=(r,e)=>{let t=Lde(r,e);return t?t.version:null};DH.exports=Tde});var FH=w((sZe,RH)=>{var Ode=$l(),Mde=(r,e)=>{let t=Ode(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};RH.exports=Mde});var LH=w((oZe,NH)=>{var Kde=Li(),Ude=(r,e,t,i)=>{typeof t=="string"&&(i=t,t=void 0);try{return new Kde(r,t).inc(e,i).version}catch{return null}};NH.exports=Ude});var ss=w((aZe,OH)=>{var TH=Li(),Hde=(r,e,t)=>new TH(r,t).compare(new TH(e,t));OH.exports=Hde});var xI=w((AZe,MH)=>{var Gde=ss(),Yde=(r,e,t)=>Gde(r,e,t)===0;MH.exports=Yde});var HH=w((lZe,UH)=>{var KH=$l(),jde=xI(),qde=(r,e)=>{if(jde(r,e))return null;{let t=KH(r),i=KH(e),n=t.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==i[a])return s+a;return o}};UH.exports=qde});var YH=w((cZe,GH)=>{var Jde=Li(),Wde=(r,e)=>new Jde(r,e).major;GH.exports=Wde});var qH=w((uZe,jH)=>{var zde=Li(),Vde=(r,e)=>new zde(r,e).minor;jH.exports=Vde});var WH=w((gZe,JH)=>{var Xde=Li(),_de=(r,e)=>new Xde(r,e).patch;JH.exports=_de});var VH=w((fZe,zH)=>{var Zde=$l(),$de=(r,e)=>{let t=Zde(r,e);return t&&t.prerelease.length?t.prerelease:null};zH.exports=$de});var _H=w((hZe,XH)=>{var eCe=ss(),tCe=(r,e,t)=>eCe(e,r,t);XH.exports=tCe});var $H=w((pZe,ZH)=>{var rCe=ss(),iCe=(r,e)=>rCe(r,e,!0);ZH.exports=iCe});var PI=w((dZe,tG)=>{var eG=Li(),nCe=(r,e,t)=>{let i=new eG(r,t),n=new eG(e,t);return i.compare(n)||i.compareBuild(n)};tG.exports=nCe});var iG=w((CZe,rG)=>{var sCe=PI(),oCe=(r,e)=>r.sort((t,i)=>sCe(t,i,e));rG.exports=oCe});var sG=w((mZe,nG)=>{var aCe=PI(),ACe=(r,e)=>r.sort((t,i)=>aCe(i,t,e));nG.exports=ACe});var nd=w((EZe,oG)=>{var lCe=ss(),cCe=(r,e,t)=>lCe(r,e,t)>0;oG.exports=cCe});var DI=w((IZe,aG)=>{var uCe=ss(),gCe=(r,e,t)=>uCe(r,e,t)<0;aG.exports=gCe});var rv=w((yZe,AG)=>{var fCe=ss(),hCe=(r,e,t)=>fCe(r,e,t)!==0;AG.exports=hCe});var kI=w((wZe,lG)=>{var pCe=ss(),dCe=(r,e,t)=>pCe(r,e,t)>=0;lG.exports=dCe});var RI=w((BZe,cG)=>{var CCe=ss(),mCe=(r,e,t)=>CCe(r,e,t)<=0;cG.exports=mCe});var iv=w((QZe,uG)=>{var ECe=xI(),ICe=rv(),yCe=nd(),wCe=kI(),BCe=DI(),QCe=RI(),bCe=(r,e,t,i)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return ECe(r,t,i);case"!=":return ICe(r,t,i);case">":return yCe(r,t,i);case">=":return wCe(r,t,i);case"<":return BCe(r,t,i);case"<=":return QCe(r,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};uG.exports=bCe});var fG=w((bZe,gG)=>{var SCe=Li(),vCe=$l(),{re:FI,t:NI}=Zl(),xCe=(r,e)=>{if(r instanceof SCe)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(FI[NI.COERCE]);else{let i;for(;(i=FI[NI.COERCERTL].exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),FI[NI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;FI[NI.COERCERTL].lastIndex=-1}return t===null?null:vCe(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};gG.exports=xCe});var pG=w((SZe,hG)=>{"use strict";hG.exports=function(r){r.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var sd=w((vZe,dG)=>{"use strict";dG.exports=Ht;Ht.Node=ec;Ht.create=Ht;function Ht(r){var e=this;if(e instanceof Ht||(e=new Ht),e.tail=null,e.head=null,e.length=0,r&&typeof r.forEach=="function")r.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var t=0,i=arguments.length;t1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)t=r(t,i.value,n),i=i.next;return t};Ht.prototype.reduceReverse=function(r,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)t=r(t,i.value,n),i=i.prev;return t};Ht.prototype.toArray=function(){for(var r=new Array(this.length),e=0,t=this.head;t!==null;e++)r[e]=t.value,t=t.next;return r};Ht.prototype.toArrayReverse=function(){for(var r=new Array(this.length),e=0,t=this.tail;t!==null;e++)r[e]=t.value,t=t.prev;return r};Ht.prototype.slice=function(r,e){e=e||this.length,e<0&&(e+=this.length),r=r||0,r<0&&(r+=this.length);var t=new Ht;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>r;i--,n=n.prev)t.push(n.value);return t};Ht.prototype.splice=function(r,e,...t){r>this.length&&(r=this.length-1),r<0&&(r=this.length+r);for(var i=0,n=this.head;n!==null&&i{"use strict";var RCe=sd(),tc=Symbol("max"),Ia=Symbol("length"),Og=Symbol("lengthCalculator"),ad=Symbol("allowStale"),rc=Symbol("maxAge"),Ea=Symbol("dispose"),CG=Symbol("noDisposeOnSet"),di=Symbol("lruList"),Ws=Symbol("cache"),EG=Symbol("updateAgeOnGet"),nv=()=>1,ov=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[tc]=e.max||1/0,i=e.length||nv;if(this[Og]=typeof i!="function"?nv:i,this[ad]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[rc]=e.maxAge||0,this[Ea]=e.dispose,this[CG]=e.noDisposeOnSet||!1,this[EG]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[tc]=e||1/0,od(this)}get max(){return this[tc]}set allowStale(e){this[ad]=!!e}get allowStale(){return this[ad]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[rc]=e,od(this)}get maxAge(){return this[rc]}set lengthCalculator(e){typeof e!="function"&&(e=nv),e!==this[Og]&&(this[Og]=e,this[Ia]=0,this[di].forEach(t=>{t.length=this[Og](t.value,t.key),this[Ia]+=t.length})),od(this)}get lengthCalculator(){return this[Og]}get length(){return this[Ia]}get itemCount(){return this[di].length}rforEach(e,t){t=t||this;for(let i=this[di].tail;i!==null;){let n=i.prev;mG(this,e,i,t),i=n}}forEach(e,t){t=t||this;for(let i=this[di].head;i!==null;){let n=i.next;mG(this,e,i,t),i=n}}keys(){return this[di].toArray().map(e=>e.key)}values(){return this[di].toArray().map(e=>e.value)}reset(){this[Ea]&&this[di]&&this[di].length&&this[di].forEach(e=>this[Ea](e.key,e.value)),this[Ws]=new Map,this[di]=new RCe,this[Ia]=0}dump(){return this[di].map(e=>LI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[di]}set(e,t,i){if(i=i||this[rc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[Og](t,e);if(this[Ws].has(e)){if(s>this[tc])return Mg(this,this[Ws].get(e)),!1;let l=this[Ws].get(e).value;return this[Ea]&&(this[CG]||this[Ea](e,l.value)),l.now=n,l.maxAge=i,l.value=t,this[Ia]+=s-l.length,l.length=s,this.get(e),od(this),!0}let o=new av(e,t,s,n,i);return o.length>this[tc]?(this[Ea]&&this[Ea](e,t),!1):(this[Ia]+=o.length,this[di].unshift(o),this[Ws].set(e,this[di].head),od(this),!0)}has(e){if(!this[Ws].has(e))return!1;let t=this[Ws].get(e).value;return!LI(this,t)}get(e){return sv(this,e,!0)}peek(e){return sv(this,e,!1)}pop(){let e=this[di].tail;return e?(Mg(this,e),e.value):null}del(e){Mg(this,this[Ws].get(e))}load(e){this.reset();let t=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-t;o>0&&this.set(n.k,n.v,o)}}}prune(){this[Ws].forEach((e,t)=>sv(this,t,!1))}},sv=(r,e,t)=>{let i=r[Ws].get(e);if(i){let n=i.value;if(LI(r,n)){if(Mg(r,i),!r[ad])return}else t&&(r[EG]&&(i.value.now=Date.now()),r[di].unshiftNode(i));return n.value}},LI=(r,e)=>{if(!e||!e.maxAge&&!r[rc])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:r[rc]&&t>r[rc]},od=r=>{if(r[Ia]>r[tc])for(let e=r[di].tail;r[Ia]>r[tc]&&e!==null;){let t=e.prev;Mg(r,e),e=t}},Mg=(r,e)=>{if(e){let t=e.value;r[Ea]&&r[Ea](t.key,t.value),r[Ia]-=t.length,r[Ws].delete(t.key),r[di].removeNode(e)}},av=class{constructor(e,t,i,n,s){this.key=e,this.value=t,this.length=i,this.now=n,this.maxAge=s||0}},mG=(r,e,t,i)=>{let n=t.value;LI(r,n)&&(Mg(r,t),r[ad]||(n=void 0)),n&&e.call(i,n.value,n.key,r)};IG.exports=ov});var os=w((PZe,bG)=>{var ic=class{constructor(e,t){if(t=NCe(t),e instanceof ic)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new ic(e.raw,t);if(e instanceof Av)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!BG(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&KCe(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=wG.get(i);if(n)return n;let s=this.options.loose,o=s?Ti[Bi.HYPHENRANGELOOSE]:Ti[Bi.HYPHENRANGE];e=e.replace(o,VCe(this.options.includePrerelease)),Gr("hyphen replace",e),e=e.replace(Ti[Bi.COMPARATORTRIM],TCe),Gr("comparator trim",e,Ti[Bi.COMPARATORTRIM]),e=e.replace(Ti[Bi.TILDETRIM],OCe),e=e.replace(Ti[Bi.CARETTRIM],MCe),e=e.split(/\s+/).join(" ");let a=s?Ti[Bi.COMPARATORLOOSE]:Ti[Bi.COMPARATOR],l=e.split(" ").map(f=>UCe(f,this.options)).join(" ").split(/\s+/).map(f=>zCe(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new Av(f,this.options)),c=l.length,u=new Map;for(let f of l){if(BG(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return wG.set(i,g),g}intersects(e,t){if(!(e instanceof ic))throw new TypeError("a Range is required");return this.set.some(i=>QG(i,t)&&e.set.some(n=>QG(n,t)&&i.every(s=>n.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new LCe(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",KCe=r=>r.value==="",QG=(r,e)=>{let t=!0,i=r.slice(),n=i.pop();for(;t&&i.length;)t=i.every(s=>n.intersects(s,e)),n=i.pop();return t},UCe=(r,e)=>(Gr("comp",r,e),r=YCe(r,e),Gr("caret",r),r=HCe(r,e),Gr("tildes",r),r=qCe(r,e),Gr("xrange",r),r=WCe(r,e),Gr("stars",r),r),Vi=r=>!r||r.toLowerCase()==="x"||r==="*",HCe=(r,e)=>r.trim().split(/\s+/).map(t=>GCe(t,e)).join(" "),GCe=(r,e)=>{let t=e.loose?Ti[Bi.TILDELOOSE]:Ti[Bi.TILDE];return r.replace(t,(i,n,s,o,a)=>{Gr("tilde",r,i,n,s,o,a);let l;return Vi(n)?l="":Vi(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Vi(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Gr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Gr("tilde return",l),l})},YCe=(r,e)=>r.trim().split(/\s+/).map(t=>jCe(t,e)).join(" "),jCe=(r,e)=>{Gr("caret",r,e);let t=e.loose?Ti[Bi.CARETLOOSE]:Ti[Bi.CARET],i=e.includePrerelease?"-0":"";return r.replace(t,(n,s,o,a,l)=>{Gr("caret",r,n,s,o,a,l);let c;return Vi(s)?c="":Vi(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Vi(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Gr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Gr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Gr("caret return",c),c})},qCe=(r,e)=>(Gr("replaceXRanges",r,e),r.split(/\s+/).map(t=>JCe(t,e)).join(" ")),JCe=(r,e)=>{r=r.trim();let t=e.loose?Ti[Bi.XRANGELOOSE]:Ti[Bi.XRANGE];return r.replace(t,(i,n,s,o,a,l)=>{Gr("xRange",r,i,n,s,o,a,l);let c=Vi(s),u=c||Vi(o),g=u||Vi(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Gr("xRange return",i),i})},WCe=(r,e)=>(Gr("replaceStars",r,e),r.trim().replace(Ti[Bi.STAR],"")),zCe=(r,e)=>(Gr("replaceGTE0",r,e),r.trim().replace(Ti[e.includePrerelease?Bi.GTE0PRE:Bi.GTE0],"")),VCe=r=>(e,t,i,n,s,o,a,l,c,u,g,f,h)=>(Vi(i)?t="":Vi(n)?t=`>=${i}.0.0${r?"-0":""}`:Vi(s)?t=`>=${i}.${n}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,Vi(c)?l="":Vi(u)?l=`<${+c+1}.0.0-0`:Vi(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:r?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),XCe=(r,e,t)=>{for(let i=0;i0){let n=r[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Ad=w((DZe,DG)=>{var ld=Symbol("SemVer ANY"),Kg=class{static get ANY(){return ld}constructor(e,t){if(t=_Ce(t),e instanceof Kg){if(e.loose===!!t.loose)return e;e=e.value}cv("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===ld?this.value="":this.value=this.operator+this.semver.version,cv("comp",this)}parse(e){let t=this.options.loose?SG[vG.COMPARATORLOOSE]:SG[vG.COMPARATOR],i=e.match(t);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new xG(i[2],this.options.loose):this.semver=ld}toString(){return this.value}test(e){if(cv("Comparator.test",e,this.options.loose),this.semver===ld||e===ld)return!0;if(typeof e=="string")try{e=new xG(e,this.options)}catch{return!1}return lv(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof Kg))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new PG(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new PG(this.value,t).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=lv(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=lv(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};DG.exports=Kg;var _Ce=rd(),{re:SG,t:vG}=Zl(),lv=iv(),cv=td(),xG=Li(),PG=os()});var cd=w((kZe,kG)=>{var ZCe=os(),$Ce=(r,e,t)=>{try{e=new ZCe(e,t)}catch{return!1}return e.test(r)};kG.exports=$Ce});var FG=w((RZe,RG)=>{var eme=os(),tme=(r,e)=>new eme(r,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));RG.exports=tme});var LG=w((FZe,NG)=>{var rme=Li(),ime=os(),nme=(r,e,t)=>{let i=null,n=null,s=null;try{s=new ime(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new rme(i,t))}),i};NG.exports=nme});var OG=w((NZe,TG)=>{var sme=Li(),ome=os(),ame=(r,e,t)=>{let i=null,n=null,s=null;try{s=new ome(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new sme(i,t))}),i};TG.exports=ame});var UG=w((LZe,KG)=>{var uv=Li(),Ame=os(),MG=nd(),lme=(r,e)=>{r=new Ame(r,e);let t=new uv("0.0.0");if(r.test(t)||(t=new uv("0.0.0-0"),r.test(t)))return t;t=null;for(let i=0;i{let a=new uv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||MG(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!t||MG(t,s))&&(t=s)}return t&&r.test(t)?t:null};KG.exports=lme});var GG=w((TZe,HG)=>{var cme=os(),ume=(r,e)=>{try{return new cme(r,e).range||"*"}catch{return null}};HG.exports=ume});var TI=w((OZe,JG)=>{var gme=Li(),qG=Ad(),{ANY:fme}=qG,hme=os(),pme=cd(),YG=nd(),jG=DI(),dme=RI(),Cme=kI(),mme=(r,e,t,i)=>{r=new gme(r,i),e=new hme(e,i);let n,s,o,a,l;switch(t){case">":n=YG,s=dme,o=jG,a=">",l=">=";break;case"<":n=jG,s=Cme,o=YG,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(pme(r,e,i))return!1;for(let c=0;c{h.semver===fme&&(h=new qG(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(r,f.semver))return!1;if(f.operator===l&&o(r,f.semver))return!1}return!0};JG.exports=mme});var zG=w((MZe,WG)=>{var Eme=TI(),Ime=(r,e,t)=>Eme(r,e,">",t);WG.exports=Ime});var XG=w((KZe,VG)=>{var yme=TI(),wme=(r,e,t)=>yme(r,e,"<",t);VG.exports=wme});var $G=w((UZe,ZG)=>{var _G=os(),Bme=(r,e,t)=>(r=new _G(r,t),e=new _G(e,t),r.intersects(e));ZG.exports=Bme});var tY=w((HZe,eY)=>{var Qme=cd(),bme=ss();eY.exports=(r,e,t)=>{let i=[],n=null,s=null,o=r.sort((u,g)=>bme(u,g,t));for(let u of o)Qme(u,e,t)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var rY=os(),OI=Ad(),{ANY:gv}=OI,ud=cd(),fv=ss(),Sme=(r,e,t={})=>{if(r===e)return!0;r=new rY(r,t),e=new rY(e,t);let i=!1;e:for(let n of r.set){for(let s of e.set){let o=vme(n,s,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},vme=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===gv){if(e.length===1&&e[0].semver===gv)return!0;t.includePrerelease?r=[new OI(">=0.0.0-0")]:r=[new OI(">=0.0.0")]}if(e.length===1&&e[0].semver===gv){if(t.includePrerelease)return!0;e=[new OI(">=0.0.0")]}let i=new Set,n,s;for(let h of r)h.operator===">"||h.operator===">="?n=iY(n,h,t):h.operator==="<"||h.operator==="<="?s=nY(s,h,t):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=fv(n.semver,s.semver,t),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!ud(h,String(n),t)||s&&!ud(h,String(s),t))return null;for(let p of e)if(!ud(h,String(p),t))return!1;return!0}let a,l,c,u,g=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=iY(n,h,t),a===h&&a!==n)return!1}else if(n.operator===">="&&!ud(n.semver,String(h),t))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=nY(s,h,t),l===h&&l!==s)return!1}else if(s.operator==="<="&&!ud(s.semver,String(h),t))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},iY=(r,e,t)=>{if(!r)return e;let i=fv(r.semver,e.semver,t);return i>0?r:i<0||e.operator===">"&&r.operator===">="?e:r},nY=(r,e,t)=>{if(!r)return e;let i=fv(r.semver,e.semver,t);return i<0?r:i>0||e.operator==="<"&&r.operator==="<="?e:r};sY.exports=Sme});var Xr=w((YZe,aY)=>{var hv=Zl();aY.exports={re:hv.re,src:hv.src,tokens:hv.t,SEMVER_SPEC_VERSION:ed().SEMVER_SPEC_VERSION,SemVer:Li(),compareIdentifiers:bI().compareIdentifiers,rcompareIdentifiers:bI().rcompareIdentifiers,parse:$l(),valid:kH(),clean:FH(),inc:LH(),diff:HH(),major:YH(),minor:qH(),patch:WH(),prerelease:VH(),compare:ss(),rcompare:_H(),compareLoose:$H(),compareBuild:PI(),sort:iG(),rsort:sG(),gt:nd(),lt:DI(),eq:xI(),neq:rv(),gte:kI(),lte:RI(),cmp:iv(),coerce:fG(),Comparator:Ad(),Range:os(),satisfies:cd(),toComparators:FG(),maxSatisfying:LG(),minSatisfying:OG(),minVersion:UG(),validRange:GG(),outside:TI(),gtr:zG(),ltr:XG(),intersects:$G(),simplifyRange:tY(),subset:oY()}});var pv=w(MI=>{"use strict";Object.defineProperty(MI,"__esModule",{value:!0});MI.VERSION=void 0;MI.VERSION="9.1.0"});var Gt=w((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,s;i{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof KI=="object"&&KI.exports?KI.exports=e():r.regexpToAst=e()})(typeof self<"u"?self:AY,function(){function r(){}r.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},r.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},r.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var C=this.disjunction();this.consumeChar("/");for(var y={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(y,"global");break;case"i":o(y,"ignoreCase");break;case"m":o(y,"multiLine");break;case"u":o(y,"unicode");break;case"y":o(y,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:y,value:C,loc:this.loc(0)}},r.prototype.disjunction=function(){var p=[],C=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(C)}},r.prototype.alternative=function(){for(var p=[],C=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(C)}},r.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},r.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var C;switch(this.popChar()){case"=":C="Lookahead";break;case"!":C="NegativeLookahead";break}a(C);var y=this.disjunction();return this.consumeChar(")"),{type:C,value:y,loc:this.loc(p)}}l()},r.prototype.quantifier=function(p){var C,y=this.idx;switch(this.popChar()){case"*":C={atLeast:0,atMost:1/0};break;case"+":C={atLeast:1,atMost:1/0};break;case"?":C={atLeast:0,atMost:1};break;case"{":var B=this.integerIncludingZero();switch(this.popChar()){case"}":C={atLeast:B,atMost:B};break;case",":var v;this.isDigit()?(v=this.integerIncludingZero(),C={atLeast:B,atMost:v}):C={atLeast:B,atMost:1/0},this.consumeChar("}");break}if(p===!0&&C===void 0)return;a(C);break}if(!(p===!0&&C===void 0))return a(C),this.peekChar(0)==="?"?(this.consumeChar("?"),C.greedy=!1):C.greedy=!0,C.type="Quantifier",C.loc=this.loc(y),C},r.prototype.atom=function(){var p,C=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(C),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},r.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` +`),n("\r"),n("\u2028"),n("\u2029")]}},r.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},r.prototype.characterClassEscape=function(){var p,C=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,C=!0;break;case"s":p=f;break;case"S":p=f,C=!0;break;case"w":p=g;break;case"W":p=g,C=!0;break}return a(p),{type:"Set",value:p,complement:C}},r.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` +`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},r.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var C=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:C}},r.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},r.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},r.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},r.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},r.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},r.prototype.characterClass=function(){var p=[],C=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),C=!0);this.isClassAtom();){var y=this.classAtom(),B=y.type==="Character";if(B&&this.isRangeDash()){this.consumeChar("-");var v=this.classAtom(),D=v.type==="Character";if(D){if(v.value=this.input.length)throw Error("Unexpected end of input");this.idx++},r.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,t=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,C){p.length!==void 0?p.forEach(function(y){C.push(y)}):C.push(p)}function o(p,C){if(p[C]===!0)throw"duplicate flag "+C;p[C]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` +`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var y=p[C];p.hasOwnProperty(C)&&(y.type!==void 0?this.visit(y):Array.isArray(y)&&y.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var GI=w(Ug=>{"use strict";Object.defineProperty(Ug,"__esModule",{value:!0});Ug.clearRegExpParserCache=Ug.getRegExpAst=void 0;var xme=UI(),HI={},Pme=new xme.RegExpParser;function Dme(r){var e=r.toString();if(HI.hasOwnProperty(e))return HI[e];var t=Pme.pattern(e);return HI[e]=t,t}Ug.getRegExpAst=Dme;function kme(){HI={}}Ug.clearRegExpParserCache=kme});var fY=w(pn=>{"use strict";var Rme=pn&&pn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(pn,"__esModule",{value:!0});pn.canMatchCharCode=pn.firstCharOptimizedIndices=pn.getOptimizedStartCodesIndices=pn.failedOptimizationPrefixMsg=void 0;var cY=UI(),as=Gt(),uY=GI(),ya=Cv(),gY="Complement Sets are not supported for first char optimization";pn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: +`;function Fme(r,e){e===void 0&&(e=!1);try{var t=(0,uY.getRegExpAst)(r),i=jI(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===gY)e&&(0,as.PRINT_WARNING)(""+pn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` > +`)+` Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,as.PRINT_ERROR)(pn.failedOptimizationPrefixMsg+` +`+(" Failed parsing: < "+r.toString()+` > +`)+(" Using the regexp-to-ast library version: "+cY.VERSION+` +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}pn.getOptimizedStartCodesIndices=Fme;function jI(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i=ya.minOptimizationVal)for(var f=u.from>=ya.minOptimizationVal?u.from:ya.minOptimizationVal,h=u.to,p=(0,ya.charCodeToOptimizedIndex)(f),C=(0,ya.charCodeToOptimizedIndex)(h),y=p;y<=C;y++)e[y]=y}}});break;case"Group":jI(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&dv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,as.values)(e)}pn.firstCharOptimizedIndices=jI;function YI(r,e,t){var i=(0,ya.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&Nme(r,e)}function Nme(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,ya.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,ya.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function lY(r,e){return(0,as.find)(r.value,function(t){if(typeof t=="number")return(0,as.contains)(e,t);var i=t;return(0,as.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function dv(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,as.isArray)(r.value)?(0,as.every)(r.value,dv):dv(r.value):!1}var Lme=function(r){Rme(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,as.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?lY(t,this.targetCharCodes)===void 0&&(this.found=!0):lY(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(cY.BaseRegExpVisitor);function Tme(r,e){if(e instanceof RegExp){var t=(0,uY.getRegExpAst)(e),i=new Lme(r);return i.visit(t),i.found}else return(0,as.find)(e,function(n){return(0,as.contains)(r,n.charCodeAt(0))})!==void 0}pn.canMatchCharCode=Tme});var Cv=w(Ve=>{"use strict";var hY=Ve&&Ve.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ve,"__esModule",{value:!0});Ve.charCodeToOptimizedIndex=Ve.minOptimizationVal=Ve.buildLineBreakIssueMessage=Ve.LineTerminatorOptimizedTester=Ve.isShortPattern=Ve.isCustomPattern=Ve.cloneEmptyGroups=Ve.performWarningRuntimeChecks=Ve.performRuntimeChecks=Ve.addStickyFlag=Ve.addStartOfInput=Ve.findUnreachablePatterns=Ve.findModesThatDoNotExist=Ve.findInvalidGroupType=Ve.findDuplicatePatterns=Ve.findUnsupportedFlags=Ve.findStartOfInputAnchor=Ve.findEmptyMatchRegExps=Ve.findEndOfInputAnchor=Ve.findInvalidPatterns=Ve.findMissingPatterns=Ve.validatePatterns=Ve.analyzeTokenTypes=Ve.enableSticky=Ve.disableSticky=Ve.SUPPORT_STICKY=Ve.MODES=Ve.DEFAULT_MODE=void 0;var pY=UI(),ir=gd(),xe=Gt(),Hg=fY(),dY=GI(),So="PATTERN";Ve.DEFAULT_MODE="defaultMode";Ve.MODES="modes";Ve.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function Ome(){Ve.SUPPORT_STICKY=!1}Ve.disableSticky=Ome;function Mme(){Ve.SUPPORT_STICKY=!0}Ve.enableSticky=Mme;function Kme(r,e){e=(0,xe.defaults)(e,{useSticky:Ve.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){Vme()});var i;t("Reject Lexer.NA",function(){i=(0,xe.reject)(r,function(v){return v[So]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,xe.map)(i,function(v){var D=v[So];if((0,xe.isRegExp)(D)){var L=D.source;return L.length===1&&L!=="^"&&L!=="$"&&L!=="."&&!D.ignoreCase?L:L.length===2&&L[0]==="\\"&&!(0,xe.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],L[1])?L[1]:e.useSticky?Iv(D):Ev(D)}else{if((0,xe.isFunction)(D))return n=!0,{exec:D};if((0,xe.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Iv(j):Ev(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,xe.map)(i,function(v){return v.tokenTypeIdx}),a=(0,xe.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,xe.isString)(D))return D;if((0,xe.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,xe.map)(i,function(v){var D=v.LONGER_ALT;if(D){var L=(0,xe.isArray)(D)?(0,xe.map)(D,function(H){return(0,xe.indexOf)(i,H)}):[(0,xe.indexOf)(i,D)];return L}}),c=(0,xe.map)(i,function(v){return v.PUSH_MODE}),u=(0,xe.map)(i,function(v){return(0,xe.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=DY(e.lineTerminatorCharacters);g=(0,xe.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,xe.map)(i,function(D){if((0,xe.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(xY(D,v)===!1)return(0,Hg.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,xe.map)(i,wv),h=(0,xe.map)(s,vY),p=(0,xe.reduce)(i,function(v,D){var L=D.GROUP;return(0,xe.isString)(L)&&L!==ir.Lexer.SKIPPED&&(v[L]=[]),v},{}),C=(0,xe.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var y=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,xe.reduce)(i,function(v,D,L){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=yv(H);mv(v,j,C[L])}else if((0,xe.isArray)(D.START_CHARS_HINT)){var $;(0,xe.forEach)(D.START_CHARS_HINT,function(W){var Z=typeof W=="string"?W.charCodeAt(0):W,A=yv(Z);$!==A&&($=A,mv(v,A,C[L]))})}else if((0,xe.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)y=!1,e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Hg.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. +`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,Hg.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,xe.isEmpty)(V)&&(y=!1),(0,xe.forEach)(V,function(W){mv(v,W,C[L])})}else e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Hg.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. +`)+` This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),y=!1;return v},[])}),t("ArrayPacking",function(){B=(0,xe.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:y}}Ve.analyzeTokenTypes=Kme;function Ume(r,e){var t=[],i=CY(r);t=t.concat(i.errors);var n=mY(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(Hme(s)),t=t.concat(QY(s)),t=t.concat(bY(s,e)),t=t.concat(SY(s)),t}Ve.validatePatterns=Ume;function Hme(r){var e=[],t=(0,xe.filter)(r,function(i){return(0,xe.isRegExp)(i[So])});return e=e.concat(EY(t)),e=e.concat(yY(t)),e=e.concat(wY(t)),e=e.concat(BY(t)),e=e.concat(IY(t)),e}function CY(r){var e=(0,xe.filter)(r,function(n){return!(0,xe.has)(n,So)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findMissingPatterns=CY;function mY(r){var e=(0,xe.filter)(r,function(n){var s=n[So];return!(0,xe.isRegExp)(s)&&!(0,xe.isFunction)(s)&&!(0,xe.has)(s,"exec")&&!(0,xe.isString)(s)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findInvalidPatterns=mY;var Gme=/[^\\][\$]/;function EY(r){var e=function(n){hY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(pY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[So];try{var o=(0,dY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return Gme.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findEndOfInputAnchor=EY;function IY(r){var e=(0,xe.filter)(r,function(i){var n=i[So];return n.test("")}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Ve.findEmptyMatchRegExps=IY;var Yme=/[^\\[][\^]|^\^/;function yY(r){var e=function(n){hY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(pY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[So];try{var o=(0,dY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return Yme.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findStartOfInputAnchor=yY;function wY(r){var e=(0,xe.filter)(r,function(i){var n=i[So];return n instanceof RegExp&&(n.multiline||n.global)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Ve.findUnsupportedFlags=wY;function BY(r){var e=[],t=(0,xe.map)(r,function(s){return(0,xe.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,xe.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,xe.compact)(t);var i=(0,xe.filter)(t,function(s){return s.length>1}),n=(0,xe.map)(i,function(s){var o=(0,xe.map)(s,function(l){return l.name}),a=(0,xe.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Ve.findDuplicatePatterns=BY;function QY(r){var e=(0,xe.filter)(r,function(i){if(!(0,xe.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,xe.isString)(n)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Ve.findInvalidGroupType=QY;function bY(r,e){var t=(0,xe.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,xe.contains)(e,n.PUSH_MODE)}),i=(0,xe.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Ve.findModesThatDoNotExist=bY;function SY(r){var e=[],t=(0,xe.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,xe.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,xe.isRegExp)(o)&&qme(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,xe.forEach)(r,function(i,n){(0,xe.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Ve.findUnreachablePatterns=SY;function jme(r,e){if((0,xe.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,xe.isFunction)(e))return e(r,0,[],{});if((0,xe.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function qme(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,xe.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function Ev(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Ve.addStartOfInput=Ev;function Iv(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Ve.addStickyFlag=Iv;function Jme(r,e,t){var i=[];return(0,xe.has)(r,Ve.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.DEFAULT_MODE+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,xe.has)(r,Ve.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.MODES+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,xe.has)(r,Ve.MODES)&&(0,xe.has)(r,Ve.DEFAULT_MODE)&&!(0,xe.has)(r.modes,r.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Ve.DEFAULT_MODE+": <"+r.defaultMode+`>which does not exist +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,xe.has)(r,Ve.MODES)&&(0,xe.forEach)(r.modes,function(n,s){(0,xe.forEach)(n,function(o,a){(0,xe.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> +`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Ve.performRuntimeChecks=Jme;function Wme(r,e,t){var i=[],n=!1,s=(0,xe.compact)((0,xe.flatten)((0,xe.mapValues)(r.modes,function(l){return l}))),o=(0,xe.reject)(s,function(l){return l[So]===ir.Lexer.NA}),a=DY(t);return e&&(0,xe.forEach)(o,function(l){var c=xY(l,a);if(c!==!1){var u=PY(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,xe.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Hg.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:ir.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Ve.performWarningRuntimeChecks=Wme;function zme(r){var e={},t=(0,xe.keys)(r);return(0,xe.forEach)(t,function(i){var n=r[i];if((0,xe.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Ve.cloneEmptyGroups=zme;function wv(r){var e=r.PATTERN;if((0,xe.isRegExp)(e))return!1;if((0,xe.isFunction)(e))return!0;if((0,xe.has)(e,"exec"))return!0;if((0,xe.isString)(e))return!1;throw Error("non exhaustive match")}Ve.isCustomPattern=wv;function vY(r){return(0,xe.isString)(r)&&r.length===1?r.charCodeAt(0):!1}Ve.isShortPattern=vY;Ve.LineTerminatorOptimizedTester={test:function(r){for(var e=r.length,t=this.lastIndex;t Token Type +`)+(" Root cause: "+e.errMsg+`. +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. +`+(" The problem is in the <"+r.name+`> Token Type +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Ve.buildLineBreakIssueMessage=PY;function DY(r){var e=(0,xe.map)(r,function(t){return(0,xe.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function mv(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Ve.minOptimizationVal=256;var qI=[];function yv(r){return r255?255+~~(r/255):r}}});var Gg=w(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var _r=Gt();function Xme(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=Xme;function _me(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=_me;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function Zme(r){var e=kY(r);RY(e),NY(e),FY(e),(0,_r.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=Zme;function kY(r){for(var e=(0,_r.cloneArr)(r),t=r,i=!0;i;){t=(0,_r.compact)((0,_r.flatten)((0,_r.map)(t,function(s){return s.CATEGORIES})));var n=(0,_r.difference)(t,e);e=e.concat(n),(0,_r.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=kY;function RY(r){(0,_r.forEach)(r,function(e){LY(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),Bv(e)&&!(0,_r.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Bv(e)||(e.CATEGORIES=[]),TY(e)||(e.categoryMatches=[]),OY(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=RY;function FY(r){(0,_r.forEach)(r,function(e){e.categoryMatches=[],(0,_r.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=FY;function NY(r){(0,_r.forEach)(r,function(e){Qv([],e)})}Nt.assignCategoriesMapProp=NY;function Qv(r,e){(0,_r.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,_r.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,_r.contains)(i,t)||Qv(i,t)})}Nt.singleAssignCategoriesToksMap=Qv;function LY(r){return(0,_r.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=LY;function Bv(r){return(0,_r.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=Bv;function TY(r){return(0,_r.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=TY;function OY(r){return(0,_r.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=OY;function $me(r){return(0,_r.has)(r,"tokenTypeIdx")}Nt.isTokenType=$me});var bv=w(JI=>{"use strict";Object.defineProperty(JI,"__esModule",{value:!0});JI.defaultLexerErrorProvider=void 0;JI.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var gd=w(nc=>{"use strict";Object.defineProperty(nc,"__esModule",{value:!0});nc.Lexer=nc.LexerDefinitionErrorType=void 0;var zs=Cv(),nr=Gt(),eEe=Gg(),tEe=bv(),rEe=GI(),iEe;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(iEe=nc.LexerDefinitionErrorType||(nc.LexerDefinitionErrorType={}));var fd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:tEe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(fd);var nEe=function(){function r(e,t){var i=this;if(t===void 0&&(t=fd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(fd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===fd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=zs.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===fd.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[zs.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[zs.DEFAULT_MODE]=zs.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,zs.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,zs.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,zs.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,eEe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,zs.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(zs.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,rEe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,y,B,v,D,L=e,H=L.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),Z=[],A=this.trackStartLines?1:void 0,ae=this.trackStartLines?1:void 0,ge=(0,zs.cloneEmptyGroups)(this.emptyGroups),re=this.trackStartLines,O=this.config.lineTerminatorsPattern,F=0,ue=[],he=[],ke=[],Fe=[];Object.freeze(Fe);var Ne=void 0;function oe(){return ue}function le(pr){var Ei=(0,zs.charCodeToOptimizedIndex)(pr),_n=he[Ei];return _n===void 0?Fe:_n}var we=function(pr){if(ke.length===1&&pr.tokenType.PUSH_MODE===void 0){var Ei=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(pr);Z.push({offset:pr.startOffset,line:pr.startLine!==void 0?pr.startLine:void 0,column:pr.startColumn!==void 0?pr.startColumn:void 0,length:pr.image.length,message:Ei})}else{ke.pop();var _n=(0,nr.last)(ke);ue=i.patternIdxToConfig[_n],he=i.charCodeToPatternIdxToConfig[_n],F=ue.length;var oa=i.canModeBeOptimized[_n]&&i.config.safeMode===!1;he&&oa?Ne=le:Ne=oe}};function fe(pr){ke.push(pr),he=this.charCodeToPatternIdxToConfig[pr],ue=this.patternIdxToConfig[pr],F=ue.length,F=ue.length;var Ei=this.canModeBeOptimized[pr]&&this.config.safeMode===!1;he&&Ei?Ne=le:Ne=oe}fe.call(this,t);for(var Ae;jc.length){c=a,u=g,Ae=tt;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,C=this.createTokenInstance(c,j,p,Ae.tokenType,A,ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,ae=this.computeNewColumn(ae,f),re===!0&&Ae.canLineTerminator===!0){var It=0,Or=void 0,ii=void 0;O.lastIndex=0;do Or=O.test(c),Or===!0&&(ii=O.lastIndex-1,It++);while(Or===!0);It!==0&&(A=A+It,ae=f-ii,this.updateTokenEndLineColumnLocation(C,h,ii,It,A,ae,f))}this.handleModes(Ae,we,fe,C)}else{for(var gi=j,hr=A,fi=ae,ni=!1;!ni&&j <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",r.NA=/NOT_APPLICABLE/,r}();nc.Lexer=nEe});var SA=w(Qi=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.tokenMatcher=Qi.createTokenInstance=Qi.EOF=Qi.createToken=Qi.hasTokenLabel=Qi.tokenName=Qi.tokenLabel=void 0;var Vs=Gt(),sEe=gd(),Sv=Gg();function oEe(r){return JY(r)?r.LABEL:r.name}Qi.tokenLabel=oEe;function aEe(r){return r.name}Qi.tokenName=aEe;function JY(r){return(0,Vs.isString)(r.LABEL)&&r.LABEL!==""}Qi.hasTokenLabel=JY;var AEe="parent",MY="categories",KY="label",UY="group",HY="push_mode",GY="pop_mode",YY="longer_alt",jY="line_breaks",qY="start_chars_hint";function WY(r){return lEe(r)}Qi.createToken=WY;function lEe(r){var e=r.pattern,t={};if(t.name=r.name,(0,Vs.isUndefined)(e)||(t.PATTERN=e),(0,Vs.has)(r,AEe))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Vs.has)(r,MY)&&(t.CATEGORIES=r[MY]),(0,Sv.augmentTokenTypes)([t]),(0,Vs.has)(r,KY)&&(t.LABEL=r[KY]),(0,Vs.has)(r,UY)&&(t.GROUP=r[UY]),(0,Vs.has)(r,GY)&&(t.POP_MODE=r[GY]),(0,Vs.has)(r,HY)&&(t.PUSH_MODE=r[HY]),(0,Vs.has)(r,YY)&&(t.LONGER_ALT=r[YY]),(0,Vs.has)(r,jY)&&(t.LINE_BREAKS=r[jY]),(0,Vs.has)(r,qY)&&(t.START_CHARS_HINT=r[qY]),t}Qi.EOF=WY({name:"EOF",pattern:sEe.Lexer.NA});(0,Sv.augmentTokenTypes)([Qi.EOF]);function cEe(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}Qi.createTokenInstance=cEe;function uEe(r,e){return(0,Sv.tokenStructuredMatcher)(r,e)}Qi.tokenMatcher=uEe});var dn=w(Wt=>{"use strict";var wa=Wt&&Wt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Wt,"__esModule",{value:!0});Wt.serializeProduction=Wt.serializeGrammar=Wt.Terminal=Wt.Alternation=Wt.RepetitionWithSeparator=Wt.Repetition=Wt.RepetitionMandatoryWithSeparator=Wt.RepetitionMandatory=Wt.Option=Wt.Alternative=Wt.Rule=Wt.NonTerminal=Wt.AbstractProduction=void 0;var Ar=Gt(),gEe=SA(),vo=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,Ar.forEach)(this.definition,function(t){t.accept(e)})},r}();Wt.AbstractProduction=vo;var zY=function(r){wa(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(vo);Wt.NonTerminal=zY;var VY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Rule=VY;var XY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Alternative=XY;var _Y=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Option=_Y;var ZY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionMandatory=ZY;var $Y=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionMandatoryWithSeparator=$Y;var ej=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Repetition=ej;var tj=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionWithSeparator=tj;var rj=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(vo);Wt.Alternation=rj;var WI=function(){function r(e){this.idx=1,(0,Ar.assign)(this,(0,Ar.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();Wt.Terminal=WI;function fEe(r){return(0,Ar.map)(r,hd)}Wt.serializeGrammar=fEe;function hd(r){function e(s){return(0,Ar.map)(s,hd)}if(r instanceof zY){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,Ar.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof XY)return{type:"Alternative",definition:e(r.definition)};if(r instanceof _Y)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof ZY)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof $Y)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:hd(new WI({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof tj)return{type:"RepetitionWithSeparator",idx:r.idx,separator:hd(new WI({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof ej)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof rj)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof WI){var i={type:"Terminal",name:r.terminalType.name,label:(0,gEe.tokenLabel)(r.terminalType),idx:r.idx};(0,Ar.isString)(r.label)&&(i.terminalLabel=r.label);var n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(i.pattern=(0,Ar.isRegExp)(n)?n.source:n),i}else{if(r instanceof VY)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}Wt.serializeProduction=hd});var VI=w(zI=>{"use strict";Object.defineProperty(zI,"__esModule",{value:!0});zI.RestWalker=void 0;var vv=Gt(),Cn=dn(),hEe=function(){function r(){}return r.prototype.walk=function(e,t){var i=this;t===void 0&&(t=[]),(0,vv.forEach)(e.definition,function(n,s){var o=(0,vv.drop)(e.definition,s+1);if(n instanceof Cn.NonTerminal)i.walkProdRef(n,o,t);else if(n instanceof Cn.Terminal)i.walkTerminal(n,o,t);else if(n instanceof Cn.Alternative)i.walkFlat(n,o,t);else if(n instanceof Cn.Option)i.walkOption(n,o,t);else if(n instanceof Cn.RepetitionMandatory)i.walkAtLeastOne(n,o,t);else if(n instanceof Cn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,t);else if(n instanceof Cn.RepetitionWithSeparator)i.walkManySep(n,o,t);else if(n instanceof Cn.Repetition)i.walkMany(n,o,t);else if(n instanceof Cn.Alternation)i.walkOr(n,o,t);else throw Error("non exhaustive match")})},r.prototype.walkTerminal=function(e,t,i){},r.prototype.walkProdRef=function(e,t,i){},r.prototype.walkFlat=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkOption=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkAtLeastOne=function(e,t,i){var n=[new Cn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkAtLeastOneSep=function(e,t,i){var n=ij(e,t,i);this.walk(e,n)},r.prototype.walkMany=function(e,t,i){var n=[new Cn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkManySep=function(e,t,i){var n=ij(e,t,i);this.walk(e,n)},r.prototype.walkOr=function(e,t,i){var n=this,s=t.concat(i);(0,vv.forEach)(e.definition,function(o){var a=new Cn.Alternative({definition:[o]});n.walk(a,s)})},r}();zI.RestWalker=hEe;function ij(r,e,t){var i=[new Cn.Option({definition:[new Cn.Terminal({terminalType:r.separator})].concat(r.definition)})],n=i.concat(e,t);return n}});var Yg=w(XI=>{"use strict";Object.defineProperty(XI,"__esModule",{value:!0});XI.GAstVisitor=void 0;var xo=dn(),pEe=function(){function r(){}return r.prototype.visit=function(e){var t=e;switch(t.constructor){case xo.NonTerminal:return this.visitNonTerminal(t);case xo.Alternative:return this.visitAlternative(t);case xo.Option:return this.visitOption(t);case xo.RepetitionMandatory:return this.visitRepetitionMandatory(t);case xo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case xo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case xo.Repetition:return this.visitRepetition(t);case xo.Alternation:return this.visitAlternation(t);case xo.Terminal:return this.visitTerminal(t);case xo.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},r.prototype.visitNonTerminal=function(e){},r.prototype.visitAlternative=function(e){},r.prototype.visitOption=function(e){},r.prototype.visitRepetition=function(e){},r.prototype.visitRepetitionMandatory=function(e){},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){},r.prototype.visitRepetitionWithSeparator=function(e){},r.prototype.visitAlternation=function(e){},r.prototype.visitTerminal=function(e){},r.prototype.visitRule=function(e){},r}();XI.GAstVisitor=pEe});var dd=w(Oi=>{"use strict";var dEe=Oi&&Oi.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Oi,"__esModule",{value:!0});Oi.collectMethods=Oi.DslMethodsCollectorVisitor=Oi.getProductionDslName=Oi.isBranchingProd=Oi.isOptionalProd=Oi.isSequenceProd=void 0;var pd=Gt(),Qr=dn(),CEe=Yg();function mEe(r){return r instanceof Qr.Alternative||r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionMandatory||r instanceof Qr.RepetitionMandatoryWithSeparator||r instanceof Qr.RepetitionWithSeparator||r instanceof Qr.Terminal||r instanceof Qr.Rule}Oi.isSequenceProd=mEe;function xv(r,e){e===void 0&&(e=[]);var t=r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionWithSeparator;return t?!0:r instanceof Qr.Alternation?(0,pd.some)(r.definition,function(i){return xv(i,e)}):r instanceof Qr.NonTerminal&&(0,pd.contains)(e,r)?!1:r instanceof Qr.AbstractProduction?(r instanceof Qr.NonTerminal&&e.push(r),(0,pd.every)(r.definition,function(i){return xv(i,e)})):!1}Oi.isOptionalProd=xv;function EEe(r){return r instanceof Qr.Alternation}Oi.isBranchingProd=EEe;function IEe(r){if(r instanceof Qr.NonTerminal)return"SUBRULE";if(r instanceof Qr.Option)return"OPTION";if(r instanceof Qr.Alternation)return"OR";if(r instanceof Qr.RepetitionMandatory)return"AT_LEAST_ONE";if(r instanceof Qr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(r instanceof Qr.RepetitionWithSeparator)return"MANY_SEP";if(r instanceof Qr.Repetition)return"MANY";if(r instanceof Qr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Oi.getProductionDslName=IEe;var nj=function(r){dEe(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.separator="-",t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(t){var i=t.terminalType.name+this.separator+"Terminal";(0,pd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitNonTerminal=function(t){var i=t.nonTerminalName+this.separator+"Terminal";(0,pd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitOption=function(t){this.dslMethods.option.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.dslMethods.repetitionWithSeparator.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.dslMethods.repetitionMandatory.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)},e.prototype.visitRepetition=function(t){this.dslMethods.repetition.push(t)},e.prototype.visitAlternation=function(t){this.dslMethods.alternation.push(t)},e}(CEe.GAstVisitor);Oi.DslMethodsCollectorVisitor=nj;var _I=new nj;function yEe(r){_I.reset(),r.accept(_I);var e=_I.dslMethods;return _I.reset(),e}Oi.collectMethods=yEe});var Dv=w(Po=>{"use strict";Object.defineProperty(Po,"__esModule",{value:!0});Po.firstForTerminal=Po.firstForBranching=Po.firstForSequence=Po.first=void 0;var ZI=Gt(),sj=dn(),Pv=dd();function $I(r){if(r instanceof sj.NonTerminal)return $I(r.referencedRule);if(r instanceof sj.Terminal)return Aj(r);if((0,Pv.isSequenceProd)(r))return oj(r);if((0,Pv.isBranchingProd)(r))return aj(r);throw Error("non exhaustive match")}Po.first=$I;function oj(r){for(var e=[],t=r.definition,i=0,n=t.length>i,s,o=!0;n&&o;)s=t[i],o=(0,Pv.isOptionalProd)(s),e=e.concat($I(s)),i=i+1,n=t.length>i;return(0,ZI.uniq)(e)}Po.firstForSequence=oj;function aj(r){var e=(0,ZI.map)(r.definition,function(t){return $I(t)});return(0,ZI.uniq)((0,ZI.flatten)(e))}Po.firstForBranching=aj;function Aj(r){return[r.terminalType]}Po.firstForTerminal=Aj});var kv=w(ey=>{"use strict";Object.defineProperty(ey,"__esModule",{value:!0});ey.IN=void 0;ey.IN="_~IN~_"});var fj=w(As=>{"use strict";var wEe=As&&As.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(As,"__esModule",{value:!0});As.buildInProdFollowPrefix=As.buildBetweenProdsFollowPrefix=As.computeAllProdsFollows=As.ResyncFollowsWalker=void 0;var BEe=VI(),QEe=Dv(),lj=Gt(),cj=kv(),bEe=dn(),uj=function(r){wEe(e,r);function e(t){var i=r.call(this)||this;return i.topProd=t,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(t,i,n){},e.prototype.walkProdRef=function(t,i,n){var s=gj(t.referencedRule,t.idx)+this.topProd.name,o=i.concat(n),a=new bEe.Alternative({definition:o}),l=(0,QEe.first)(a);this.follows[s]=l},e}(BEe.RestWalker);As.ResyncFollowsWalker=uj;function SEe(r){var e={};return(0,lj.forEach)(r,function(t){var i=new uj(t).startWalking();(0,lj.assign)(e,i)}),e}As.computeAllProdsFollows=SEe;function gj(r,e){return r.name+e+cj.IN}As.buildBetweenProdsFollowPrefix=gj;function vEe(r){var e=r.terminalType.name;return e+r.idx+cj.IN}As.buildInProdFollowPrefix=vEe});var Cd=w(Ba=>{"use strict";Object.defineProperty(Ba,"__esModule",{value:!0});Ba.defaultGrammarValidatorErrorProvider=Ba.defaultGrammarResolverErrorProvider=Ba.defaultParserErrorProvider=void 0;var jg=SA(),xEe=Gt(),Xs=Gt(),Rv=dn(),hj=dd();Ba.defaultParserErrorProvider={buildMismatchTokenMessage:function(r){var e=r.expected,t=r.actual,i=r.previous,n=r.ruleName,s=(0,jg.hasTokenLabel)(e),o=s?"--> "+(0,jg.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+t.image+"' <--";return a},buildNotAllInputParsedMessage:function(r){var e=r.firstRedundant,t=r.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(r){var e=r.expectedPathsPerAlt,t=r.actual,i=r.previous,n=r.customUserDescription,s=r.ruleName,o="Expecting: ",a=(0,Xs.first)(t).image,l=` +but found: '`+a+"'";if(n)return o+n+l;var c=(0,Xs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Xs.map)(c,function(h){return"["+(0,Xs.map)(h,function(p){return(0,jg.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Xs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: +`+g.join(` +`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,Xs.first)(t).image,a=` +but found: '`+o+"'";if(i)return s+i+a;var l=(0,Xs.map)(e,function(u){return"["+(0,Xs.map)(u,function(g){return(0,jg.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(Ba.defaultParserErrorProvider);Ba.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+r.name+"<-";return t}};Ba.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Rv.Terminal?u.terminalType.name:u instanceof Rv.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,Xs.first)(e),s=n.idx,o=(0,hj.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` + appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` +`),c},buildNamespaceConflictError:function(r){var e=`Namespace conflict found in grammar. +`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+r.name+`>. +`)+`To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,Xs.map)(r.prefixPath,function(n){return(0,jg.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix +`+("in inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,Xs.map)(r.prefixPath,function(n){return(0,jg.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in "+(" inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,hj.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens. +This could lead to an infinite loop.`;return t},buildTokenNameError:function(r){return"deprecated"},buildEmptyAlternationError:function(r){var e="Ambiguous empty alternative: <"+(r.emptyChoiceIdx+1)+">"+(" in inside <"+r.topLevelRule.name+`> Rule. +`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(r){var e=`An Alternation cannot have more than 256 alternatives: +`+(" inside <"+r.topLevelRule.name+`> Rule. + has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=xEe.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar. +`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) +`)+(`without consuming any Tokens. The grammar path that causes this is: + `+i+` +`)+` To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Rv.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var Cj=w(vA=>{"use strict";var PEe=vA&&vA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(vA,"__esModule",{value:!0});vA.GastRefResolverVisitor=vA.resolveGrammar=void 0;var DEe=Hn(),pj=Gt(),kEe=Yg();function REe(r,e){var t=new dj(r,e);return t.resolveRefs(),t.errors}vA.resolveGrammar=REe;var dj=function(r){PEe(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,pj.forEach)((0,pj.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:DEe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(kEe.GAstVisitor);vA.GastRefResolverVisitor=dj});var Ed=w(Nr=>{"use strict";var sc=Nr&&Nr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Nr,"__esModule",{value:!0});Nr.nextPossibleTokensAfter=Nr.possiblePathsFrom=Nr.NextTerminalAfterAtLeastOneSepWalker=Nr.NextTerminalAfterAtLeastOneWalker=Nr.NextTerminalAfterManySepWalker=Nr.NextTerminalAfterManyWalker=Nr.AbstractNextTerminalAfterProductionWalker=Nr.NextAfterTokenWalker=Nr.AbstractNextPossibleTokensWalker=void 0;var mj=VI(),Kt=Gt(),FEe=Dv(),kt=dn(),Ej=function(r){sc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Kt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Kt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Kt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(mj.RestWalker);Nr.AbstractNextPossibleTokensWalker=Ej;var NEe=function(r){sc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new kt.Alternative({definition:s});this.possibleTokTypes=(0,FEe.first)(o),this.found=!0}},e}(Ej);Nr.NextAfterTokenWalker=NEe;var md=function(r){sc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(mj.RestWalker);Nr.AbstractNextTerminalAfterProductionWalker=md;var LEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkMany.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterManyWalker=LEe;var TEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkManySep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkManySep.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterManySepWalker=TEe;var OEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOne.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterAtLeastOneWalker=OEe;var MEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOneSep.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterAtLeastOneSepWalker=MEe;function Ij(r,e,t){t===void 0&&(t=[]),t=(0,Kt.cloneArr)(t);var i=[],n=0;function s(c){return c.concat((0,Kt.drop)(r,n+1))}function o(c){var u=Ij(s(c),e,t);return i.concat(u)}for(;t.length=0;ge--){var re=B.definition[ge],O={idx:p,def:re.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:y};g.push(O),g.push(o)}else if(B instanceof kt.Alternative)g.push({idx:p,def:B.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:y});else if(B instanceof kt.Rule)g.push(UEe(B,p,C,y));else throw Error("non exhaustive match")}}return u}Nr.nextPossibleTokensAfter=KEe;function UEe(r,e,t,i){var n=(0,Kt.cloneArr)(t);n.push(r.name);var s=(0,Kt.cloneArr)(i);return s.push(1),{idx:e,def:r.definition,ruleStack:n,occurrenceStack:s}}});var Id=w(_t=>{"use strict";var Bj=_t&&_t.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(_t,"__esModule",{value:!0});_t.areTokenCategoriesNotUsed=_t.isStrictPrefixOfPath=_t.containsPath=_t.getLookaheadPathsForOptionalProd=_t.getLookaheadPathsForOr=_t.lookAheadSequenceFromAlternatives=_t.buildSingleAlternativeLookaheadFunction=_t.buildAlternativesLookAheadFunc=_t.buildLookaheadFuncForOptionalProd=_t.buildLookaheadFuncForOr=_t.getProdType=_t.PROD_TYPE=void 0;var sr=Gt(),yj=Ed(),HEe=VI(),ty=Gg(),xA=dn(),GEe=Yg(),oi;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(oi=_t.PROD_TYPE||(_t.PROD_TYPE={}));function YEe(r){if(r instanceof xA.Option)return oi.OPTION;if(r instanceof xA.Repetition)return oi.REPETITION;if(r instanceof xA.RepetitionMandatory)return oi.REPETITION_MANDATORY;if(r instanceof xA.RepetitionMandatoryWithSeparator)return oi.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof xA.RepetitionWithSeparator)return oi.REPETITION_WITH_SEPARATOR;if(r instanceof xA.Alternation)return oi.ALTERNATION;throw Error("non exhaustive match")}_t.getProdType=YEe;function jEe(r,e,t,i,n,s){var o=bj(r,e,t),a=Lv(o)?ty.tokenStructuredMatcherNoCategories:ty.tokenStructuredMatcher;return s(o,i,a,n)}_t.buildLookaheadFuncForOr=jEe;function qEe(r,e,t,i,n,s){var o=Sj(r,e,n,t),a=Lv(o)?ty.tokenStructuredMatcherNoCategories:ty.tokenStructuredMatcher;return s(o[0],a,i)}_t.buildLookaheadFuncForOptionalProd=qEe;function JEe(r,e,t,i){var n=r.length,s=(0,sr.every)(r,function(l){return(0,sr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,sr.map)(l,function(D){return D.GATE}),u=0;u{"use strict";var Tv=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.checkPrefixAlternativesAmbiguities=zt.validateSomeNonEmptyLookaheadPath=zt.validateTooManyAlts=zt.RepetionCollector=zt.validateAmbiguousAlternationAlternatives=zt.validateEmptyOrAlternative=zt.getFirstNoneTerminal=zt.validateNoLeftRecursion=zt.validateRuleIsOverridden=zt.validateRuleDoesNotAlreadyExist=zt.OccurrenceValidationCollector=zt.identifyProductionForDuplicates=zt.validateGrammar=void 0;var er=Gt(),br=Gt(),Do=Hn(),Ov=dd(),qg=Id(),_Ee=Ed(),_s=dn(),Mv=Yg();function ZEe(r,e,t,i,n){var s=er.map(r,function(h){return $Ee(h,i)}),o=er.map(r,function(h){return Kv(h,h,i)}),a=[],l=[],c=[];(0,br.every)(o,br.isEmpty)&&(a=(0,br.map)(r,function(h){return Rj(h,i)}),l=(0,br.map)(r,function(h){return Fj(h,e,i)}),c=Tj(r,e,i));var u=rIe(r,t,i),g=(0,br.map)(r,function(h){return Lj(h,i)}),f=(0,br.map)(r,function(h){return kj(h,r,n,i)});return er.flatten(s.concat(c,o,a,l,u,g,f))}zt.validateGrammar=ZEe;function $Ee(r,e){var t=new Dj;r.accept(t);var i=t.allProductions,n=er.groupBy(i,xj),s=er.pick(n,function(a){return a.length>1}),o=er.map(er.values(s),function(a){var l=er.first(a),c=e.buildDuplicateFoundError(r,a),u=(0,Ov.getProductionDslName)(l),g={message:c,type:Do.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:u,occurrence:l.idx},f=Pj(l);return f&&(g.parameter=f),g});return o}function xj(r){return(0,Ov.getProductionDslName)(r)+"_#_"+r.idx+"_#_"+Pj(r)}zt.identifyProductionForDuplicates=xj;function Pj(r){return r instanceof _s.Terminal?r.terminalType.name:r instanceof _s.NonTerminal?r.nonTerminalName:""}var Dj=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitNonTerminal=function(t){this.allProductions.push(t)},e.prototype.visitOption=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e.prototype.visitAlternation=function(t){this.allProductions.push(t)},e.prototype.visitTerminal=function(t){this.allProductions.push(t)},e}(Mv.GAstVisitor);zt.OccurrenceValidationCollector=Dj;function kj(r,e,t,i){var n=[],s=(0,br.reduce)(e,function(a,l){return l.name===r.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});n.push({message:o,type:Do.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:r.name})}return n}zt.validateRuleDoesNotAlreadyExist=kj;function eIe(r,e,t){var i=[],n;return er.contains(e,r)||(n="Invalid rule override, rule: ->"+r+"<- cannot be overridden in the grammar: ->"+t+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:Do.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:r})),i}zt.validateRuleIsOverridden=eIe;function Kv(r,e,t,i){i===void 0&&(i=[]);var n=[],s=yd(e.definition);if(er.isEmpty(s))return[];var o=r.name,a=er.contains(s,r);a&&n.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:Do.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=er.difference(s,i.concat([r])),c=er.map(l,function(u){var g=er.cloneArr(i);return g.push(u),Kv(r,u,t,g)});return n.concat(er.flatten(c))}zt.validateNoLeftRecursion=Kv;function yd(r){var e=[];if(er.isEmpty(r))return e;var t=er.first(r);if(t instanceof _s.NonTerminal)e.push(t.referencedRule);else if(t instanceof _s.Alternative||t instanceof _s.Option||t instanceof _s.RepetitionMandatory||t instanceof _s.RepetitionMandatoryWithSeparator||t instanceof _s.RepetitionWithSeparator||t instanceof _s.Repetition)e=e.concat(yd(t.definition));else if(t instanceof _s.Alternation)e=er.flatten(er.map(t.definition,function(o){return yd(o.definition)}));else if(!(t instanceof _s.Terminal))throw Error("non exhaustive match");var i=(0,Ov.isOptionalProd)(t),n=r.length>1;if(i&&n){var s=er.drop(r);return e.concat(yd(s))}else return e}zt.getFirstNoneTerminal=yd;var Uv=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.alternations=[],t}return e.prototype.visitAlternation=function(t){this.alternations.push(t)},e}(Mv.GAstVisitor);function Rj(r,e){var t=new Uv;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){var a=er.dropRight(o.definition),l=er.map(a,function(c,u){var g=(0,_Ee.nextPossibleTokensAfter)([c],[],null,1);return er.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:o,emptyChoiceIdx:u}),type:Do.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(er.compact(l))},[]);return n}zt.validateEmptyOrAlternative=Rj;function Fj(r,e,t){var i=new Uv;r.accept(i);var n=i.alternations;n=(0,br.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=er.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,qg.getLookaheadPathsForOr)(l,r,c,a),g=tIe(u,a,r,t),f=Oj(u,a,r,t);return o.concat(g,f)},[]);return s}zt.validateAmbiguousAlternationAlternatives=Fj;var Nj=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e}(Mv.GAstVisitor);zt.RepetionCollector=Nj;function Lj(r,e){var t=new Uv;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:o}),type:Do.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:r.name,occurrence:o.idx}),s},[]);return n}zt.validateTooManyAlts=Lj;function Tj(r,e,t){var i=[];return(0,br.forEach)(r,function(n){var s=new Nj;n.accept(s);var o=s.allProductions;(0,br.forEach)(o,function(a){var l=(0,qg.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,qg.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,br.isEmpty)((0,br.flatten)(f))){var h=t.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:Do.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}zt.validateSomeNonEmptyLookaheadPath=Tj;function tIe(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,br.forEach)(l,function(u){var g=[c];(0,br.forEach)(r,function(f,h){c!==h&&(0,qg.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,qg.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=er.map(s,function(a){var l=(0,br.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:Do.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function Oj(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(o,a,l){var c=(0,br.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,br.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,br.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(Jg,"__esModule",{value:!0});Jg.validateGrammar=Jg.resolveGrammar=void 0;var Gv=Gt(),iIe=Cj(),nIe=Hv(),Mj=Cd();function sIe(r){r=(0,Gv.defaults)(r,{errMsgProvider:Mj.defaultGrammarResolverErrorProvider});var e={};return(0,Gv.forEach)(r.rules,function(t){e[t.name]=t}),(0,iIe.resolveGrammar)(e,r.errMsgProvider)}Jg.resolveGrammar=sIe;function oIe(r){return r=(0,Gv.defaults)(r,{errMsgProvider:Mj.defaultGrammarValidatorErrorProvider}),(0,nIe.validateGrammar)(r.rules,r.maxLookahead,r.tokenTypes,r.errMsgProvider,r.grammarName)}Jg.validateGrammar=oIe});var Wg=w(mn=>{"use strict";var wd=mn&&mn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(mn,"__esModule",{value:!0});mn.EarlyExitException=mn.NotAllInputParsedException=mn.NoViableAltException=mn.MismatchedTokenException=mn.isRecognitionException=void 0;var aIe=Gt(),Uj="MismatchedTokenException",Hj="NoViableAltException",Gj="EarlyExitException",Yj="NotAllInputParsedException",jj=[Uj,Hj,Gj,Yj];Object.freeze(jj);function AIe(r){return(0,aIe.contains)(jj,r.name)}mn.isRecognitionException=AIe;var ry=function(r){wd(e,r);function e(t,i){var n=this.constructor,s=r.call(this,t)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),lIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Uj,s}return e}(ry);mn.MismatchedTokenException=lIe;var cIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Hj,s}return e}(ry);mn.NoViableAltException=cIe;var uIe=function(r){wd(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.name=Yj,n}return e}(ry);mn.NotAllInputParsedException=uIe;var gIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Gj,s}return e}(ry);mn.EarlyExitException=gIe});var jv=w(Mi=>{"use strict";Object.defineProperty(Mi,"__esModule",{value:!0});Mi.attemptInRepetitionRecovery=Mi.Recoverable=Mi.InRuleRecoveryException=Mi.IN_RULE_RECOVERY_EXCEPTION=Mi.EOF_FOLLOW_KEY=void 0;var iy=SA(),ls=Gt(),fIe=Wg(),hIe=kv(),pIe=Hn();Mi.EOF_FOLLOW_KEY={};Mi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function Yv(r){this.name=Mi.IN_RULE_RECOVERY_EXCEPTION,this.message=r}Mi.InRuleRecoveryException=Yv;Yv.prototype=Error.prototype;var dIe=function(){function r(){}return r.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ls.has)(e,"recoveryEnabled")?e.recoveryEnabled:pIe.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=qj)},r.prototype.getTokenToInsert=function(e){var t=(0,iy.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t},r.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},r.prototype.tryInRepetitionRecovery=function(e,t,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),C=new fIe.MismatchedTokenException(p,u,s.LA(0));C.resyncedTokens=(0,ls.dropRight)(l),s.SAVE_ERROR(C)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},r.prototype.shouldInRepetitionRecoveryBeTried=function(e,t,i){return!(i===!1||e===void 0||t===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))},r.prototype.getFollowsForInRuleRecovery=function(e,t){var i=this.getCurrentGrammarPath(e,t),n=this.getNextPossibleTokenTypes(i);return n},r.prototype.tryInRuleRecovery=function(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new Yv("sad sad panda")},r.prototype.canPerformInRuleRecovery=function(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)},r.prototype.canRecoverWithSingleTokenInsertion=function(e,t){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ls.isEmpty)(t))return!1;var n=this.LA(1),s=(0,ls.find)(t,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},r.prototype.canRecoverWithSingleTokenDeletion=function(e){var t=this.tokenMatcher(this.LA(2),e);return t},r.prototype.isInCurrentRuleReSyncSet=function(e){var t=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(t);return(0,ls.contains)(i,e)},r.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),t=this.LA(1),i=2;;){var n=t.tokenType;if((0,ls.contains)(e,n))return n;t=this.LA(i),i++}},r.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Mi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(i)}},r.prototype.buildFullFollowKeyStack=function(){var e=this,t=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ls.map)(t,function(n,s){return s===0?Mi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(t[s-1])}})},r.prototype.flattenFollowSet=function(){var e=this,t=(0,ls.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ls.flatten)(t)},r.prototype.getFollowSetFromFollowKey=function(e){if(e===Mi.EOF_FOLLOW_KEY)return[iy.EOF];var t=e.ruleName+e.idxInCallingRule+hIe.IN+e.inRule;return this.resyncFollows[t]},r.prototype.addToResyncTokens=function(e,t){return this.tokenMatcher(e,iy.EOF)||t.push(e),t},r.prototype.reSyncTo=function(e){for(var t=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,t);return(0,ls.dropRight)(t)},r.prototype.attemptInRepetitionRecovery=function(e,t,i,n,s,o,a){},r.prototype.getCurrentGrammarPath=function(e,t){var i=this.getHumanReadableRuleStack(),n=(0,ls.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:t};return s},r.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ls.map)(this.RULE_STACK,function(t){return e.shortRuleNameToFullName(t)})},r}();Mi.Recoverable=dIe;function qj(r,e,t,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=iy.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(r,e,t,f)}Mi.attemptInRepetitionRecovery=qj});var ny=w(qt=>{"use strict";Object.defineProperty(qt,"__esModule",{value:!0});qt.getKeyForAutomaticLookahead=qt.AT_LEAST_ONE_SEP_IDX=qt.MANY_SEP_IDX=qt.AT_LEAST_ONE_IDX=qt.MANY_IDX=qt.OPTION_IDX=qt.OR_IDX=qt.BITS_FOR_ALT_IDX=qt.BITS_FOR_RULE_IDX=qt.BITS_FOR_OCCURRENCE_IDX=qt.BITS_FOR_METHOD_TYPE=void 0;qt.BITS_FOR_METHOD_TYPE=4;qt.BITS_FOR_OCCURRENCE_IDX=8;qt.BITS_FOR_RULE_IDX=12;qt.BITS_FOR_ALT_IDX=8;qt.OR_IDX=1<{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.LooksAhead=void 0;var Qa=Id(),Zs=Gt(),Jj=Hn(),ba=ny(),oc=dd(),mIe=function(){function r(){}return r.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Zs.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Jj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Zs.has)(e,"maxLookahead")?e.maxLookahead:Jj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Zs.isES2015MapSupported)()?new Map:[],(0,Zs.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},r.prototype.preComputeLookaheadFunctions=function(e){var t=this;(0,Zs.forEach)(e,function(i){t.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,oc.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Zs.forEach)(s,function(g){var f=g.idx===0?"":g.idx;t.TRACE_INIT(""+(0,oc.getProductionDslName)(g)+f,function(){var h=(0,Qa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||t.maxLookahead,g.hasPredicates,t.dynamicTokensEnabled,t.lookAheadBuilderForAlternatives),p=(0,ba.getKeyForAutomaticLookahead)(t.fullRuleNameToShort[i.name],ba.OR_IDX,g.idx);t.setLaFuncCache(p,h)})}),(0,Zs.forEach)(o,function(g){t.computeLookaheadFunc(i,g.idx,ba.MANY_IDX,Qa.PROD_TYPE.REPETITION,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(a,function(g){t.computeLookaheadFunc(i,g.idx,ba.OPTION_IDX,Qa.PROD_TYPE.OPTION,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(l,function(g){t.computeLookaheadFunc(i,g.idx,ba.AT_LEAST_ONE_IDX,Qa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(c,function(g){t.computeLookaheadFunc(i,g.idx,ba.AT_LEAST_ONE_SEP_IDX,Qa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(u,function(g){t.computeLookaheadFunc(i,g.idx,ba.MANY_SEP_IDX,Qa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,oc.getProductionDslName)(g))})})})},r.prototype.computeLookaheadFunc=function(e,t,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(t===0?"":t),function(){var l=(0,Qa.buildLookaheadFuncForOptionalProd)(t,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,ba.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,t);a.setLaFuncCache(c,l)})},r.prototype.lookAheadBuilderForOptional=function(e,t,i){return(0,Qa.buildSingleAlternativeLookaheadFunction)(e,t,i)},r.prototype.lookAheadBuilderForAlternatives=function(e,t,i,n){return(0,Qa.buildAlternativesLookAheadFunc)(e,t,i,n)},r.prototype.getKeyForAutomaticLookahead=function(e,t){var i=this.getLastExplicitRuleShortName();return(0,ba.getKeyForAutomaticLookahead)(i,e,t)},r.prototype.getLaFuncFromCache=function(e){},r.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},r.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},r.prototype.setLaFuncCache=function(e,t){},r.prototype.setLaFuncCacheUsingMap=function(e,t){this.lookAheadFuncsCache.set(e,t)},r.prototype.setLaFuncUsingObj=function(e,t){this.lookAheadFuncsCache[e]=t},r}();sy.LooksAhead=mIe});var zj=w(ko=>{"use strict";Object.defineProperty(ko,"__esModule",{value:!0});ko.addNoneTerminalToCst=ko.addTerminalToCst=ko.setNodeLocationFull=ko.setNodeLocationOnlyOffset=void 0;function EIe(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffset{"use strict";Object.defineProperty(PA,"__esModule",{value:!0});PA.defineNameProp=PA.functionName=PA.classNameFromInstance=void 0;var BIe=Gt();function QIe(r){return Xj(r.constructor)}PA.classNameFromInstance=QIe;var Vj="name";function Xj(r){var e=r.name;return e||"anonymous"}PA.functionName=Xj;function bIe(r,e){var t=Object.getOwnPropertyDescriptor(r,Vj);return(0,BIe.isUndefined)(t)||t.configurable?(Object.defineProperty(r,Vj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}PA.defineNameProp=bIe});var tq=w(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.validateRedundantMethods=bi.validateMissingCstMethods=bi.validateVisitor=bi.CstVisitorDefinitionError=bi.createBaseVisitorConstructorWithDefaults=bi.createBaseSemanticVisitorConstructor=bi.defaultVisit=void 0;var cs=Gt(),Bd=qv();function _j(r,e){for(var t=(0,cs.keys)(r),i=t.length,n=0;n: + `+(""+s.join(` + +`).replace(/\n/g,` + `)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}bi.createBaseSemanticVisitorConstructor=SIe;function vIe(r,e,t){var i=function(){};(0,Bd.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,cs.forEach)(e,function(s){n[s]=_j}),i.prototype=n,i.prototype.constructor=i,i}bi.createBaseVisitorConstructorWithDefaults=vIe;var Jv;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(Jv=bi.CstVisitorDefinitionError||(bi.CstVisitorDefinitionError={}));function Zj(r,e){var t=$j(r,e),i=eq(r,e);return t.concat(i)}bi.validateVisitor=Zj;function $j(r,e){var t=(0,cs.map)(e,function(i){if(!(0,cs.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,Bd.functionName)(r.constructor)+" CST Visitor.",type:Jv.MISSING_METHOD,methodName:i}});return(0,cs.compact)(t)}bi.validateMissingCstMethods=$j;var xIe=["constructor","visit","validateVisitor"];function eq(r,e){var t=[];for(var i in r)(0,cs.isFunction)(r[i])&&!(0,cs.contains)(xIe,i)&&!(0,cs.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,Bd.functionName)(r.constructor)+` CST Visitor +There is no Grammar Rule corresponding to this method's name. +`,type:Jv.REDUNDANT_METHOD,methodName:i});return t}bi.validateRedundantMethods=eq});var iq=w(oy=>{"use strict";Object.defineProperty(oy,"__esModule",{value:!0});oy.TreeBuilder=void 0;var zg=zj(),Zr=Gt(),rq=tq(),PIe=Hn(),DIe=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Zr.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:PIe.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Zr.NOOP,this.cstFinallyStateUpdate=Zr.NOOP,this.cstPostTerminal=Zr.NOOP,this.cstPostNonTerminal=Zr.NOOP,this.cstPostRule=Zr.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zg.setNodeLocationFull,this.setNodeLocationFromNode=zg.setNodeLocationFull,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zg.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=zg.setNodeLocationOnlyOffset,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=Zr.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,zg.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,zg.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,Zr.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,rq.createBaseSemanticVisitorConstructor)(this.className,(0,Zr.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Zr.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,rq.createBaseVisitorConstructorWithDefaults)(this.className,(0,Zr.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();oy.TreeBuilder=DIe});var sq=w(ay=>{"use strict";Object.defineProperty(ay,"__esModule",{value:!0});ay.LexerAdapter=void 0;var nq=Hn(),kIe=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):nq.END_OF_FILE},r.prototype.LA=function(e){var t=this.currIdx+e;return t<0||this.tokVectorLength<=t?nq.END_OF_FILE:this.tokVector[t]},r.prototype.consumeToken=function(){this.currIdx++},r.prototype.exportLexerState=function(){return this.currIdx},r.prototype.importLexerState=function(e){this.currIdx=e},r.prototype.resetLexerState=function(){this.currIdx=-1},r.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},r.prototype.getLexerPosition=function(){return this.exportLexerState()},r}();ay.LexerAdapter=kIe});var aq=w(Ay=>{"use strict";Object.defineProperty(Ay,"__esModule",{value:!0});Ay.RecognizerApi=void 0;var oq=Gt(),RIe=Wg(),Wv=Hn(),FIe=Cd(),NIe=Hv(),LIe=dn(),TIe=function(){function r(){}return r.prototype.ACTION=function(e){return e.call(this)},r.prototype.consume=function(e,t,i){return this.consumeInternal(t,e,i)},r.prototype.subrule=function(e,t,i){return this.subruleInternal(t,e,i)},r.prototype.option=function(e,t){return this.optionInternal(t,e)},r.prototype.or=function(e,t){return this.orInternal(t,e)},r.prototype.many=function(e,t){return this.manyInternal(e,t)},r.prototype.atLeastOne=function(e,t){return this.atLeastOneInternal(e,t)},r.prototype.CONSUME=function(e,t){return this.consumeInternal(e,0,t)},r.prototype.CONSUME1=function(e,t){return this.consumeInternal(e,1,t)},r.prototype.CONSUME2=function(e,t){return this.consumeInternal(e,2,t)},r.prototype.CONSUME3=function(e,t){return this.consumeInternal(e,3,t)},r.prototype.CONSUME4=function(e,t){return this.consumeInternal(e,4,t)},r.prototype.CONSUME5=function(e,t){return this.consumeInternal(e,5,t)},r.prototype.CONSUME6=function(e,t){return this.consumeInternal(e,6,t)},r.prototype.CONSUME7=function(e,t){return this.consumeInternal(e,7,t)},r.prototype.CONSUME8=function(e,t){return this.consumeInternal(e,8,t)},r.prototype.CONSUME9=function(e,t){return this.consumeInternal(e,9,t)},r.prototype.SUBRULE=function(e,t){return this.subruleInternal(e,0,t)},r.prototype.SUBRULE1=function(e,t){return this.subruleInternal(e,1,t)},r.prototype.SUBRULE2=function(e,t){return this.subruleInternal(e,2,t)},r.prototype.SUBRULE3=function(e,t){return this.subruleInternal(e,3,t)},r.prototype.SUBRULE4=function(e,t){return this.subruleInternal(e,4,t)},r.prototype.SUBRULE5=function(e,t){return this.subruleInternal(e,5,t)},r.prototype.SUBRULE6=function(e,t){return this.subruleInternal(e,6,t)},r.prototype.SUBRULE7=function(e,t){return this.subruleInternal(e,7,t)},r.prototype.SUBRULE8=function(e,t){return this.subruleInternal(e,8,t)},r.prototype.SUBRULE9=function(e,t){return this.subruleInternal(e,9,t)},r.prototype.OPTION=function(e){return this.optionInternal(e,0)},r.prototype.OPTION1=function(e){return this.optionInternal(e,1)},r.prototype.OPTION2=function(e){return this.optionInternal(e,2)},r.prototype.OPTION3=function(e){return this.optionInternal(e,3)},r.prototype.OPTION4=function(e){return this.optionInternal(e,4)},r.prototype.OPTION5=function(e){return this.optionInternal(e,5)},r.prototype.OPTION6=function(e){return this.optionInternal(e,6)},r.prototype.OPTION7=function(e){return this.optionInternal(e,7)},r.prototype.OPTION8=function(e){return this.optionInternal(e,8)},r.prototype.OPTION9=function(e){return this.optionInternal(e,9)},r.prototype.OR=function(e){return this.orInternal(e,0)},r.prototype.OR1=function(e){return this.orInternal(e,1)},r.prototype.OR2=function(e){return this.orInternal(e,2)},r.prototype.OR3=function(e){return this.orInternal(e,3)},r.prototype.OR4=function(e){return this.orInternal(e,4)},r.prototype.OR5=function(e){return this.orInternal(e,5)},r.prototype.OR6=function(e){return this.orInternal(e,6)},r.prototype.OR7=function(e){return this.orInternal(e,7)},r.prototype.OR8=function(e){return this.orInternal(e,8)},r.prototype.OR9=function(e){return this.orInternal(e,9)},r.prototype.MANY=function(e){this.manyInternal(0,e)},r.prototype.MANY1=function(e){this.manyInternal(1,e)},r.prototype.MANY2=function(e){this.manyInternal(2,e)},r.prototype.MANY3=function(e){this.manyInternal(3,e)},r.prototype.MANY4=function(e){this.manyInternal(4,e)},r.prototype.MANY5=function(e){this.manyInternal(5,e)},r.prototype.MANY6=function(e){this.manyInternal(6,e)},r.prototype.MANY7=function(e){this.manyInternal(7,e)},r.prototype.MANY8=function(e){this.manyInternal(8,e)},r.prototype.MANY9=function(e){this.manyInternal(9,e)},r.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},r.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},r.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},r.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},r.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},r.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},r.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},r.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},r.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},r.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},r.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},r.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},r.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},r.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},r.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},r.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},r.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},r.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},r.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},r.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},r.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},r.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},r.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},r.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},r.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},r.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},r.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},r.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},r.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},r.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},r.prototype.RULE=function(e,t,i){if(i===void 0&&(i=Wv.DEFAULT_RULE_CONFIG),(0,oq.contains)(this.definedRulesNames,e)){var n=FIe.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:Wv.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,t,i);return this[e]=o,o},r.prototype.OVERRIDE_RULE=function(e,t,i){i===void 0&&(i=Wv.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,NIe.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,t,i);return this[e]=s,s},r.prototype.BACKTRACK=function(e,t){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if((0,RIe.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},r.prototype.getGAstProductions=function(){return this.gastProductionsCache},r.prototype.getSerializedGastProductions=function(){return(0,LIe.serializeGrammar)((0,oq.values)(this.gastProductionsCache))},r}();Ay.RecognizerApi=TIe});var uq=w(cy=>{"use strict";Object.defineProperty(cy,"__esModule",{value:!0});cy.RecognizerEngine=void 0;var Pr=Gt(),Gn=ny(),ly=Wg(),Aq=Id(),Vg=Ed(),lq=Hn(),OIe=jv(),cq=SA(),Qd=Gg(),MIe=qv(),KIe=function(){function r(){}return r.prototype.initRecognizerEngine=function(e,t){if(this.className=(0,MIe.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Qd.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Pr.has)(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if((0,Pr.isArray)(e)){if((0,Pr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if((0,Pr.isArray)(e))this.tokensMap=(0,Pr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Pr.has)(e,"modes")&&(0,Pr.every)((0,Pr.flatten)((0,Pr.values)(e.modes)),Qd.isTokenType)){var i=(0,Pr.flatten)((0,Pr.values)(e.modes)),n=(0,Pr.uniq)(i);this.tokensMap=(0,Pr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Pr.isObject)(e))this.tokensMap=(0,Pr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=cq.EOF;var s=(0,Pr.every)((0,Pr.values)(e),function(o){return(0,Pr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?Qd.tokenStructuredMatcherNoCategories:Qd.tokenStructuredMatcher,(0,Qd.augmentTokenTypes)((0,Pr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Pr.has)(i,"resyncEnabled")?i.resyncEnabled:lq.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Pr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:lq.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(Gn.OR_IDX,t),n=(0,Pr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new ly.NotAllInputParsedException(t,e))}},r.prototype.subruleInternal=function(e,t,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,t,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},r.prototype.subruleInternalError=function(e,t,i){throw(0,ly.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:i),delete e.partialCstResult),e},r.prototype.consumeInternal=function(e,t,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,t,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},r.prototype.consumeInternalError=function(e,t,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new ly.MismatchedTokenException(n,t,s))},r.prototype.consumeInternalRecovery=function(e,t,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===OIe.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},r.prototype.saveRecogState=function(){var e=this.errors,t=(0,Pr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}},r.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},r.prototype.ruleInvocationStateUpdate=function(e,t,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t,e)},r.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},r.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},r.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},r.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),cq.EOF)},r.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},r}();cy.RecognizerEngine=KIe});var fq=w(uy=>{"use strict";Object.defineProperty(uy,"__esModule",{value:!0});uy.ErrorHandler=void 0;var zv=Wg(),Vv=Gt(),gq=Id(),UIe=Hn(),HIe=function(){function r(){}return r.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,Vv.has)(e,"errorMessageProvider")?e.errorMessageProvider:UIe.DEFAULT_PARSER_CONFIG.errorMessageProvider},r.prototype.SAVE_ERROR=function(e){if((0,zv.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,Vv.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(r.prototype,"errors",{get:function(){return(0,Vv.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),r.prototype.raiseEarlyExitException=function(e,t,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,gq.getLookaheadPathsForOptionalProd)(e,s,t,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new zv.EarlyExitException(u,this.LA(1),this.LA(0)))},r.prototype.raiseNoAltException=function(e,t){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,gq.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new zv.NoViableAltException(c,this.LA(1),l))},r}();uy.ErrorHandler=HIe});var dq=w(gy=>{"use strict";Object.defineProperty(gy,"__esModule",{value:!0});gy.ContentAssist=void 0;var hq=Ed(),pq=Gt(),GIe=function(){function r(){}return r.prototype.initContentAssist=function(){},r.prototype.computeContentAssist=function(e,t){var i=this.gastProductionsCache[e];if((0,pq.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,hq.nextPossibleTokensAfter)([i],t,this.tokenMatcher,this.maxLookahead)},r.prototype.getNextPossibleTokenTypes=function(e){var t=(0,pq.first)(e.ruleStack),i=this.getGAstProductions(),n=i[t],s=new hq.NextAfterTokenWalker(n,e).startWalking();return s},r}();gy.ContentAssist=GIe});var Qq=w(py=>{"use strict";Object.defineProperty(py,"__esModule",{value:!0});py.GastRecorder=void 0;var En=Gt(),Ro=dn(),YIe=gd(),Iq=Gg(),yq=SA(),jIe=Hn(),qIe=ny(),hy={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(hy);var Cq=!0,mq=Math.pow(2,qIe.BITS_FOR_OCCURRENCE_IDX)-1,wq=(0,yq.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:YIe.Lexer.NA});(0,Iq.augmentTokenTypes)([wq]);var Bq=(0,yq.createTokenInstance)(wq,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Bq);var JIe={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},WIe=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return jIe.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new Ro.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return bd.call(this,Ro.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){bd.call(this,Ro.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){bd.call(this,Ro.RepetitionMandatoryWithSeparator,t,e,Cq)},r.prototype.manyInternalRecord=function(e,t){bd.call(this,Ro.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){bd.call(this,Ro.RepetitionWithSeparator,t,e,Cq)},r.prototype.orInternalRecord=function(e,t){return zIe.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(fy(t),!e||(0,En.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,En.peek)(this.recordingProdStack),o=e.ruleName,a=new Ro.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?JIe:hy},r.prototype.consumeInternalRecord=function(e,t,i){if(fy(t),!(0,Iq.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,En.peek)(this.recordingProdStack),o=new Ro.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),Bq},r}();py.GastRecorder=WIe;function bd(r,e,t,i){i===void 0&&(i=!1),fy(t);var n=(0,En.peek)(this.recordingProdStack),s=(0,En.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,En.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),hy}function zIe(r,e){var t=this;fy(e);var i=(0,En.peek)(this.recordingProdStack),n=(0,En.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new Ro.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,En.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,En.some)(s,function(l){return(0,En.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,En.forEach)(s,function(l){var c=new Ro.Alternative({definition:[]});o.definition.push(c),(0,En.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,En.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),hy}function Eq(r){return r===0?"":""+r}function fy(r){if(r<0||r>mq){var e=new Error("Invalid DSL Method idx value: <"+r+`> + `+("Idx value must be a none negative value smaller than "+(mq+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var Sq=w(dy=>{"use strict";Object.defineProperty(dy,"__esModule",{value:!0});dy.PerformanceTracer=void 0;var bq=Gt(),VIe=Hn(),XIe=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,bq.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=VIe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,bq.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();dy.PerformanceTracer=XIe});var vq=w(Cy=>{"use strict";Object.defineProperty(Cy,"__esModule",{value:!0});Cy.applyMixins=void 0;function _Ie(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}Cy.applyMixins=_Ie});var Hn=w(dr=>{"use strict";var Dq=dr&&dr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dr,"__esModule",{value:!0});dr.EmbeddedActionsParser=dr.CstParser=dr.Parser=dr.EMPTY_ALT=dr.ParserDefinitionErrorType=dr.DEFAULT_RULE_CONFIG=dr.DEFAULT_PARSER_CONFIG=dr.END_OF_FILE=void 0;var Xi=Gt(),ZIe=fj(),xq=SA(),kq=Cd(),Pq=Kj(),$Ie=jv(),eye=Wj(),tye=iq(),rye=sq(),iye=aq(),nye=uq(),sye=fq(),oye=dq(),aye=Qq(),Aye=Sq(),lye=vq();dr.END_OF_FILE=(0,xq.createTokenInstance)(xq.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(dr.END_OF_FILE);dr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:kq.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});dr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var cye;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(cye=dr.ParserDefinitionErrorType||(dr.ParserDefinitionErrorType={}));function uye(r){return r===void 0&&(r=void 0),function(){return r}}dr.EMPTY_ALT=uye;var my=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,Xi.has)(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=(0,Xi.has)(t,"skipValidations")?t.skipValidations:dr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Xi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Xi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,Pq.resolveGrammar)({rules:(0,Xi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Xi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,Pq.validateGrammar)({rules:(0,Xi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Xi.values)(e.tokensMap),errMsgProvider:kq.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Xi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,ZIe.computeAllProdsFollows)((0,Xi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Xi.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Xi.isEmpty)(e.definitionErrors))throw t=(0,Xi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: + `+t.join(` +------------------------------- +`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();dr.Parser=my;(0,lye.applyMixins)(my,[$Ie.Recoverable,eye.LooksAhead,tye.TreeBuilder,rye.LexerAdapter,nye.RecognizerEngine,iye.RecognizerApi,sye.ErrorHandler,oye.ContentAssist,aye.GastRecorder,Aye.PerformanceTracer]);var gye=function(r){Dq(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Xi.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(my);dr.CstParser=gye;var fye=function(r){Dq(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Xi.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(my);dr.EmbeddedActionsParser=fye});var Fq=w(Ey=>{"use strict";Object.defineProperty(Ey,"__esModule",{value:!0});Ey.createSyntaxDiagramsCode=void 0;var Rq=pv();function hye(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+Rq.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+Rq.VERSION+"/diagrams/diagrams.css":s,a=` + + + + + +`,l=` + +`,c=` + +``` + +## Inlined HTML, CSS and JS + +You can also make a popup that doesn't rely on network requests to get JS and CSS. In the following case, the entirety of the page will be contained in a single HTML file. + +```dm +window.initialize( + inline_html = "

                      Hello world!

                      ", + inline_js = "window.alert('Warning!')", + inline_css = "h1 { color: red }", +) +``` + +You can also do the same by splitting your code into separate files, and then leveraging tgui window to serve it all as one big HTML file. + +```dm +window.initialize( + inline_html = file2text('code/modules/thing/thing.html'), + inline_js = file2text('code/modules/thing/thing.js'), + inline_css = file2text('code/modules/thing/thing.css'), +) +``` + +If you need to inline multiple JS or CSS files, you can concatenate them for now, and separate contents of each file with an `\n` symbol. *This can be a point of improvement (add support for file lists)*. + +## Fancy mode + +You may have noticed the fancy mode in previous snippets: + +```dm +window.initialize(fancy = TRUE) +``` + +This removes the native window titlebar and border, which effectively turns window into a floating panel. TGUI heavily uses this option to draw completely custom, fancy windows. You can use it too, but not having the default titlebar limits usability of the browser window, since you can't even close it or drag around without implementing that functionality yourself. This mode might be useful for creating popups and tooltips. + +## Communication + +It is very often necessary to exchange data between DM and JS, and in vanilla BYOND programming it is a huge pain in the butt, because the `browse()` API is very convoluted, out of box it can send only strings, and sending data back to DM requires using hrefs. + +``` +location.href = '?src=12345¶m=1' +``` + +If you're familiar with the href syntax of BYOND topic calls, then perhaps this doesn't surprise you, but this API artificially limits you to sending 2048 characters of string-typed data; you need to reinvent the wheel if you want to send something more complex than strings. It differs from the way you send messages from DM. And it's very hard to read as well. + +Thankfully, TGUI implements a very robust protocol that makes this slightly less of an eye sore and very convenient to use in the long run. + +### Message structure + +```ts +{ + type: string; + payload?: any; + // ... +} +``` + +Each message always has a **type**, which is usually (but not always) the first argument on all message sending functions. The next property is the **payload**, which contains all the data sent in the message. + +You can think of it in these terms: + +- **type** - function name +- **payload** - function arguments + +Of course we're not working with functions here, but hopefully this analogy makes the concept easier to understand. + +Finally, message can contain custom properties, and how you use them is *completely up to you*. They have an important limitation - all additional properties are string-typed, and require you to use a slightly more verbose API for sending them (more about it in the next section). + +```js +Byond.sendMessage({ + type: 'click', + payload: { buttonId: 1 }, + popup_section: 'left', +}); +``` + +### DM ➡ JS + +To send a message from DM, you can use the `window.send_message()` proc. + +```dm +window.send_message("alert", list( + text = "Hello, world!", +)) +``` + +To receive it in JS, you have two different syntaxes. First one is the most verbose one, but allows receiving all types of messages, and deciding what to do via `if` conditions. + +> NOTE: We're using ECMAScript 5 syntax here, because this is the version that is supported by IE 11 natively without any additional compilation. If you're coding in a compiled environment (TGUI/Webpack), then feel free to use arrow functions and other fancy syntaxes. +```js +Byond.subscribe(function (type, payload) { + if (type === 'alert') { + window.alert(payload.text); + return; + } + if (type === 'other') { + // ... + return; + } + // ... +}); +``` + +Second one is more compact, because it already filters messages by type and passes the payload directly to the callback. + +```js +Byond.subscribeTo('alert', function (payload) { + window.alert(payload.text); +}); +``` + +### JS ➡ DM + +To send a message from JS, you can use the `Byond.sendMessage()` function. + +```js +Byond.sendMessage('click', { + button: 'explode-mech', +}); +``` + +To receive it in DM, you must register a delegate proc (callback) that will receive the messages (usually called `on_message`), and handle the message in that proc. + +```dm +/datum/my_object/proc/initialize() + // ... + window.subscribe(src, .proc/on_message) +/datum/my_object/proc/on_message(type, payload) + if (type == "click") + process_button_click(payload["button"]) + return +``` + +**Advanced variant** + +You can send messages with custom fields in case if you want to bypass JSON serialization of the **payload**. Not sending the **payload** is a little bit faster if you send a lot of messages (because BYOND is slow in general with proc calls, especially `json_decode`). All raw message fields are available in the third argument `href_list`. + +```js +Byond.sendMessage({ + type: "something", + ref: "[0x12345678]", +}); +``` + +```dm +/datum/my_object/proc/on_message(type, payload, href_list) + if (type == "something") + process_something(locate(href_list["ref"])) + return +``` + +## BYOND Skin API + +There is a full assortment of BYOND client-side features that you can access via the `Byond` API object. + +Full reference of the `Byond` API object is here: [global.d.ts](../global.d.ts). It's a global type definition file, which provides auto-completion in VSCode when coding TGUI interfaces. When writing custom popups outside of TGUI, autocompletion doesn't work, so you might need to peek into this file sometimes. + +Here's the summary of what it has. + +- `Byond.winget()` - Returns a property of a skin element. This is an async function call, more on that later. +- `Byond.winset()` - Sets a property of a skin element. +- `Byond.topic()` - Makes a Topic call to the server. Similar to `sendMessage`, but all topic calls are native to BYOND, string typed and processed in `/client/Topic()` proc. +- `Byond.command()` - Runs a command on the client, as if you typed it into the command bar yourself. Can be any verb, or a special client-side command, such as `.output`. + +> As of now, `Byond.winget()` requires a Promise polyfill, which is only available in compiled TGUI, but not in plain popups, and if you try using it, you'll get a bluescreen error. If you'd like to have winget in non-compiled contexts, then ping maintainers on Discord to request this feature. +When working with `winset` and `winget`, it can be very useful to consult [BYOND 5.0 controls and parameters guide](https://secure.byond.com/docs/ref/skinparams.html) to figure out what you can control in the BYOND client. Via these controls and parameters, you can do many interesting things, such as dynamically define BYOND macros, or show/hide and reposition various skin elements. + +Another source of information is the official [BYOND Reference](https://secure.byond.com/docs/ref/info.html#/{skin}), which is a much larger, but a more comprehensive doc. + +Id of the current tgui window can be accessed via `Byond.windowId`, and below in an example of changing its `size`. + +```js +Byond.winset(Byond.windowId, { + size: '1280x640', +}); +``` + +Id of the main SS13 window is `'mainwindow'`, as defined in [skin.dmf](../../interface/skin.dmf). + +Little known feature, but you can also get non-UI parameters on the client by using a `null` id. + +```js +// Fetch URL of a server client is currently connected to +Byond.winget(null, 'url').then((serverUrl) => { + // Connect to this server + Byond.call(serverUrl); + // Close our client because it is now connecting in background + Byond.command('.quit'); +}); +``` diff --git a/tgui/docs/writing-tests.md b/tgui/docs/writing-tests.md index 99cb39e158a..633e73bcd1a 100644 --- a/tgui/docs/writing-tests.md +++ b/tgui/docs/writing-tests.md @@ -10,11 +10,7 @@ test('something', () => { }); ``` -To run the tests, type the following into the terminal: - -``` -bin/tgui --test -``` +Refer to [README](../README.md) to learn how to run tests. There is an example test in `packages/common/react.spec.ts`. diff --git a/tgui/global.d.ts b/tgui/global.d.ts index 90e692a18ed..0503ed84521 100644 --- a/tgui/global.d.ts +++ b/tgui/global.d.ts @@ -21,12 +21,29 @@ declare module '*.svg' { export default content; } +type TguiMessage = { + type: string; + payload?: any; + [key: string]: any; +}; + type ByondType = { + /** + * ID of the Byond window this script is running on. + * Can be used as a parameter to winget/winset. + */ + windowId: string; + /** * True if javascript is running in BYOND. */ IS_BYOND: boolean; + /** + * Version of Trident engine of Internet Explorer. Null if N/A. + */ + TRIDENT: number | null; + /** * True if browser is IE8 or lower. */ @@ -79,14 +96,14 @@ type ByondType = { * * Returns a promise with a key-value object containing all properties. */ - winget(id: string): Promise; + winget(id: string | null): Promise; /** * Retrieves all properties of the BYOND skin element. * * Returns a promise with a key-value object containing all properties. */ - winget(id: string, propName: '*'): Promise; + winget(id: string | null, propName: '*'): Promise; /** * Retrieves an exactly one property of the BYOND skin element, @@ -94,7 +111,7 @@ type ByondType = { * * Returns a promise with the value of that property. */ - winget(id: string, propName: string): Promise; + winget(id: string | null, propNames: string[]): Promise; /** * Retrieves multiple properties of the BYOND skin element, @@ -105,27 +122,44 @@ type ByondType = { winget(id: string, propNames: string[]): Promise; /** - * Assigns properties to BYOND skin elements. + * Assigns properties to BYOND skin elements in bulk. */ winset(props: object): void; /** * Assigns properties to the BYOND skin element. */ - winset(id: string, props: object): void; + winset(id: string | null, props: object): void; /** * Sets a property on the BYOND skin element to a certain value. */ - winset(id: string, propName: string, propValue: any): void; + winset(id: string | null, propName: string, propValue: any): void; /** * Parses BYOND JSON. * - * Uses a special encoding to preverse Infinity and NaN. + * Uses a special encoding to preserve `Infinity` and `NaN`. */ parseJson(text: string): any; + /** + * Sends a message to `/datum/tgui_window` which hosts this window instance. + */ + sendMessage(type: string, payload?: any): void; + sendMessage(message: TguiMessage): void; + + /** + * Subscribe to incoming messages that were sent from `/datum/tgui_window`. + */ + subscribe(listener: (type: string, payload: any) => void): void; + + /** + * Subscribe to incoming messages *of some specific type* + * that were sent from `/datum/tgui_window`. + */ + subscribeTo(type: string, listener: (payload: any) => void): void; + /** * Loads a stylesheet into the document. */ @@ -144,12 +178,5 @@ type ByondType = { const Byond: ByondType; interface Window { - /** - * ID of the Byond window this script is running on. - * Should be used as a parameter to winget/winset. - */ - __windowId__: string; - __updateQueue__: unknown[]; - update: (msg: unknown) => unknown; Byond: ByondType; } diff --git a/tgui/package.json b/tgui/package.json index 59963c1a712..e8bd039d127 100644 --- a/tgui/package.json +++ b/tgui/package.json @@ -2,11 +2,12 @@ "private": true, "name": "tgui-workspace", "version": "4.3.0", + "packageManager": "yarn@3.4.1", "workspaces": [ "packages/*" ], "scripts": { - "tgui:build": "webpack", + "tgui:build": "BROWSERSLIST_IGNORE_OLD_DATA=true webpack", "tgui:analyze": "webpack --analyze", "tgui:dev": "node --experimental-modules packages/tgui-dev-server/index.js", "tgui:lint": "eslint packages --ext .js,.cjs,.ts,.tsx", @@ -18,47 +19,48 @@ "tgui:bench": "webpack --env TGUI_BENCH=1 && node packages/tgui-bench/index.js" }, "dependencies": { - "@babel/core": "^7.15.0", - "@babel/eslint-parser": "^7.15.0", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-transform-jscript": "^7.14.5", - "@babel/preset-env": "^7.15.0", - "@babel/preset-typescript": "^7.15.0", - "@types/jest": "^27.0.1", - "@types/jsdom": "^16.2.13", - "@types/node": "^14.17.9", + "@babel/core": "^7.21.0", + "@babel/eslint-parser": "^7.19.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/plugin-transform-jscript": "^7.20.2", + "@babel/preset-env": "^7.20.2", + "@babel/preset-typescript": "^7.21.0", + "@types/jest": "^29.4.0", + "@types/jsdom": "^21.1.0", + "@types/node": "^18.14.6", "@types/webpack": "^5.28.0", - "@types/webpack-env": "^1.16.2", - "@typescript-eslint/parser": "^5.10.1", - "babel-jest": "^27.0.6", - "babel-loader": "^8.2.2", - "babel-plugin-inferno": "^6.3.0", + "@types/webpack-env": "^1.18.0", + "@typescript-eslint/parser": "^5.54.1", + "babel-jest": "^29.5.0", + "babel-loader": "^9.1.2", + "babel-plugin-inferno": "^6.6.0", "babel-plugin-transform-remove-console": "^6.9.4", "common": "workspace:*", - "css-loader": "^5.2.7", - "eslint": "^7.32.0", - "eslint-plugin-radar": "^0.2.1", - "eslint-plugin-react": "^7.24.0", + "css-loader": "^6.7.3", + "eslint": "^8.35.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-sonarjs": "^0.18.0", "file-loader": "^6.2.0", - "inferno": "^7.4.8", - "jest": "^27.0.6", - "jest-circus": "^27.0.6", - "jsdom": "^16.7.0", - "mini-css-extract-plugin": "^1.6.2", - "sass": "^1.37.5", - "sass-loader": "^11.1.1", - "style-loader": "^2.0.0", - "terser-webpack-plugin": "^5.3.3", - "typescript": "^4.3.5", + "inferno": "^8.0.6", + "jest": "^29.5.0", + "jest-circus": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "jsdom": "^21.1.0", + "mini-css-extract-plugin": "^2.7.3", + "sass": "^1.58.3", + "sass-loader": "^13.2.0", + "style-loader": "^3.3.1", + "terser-webpack-plugin": "^5.3.7", + "ts-plugin-inferno": "^1.1.0", + "typescript": "^4.9.5", "url-loader": "^4.1.1", "webpack": "^5.76.0", - "webpack-bundle-analyzer": "^4.4.2", - "webpack-cli": "^4.7.2" + "webpack-bundle-analyzer": "^4.8.0", + "webpack-cli": "^5.0.1" }, "resolutions": { - "ajv": "^6.12.3", "minimist": "^1.2.6", "terser": "^5.14.2" - }, - "packageManager": "yarn@3.1.1" + } } diff --git a/tgui/packages/common/collections.ts b/tgui/packages/common/collections.ts index 6886ded7cc7..ebbb62ea417 100644 --- a/tgui/packages/common/collections.ts +++ b/tgui/packages/common/collections.ts @@ -62,7 +62,7 @@ export const toKeyedArray = (obj, keyProp = 'key') => { }))(obj); }; -/** +/** NSV13 - TGUI Core/Style Updates Minor Upstream Port - Start * Iterates over elements of collection, returning an array of all elements * iteratee returns truthy for. The predicate is invoked with three * arguments: (value, index|key, collection). @@ -72,22 +72,25 @@ export const toKeyedArray = (obj, keyProp = 'key') => { * * @returns {any[]} */ -export const filter = iterateeFn => collection => { - if (collection === null && collection === undefined) { - return collection; - } - if (Array.isArray(collection)) { - const result = []; - for (let i = 0; i < collection.length; i++) { - const item = collection[i]; - if (iterateeFn(item, i, collection)) { - result.push(item); +export const filter + = (iterateeFn: (input: T, index: number, collection: T[]) => boolean) => + (collection: T[]): T[] => { + if (collection === null || collection === undefined) { + return collection; } - } - return result; - } - throw new Error(`filter() can't iterate on type ${typeof collection}`); -}; + if (Array.isArray(collection)) { + const result: T[] = []; + for (let i = 0; i < collection.length; i++) { + const item = collection[i]; + if (iterateeFn(item, i, collection)) { + result.push(item); + } + } + return result; + } + throw new Error(`filter() can't iterate on type ${typeof collection}`); + }; +// NSV13 - TGUI Core/Style Updates Minor Upstream Port - Stop /** * Creates an array of values by running each element in collection @@ -140,7 +143,7 @@ const COMPARATOR = (objA, objB) => { return 0; }; -/** +/** NSV13 - TGUI Core/Style Updates Minor Upstream Port - Start * Creates an array of elements, sorted in ascending order by the results * of running each element in a collection thru each iteratee. * @@ -148,28 +151,36 @@ const COMPARATOR = (objA, objB) => { * * @returns {any[]} */ -export const sortBy = (...iterateeFns) => array => { - if (!Array.isArray(array)) { - return array; - } - let length = array.length; - // Iterate over the array to collect criteria to sort it by - let mappedArray = []; - for (let i = 0; i < length; i++) { - const value = array[i]; - mappedArray.push({ - criteria: iterateeFns.map(fn => fn(value)), - value, - }); - } - // Sort criteria using the base comparator - mappedArray.sort(COMPARATOR); - // Unwrap values - while (length--) { - mappedArray[length] = mappedArray[length].value; - } - return mappedArray; -}; +export const sortBy + = (...iterateeFns: ((input: T) => unknown)[]) => + (array: T[]): T[] => { + if (!Array.isArray(array)) { + return array; + } + let length = array.length; + // Iterate over the array to collect criteria to sort it by + let mappedArray: { + criteria: unknown[]; + value: T; + }[] = []; + for (let i = 0; i < length; i++) { + const value = array[i]; + mappedArray.push({ + criteria: iterateeFns.map((fn) => fn(value)), + value, + }); + } + // Sort criteria using the base comparator + mappedArray.sort(COMPARATOR); + + // Unwrap values + const values: T[] = []; + while (length--) { + values[length] = mappedArray[length].value; + } + return values; + }; +// NSV13 - TGUI Core/Style Updates Minor Upstream Port - Stop /** * diff --git a/tgui/packages/tgfont/package.json b/tgui/packages/tgfont/package.json index 9459aa12969..37ae13328c8 100644 --- a/tgui/packages/tgfont/package.json +++ b/tgui/packages/tgfont/package.json @@ -6,6 +6,6 @@ "tgfont:build": "node mkdist.cjs && fantasticon --config config.cjs" }, "dependencies": { - "fantasticon": "^1.2.2" + "fantasticon": "1.2.3" } } diff --git a/tgui/packages/tgui-bench/package.json b/tgui/packages/tgui-bench/package.json index 7b1c91c0510..a467746bdc2 100644 --- a/tgui/packages/tgui-bench/package.json +++ b/tgui/packages/tgui-bench/package.json @@ -4,10 +4,10 @@ "version": "4.3.0", "dependencies": { "common": "workspace:*", - "fastify": "^3.29.4", - "fastify-static": "^4.2.3", - "inferno": "^7.4.8", - "inferno-vnode-flags": "^7.4.8", + "fastify": "^4.14.1", + "fastify-static": "^4.7.0", + "inferno": "^8.0.6", + "inferno-vnode-flags": "^8.0.6", "lodash": "^4.17.21", "platform": "^1.3.6", "tgui": "workspace:*" diff --git a/tgui/packages/tgui-dev-server/package.json b/tgui/packages/tgui-dev-server/package.json index 8ee0e019ee0..a45a38c163d 100644 --- a/tgui/packages/tgui-dev-server/package.json +++ b/tgui/packages/tgui-dev-server/package.json @@ -4,10 +4,10 @@ "version": "4.3.0", "type": "module", "dependencies": { - "axios": "^0.21.1", + "axios": "^1.6.0", "glob": "^7.1.7", - "source-map": "^0.7.3", + "source-map": "^0.7.4", "stacktrace-parser": "^0.1.10", - "ws": "^7.5.3" + "ws": "^8.12.1" } } diff --git a/tgui/packages/tgui-panel/index.js b/tgui/packages/tgui-panel/index.js index b20b1ef937a..f415c1afead 100644 --- a/tgui/packages/tgui-panel/index.js +++ b/tgui/packages/tgui-panel/index.js @@ -71,20 +71,11 @@ const setupApp = () => { setupPanelFocusHacks(); captureExternalLinks(); - // Subscribe for Redux state updates + // Re-render UI on store updates store.subscribe(renderApp); - // Subscribe for bankend updates - window.update = msg => store.dispatch(Byond.parseJson(msg)); - - // Process the early update queue - while (true) { - const msg = window.__updateQueue__.shift(); - if (!msg) { - break; - } - window.update(msg); - } + // Dispatch incoming messages as store actions + Byond.subscribe((type, payload) => store.dispatch({ type, payload })); // Unhide the panel Byond.winset('output', { diff --git a/tgui/packages/tgui-panel/package.json b/tgui/packages/tgui-panel/package.json index b627ec7015b..d02f5ada21f 100644 --- a/tgui/packages/tgui-panel/package.json +++ b/tgui/packages/tgui-panel/package.json @@ -4,8 +4,8 @@ "version": "4.3.0", "dependencies": { "common": "workspace:*", - "dompurify": "^2.3.1", - "inferno": "^7.4.8", + "dompurify": "^3.0.1", + "inferno": "^8.0.6", "tgui": "workspace:*", "tgui-dev-server": "workspace:*", "tgui-polyfill": "workspace:*" diff --git a/tgui/packages/tgui-panel/ping/middleware.js b/tgui/packages/tgui-panel/ping/middleware.js index fdd84109571..3b504bfbcad 100644 --- a/tgui/packages/tgui-panel/ping/middleware.js +++ b/tgui/packages/tgui-panel/ping/middleware.js @@ -4,7 +4,6 @@ * @license MIT */ -import { sendMessage } from 'tgui/backend'; import { pingFail, pingSuccess } from './actions'; import { PING_INTERVAL, PING_QUEUE_SIZE, PING_TIMEOUT } from './constants'; @@ -22,10 +21,7 @@ export const pingMiddleware = store => { } const ping = { index, sentAt: Date.now() }; pings[index] = ping; - sendMessage({ - type: 'ping', - payload: { index }, - }); + Byond.sendMessage('ping', { index }); index = (index + 1) % PING_QUEUE_SIZE; }; return next => action => { diff --git a/tgui/packages/tgui-panel/stat/StatTabs.js b/tgui/packages/tgui-panel/stat/StatTabs.js index 8b6a18d8904..7cdb1a4524c 100644 --- a/tgui/packages/tgui-panel/stat/StatTabs.js +++ b/tgui/packages/tgui-panel/stat/StatTabs.js @@ -6,7 +6,6 @@ import { selectStatPanel } from './selectors'; import { StatStatus, HoboStatStatus } from './StatStatus'; import { StatText, HoboStatText } from './StatText'; import { StatTicket } from './StatTicket'; -import { sendMessage } from 'tgui/backend'; // ======================= // Flex Supported @@ -46,15 +45,14 @@ export const StatTabs = (props, context) => { sendMessage({ - type: 'stat/pressed', - payload: { + onEnter={(e, value) => Byond.sendMessage('stat/pressed', + { action_id: "ticket_message", params: { msg: value, }, - }, - })} /> + } + )} /> )} @@ -146,13 +144,14 @@ export const HoboStatTabs = (props, context) => { sendMessage({ - type: 'stat/pressed', - payload: { + onEnter={(e, value) => Byond.sendMessage('stat/pressed', + { action_id: "ticket_message", - params: value, - }, - })} /> + params: { + msg: value, + }, + } + )} /> )} diff --git a/tgui/packages/tgui-panel/stat/StatText.js b/tgui/packages/tgui-panel/stat/StatText.js index eed46c75f90..9db48d81872 100644 --- a/tgui/packages/tgui-panel/stat/StatText.js +++ b/tgui/packages/tgui-panel/stat/StatText.js @@ -1,11 +1,9 @@ import { useSelector } from 'common/redux'; -import { Button, Flex, Knob, Tabs, Box, Section, Fragment } from 'tgui/components'; +import { Button, Flex, Box, Section } from 'tgui/components'; import { useSettings } from '../settings'; import { selectStatPanel } from './selectors'; -import { sendMessage } from 'tgui/backend'; -import { Divider, Grid, Table } from '../../tgui/components'; -import { STAT_TEXT, STAT_BUTTON, STAT_ATOM, STAT_DIVIDER, STAT_VERB, STAT_BLANK } from './constants'; -import { sendLogEntry } from 'tgui-dev-server/link/client.cjs'; +import { Divider, Table } from '../../tgui/components'; +import { STAT_TEXT, STAT_BUTTON, STAT_ATOM, STAT_DIVIDER, STAT_BLANK } from './constants'; export const StatText = (props, context) => { const stat = useSelector(context, selectStatPanel); @@ -85,17 +83,15 @@ export const StatTextButton = (props, context) => { action_id, params = [], } = props; - const settings = useSettings(context); return ( @@ -195,13 +189,11 @@ export const StatTextVerb = (props, context) => { width="200px">